@Override public void render(final NodeFormatterContext context, final MarkdownWriter writer) { context.renderChildren(node); } });
private void render(final EnumeratedReferenceLink node, NodeFormatterContext context, final MarkdownWriter markdown) { markdown.append("[@"); if (context.isTransformingText()) { if (context.isTransformingText()) { renderReferenceText(node.getText(), context, markdown); } else { context.renderChildren(node); } } else { context.renderChildren(node); } markdown.append("]"); }
private static String getEncodedIdAttribute(String category, String categoryId, NodeFormatterContext context, MarkdownWriter markdown, Map<String, String> attributeTranslationMap, Map<String, String> attributeTranslatedMap) { String encodedCategory = category; String encodedId = categoryId; int placeholderId = context.getTranslationStore().get(ATTRIBUTE_TRANSLATION_ID); switch (context.getRenderPurpose()) { case TRANSLATION_SPANS: if (!attributeTranslationMap.containsKey(category)) { encodedCategory = String.format(context.getFormatterOptions().translationIdFormat, ++placeholderId); attributeTranslationMap.put(category, encodedCategory); attributeTranslatedMap.put(encodedCategory, category); encodedId = String.format(context.getFormatterOptions().translationIdFormat, ++placeholderId); attributeTranslationMap.put(categoryId, encodedId); attributeTranslatedMap.put(encodedId, categoryId); context.getTranslationStore().set(ATTRIBUTE_TRANSLATION_ID, placeholderId);
private void render(Document node, NodeFormatterContext context, MarkdownWriter markdown) { // No rendering itself myTranslationStore = context.getTranslationStore(); context.renderChildren(node); }
private String getEncodedOriginalId(String attribute, NodeFormatterContext context) { switch (context.getRenderPurpose()) { case TRANSLATION_SPANS: // return encoded non-translating text String encodedAttribute = "#" + String.format(context.getFormatterOptions().translationIdFormat, ++attributeOriginalId); attributeOriginalIdMap.put(encodedAttribute, attribute); return encodedAttribute; case TRANSLATED_SPANS: // return encoded non-translating text return "#" + String.format(context.getFormatterOptions().translationIdFormat, ++attributeOriginalId); case TRANSLATED: ++attributeOriginalId; return attributeOriginalIdMap.get(attribute); case FORMAT: default: return attribute; } }
private void render(final HtmlEntity node, NodeFormatterContext context, final MarkdownWriter markdown) { if (context.getRenderPurpose() == FORMAT) { markdown.append(node.getChars()); } else { context.customPlaceholderFormat(htmlEntityPlaceholderGenerator, new TranslatingSpanRender() { @Override public void render(final NodeFormatterContext context, final MarkdownWriter markdown) { markdown.appendNonTranslating(node.getChars()); } }); } }
private void render(final TableRow node, final NodeFormatterContext context, MarkdownWriter markdown) { context.renderChildren(node); if (context.getRenderPurpose() == FORMAT) { if (!myTable.isSeparator()) myTable.nextRow(); } else { markdown.line(); } }
private void render(final Link node, NodeFormatterContext context, MarkdownWriter markdown) { markdown.lineIf(formatterOptions.keepExplicitLinksAtStart); if (!formatterOptions.optimizedInlineRendering || context.isTransformingText()) { markdown.append(node.getTextOpeningMarker()); if (!context.isTransformingText() || node.getFirstChildAny(HtmlInline.class) != null) { context.renderChildren(node); } else { markdown.appendTranslating(node.getText()); } markdown.append(node.getTextClosingMarker()); markdown.append(node.getLinkOpeningMarker()); markdown.append(node.getUrlOpeningMarker()); markdown.appendNonTranslating(node.getPageRef()); markdown.append(node.getAnchorMarker()); if (node.getAnchorRef().isNotNull()) { CharSequence anchorRef = context.transformAnchorRef(node.getPageRef(), node.getAnchorRef()); markdown.append(anchorRef); } markdown.append(node.getUrlClosingMarker()); if (node.getTitleOpeningMarker().isNotNull()) { markdown.append(' '); markdown.append(node.getTitleOpeningMarker()); if (node.getTitle().isNotNull()) markdown.appendTranslating(node.getTitle()); markdown.append(node.getTitleClosingMarker()); } markdown.append(node.getLinkClosingMarker()); } else { markdown.append(node.getChars()); } }
private void render(final DefinitionItem node, final NodeFormatterContext context, final MarkdownWriter markdown) { BasedSequence openMarkerChars = node.getChars().prefixOf(node.getFirstChild().getChars()); BasedSequence openMarker = openMarkerChars.subSequence(0,1); BasedSequence openMarkerSpaces = openMarkerChars.subSequence(1); if (options.markerSpaces >= 1 && openMarkerSpaces.length() != options.markerSpaces) { openMarkerSpaces = SubSequence.of(RepeatedCharSequence.of(' ', options.markerSpaces)); } switch (options.markerType) { case ANY: break; case COLON: openMarker = SubSequence.of(":"); break; case TILDE: openMarker = SubSequence.of("~"); break; } markdown.line().append(openMarker).append(openMarkerSpaces); markdown.pushPrefix().addPrefix(RepeatedCharSequence.of(' ', context.getFormatterOptions().itemContentIndent ? openMarker.length() + openMarkerSpaces.length() : listOptions.getItemIndent())); context.renderChildren(node); markdown.popPrefix(); if (!context.getOptions().get(BLANK_LINES_IN_AST)) { // add blank lines after last paragraph item Node child = node.getLastChild(); if (child instanceof Paragraph && ((Paragraph) child).isTrailingBlankLine()) { markdown.blankLine(); } } }
void render(AttributesNode node, NodeFormatterContext context, MarkdownWriter markdown) { if (context.isTransformingText()) { markdown.append(node.getOpeningMarker()); boolean firstChild = true; String id = valueChars.subSequence(pos + 1).toString(); String encoded = getEncodedIdAttribute(category, id, context, markdown, attributeTranslationMap, attributeTranslatedMap); switch (context.getRenderPurpose()) { case TRANSLATION_SPANS: case TRANSLATED_SPANS:
@Override public String modifyTransformedReference(String transformedText, NodeFormatterContext context) { if (transformUnderscores && context.isTransformingText()) { if (transformedText.startsWith("-") && transformedText.endsWith("-")) { transformedText = "_" + transformedText.substring(1, transformedText.length() - 1) + "_"; } else if (transformedText.startsWith("_") && transformedText.endsWith("_")) { transformedText = "-" + transformedText.substring(1, transformedText.length() - 1) + "-"; } } return transformedText; }
if (context.isTransformingText() && myReferenceMapKey != null) { if (context.getRenderPurpose() == TRANSLATION_SPANS) { context.getTranslationStore().set(myReferenceMapKey, new HashMap<String, String>()); referenceTranslationMap = context.getTranslationStore().get(myReferenceMapKey); final Iterable<? extends Node> nodes = context.nodesOfType(getNodeClasses()); for (Node node: nodes) { N referencingNode = lastReference == null ? null : lastReference.getReferencingNode(node);
final boolean addBlankLineLooseItems ) { final FormatterOptions options = context.getFormatterOptions(); Document document = context.getDocument(); Integer itemNumber = document.get(LIST_ITEM_NUMBER); openingMarker = String.format("%d%c", itemNumber++, delimiter); context.renderChildren(node); if (addBlankLineLooseItems && (node.isLoose() || node.getDocument().get(LIST_ITEM_SPACING) == ListSpacing.LOOSE)) { markdown.blankLine();
@Override public void renderDocument(final NodeFormatterContext context, final MarkdownWriter markdown, final Document document, final FormattingPhase phase) { // reset storage for attribute keys and attributes map if (context.isTransformingText()) { if (context.getRenderPurpose() == TRANSLATION_SPANS) { context.getTranslationStore().set(ATTRIBUTE_TRANSLATION_MAP, new HashMap<String, String>()); context.getTranslationStore().set(ATTRIBUTE_TRANSLATED_MAP, new HashMap<String, String>()); context.getTranslationStore().set(ATTRIBUTE_ORIGINAL_ID_MAP, new HashMap<String, String>()); } context.getTranslationStore().set(ATTRIBUTE_TRANSLATION_ID, 0); attributeOriginalId = 0; attributeTranslationMap = context.getTranslationStore().get(ATTRIBUTE_TRANSLATION_MAP); attributeTranslatedMap = context.getTranslationStore().get(ATTRIBUTE_TRANSLATED_MAP); attributeOriginalIdMap = context.getTranslationStore().get(ATTRIBUTE_ORIGINAL_ID_MAP); } }
protected String transformReferenceId(final String nodeText, final NodeFormatterContext context) { if (context.isTransformingText()) { String transformed; switch (context.getRenderPurpose()) { case TRANSLATION_SPANS: case TRANSLATED_SPANS: if (referenceTranslationMap != null) { if (referenceTranslationMap.containsKey(nodeText)) { transformed = referenceTranslationMap.get(nodeText); } else { transformed = context.transformNonTranslating(null, nodeText, null, null).toString(); referenceTranslationMap.put(nodeText, transformed); } } else { transformed = context.transformNonTranslating(null, nodeText, null, null).toString(); } return modifyTransformedReference(transformed, context); case TRANSLATED: String untransformed = modifyTransformedReference(nodeText, context); String s = context.transformNonTranslating(null, untransformed, null, null).toString(); return s; case FORMAT: default: break; } } return nodeText; }
public MarkdownWriter appendNonTranslating(final CharSequence prefix, final CharSequence csq, final CharSequence suffix, final CharSequence suffix2) { if (context.isTransformingText()) { append(context.transformNonTranslating(prefix, csq, suffix, suffix2)); } else { append(csq); } return this; }
private void render(final MacroReference node, final NodeFormatterContext context, final MarkdownWriter markdown) { markdown.append("<<<"); if (context.isTransformingText()) { final String referenceId = transformReferenceId(node.getText().toString(), context); context.nonTranslatingSpan(new TranslatingSpanRender() { @Override public void render(final NodeFormatterContext context, final MarkdownWriter markdown) { markdown.append(referenceId); } }); } else { markdown.append(node.getText()); } markdown.append(">>>"); }
public MarkdownWriter appendTranslating(final CharSequence prefix, final CharSequence csq, final CharSequence suffix, final CharSequence suffix2) { if (context.isTransformingText()) { append(context.transformTranslating(prefix, csq, suffix, suffix2)); } else { if (prefix != null) append(prefix); append(csq); if (suffix != null) append(suffix); } return this; }
@Override public void renderReferenceBlock(final Reference node, final NodeFormatterContext context, final MarkdownWriter markdown) { if (context.isTransformingText()) { markdown.append(node.getOpeningMarker()); markdown.appendTranslating(node.getReference()); markdown.append(node.getClosingMarker()); markdown.append(' '); markdown.append(node.getUrlOpeningMarker()); markdown.appendNonTranslating(node.getPageRef()); markdown.append(node.getAnchorMarker()); if (node.getAnchorRef().isNotNull()) { CharSequence anchorRef = context.transformAnchorRef(node.getPageRef(), node.getAnchorRef()); markdown.append(anchorRef); } markdown.append(node.getUrlClosingMarker()); if (node.getTitleOpeningMarker().isNotNull()) { markdown.append(' '); markdown.append(node.getTitleOpeningMarker()); if (node.getTitle().isNotNull()) markdown.appendTranslating(node.getTitle()); markdown.append(node.getTitleClosingMarker()); } markdown.append(node.getUrlClosingMarker()).line(); } else { markdown.append(node.getChars()).line(); } }
private void render(HardLineBreak node, NodeFormatterContext context, MarkdownWriter markdown) { if (formatterOptions.keepHardLineBreaks) { if (context.getRenderPurpose() == FORMAT) { markdown.append(node.getChars()); } else { markdown.append(node.getChars()); } } else if (!markdown.isPendingSpace()) { // need to add a space markdown.append(' '); } }