Class MarkdownSink
- All Implemented Interfaces:
AutoCloseable, HtmlMarkup, Markup, TextMarkup, XmlMarkup, MarkdownMarkup, Sink
Note: The encoding used is UTF-8. Extends the Xhtml5 sink as in some context HTML needs to be emitted.
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescription(package private) static enumMost important contextual metadata (of elements).(package private) static interfaceNested classes/interfaces inherited from class Xhtml5BaseSink
Xhtml5BaseSink.VerbatimMode -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate Collection<String> author.private final BufferingStackWriterThe inner decorated writer to buffer the text of contexts requiring buffering.private 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 booleanflag if the current verbatim block added a HTML context or notprivate final LastTwoLinesAwareWriterThe outer decorated writer taking care of remembering the last two written lines.private StringlinkName.private static final org.slf4j.Loggerprivate booleantableHeaderCellFlag, set totruefor table rows containing at least one table header cellprivate Stringtitle.private static final StringFields inherited from class Xhtml5BaseSink
contentStack, tableAttributesFields inherited from interface HtmlMarkup
A, ABBR, ADDRESS, AREA, ARTICLE, ASIDE, AUDIO, B, BASE, BDI, BDO, BLOCKQUOTE, BODY, BR, BUTTON, CANVAS, CAPTION, CDATA_TYPE, CITE, CODE, COL, COLGROUP, COMMAND, DATA, DATALIST, DD, DEL, DETAILS, DFN, DIALOG, DIV, DL, DT, EM, EMBED, ENTITY_TYPE, FIELDSET, FIGCAPTION, FIGURE, FOOTER, FORM, H1, H2, H3, H4, H5, H6, HEAD, HEADER, HGROUP, HR, HTML, I, IFRAME, IMG, INPUT, INS, KBD, KEYGEN, LABEL, LEGEND, LI, LINK, MAIN, MAP, MARK, MENU, MENUITEM, META, METER, NAV, NOSCRIPT, OBJECT, OL, OPTGROUP, OPTION, OUTPUT, P, PARAM, PICTURE, PRE, PROGRESS, Q, RB, RP, RT, RTC, RUBY, S, SAMP, SCRIPT, SECTION, SELECT, SMALL, SOURCE, SPAN, STRONG, STYLE, SUB, SUMMARY, SUP, SVG, TABLE, TAG_TYPE_END, TAG_TYPE_SIMPLE, TAG_TYPE_START, TBODY, TD, TEMPLATE, TEXTAREA, TFOOT, TH, THEAD, TIME, TITLE, TR, TRACK, U, UL, VAR, VIDEO, WBRFields 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, STRIKETHROUGH_END_MARKUP, STRIKETHROUGH_START_MARKUP, TABLE_CELL_SEPARATOR_MARKUP, TABLE_COL_CENTER_ALIGNED_MARKUP, TABLE_COL_DEFAULT_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_DEFAULT, 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
PIPEFields inherited from interface XmlMarkup
BANG, CDATA, DOCTYPE_START, ENTITY_START, XML_NAMESPACE -
Constructor Summary
ConstructorsModifierConstructorDescriptionprivateMarkdownSink(LastTwoLinesAwareWriter lineAwareWriter, BufferingStackWriter bufferingStackWriter) 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()Closes the writer or the stream, if needed.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 theXhtml5BaseSink.writeris currently at the beginning of a new line.private voidEnsures that theXhtml5BaseSink.writeris preceded by a blank line.voidfigure(SinkEventAttributes attributes) Starts a basic image embedding element.voidfigure_()Ends a basic image embedding element.voidfigureCaption(SinkEventAttributes attributes) Starts a figure caption.voidEnds a caption of an image.voidfigureGraphics(String name, SinkEventAttributes attributes) Adds a graphic element.private static booleanfilterAttributes(MutableAttributeSet attributes, AttributeSet... attributesToFilter) private Stringvoidhead(SinkEventAttributes attributes) Starts the head element.voidhead_()Ends the head element.voidheader(SinkEventAttributes attributes) Start a new header within the section or body.voidheader_()Ends a header 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.private voidvoidinline(SinkEventAttributes attributes) Starts an inline element.voidinline_()Ends an inline element.private booleanvoiditalic()Starts an italic element.voiditalic_()Ends an italic element.voidlineBreak(SinkEventAttributes attributes) Adds a line break.voidlink(String name, SinkEventAttributes attributes) The default style class for external link isexternalLink.voidlink_()Ends a link element.voidlist(SinkEventAttributes attributes) Starts an unordered list.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.voidmarkupLineBreak(int indentLevel) Adds a single line break with the specified indentation level.voidStarts a monospaced element.voidEnds a monospaced element.protected static MarkdownSinknewInstance(Writer writer) voidAdds a non breaking space, ie a space without any special formatting operations.voidnumberedList(int numbering, SinkEventAttributes attributes) The default list style depends on the numbering.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.voidAdds a new page separator.voidparagraph(SinkEventAttributes attributes) Starts a paragraph.voidEnds a paragraph element.voidAdds a raw text, ie a text without any special formatting operations.voidsection(int level, SinkEventAttributes attributes) Start a new section at the given level.voidsection_(int level) Ends a section at the given level.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.voidtable_()Ends a table element.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) Rows are striped with two colors by adding the classaorb.voidEnds a row element.voidtableRows(int[] justification, boolean grid) The default style class isbodyTable.voidEnds an element that contains rows of table data.voidtext(String text, SinkEventAttributes attributes) Adds a text.voidtitle_()Ends the title element.private StringtoogleToRootContextWithoutBuffering(boolean dumpBuffer) voidunknown(String name, Object[] requiredParams, SinkEventAttributes attributes) Adds an unknown event.voidverbatim(SinkEventAttributes attributes) Depending on whether the decoration attribute is "source" or not, this leads to either emitting<pre><code>or just<pre>.voidEnds a verbatim element.private voidprivate voidwriteImage(String alt, String src) private voidEmit the delimiter row which determines the alignmentMethods inherited from class Xhtml5BaseSink
address, address_, article, article_, comment, content, content, content_, convertAndFilterAttributes, convertToHtml5CompliantAttributes, data, data_, division, division_, encodeAsHtmlComment, encodeURL, escapeHTML, flush, footer, footer_, getCellCount, getCellJustif, getTextBuffer, getVerbatimMode, isHeadFlag, isVerbatim, lineBreakOpportunity, navigation, navigation_, onSection, onSection_, onSectionTitle, onSectionTitle_, resetTextBuffer, setCellCount, setCellJustif, setHeadFlag, setVerbatimMode, sidebar, sidebar_, time, time_, verbatimContent, write, writeEndTag, writeStartTagMethods inherited from class AbstractXmlSink
getNameSpace, setInsertNewline, setNameSpace, writeEOL, writeSimpleTag, writeSimpleTag, writeStartTag, writeStartTagMethods inherited from class SinkAdapter
author, date, definitionListItem, definitionListItem_, 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 -
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 -
bufferingStackWriter
The inner decorated writer to buffer the text of contexts requiring buffering. Writing to this andbufferingWriterhas the same effect. -
lineAwareWriter
The outer decorated writer taking care of remembering the last two written lines. Writing to this andwriterhas the same effect. -
USE_XHTML_SINK
- See Also:
-
inlineStack
Keep track of end markup for inline events. Special valueUSE_XHTML_SINKis used to indicate usage of the Xhtml5BaseSink.inline_() -
elementContextStack
The context of the surrounding elements as stack (LIFO) -
figureSrc
-
isVerbatimHtmlContext
private boolean isVerbatimHtmlContextflag if the current verbatim block added a HTML context or not
-
-
Constructor Details
-
MarkdownSink
private MarkdownSink(LastTwoLinesAwareWriter lineAwareWriter, BufferingStackWriter bufferingStackWriter) Constructor, initialize the Writer and the variables.- Parameters:
writer- not null writer to write the result. Should be an UTF-8 Writer.
-
-
Method Details
-
newInstance
-
initInternal
private void initInternal() -
endContext
-
startContext
-
toogleToRootContextWithoutBuffering
-
ensureBeginningOfLine
private void ensureBeginningOfLine()Ensures that theXhtml5BaseSink.writeris currently at the beginning of a new line. Optionally writes a line separator to ensure that. -
ensureBlankLine
private void ensureBlankLine()Ensures that theXhtml5BaseSink.writeris preceded by a blank line. Optionally writes a blank line or just line delimiter to ensure that. -
startBlock
private void startBlock(boolean requireBlankLine) -
endBlock
private void endBlock(boolean requireBlankLine) -
getLinePrefix
- Returns:
- the prefix to be used for each line in the current context (i.e. the prefix of the current container context and all its ancestors), may be empty
-
isInListItem
private boolean isInListItem() -
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 classXhtml5BaseSink
-
head
Description copied from interface:SinkStarts 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 interface:SinkEnds the head element.- Specified by:
head_in interfaceSink- Overrides:
head_in classSinkAdapter
-
body
Description copied from interface:SinkStarts 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 interface:SinkEnds the body element.- Specified by:
body_in interfaceSink- Overrides:
body_in classSinkAdapter
-
title_
public void title_()Description copied from interface:SinkEnds the title element.- Specified by:
title_in interfaceSink- Overrides:
title_in classSinkAdapter
-
author_
public void author_()Description copied from interface:SinkEnds an author element.- Specified by:
author_in interfaceSink- Overrides:
author_in classSinkAdapter
-
date_
public void date_()Description copied from interface:SinkEnds the date element.- Specified by:
date_in interfaceSink- Overrides:
date_in classSinkAdapter
-
section
Description copied from interface:SinkStart a new section at the given level.Sections with higher level have to be entirely contained within sections of lower level.
Supported attributes are the
base attributes.- Specified by:
sectionin interfaceSink- Overrides:
sectionin classXhtml5BaseSink- Parameters:
level- the section level (must be a value between 1 and 6).attributes- A set ofSinkEventAttributes, may benull.
-
section_
-
header
Description copied from interface:SinkStart a new header within the section or body.Supported attributes are the
base attributes.- Specified by:
headerin interfaceSink- Overrides:
headerin classXhtml5BaseSink- Parameters:
attributes- A set ofSinkEventAttributes, may benull.
-
header_
public void header_()Description copied from interface:SinkEnds a header element.- Specified by:
header_in interfaceSink- Overrides:
header_in classXhtml5BaseSink
-
sectionTitle
Description copied from interface:SinkStart 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 classXhtml5BaseSink- 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 interface:SinkEnds a section title at the given level.- Specified by:
sectionTitle_in interfaceSink- Overrides:
sectionTitle_in classXhtml5BaseSink- Parameters:
level- the section title level (must be a value between 1 and 6).
-
list
Description copied from class:Xhtml5BaseSinkStarts an unordered list.Supported attributes are the
A list must contain at least onebase attributes.Sink.listItem(SinkEventAttributes)orSink.listItem()as direct successor of this method.- Specified by:
listin interfaceSink- Overrides:
listin classXhtml5BaseSink- Parameters:
attributes- A set ofSinkEventAttributes, may benull.- See Also:
-
list_
public void list_()Description copied from class:Xhtml5BaseSinkEnds an unordered list element.- Specified by:
list_in interfaceSink- Overrides:
list_in classXhtml5BaseSink- See Also:
-
listItem
Description copied from class:Xhtml5BaseSinkStarts a list item element within an unordered list.Supported attributes are the
Nested lists must have the following Sink method sequence:base attributes.- Specified by:
listItemin interfaceSink- Overrides:
listItemin classXhtml5BaseSink- Parameters:
attributes- A set ofSinkEventAttributes, may benull.- See Also:
-
listItem_
public void listItem_()Description copied from class:Xhtml5BaseSinkEnds a list item element within an unordered list.- Specified by:
listItem_in interfaceSink- Overrides:
listItem_in classXhtml5BaseSink- See Also:
-
numberedList
Description copied from class:Xhtml5BaseSinkThe default list style depends on the numbering. Starts an ordered list element.Supported attributes are the
A list must contain at least onebase attributes.Sink.numberedListItem(SinkEventAttributes)orSink.numberedListItem()as direct successor of this method.- Specified by:
numberedListin interfaceSink- Overrides:
numberedListin classXhtml5BaseSink- Parameters:
numbering- the numbering style.attributes- A set ofSinkEventAttributes, may benull.- See Also:
-
numberedList_
public void numberedList_()Description copied from class:Xhtml5BaseSinkEnds an ordered list element.- Specified by:
numberedList_in interfaceSink- Overrides:
numberedList_in classXhtml5BaseSink- See Also:
-
numberedListItem
Description copied from class:Xhtml5BaseSinkStarts a list item element within an ordered list.Supported attributes are the
Nested lists must have the following Sink method sequence:base attributes.Sink.numberedListItem(SinkEventAttributes)orSink.numberedListItem()Sink.numberedList(int,SinkEventAttributes)orSink.numberedList(int)Sink.numberedListItem(SinkEventAttributes)orSink.numberedListItem()...Sink.numberedListItem_()Sink.numberedList_()...Sink.numberedListItem_()Sink.numberedList_()
- Specified by:
numberedListItemin interfaceSink- Overrides:
numberedListItemin classXhtml5BaseSink- Parameters:
attributes- A set ofSinkEventAttributes, may benull.- See Also:
-
numberedListItem_
public void numberedListItem_()Description copied from class:Xhtml5BaseSinkEnds a list item element within an ordered list.- Specified by:
numberedListItem_in interfaceSink- Overrides:
numberedListItem_in classXhtml5BaseSink- See Also:
-
definitionList
Description copied from class:Xhtml5BaseSinkStarts a definition list.Supported attributes are the
base attributes.- Specified by:
definitionListin interfaceSink- Overrides:
definitionListin classXhtml5BaseSink- Parameters:
attributes- A set ofSinkEventAttributes, may benull.- See Also:
-
definitionList_
public void definitionList_()Description copied from class:Xhtml5BaseSinkEnds a definition list element.- Specified by:
definitionList_in interfaceSink- Overrides:
definitionList_in classXhtml5BaseSink- See Also:
-
definedTerm
Description copied from class:Xhtml5BaseSinkStarts a definition term element within a definition list.Supported attributes are the
base attributes.- Specified by:
definedTermin interfaceSink- Overrides:
definedTermin classXhtml5BaseSink- Parameters:
attributes- A set ofSinkEventAttributes, may benull.- See Also:
-
definedTerm_
public void definedTerm_()Description copied from class:Xhtml5BaseSinkEnds a definition term element within a definition list.- Specified by:
definedTerm_in interfaceSink- Overrides:
definedTerm_in classXhtml5BaseSink- See Also:
-
definition
Description copied from class:Xhtml5BaseSinkStarts a definition element within a definition list.Supported attributes are the
base attributes.- Specified by:
definitionin interfaceSink- Overrides:
definitionin classXhtml5BaseSink- Parameters:
attributes- A set ofSinkEventAttributes, may benull.- See Also:
-
definition_
public void definition_()Description copied from class:Xhtml5BaseSinkEnds a definition element within a definition list.- Specified by:
definition_in interfaceSink- Overrides:
definition_in classXhtml5BaseSink- See Also:
-
pageBreak
public void pageBreak()Description copied from interface:SinkAdds a new page separator.- Specified by:
pageBreakin interfaceSink- Overrides:
pageBreakin classXhtml5BaseSink
-
paragraph
Description copied from class:Xhtml5BaseSinkStarts a paragraph.Supported attributes are the
base attributesplusALIGN.- Specified by:
paragraphin interfaceSink- Overrides:
paragraphin classXhtml5BaseSink- Parameters:
attributes- A set ofSinkEventAttributes, may benull.- See Also:
-
paragraph_
public void paragraph_()Description copied from class:Xhtml5BaseSinkEnds a paragraph element.- Specified by:
paragraph_in interfaceSink- Overrides:
paragraph_in classXhtml5BaseSink- See Also:
-
verbatim
Description copied from class:Xhtml5BaseSinkDepending on whether the decoration attribute is "source" or not, this leads to either emitting<pre><code>or just<pre>. No default classes are emitted but the given attributes are always added to thepreelement only. Starts 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 classXhtml5BaseSink- Parameters:
attributes- A set ofSinkEventAttributes, may benull.- See Also:
-
verbatim_
public void verbatim_()Description copied from class:Xhtml5BaseSinkEnds a verbatim element.- Specified by:
verbatim_in interfaceSink- Overrides:
verbatim_in classXhtml5BaseSink- See Also:
-
blockquote
Description copied from class:Xhtml5BaseSinkStarts a blockquote element.Supported attributes are the
base attributes.- Specified by:
blockquotein interfaceSink- Overrides:
blockquotein classXhtml5BaseSink- Parameters:
attributes- A set ofSinkEventAttributes, may benull.- See Also:
-
blockquote_
public void blockquote_()Description copied from class:Xhtml5BaseSinkEnds an blockquote element.- Specified by:
blockquote_in interfaceSink- Overrides:
blockquote_in classXhtml5BaseSink- See Also:
-
horizontalRule
Description copied from class:Xhtml5BaseSinkAdds a horizontal separator rule.Supported attributes are the
base attributesplus:ALIGN,NOSHADE,SIZE,WIDTH.- Specified by:
horizontalRulein interfaceSink- Overrides:
horizontalRulein classXhtml5BaseSink- Parameters:
attributes- A set ofSinkEventAttributes, may benull.- See Also:
-
table
Description copied from interface:SinkStarts 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 classXhtml5BaseSink- Parameters:
attributes- A set ofSinkEventAttributes, may benull.
-
table_
public void table_()Description copied from class:Xhtml5BaseSinkEnds a table element.- Specified by:
table_in interfaceSink- Overrides:
table_in classXhtml5BaseSink- See Also:
-
tableRows
public void tableRows(int[] justification, boolean grid) Description copied from class:Xhtml5BaseSinkThe default style class isbodyTable.- Specified by:
tableRowsin interfaceSink- Overrides:
tableRowsin classXhtml5BaseSink- 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. Each element of the array must be one of the following constants:Sink.JUSTIFY_LEFT,Sink.JUSTIFY_CENTER,Sink.JUSTIFY_RIGHTorSink.JUSTIFY_DEFAULT.grid- iftruethe style classbodyTableBorderwill be added true to render a grid, false otherwise.- See Also:
-
tableRows_
public void tableRows_()Description copied from interface:SinkEnds an element that contains rows of table data.- Specified by:
tableRows_in interfaceSink- Overrides:
tableRows_in classXhtml5BaseSink
-
tableRow
Description copied from class:Xhtml5BaseSinkRows are striped with two colors by adding the classaorb. If the provided attributes specify thehiddenclass, the next call to tableRow will set the same striping class as this one. A style forhiddenortable.bodyTable hiddenmay need to be provided to actually hide such a row. Starts a table row.Supported attributes are the
base attributesplus:ALIGN,BGCOLOR,VALIGN.- Specified by:
tableRowin interfaceSink- Overrides:
tableRowin classXhtml5BaseSink- Parameters:
attributes- A set ofSinkEventAttributes, may benull.- See Also:
-
tableRow_
public void tableRow_()Description copied from class:Xhtml5BaseSinkEnds a row element.- Specified by:
tableRow_in interfaceSink- Overrides:
tableRow_in classXhtml5BaseSink- See Also:
-
writeEmptyTableHeader
private void writeEmptyTableHeader() -
writeTableDelimiterRow
private void writeTableDelimiterRow()Emit the delimiter row which determines the alignment -
tableCell
Description copied from interface:SinkStarts 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 classXhtml5BaseSink- Parameters:
attributes- A set ofSinkEventAttributes, may benull.
-
tableHeaderCell
Description copied from interface:SinkStarts a table header cell.Supported attributes are the same as for
tableCell.- Specified by:
tableHeaderCellin interfaceSink- Overrides:
tableHeaderCellin classXhtml5BaseSink- Parameters:
attributes- A set ofSinkEventAttributes, may benull.
-
tableCell_
public void tableCell_()Description copied from interface:SinkEnds a cell element.- Specified by:
tableCell_in interfaceSink- Overrides:
tableCell_in classXhtml5BaseSink
-
tableHeaderCell_
public void tableHeaderCell_()Description copied from interface:SinkEnds a cell header element.- Specified by:
tableHeaderCell_in interfaceSink- Overrides:
tableHeaderCell_in classXhtml5BaseSink
-
endTableCell
private void endTableCell()Ends a table cell. -
tableCaption
Description copied from class:Xhtml5BaseSinkStarts 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 classXhtml5BaseSink- Parameters:
attributes- A set ofSinkEventAttributes, may benull.- See Also:
-
tableCaption_
public void tableCaption_()Description copied from class:Xhtml5BaseSinkEnds a caption element of a table.- Specified by:
tableCaption_in interfaceSink- Overrides:
tableCaption_in classXhtml5BaseSink- See Also:
-
figure
Description copied from interface:SinkStarts 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 classXhtml5BaseSink- Parameters:
attributes- A set ofSinkEventAttributes, may benull.
-
figureCaption
Description copied from interface:SinkStarts a figure caption.Supported attributes are the
base attributes.- Specified by:
figureCaptionin interfaceSink- Overrides:
figureCaptionin classXhtml5BaseSink- Parameters:
attributes- A set ofSinkEventAttributes, may benull.- See Also:
-
figureCaption_
public void figureCaption_()Description copied from interface:SinkEnds a caption of an image.- Specified by:
figureCaption_in interfaceSink- Overrides:
figureCaption_in classXhtml5BaseSink
-
figureGraphics
Description copied from interface:SinkAdds 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 classXhtml5BaseSink- Parameters:
name- the image source, a valid URL.attributes- A set ofSinkEventAttributes, may benull.- See Also:
-
figure_
public void figure_()Description copied from interface:SinkEnds a basic image embedding element.- Specified by:
figure_in interfaceSink- Overrides:
figure_in classXhtml5BaseSink
-
writeImage
-
anchor
Description copied from class:Xhtml5BaseSinkStarts 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 classXhtml5BaseSink- Parameters:
name- the name of the anchor. This has to be a valid SGML NAME token.attributes- A set ofSinkEventAttributes, may benull.- See Also:
-
anchor_
public void anchor_()Description copied from class:Xhtml5BaseSinkEnds an anchor element.- Specified by:
anchor_in interfaceSink- Overrides:
anchor_in classXhtml5BaseSink- See Also:
-
link
Description copied from class:Xhtml5BaseSinkThe default style class for external link isexternalLink. 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 classXhtml5BaseSink- Parameters:
name- the name of the link.attributes- A set ofSinkEventAttributes, may benull.- See Also:
-
link_
public void link_()Description copied from class:Xhtml5BaseSinkEnds a link element.- Specified by:
link_in interfaceSink- Overrides:
link_in classXhtml5BaseSink- See Also:
-
inline
Description copied from interface:SinkStarts 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 classXhtml5BaseSink- Parameters:
attributes- A set ofSinkEventAttributes, may benull.
-
filterAttributes
private static boolean filterAttributes(MutableAttributeSet attributes, AttributeSet... attributesToFilter) -
inline_
public void inline_()Description copied from interface:SinkEnds an inline element.- Specified by:
inline_in interfaceSink- Overrides:
inline_in classXhtml5BaseSink
-
italic
public void italic()Description copied from class:Xhtml5BaseSinkStarts an italic element. Alternatively one may useSink.text(String,SinkEventAttributes)withSTYLEinstead.- Specified by:
italicin interfaceSink- Overrides:
italicin classXhtml5BaseSink- See Also:
-
italic_
public void italic_()Description copied from class:Xhtml5BaseSinkEnds an italic element. Alternatively one may useSink.text(String,SinkEventAttributes)withSTYLEinstead.- Specified by:
italic_in interfaceSink- Overrides:
italic_in classXhtml5BaseSink- See Also:
-
bold
public void bold()Description copied from class:Xhtml5BaseSinkStarts a bold element. Alternatively one may useSink.text(String,SinkEventAttributes)withSTYLEinstead.- Specified by:
boldin interfaceSink- Overrides:
boldin classXhtml5BaseSink- See Also:
-
bold_
public void bold_()Description copied from class:Xhtml5BaseSinkEnds a bold element. Alternatively one may useSink.text(String,SinkEventAttributes)withSTYLEinstead.- Specified by:
bold_in interfaceSink- Overrides:
bold_in classXhtml5BaseSink- See Also:
-
monospaced
public void monospaced()Description copied from class:Xhtml5BaseSinkStarts a monospaced element. Alternatively one may useSink.text(String,SinkEventAttributes)withSTYLEinstead.- Specified by:
monospacedin interfaceSink- Overrides:
monospacedin classXhtml5BaseSink- See Also:
-
monospaced_
public void monospaced_()Description copied from class:Xhtml5BaseSinkEnds a monospaced element. Alternatively one may useSink.text(String,SinkEventAttributes)withSTYLEinstead.- Specified by:
monospaced_in interfaceSink- Overrides:
monospaced_in classXhtml5BaseSink- See Also:
-
lineBreak
Description copied from class:Xhtml5BaseSink- Specified by:
lineBreakin interfaceSink- Overrides:
lineBreakin classXhtml5BaseSink- Parameters:
attributes- A set ofSinkEventAttributes, may benull.- See Also:
-
nonBreakingSpace
public void nonBreakingSpace()Description copied from interface:SinkAdds a non breaking space, ie a space without any special formatting operations.- Specified by:
nonBreakingSpacein interfaceSink- Overrides:
nonBreakingSpacein classXhtml5BaseSink
-
text
Description copied from interface:SinkAdds 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 classXhtml5BaseSink- Parameters:
text- The text to write.attributes- A set ofSinkEventAttributes, may benull.
-
rawText
-
unknown
Adds 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. Add an unknown event. This can be used to generate html tags for which no corresponding sink event exists.If
HtmlTools.getHtmlTag(name)does not return null, the corresponding tag will be written.For example, the div block
<div class="detail" style="display:inline">text</div>
can be generated via the following event sequence:
SinkEventAttributeSet atts = new SinkEventAttributeSet(); atts.addAttribute(SinkEventAttributes.CLASS, "detail"); atts.addAttribute(SinkEventAttributes.STYLE, "display:inline"); sink.unknown("div", new Object[]{new Integer(HtmlMarkup.TAG_TYPE_START)}, atts); sink.text("text"); sink.unknown("div", new Object[]{new Integer(HtmlMarkup.TAG_TYPE_END)}, null);Unknown events just log a warning message but are ignored otherwise.- Specified by:
unknownin interfaceSink- Overrides:
unknownin classXhtml5BaseSink- Parameters:
name- the name of the event. If this is not a valid xhtml tag name as defined inHtmlMarkupthen the event is ignored.requiredParams- If this is null or the first argument is not an Integer then the event is ignored. The first argument should indicate the type of the unknown event, its integer value should be one ofTAG_TYPE_START,TAG_TYPE_END,TAG_TYPE_SIMPLE,ENTITY_TYPE, orCDATA_TYPE, otherwise the event will be ignored.attributes- a set of attributes for the event. May be null. The attributes will always be written, no validity check is performed.- See Also:
-
markupLineBreak
public void markupLineBreak(int indentLevel) Description copied from interface:SinkAdds a single line break with the specified indentation level. The default implementation does nothing. This is different from emitting a line break withSink.lineBreak(SinkEventAttributes)orSink.text(String, SinkEventAttributes)as those line breaks are part of the content (i.e. affect rendering) while this line break is purely for pretty-printing the Sink's output and should not affect the rendering of the content. This is useful for Sinks that emit text-based markup languages (e.g. HTML, XML, etc.) to produce more human-readable output.- Specified by:
markupLineBreakin interfaceSink- Overrides:
markupLineBreakin classXhtml5BaseSink- Parameters:
indentLevel- the indentation level, where 0 means no indentation, 1 means one level of indentation, etc. The sink can decide how many spaces/tabs to use for each level of indentation.
-
close
public void close()Description copied from interface:SinkCloses 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 classXhtml5BaseSink
-