Class MarkdownSink
- All Implemented Interfaces:
AutoCloseable, Markup, TextMarkup, MarkdownMarkup, Sink
Note: The encoding used is UTF-8.
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescription(package private) static enumMost important contextual metadata (of the surrounding element) -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate Collection<String> author.private StringBuilderA buffer that holds the current text when headerFlag or bufferFlag set totrue.private final LastTwoLinesBufferingWriterA temporary writer used to buffer the last two linesprivate intnumber of cells in a table.justification of table cells per column.private Stringdate.protected Queue<MarkdownSink.ElementContext> The context of the surrounding elements as stack (LIFO)private StringKeep track of end markup for inline events.private booleanis header rowprivate StringlinkName.private static final org.slf4j.Loggerprivate booleantableHeaderCellFlag, set totruefor table rows containing at least one table header cellprivate Stringtitle.private final PrintWriterThe writer to use.Fields inherited from interface MarkdownMarkup
ANCHOR_END_MARKUP, ANCHOR_START_MARKUP, BACKSLASH, BLANK_LINE, BLOCKQUOTE_START_MARKUP, BOLD_END_MARKUP, BOLD_START_MARKUP, COMMENT_END, COMMENT_START, HORIZONTAL_RULE_MARKUP, INDENT, ITALIC_END_MARKUP, ITALIC_START_MARKUP, LINK_END_MARKUP, LINK_START_1_MARKUP, LINK_START_2_MARKUP, LIST_ORDERED_ITEM_START_MARKUP, LIST_UNORDERED_ITEM_START_MARKUP, METADATA_MARKUP, MONOSPACED_END_MARKUP, MONOSPACED_START_MARKUP, NON_BREAKING_SPACE_MARKUP, SECTION_TITLE_START_MARKUP, TABLE_CELL_SEPARATOR_MARKUP, TABLE_COL_CENTER_ALIGNED_MARKUP, TABLE_COL_LEFT_ALIGNED_MARKUP, TABLE_COL_RIGHT_ALIGNED_MARKUP, TABLE_ROW_PREFIX, VERBATIM_END_MARKUP, VERBATIM_START_MARKUPFields inherited from interface Markup
COLON, EOL, EQUAL, GREATER_THAN, LEFT_CURLY_BRACKET, LEFT_SQUARE_BRACKET, LESS_THAN, MINUS, PLUS, QUOTE, RIGHT_CURLY_BRACKET, RIGHT_SQUARE_BRACKET, SEMICOLON, SLASH, SPACE, STARFields inherited from interface Sink
JUSTIFY_CENTER, JUSTIFY_LEFT, JUSTIFY_RIGHT, NUMBERING_DECIMAL, NUMBERING_LOWER_ALPHA, NUMBERING_LOWER_ROMAN, NUMBERING_UPPER_ALPHA, NUMBERING_UPPER_ROMAN, SECTION_LEVEL_1, SECTION_LEVEL_2, SECTION_LEVEL_3, SECTION_LEVEL_4, SECTION_LEVEL_5, SECTION_LEVEL_6Fields inherited from interface TextMarkup
PIPE -
Constructor Summary
ConstructorsModifierConstructorDescriptionprotectedMarkdownSink(Writer writer) Constructor, initialize the Writer and the variables. -
Method Summary
Modifier and TypeMethodDescriptionvoidanchor(String name, SinkEventAttributes attributes) Starts an element which defines an anchor.voidanchor_()Ends an anchor element.voidauthor_()Ends an author element.voidblockquote(SinkEventAttributes attributes) Starts a blockquote element.voidEnds an blockquote element.voidbody(SinkEventAttributes attributes) Starts the body of a document.voidbody_()Ends the body element.voidbold()Starts a bold element.voidbold_()Ends a bold element.voidclose()Close the writer or the stream, if needed.voidAdd a comment.voiddate_()Ends the date element.voiddefinedTerm(SinkEventAttributes attributes) Starts a definition term element within a definition list.voidEnds a definition term element within a definition list.voiddefinition(SinkEventAttributes attributes) Starts a definition element within a definition list.voidEnds a definition element within a definition list.voiddefinitionList(SinkEventAttributes attributes) Starts a definition list.voidEnds a definition list element.private voidendBlock(boolean requireBlankLine) private voidendContext(MarkdownSink.ElementContext expectedContext) private voidEnds a table cell.private voidEnsures that thewriteris currently at the beginning of a new line.private voidEnsures that thewriteris either at the beginning or preceded by a blank line.private static StringescapeForTableCell(String text) Escapes the pipe character according to GFM Table Extension in addition to the regular markdown escaping.private static StringescapeMarkdown(String text) First use XML escaping (leveraging the predefined entities, for browsers) afterwards escape special characters in a text with a leading backslash (for markdown parsers)voidfigure(SinkEventAttributes attributes) Starts a basic image embedding element.voidfigure_()Ends a basic image embedding element.voidfigureGraphics(String name, SinkEventAttributes attributes) Adds a graphic element.voidflush()Flush the writer or the stream, if needed.protected StringBuilderReturns the buffer that holds the current text.private Stringvoidhead(SinkEventAttributes attributes) Starts the head element.voidhead_()Ends the head element.voidhorizontalRule(SinkEventAttributes attributes) Adds a horizontal separator rule.protected voidinit()This is called inAbstractSink.head()or inSink.close(), and can be used to set the sink into a clear state so it can be re-used.voidinline(SinkEventAttributes attributes) Starts an inline element.voidinline_()Ends an inline element.voiditalic()Starts an italic element.voiditalic_()Ends an italic element.voidlineBreak(SinkEventAttributes attributes) Adds a line break.voidlink(String name, SinkEventAttributes attributes) Starts a link.voidlink_()Ends a link element.voidlist_()Ends an unordered list element.voidlistItem(SinkEventAttributes attributes) Starts a list item element within an unordered list.voidEnds a list item element within an unordered list.voidStarts a monospaced element.voidEnds a monospaced element.voidAdding a non breaking space, ie a space without any special formatting operations.voidnumberedList(int numbering, SinkEventAttributes attributes) Starts an ordered list element.voidEnds an ordered list element.voidnumberedListItem(SinkEventAttributes attributes) Starts a list item element within an ordered list.voidEnds a list item element within an ordered list.voidAdding a new page separator.voidparagraph(SinkEventAttributes attributes) Starts a paragraph.voidEnds a paragraph element.voidAdding a raw text, ie a text without any special formatting operations.private booleanprotected voidReset the StringBuilder.voidsectionTitle(int level, SinkEventAttributes attributes) Start a new section title at the given level.voidsectionTitle_(int level) Ends a section title at the given level.private voidstartBlock(boolean requireBlankLine) private voidstartContext(MarkdownSink.ElementContext newContext) voidtable(SinkEventAttributes attributes) Starts a table.voidtableCaption(SinkEventAttributes attributes) Starts a table caption.voidEnds a caption element of a table.voidtableCell(SinkEventAttributes attributes) Starts a table cell.voidEnds a cell element.voidtableHeaderCell(SinkEventAttributes attributes) Starts a table header cell.voidEnds a cell header element.voidtableRow(SinkEventAttributes attributes) Starts a table row.voidEnds a row element.voidtableRows(int[] justification, boolean grid) Starts an element that contains rows of table data.voidEnds an element that contains rows of table data.voidtext(String text, SinkEventAttributes attributes) Adds a text.voidtitle_()Ends the title element.voidunknown(String name, Object[] requiredParams, SinkEventAttributes attributes) Add an unknown event.voidverbatim(SinkEventAttributes attributes) Starts a verbatim block, ie a block where whitespace has semantic relevance.voidEnds a verbatim element.private voidprivate voidwriteImage(String alt, String src) private voidEmit the delimiter row which determines the alignmentprotected voidwriteUnescaped(String text) Methods inherited from class SinkAdapter
address, address_, article, article_, author, content, content_, data, data_, date, definitionListItem, definitionListItem_, division, division_, figureCaption, figureCaption_, footer, footer_, header, header_, lineBreakOpportunity, list, navigation, navigation_, section, section_, sidebar, sidebar_, table_, time, time_, titleMethods inherited from class AbstractSink
address, anchor, article, author, blockquote, body, content, data, date, definedTerm, definition, definitionList, definitionListItem, division, figure, figureCaption, figureGraphics, footer, formatLocation, getDocumentLocator, getLocationLogPrefix, head, header, horizontalRule, inline, lineBreak, lineBreakOpportunity, link, list, listItem, navigation, numberedList, numberedListItem, paragraph, section1, section1_, section2, section2_, section3, section3_, section4, section4_, section5, section5_, section6, section6_, sectionTitle, sectionTitle_, sectionTitle1, sectionTitle1_, sectionTitle2, sectionTitle2_, sectionTitle3, sectionTitle3_, sectionTitle4, sectionTitle4_, sectionTitle5, sectionTitle5_, sectionTitle6, sectionTitle6_, setDocumentLocator, sidebar, table, tableCaption, tableCell, tableHeaderCell, tableRow, tableRows, text, time, title, unifyEOLs, verbatim
-
Field Details
-
LOGGER
private static final org.slf4j.Logger LOGGER -
buffer
A buffer that holds the current text when headerFlag or bufferFlag set totrue. The content of this buffer is already escaped. -
authors
author. -
title
title. -
date
date. -
linkName
linkName. -
tableHeaderCellFlag
private boolean tableHeaderCellFlagtableHeaderCellFlag, set totruefor table rows containing at least one table header cell -
cellCount
private int cellCountnumber of cells in a table. -
cellJustif
-
isFirstTableRow
private boolean isFirstTableRowis header row -
writer
The writer to use. -
bufferingWriter
A temporary writer used to buffer the last two lines -
inlineStack
-
elementContextStack
The context of the surrounding elements as stack (LIFO) -
figureSrc
-
-
Constructor Details
-
MarkdownSink
Constructor, initialize the Writer and the variables.- Parameters:
writer- not null writer to write the result. Should be an UTF-8 Writer.
-
-
Method Details
-
endContext
-
startContext
-
ensureBeginningOfLine
private void ensureBeginningOfLine()Ensures that thewriteris currently at the beginning of a new line. Optionally writes a line separator to ensure that. -
ensureBlankLine
private void ensureBlankLine()Ensures that thewriteris either at the beginning or preceded by a blank line. Optionally writes a blank line to ensure that. -
startBlock
private void startBlock(boolean requireBlankLine) -
endBlock
private void endBlock(boolean requireBlankLine) -
getContainerLinePrefixes
-
getBuffer
Returns the buffer that holds the current text.- Returns:
- A StringBuffer.
-
init
protected void init()Description copied from class:AbstractSinkThis is called inAbstractSink.head()or inSink.close(), and can be used to set the sink into a clear state so it can be re-used.- Overrides:
initin classAbstractSink
-
resetBuffer
protected void resetBuffer()Reset the StringBuilder. -
head
Description copied from class:SinkAdapterStarts the head element.This contains information about the current document, (eg its title) that is not considered document content. The head element is optional but if it exists, it has to be unique within a sequence of Sink events that produces one output document, and it has to come before the
Sink.body(SinkEventAttributes)element.The canonical sequence of events for the head element is:
sink.head(); sink.title(); sink.text("Title"); sink.title_(); sink.author(); sink.text("Author"); sink.author_(); sink.date(); sink.text("Date"); sink.date_(); sink.head_();but none of the enclosed events is required. However, if they exist they have to occur in the order shown, and the title() and date() events have to be unique (author() events may occur any number of times).
Supported attributes are:
PROFILE,LANG.- Specified by:
headin interfaceSink- Overrides:
headin classSinkAdapter- Parameters:
attributes- A set ofSinkEventAttributes, may benull.
-
head_
public void head_()Description copied from class:SinkAdapterEnds the head element.- Specified by:
head_in interfaceSink- Overrides:
head_in classSinkAdapter
-
body
Description copied from class:SinkAdapterStarts the body of a document. This contains the document's content.Supported attributes are the
base attributes.- Specified by:
bodyin interfaceSink- Overrides:
bodyin classSinkAdapter- Parameters:
attributes- A set ofSinkEventAttributes, may benull.- See Also:
-
body_
public void body_()Description copied from class:SinkAdapterEnds the body element.- Specified by:
body_in interfaceSink- Overrides:
body_in classSinkAdapter
-
title_
public void title_()Description copied from class:SinkAdapterEnds the title element.- Specified by:
title_in interfaceSink- Overrides:
title_in classSinkAdapter
-
author_
public void author_()Description copied from class:SinkAdapterEnds an author element.- Specified by:
author_in interfaceSink- Overrides:
author_in classSinkAdapter
-
date_
public void date_()Description copied from class:SinkAdapterEnds the date element.- Specified by:
date_in interfaceSink- Overrides:
date_in classSinkAdapter
-
sectionTitle
Description copied from class:SinkAdapterStart a new section title at the given level.This element is optional, but if it exists, it has to be contained, and be the first element, within a corresponding
sectionelement of the same level.NOTE: It is strongly recommended not to make section titles implicit anchors. Neither Parsers nor Sinks should insert any content that is not explicitly present in the original source document, as this would lead to undefined behaviour for multi-format processing chains. However, while Parsers must never emit anchors for section titles, some specialized Sinks may implement such a feature if the resulting output documents are not going to be further processed (and this is properly documented).
Supported attributes are the
base attributesplusALIGN.- Specified by:
sectionTitlein interfaceSink- Overrides:
sectionTitlein classSinkAdapter- Parameters:
level- the section title level (must be a value between 1 and 6).attributes- A set ofSinkEventAttributes, may benull.
-
sectionTitle_
public void sectionTitle_(int level) Description copied from class:SinkAdapterEnds a section title at the given level.- Specified by:
sectionTitle_in interfaceSink- Overrides:
sectionTitle_in classSinkAdapter- Parameters:
level- the section title level (must be a value between 1 and 6).
-
list_
public void list_()Description copied from class:SinkAdapterEnds an unordered list element.- Specified by:
list_in interfaceSink- Overrides:
list_in classSinkAdapter
-
listItem
Description copied from class:SinkAdapterStarts a list item element within an unordered list.Supported attributes are the
base attributes.- Specified by:
listItemin interfaceSink- Overrides:
listItemin classSinkAdapter- Parameters:
attributes- A set ofSinkEventAttributes, may benull.
-
listItem_
public void listItem_()Description copied from class:SinkAdapterEnds a list item element within an unordered list.- Specified by:
listItem_in interfaceSink- Overrides:
listItem_in classSinkAdapter
-
numberedList
Description copied from class:SinkAdapterStarts an ordered list element.Supported attributes are the
base attributes.- Specified by:
numberedListin interfaceSink- Overrides:
numberedListin classSinkAdapter- Parameters:
numbering- the numbering style.attributes- A set ofSinkEventAttributes, may benull.- See Also:
-
numberedList_
public void numberedList_()Description copied from class:SinkAdapterEnds an ordered list element.- Specified by:
numberedList_in interfaceSink- Overrides:
numberedList_in classSinkAdapter
-
numberedListItem
Description copied from class:SinkAdapterStarts a list item element within an ordered list.Supported attributes are the
base attributes.- Specified by:
numberedListItemin interfaceSink- Overrides:
numberedListItemin classSinkAdapter- Parameters:
attributes- A set ofSinkEventAttributes, may benull.
-
numberedListItem_
public void numberedListItem_()Description copied from class:SinkAdapterEnds a list item element within an ordered list.- Specified by:
numberedListItem_in interfaceSink- Overrides:
numberedListItem_in classSinkAdapter
-
definitionList
Description copied from class:SinkAdapterStarts a definition list.Supported attributes are the
base attributes.- Specified by:
definitionListin interfaceSink- Overrides:
definitionListin classSinkAdapter- Parameters:
attributes- A set ofSinkEventAttributes, may benull.
-
definitionList_
public void definitionList_()Description copied from class:SinkAdapterEnds a definition list element.- Specified by:
definitionList_in interfaceSink- Overrides:
definitionList_in classSinkAdapter
-
definedTerm
Description copied from class:SinkAdapterStarts a definition term element within a definition list.Supported attributes are the
base attributes.- Specified by:
definedTermin interfaceSink- Overrides:
definedTermin classSinkAdapter- Parameters:
attributes- A set ofSinkEventAttributes, may benull.
-
definedTerm_
public void definedTerm_()Description copied from class:SinkAdapterEnds a definition term element within a definition list.- Specified by:
definedTerm_in interfaceSink- Overrides:
definedTerm_in classSinkAdapter
-
definition
Description copied from class:SinkAdapterStarts a definition element within a definition list.Supported attributes are the
base attributes.- Specified by:
definitionin interfaceSink- Overrides:
definitionin classSinkAdapter- Parameters:
attributes- A set ofSinkEventAttributes, may benull.
-
definition_
public void definition_()Description copied from class:SinkAdapterEnds a definition element within a definition list.- Specified by:
definition_in interfaceSink- Overrides:
definition_in classSinkAdapter
-
pageBreak
public void pageBreak()Description copied from class:SinkAdapterAdding a new page separator.- Specified by:
pageBreakin interfaceSink- Overrides:
pageBreakin classSinkAdapter
-
paragraph
Description copied from class:SinkAdapterStarts a paragraph.Supported attributes are the
base attributesplusALIGN.- Specified by:
paragraphin interfaceSink- Overrides:
paragraphin classSinkAdapter- Parameters:
attributes- A set ofSinkEventAttributes, may benull.
-
paragraph_
public void paragraph_()Description copied from class:SinkAdapterEnds a paragraph element.- Specified by:
paragraph_in interfaceSink- Overrides:
paragraph_in classSinkAdapter
-
verbatim
Description copied from class:SinkAdapterStarts a verbatim block, ie a block where whitespace has semantic relevance.Text in a verbatim block must only be wrapped at the linebreaks in the source, and spaces should not be collapsed. It should be displayed in a fixed-width font to retain the formatting but the overall size may be chosen by the implementation.
Most Sink events may be emitted within a verbatim block, the only elements explicitly forbidden are font-changing events and figures. Also, verbatim blocks may not be nested.
Supported attributes are the
base attributesplus:DECORATION(values: "source"),ALIGN,WIDTH.- Specified by:
verbatimin interfaceSink- Overrides:
verbatimin classSinkAdapter- Parameters:
attributes- A set ofSinkEventAttributes, may benull.
-
verbatim_
public void verbatim_()Description copied from class:SinkAdapterEnds a verbatim element.- Specified by:
verbatim_in interfaceSink- Overrides:
verbatim_in classSinkAdapter
-
blockquote
Description copied from class:SinkAdapterStarts a blockquote element.Supported attributes are the
base attributes.- Specified by:
blockquotein interfaceSink- Overrides:
blockquotein classSinkAdapter- Parameters:
attributes- A set ofSinkEventAttributes, may benull.
-
blockquote_
public void blockquote_()Description copied from class:SinkAdapterEnds an blockquote element.- Specified by:
blockquote_in interfaceSink- Overrides:
blockquote_in classSinkAdapter
-
horizontalRule
Description copied from class:SinkAdapterAdds a horizontal separator rule.Supported attributes are the
base attributesplus:ALIGN,NOSHADE,SIZE,WIDTH.- Specified by:
horizontalRulein interfaceSink- Overrides:
horizontalRulein classSinkAdapter- Parameters:
attributes- A set ofSinkEventAttributes, may benull.
-
table
Description copied from class:SinkAdapterStarts a table.The canonical sequence of events for the table element is:
sink.table(); sink.tableRows(justify, true); sink.tableRow(); sink.tableCell(); sink.text("cell 1,1"); sink.tableCell_(); sink.tableCell(); sink.text("cell 1,2"); sink.tableCell_(); sink.tableRow_(); sink.tableRows_(); sink.tableCaption(); sink.text("Table caption"); sink.tableCaption_(); sink.table_();where the tableCaption element is optional.
However, NOTE that the order of tableCaption and
Sink.tableRows(int[],boolean)events is arbitrary, ie a parser may emit the tableCaption before or after the tableRows. Implementing sinks should be prepared to handle both possibilities.Supported attributes are the
base attributesplus:ALIGN,BGCOLOR,BORDER,CELLPADDING,CELLSPACING,FRAME,RULES,SUMMARY,WIDTH.- Specified by:
tablein interfaceSink- Overrides:
tablein classSinkAdapter- Parameters:
attributes- A set ofSinkEventAttributes, may benull.
-
tableRows
public void tableRows(int[] justification, boolean grid) Description copied from class:SinkAdapterStarts an element that contains rows of table data.- Specified by:
tableRowsin interfaceSink- Overrides:
tableRowsin classSinkAdapter- Parameters:
justification- the default justification of columns. This can be overridden by individual table rows or table cells. If null a left alignment is assumed by default. If this array has less elements than there are columns in the table then the value of the last array element will be taken as default for the remaining table cells.grid- true to provide a grid, false otherwise.- See Also:
-
tableRows_
public void tableRows_()Description copied from class:SinkAdapterEnds an element that contains rows of table data.- Specified by:
tableRows_in interfaceSink- Overrides:
tableRows_in classSinkAdapter
-
tableRow
Description copied from class:SinkAdapterStarts a table row.Supported attributes are the
base attributesplus:ALIGN,BGCOLOR,VALIGN.- Specified by:
tableRowin interfaceSink- Overrides:
tableRowin classSinkAdapter- Parameters:
attributes- A set ofSinkEventAttributes, may benull.
-
tableRow_
public void tableRow_()Description copied from class:SinkAdapterEnds a row element.- Specified by:
tableRow_in interfaceSink- Overrides:
tableRow_in classSinkAdapter
-
writeEmptyTableHeader
private void writeEmptyTableHeader() -
writeTableDelimiterRow
private void writeTableDelimiterRow()Emit the delimiter row which determines the alignment -
tableCell
Description copied from class:SinkAdapterStarts a table cell.Supported attributes are the
base attributesplus:ABBRV,ALIGN,AXIS,BGCOLOR,COLSPAN,HEADERS,HEIGHT,NOWRAP,ROWSPAN,SCOPE,VALIGN,WIDTH.- Specified by:
tableCellin interfaceSink- Overrides:
tableCellin classSinkAdapter- Parameters:
attributes- A set ofSinkEventAttributes, may benull.
-
tableHeaderCell
Description copied from class:SinkAdapterStarts a table header cell.Supported attributes are the same as for
tableCell.- Specified by:
tableHeaderCellin interfaceSink- Overrides:
tableHeaderCellin classSinkAdapter- Parameters:
attributes- A set ofSinkEventAttributes, may benull.
-
tableCell_
public void tableCell_()Description copied from class:SinkAdapterEnds a cell element.- Specified by:
tableCell_in interfaceSink- Overrides:
tableCell_in classSinkAdapter
-
tableHeaderCell_
public void tableHeaderCell_()Description copied from class:SinkAdapterEnds a cell header element.- Specified by:
tableHeaderCell_in interfaceSink- Overrides:
tableHeaderCell_in classSinkAdapter
-
endTableCell
private void endTableCell()Ends a table cell. -
tableCaption
Description copied from class:SinkAdapterStarts a table caption.Note that the order of tableCaption and
Sink.tableRows(int[],boolean)events is arbitrary, ie a parser may emit the tableCaption before or after the tableRows. Implementing sinks should be prepared to handle both possibilities.Supported attributes are the
base attributesplusALIGN.- Specified by:
tableCaptionin interfaceSink- Overrides:
tableCaptionin classSinkAdapter- Parameters:
attributes- A set ofSinkEventAttributes, may benull.- See Also:
-
tableCaption_
public void tableCaption_()Description copied from class:SinkAdapterEnds a caption element of a table.- Specified by:
tableCaption_in interfaceSink- Overrides:
tableCaption_in classSinkAdapter
-
figure
Description copied from class:SinkAdapterStarts a basic image embedding element.The canonical sequence of events for the figure element is:
sink.figure(); sink.figureGraphics("figure.png"); sink.figureCaption(); sink.text("Figure caption",); sink.figureCaption_(); sink.figure_();where the figureCaption element is optional.
However, NOTE that the order of figureCaption and figureGraphics events is arbitrary, ie a parser may emit the figureCaption before or after the figureGraphics. Implementing sinks should be prepared to handle both possibilities.
NOTE also that the figureGraphics() event does not have to be embedded inside figure(), in particular for in-line images the figureGraphics() should be used stand-alone (in HTML language, figureGraphics() produces a
<img>tag, while figure() opens a paragraph- or<div>- like environment).Supported attributes are the
base attributes.- Specified by:
figurein interfaceSink- Overrides:
figurein classSinkAdapter- Parameters:
attributes- A set ofSinkEventAttributes, may benull.
-
figureGraphics
Description copied from class:SinkAdapterAdds a graphic element.The
srcparameter should be a valid link, ie it can be an absolute URL or a link relative to the current source document.Supported attributes are the
base attributesplus:SRC,ALT,WIDTH,HEIGHT,ALIGN,BORDER,HSPACE,VSPACE,ISMAP,USEMAP.If the
SRCattribute is specified in SinkEventAttributes, it will be overridden by thesrcparameter.- Specified by:
figureGraphicsin interfaceSink- Overrides:
figureGraphicsin classSinkAdapter- Parameters:
name- the image source, a valid URL.attributes- A set ofSinkEventAttributes, may benull.- See Also:
-
figure_
public void figure_()Description copied from class:SinkAdapterEnds a basic image embedding element.- Specified by:
figure_in interfaceSink- Overrides:
figure_in classSinkAdapter
-
writeImage
-
anchor
Starts an element which defines an anchor.The
nameparameter has to be a valid SGML NAME token. According to the HTML 4.01 specification section 6.2 SGML basic types:ID and NAME tokens must begin with a letter ([A-Za-z]) and may be followed by any number of letters, digits ([0-9]), hyphens ("-"), underscores ("_"), colons (":"), and periods (".").
Supported attributes are the
base attributes. IfNAMEis specified in the SinkEventAttributes, it will be overwritten by thenameparameter.- Specified by:
anchorin interfaceSink- Overrides:
anchorin classSinkAdapter- Parameters:
name- the name of the anchor. This has to be a valid SGML NAME token.attributes- A set ofSinkEventAttributes, may benull.
-
anchor_
public void anchor_()Description copied from class:SinkAdapterEnds an anchor element.- Specified by:
anchor_in interfaceSink- Overrides:
anchor_in classSinkAdapter
-
link
Starts a link.The
nameparameter has to be a valid URI according to RFC 3986, i.e. for internal links (links to an anchor within the same source document),nameshould start with the character "#". This also implies that all unsafe characters are already encoded.Supported attributes are the
base attributesplus:CHARSET,COORDS,HREF,HREFLANG,REL,REV,SHAPE,TARGET,TYPE.If
HREFis specified in the SinkEventAttributes, it will be overwritten by thenameparameter.- Specified by:
linkin interfaceSink- Overrides:
linkin classSinkAdapter- Parameters:
name- the name of the link.attributes- A set ofSinkEventAttributes, may benull.- See Also:
-
link_
public void link_()Description copied from class:SinkAdapterEnds a link element.- Specified by:
link_in interfaceSink- Overrides:
link_in classSinkAdapter
-
inline
Description copied from class:SinkAdapterStarts an inline element.The inline method is similar to
Sink.text(String,SinkEventAttributes), but allows you to wrap arbitrary elements in addition to text.Supported attributes are the
base attributesplusSEMANTICS(values "emphasis", "strong", "small", "line-through", "citation", "quote", "definition", "abbreviation", "italic", "bold", "monospaced", "variable", "sample", "keyboard", "superscript", "subscript", "annotation", "highlight", "ruby", "rubyBase", "rubyText", "rubyTextContainer", "rubyParentheses", "bidirectionalIsolation", "bidirectionalOverride", "phrase", "insert", "delete").- Specified by:
inlinein interfaceSink- Overrides:
inlinein classSinkAdapter- Parameters:
attributes- A set ofSinkEventAttributes, may benull.
-
inline_
public void inline_()Description copied from class:SinkAdapterEnds an inline element.- Specified by:
inline_in interfaceSink- Overrides:
inline_in classSinkAdapter
-
italic
public void italic()Description copied from class:SinkAdapterStarts an italic element. Alternatively one may useSink.text(String,SinkEventAttributes)withSTYLEinstead.- Specified by:
italicin interfaceSink- Overrides:
italicin classSinkAdapter
-
italic_
public void italic_()Description copied from class:SinkAdapterEnds an italic element. Alternatively one may useSink.text(String,SinkEventAttributes)withSTYLEinstead.- Specified by:
italic_in interfaceSink- Overrides:
italic_in classSinkAdapter
-
bold
public void bold()Description copied from class:SinkAdapterStarts a bold element. Alternatively one may useSink.text(String,SinkEventAttributes)withSTYLEinstead.- Specified by:
boldin interfaceSink- Overrides:
boldin classSinkAdapter
-
bold_
public void bold_()Description copied from class:SinkAdapterEnds a bold element. Alternatively one may useSink.text(String,SinkEventAttributes)withSTYLEinstead.- Specified by:
bold_in interfaceSink- Overrides:
bold_in classSinkAdapter
-
monospaced
public void monospaced()Description copied from class:SinkAdapterStarts a monospaced element. Alternatively one may useSink.text(String,SinkEventAttributes)withSTYLEinstead.- Specified by:
monospacedin interfaceSink- Overrides:
monospacedin classSinkAdapter
-
monospaced_
public void monospaced_()Description copied from class:SinkAdapterEnds a monospaced element. Alternatively one may useSink.text(String,SinkEventAttributes)withSTYLEinstead.- Specified by:
monospaced_in interfaceSink- Overrides:
monospaced_in classSinkAdapter
-
lineBreak
Description copied from class:SinkAdapter- Specified by:
lineBreakin interfaceSink- Overrides:
lineBreakin classSinkAdapter- Parameters:
attributes- A set ofSinkEventAttributes, may benull.
-
nonBreakingSpace
public void nonBreakingSpace()Description copied from class:SinkAdapterAdding a non breaking space, ie a space without any special formatting operations.- Specified by:
nonBreakingSpacein interfaceSink- Overrides:
nonBreakingSpacein classSinkAdapter
-
text
Description copied from class:SinkAdapterAdds a text.The
textparameter should contain only real content, ie any ignorable/collapsable whitespace/EOLs or other pretty-printing should be removed/normalized by a parser.If
textcontains any variants of line terminators, they should be normalized to the System EOL by an implementing Sink.Supported attributes are the
base attributesplusSEMANTICS(values "emphasis", "strong", "small", "line-through", "citation", "quote", "definition", "abbreviation", "italic", "bold", "monospaced", "variable", "sample", "keyboard", "superscript", "subscript", "annotation", "highlight", "ruby", "rubyBase", "rubyText", "rubyTextContainer", "rubyParentheses", "bidirectionalIsolation", "bidirectionalOverride", "phrase", "insert", "delete").The following attributes are deprecated:
VALIGN(values "sub", "sup"),DECORATION(values "underline", "overline", "line-through"),STYLE(values "italic", "bold", "monospaced").- Specified by:
textin interfaceSink- Overrides:
textin classSinkAdapter- Parameters:
text- The text to write.attributes- A set ofSinkEventAttributes, may benull.
-
rawText
Description copied from class:SinkAdapterAdding a raw text, ie a text without any special formatting operations.- Specified by:
rawTextin interfaceSink- Overrides:
rawTextin classSinkAdapter- Parameters:
text- The text to write.
-
comment
Description copied from class:SinkAdapterAdd a comment.- Specified by:
commentin interfaceSink- Overrides:
commentin classSinkAdapter- Parameters:
comment- The comment to write.
-
unknown
Add an unknown event. This may be used by parsers to notify a general Sink about an event that doesn't fit into any event defined by the Sink API. Depending on the parameters, a Sink may decide whether or not to process the event, emit it as raw text, as a comment, log it, etc. Unknown events just log a warning message but are ignored otherwise.- Specified by:
unknownin interfaceSink- Overrides:
unknownin classSinkAdapter- Parameters:
name- The name of the event.requiredParams- An optional array of required parameters to the event. May benull.attributes- A set ofSinkEventAttributes, may benull.- See Also:
-
requiresBuffering
private boolean requiresBuffering()- Returns:
trueif any of the parent contexts require buffering
-
writeUnescaped
-
flush
public void flush()Description copied from class:SinkAdapterFlush the writer or the stream, if needed. Flushing a previously-flushed Sink has no effect.- Specified by:
flushin interfaceSink- Overrides:
flushin classSinkAdapter
-
close
public void close()Description copied from class:SinkAdapterClose the writer or the stream, if needed. Closing a previously-closed Sink has no effect.- Specified by:
closein interfaceAutoCloseable- Specified by:
closein interfaceSink- Overrides:
closein classSinkAdapter
-
escapeMarkdown
First use XML escaping (leveraging the predefined entities, for browsers) afterwards escape special characters in a text with a leading backslash (for markdown parsers)\, `, *, _, {, }, [, ], (, ), #, +, -, ., !- Parameters:
text- the String to escape, may be null- Returns:
- the text escaped, "" if null String input
- See Also:
-
escapeForTableCell
Escapes the pipe character according to GFM Table Extension in addition to the regular markdown escaping.- Parameters:
text-- Returns:
- the escaped text
-