org.commonmark.parser.block.BlockStart Java Examples

The following examples show how to use org.commonmark.parser.block.BlockStart. You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: JLatexMathBlockParserLegacy.java    From Markwon with Apache License 2.0 6 votes vote down vote up
@Override
public BlockStart tryStart(ParserState state, MatchedBlockParser matchedBlockParser) {

    final CharSequence line = state.getLine();
    final int length = line != null
            ? line.length()
            : 0;

    if (length > 1) {
        if ('$' == line.charAt(0)
                && '$' == line.charAt(1)) {
            return BlockStart.of(new JLatexMathBlockParserLegacy())
                    .atIndex(state.getIndex() + 2);
        }
    }

    return BlockStart.none();
}
 
Example #2
Source File: TableBlockParser.java    From js-dossier with Apache License 2.0 6 votes vote down vote up
@Override
public BlockStart tryStart(ParserState state, MatchedBlockParser matchedBlockParser) {
  CharSequence line = state.getLine();
  CharSequence previousLine = matchedBlockParser.getParagraphContent();
  if (previousLine != null && previousLine.toString().contains("|")) {
    line = line.subSequence(state.getIndex(), line.length());
    ImmutableList<Alignment> columnAlignments = parseHeaderDivider(line);
    if (!columnAlignments.isEmpty()) {
      return BlockStart.of(new TableBlockParser(previousLine, columnAlignments))
          .atIndex(state.getIndex())
          .replaceActiveBlockParser();
    }
  }

  return BlockStart.none();
}
 
Example #3
Source File: JLatexMathBlockParser.java    From Markwon with Apache License 2.0 5 votes vote down vote up
@Override
public BlockStart tryStart(ParserState state, MatchedBlockParser matchedBlockParser) {

    // let's define the spec:
    //  * 0-3 spaces before are allowed (Parsing.CODE_BLOCK_INDENT = 4)
    //  * 2+ subsequent `$` signs
    //  * any optional amount of spaces
    //  * new line
    //  * block is closed when the same amount of opening signs is met

    final int indent = state.getIndent();

    // check if it's an indented code block
    if (indent >= Parsing.CODE_BLOCK_INDENT) {
        return BlockStart.none();
    }

    final int nextNonSpaceIndex = state.getNextNonSpaceIndex();
    final CharSequence line = state.getLine();
    final int length = line.length();

    final int signs = consume(DOLLAR, line, nextNonSpaceIndex, length);

    // 2 is minimum
    if (signs < 2) {
        return BlockStart.none();
    }

    // consume spaces until the end of the line, if any other content is found -> NONE
    if (Parsing.skip(SPACE, line, nextNonSpaceIndex + signs, length) != length) {
        return BlockStart.none();
    }

    return BlockStart.of(new JLatexMathBlockParser(signs))
            .atIndex(length + 1);
}
 
Example #4
Source File: JLatexMathBlockParserTest.java    From Markwon with Apache License 2.0 5 votes vote down vote up
@Test
public void factory_indentBlock() {
    // when state indent is greater than block -> nono

    final ParserState state = mock(ParserState.class);
    when(state.getIndent()).thenReturn(Parsing.CODE_BLOCK_INDENT);

    // hm, interesting, `BlockStart.none()` actually returns null
    final BlockStart start = factory.tryStart(state, null);
    assertNull(start);
}
 
Example #5
Source File: JLatexMathBlockParserTest.java    From Markwon with Apache License 2.0 5 votes vote down vote up
@Test
public void factory_match() {

    for (String line : MATCH) {
        final ParserState state = createState(line);

        final BlockStart start = factory.tryStart(state, null);
        assertNotNull(start);

        // hm...
        final BlockStartImpl impl = (BlockStartImpl) start;
        assertEquals(quote(line), line.length() + 1, impl.getNewIndex());
    }
}
 
Example #6
Source File: BlockStartImpl.java    From 1Rramp-Android with MIT License 4 votes vote down vote up
@Override
public BlockStart atIndex(int newIndex) {
    this.newIndex = newIndex;
    return this;
}
 
Example #7
Source File: BlockStartImpl.java    From 1Rramp-Android with MIT License 4 votes vote down vote up
@Override
public BlockStart atColumn(int newColumn) {
    this.newColumn = newColumn;
    return this;
}
 
Example #8
Source File: BlockStartImpl.java    From 1Rramp-Android with MIT License 4 votes vote down vote up
@Override
public BlockStart replaceActiveBlockParser() {
    this.replaceActiveBlockParser = true;
    return this;
}
 
Example #9
Source File: BlockStartImpl.java    From commonmark-java with BSD 2-Clause "Simplified" License 4 votes vote down vote up
@Override
public BlockStart atIndex(int newIndex) {
    this.newIndex = newIndex;
    return this;
}
 
Example #10
Source File: BlockStartImpl.java    From commonmark-java with BSD 2-Clause "Simplified" License 4 votes vote down vote up
@Override
public BlockStart atColumn(int newColumn) {
    this.newColumn = newColumn;
    return this;
}
 
Example #11
Source File: BlockStartImpl.java    From commonmark-java with BSD 2-Clause "Simplified" License 4 votes vote down vote up
@Override
public BlockStart replaceActiveBlockParser() {
    this.replaceActiveBlockParser = true;
    return this;
}