@Override public int processLineContent(String line, int offset) { offset = matcher.start(3); int level = matcher.group(1).length(); String bangEscape = matcher.group(2); boolean omitFromToc = false; if (bangEscape != null && bangEscape.length() > 0) { omitFromToc = true; } if (offset > 0 && level > 0) { HeadingAttributes attributes = new HeadingAttributes(); attributes.setOmitFromTableOfContents(omitFromToc); attributes.setId(state.getIdGenerator().newId("h" + level, line.substring(offset))); //$NON-NLS-1$ builder.beginHeading(level, attributes); builder.characters(line.substring(offset).trim()); builder.endHeading(); } setClosed(true); return -1; }
return; int previousShift = state.getShift(); state.setShift(previousShift + textLineOffset); for (;;) { PatternBasedElementProcessor phraseModifier = getPhraseModifierSyntax().findPatternBasedElement(line, int newOffset = phraseModifier.getLineStartOffset(); if (offset < newOffset) { state.setLineCharacterOffset(state.getShift() + offset); state.setLineSegmentEndOffset(state.getShift() + newOffset); String text = line.substring(offset, newOffset); emitMarkupText(parser, state, text); phraseModifier.setParser(parser); phraseModifier.setState(state); state.setLineCharacterOffset(state.getShift() + phraseModifier.getLineStartOffset()); state.setLineSegmentEndOffset(state.getShift() + phraseModifier.getLineEndOffset()); phraseModifier.emit(); offset = phraseModifier.getLineEndOffset(); state.setLineCharacterOffset(state.getShift() + offset); state.setLineSegmentEndOffset(state.getShift() + line.length()); emitMarkupText(parser, state, line.substring(offset)); break; state.setShift(previousShift);
@Override protected void setMarkupContent(String markupContent) { super.setMarkupContent(markupContent); preprocessContent(markupContent); }
/** * Create new state for tracking a document and its contents during a parse session. Subclasses may override this * method to provide additional state tracking capability. * * @return the new state. */ protected ContentState createState() { ContentState contentState = new ContentState(); contentState.getIdGenerator().setGenerationStrategy(getIdGenerationStrategy()); return contentState; }
@Override public void emit() { String footnote = group(1); if (((TextileLanguage) getMarkupLanguage()).isPreprocessFootnotes() && !((TextileContentState) getState()).hasFootnoteNumber(footnote)) { builder.characters(group(0)); } else { String htmlId = state.getFootnoteId(footnote); int originalSegmentEndOffset = state.getLineSegmentEndOffset(); state.setLineCharacterOffset(start(1) - 1); state.setLineSegmentEndOffset(end(1) + 1); builder.beginSpan(SpanType.SUPERSCRIPT, new Attributes(null, "footnote", null, null)); //$NON-NLS-1$ builder.link("#" + htmlId, footnote); //$NON-NLS-1$ builder.endSpan(); state.setLineCharacterOffset(originalSegmentEndOffset); state.setLineSegmentEndOffset(originalSegmentEndOffset); } } }
initProcessors(); ContentState state = createState(); state.setMarkupContent(markupContent); LocationTrackingReader reader = new LocationTrackingReader(new StringReader(markupContent)); String line = null; while (line != null) { state.setLineNumber(reader.getLineNumber() + 1); state.setLineOffset(reader.getLineOffset()); state.setLineCharacterOffset(0); state.setLineSegmentEndOffset(0); state.setLineLength(line.length()); state.setLineNumber(reader.getLineNumber() + 1); state.setLineOffset(reader.getLineOffset()); state.setLineCharacterOffset(0); state.setLineLength(0);
tokenReplacement.setState(state); state.setLineCharacterOffset(state.getShift() + tokenReplacement.getLineStartOffset()); state.setLineSegmentEndOffset(state.getShift() + tokenReplacement.getLineEndOffset());
OutlineItem rootItem = outlineParser.parse(state.getMarkupContent());
/** * Process the given line of markup starting at the provided offset. * * @param line * the markup line to process * @param offset * the offset at which to start processing * * @return a non-negative integer to indicate that processing of the block completed before the end of the line, or * -1 if the entire line was processed. */ public int processLine(String line, int offset) { getState().setLineCharacterOffset(offset); return processLineContent(line, offset); }
@Override public int processLineContent(String line, int offset) { if (blockLineNumber++ > 0) { setClosed(true); return 0; } if (!getMarkupLanguage().isFilterGenerativeContents()) { String options = matcher.group(1); setOptions(options); OutlineParser outlineParser = new OutlineParser(new ConfluenceLanguage()); OutlineItem rootItem = outlineParser.parse(state.getMarkupContent()); emitToc(rootItem); } setClosed(true); return matcher.start(2); }
state.setLineCharacterOffset(start); builder.beginBlock(BlockType.TABLE_CELL_NORMAL, attributes);
@Override public int processLineContent(String line, int offset) { if (blockLineCount > 0) { throw new IllegalStateException(); } ++blockLineCount; int level = matcher.group(1).length(); String text = matcher.group(2); String id = matcher.group(3); Attributes attributes = new Attributes(); attributes.setId(id); if (attributes.getId() == null) { attributes.setId(state.getIdGenerator().newId("h" + level, text)); //$NON-NLS-1$ } builder.beginHeading(level, attributes); builder.characters(text); builder.endHeading(); setClosed(true); return -1; }
@Override public int processLineContent(String line, int offset) { if (blockLineNumber++ > 0) { setClosed(true); return 0; } if (!getMarkupLanguage().isFilterGenerativeContents()) { String options = matcher.group(1); setOptions(options); OutlineParser outlineParser = new OutlineParser(new ConfluenceLanguage()); OutlineItem rootItem = outlineParser.parse(state.getMarkupContent()); emitToc(rootItem); } setClosed(true); return matcher.start(2); }
state.setLineCharacterOffset(start); builder.beginBlock(BlockType.TABLE_CELL_NORMAL, attributes);
@Override public int processLineContent(String line, int offset) { if (blockLineCount > 0) { throw new IllegalStateException(); } ++blockLineCount; int level = matcher.group(1).length(); String text = matcher.group(2); String id = matcher.group(3); Attributes attributes = new Attributes(); attributes.setId(id); if (attributes.getId() == null) { attributes.setId(state.getIdGenerator().newId("h" + level, text)); //$NON-NLS-1$ } builder.beginHeading(level, attributes); builder.characters(text); builder.endHeading(); setClosed(true); return -1; }
@Override public int processLineContent(String line, int offset) { if (blockLineNumber++ > 0) { setClosed(true); return 0; } if (!getMarkupLanguage().isFilterGenerativeContents()) { OutlineParser outlineParser = new OutlineParser(new TWikiLanguage()); OutlineItem rootItem = outlineParser.parse(state.getMarkupContent()); emitToc(rootItem); } return -1; }
Textile.configureAttributes(attributes, rowMatcher, 4, false); state.setLineCharacterOffset(start); builder.beginBlock(header ? BlockType.TABLE_CELL_HEADER : BlockType.TABLE_CELL_NORMAL, attributes);