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 enum
Most important contextual metadata (of the surrounding element) -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate Collection
<String> author.private StringBuilder
A buffer that holds the current text when headerFlag or bufferFlag set totrue
.private final LastTwoLinesBufferingWriter
A temporary writer used to buffer the last two linesprivate int
number of cells in a table.justification of table cells per column.private String
date.protected Queue
<MarkdownSink.ElementContext> The context of the surrounding elements as stack (LIFO)private String
Keep track of end markup for inline events.private boolean
is header rowprivate String
linkName.private static final org.slf4j.Logger
private boolean
tableHeaderCellFlag, set totrue
for table rows containing at least one table header cellprivate String
title.private final PrintWriter
The writer to use.Fields inherited from interface org.apache.maven.doxia.module.markdown.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_MARKUP
Fields inherited from interface org.apache.maven.doxia.markup.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, STAR
Fields inherited from interface org.apache.maven.doxia.sink.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_6
Fields inherited from interface org.apache.maven.doxia.markup.TextMarkup
PIPE
-
Constructor Summary
ConstructorsModifierConstructorDescriptionprotected
MarkdownSink
(Writer writer) Constructor, initialize the Writer and the variables. -
Method Summary
Modifier and TypeMethodDescriptionvoid
anchor
(String name, SinkEventAttributes attributes) Starts an element which defines an anchor.void
anchor_()
Ends an anchor element.void
author_()
Ends an author element.void
blockquote
(SinkEventAttributes attributes) Starts a blockquote element.void
Ends an blockquote element.void
body
(SinkEventAttributes attributes) Starts the body of a document.void
body_()
Ends the body element.void
bold()
Starts a bold element.void
bold_()
Ends a bold element.void
close()
Close the writer or the stream, if needed.void
Add a comment.void
date_()
Ends the date element.void
definedTerm
(SinkEventAttributes attributes) Starts a definition term element within a definition list.void
Ends a definition term element within a definition list.void
definition
(SinkEventAttributes attributes) Starts a definition element within a definition list.void
Ends a definition element within a definition list.void
definitionList
(SinkEventAttributes attributes) Starts a definition list.void
Ends a definition list element.private void
endBlock
(boolean requireBlankLine) private void
endContext
(MarkdownSink.ElementContext expectedContext) private void
Ends a table cell.private void
Ensures that thewriter
is currently at the beginning of a new line.private void
Ensures that thewriter
is either at the beginning or preceded by a blank line.private static String
escapeForTableCell
(String text) Escapes the pipe character according to GFM Table Extension in addition to the regular markdown escaping.private static String
escapeMarkdown
(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)void
figure
(SinkEventAttributes attributes) Starts a basic image embedding element.void
figure_()
Ends a basic image embedding element.void
figureGraphics
(String name, SinkEventAttributes attributes) Adds a graphic element.void
flush()
Flush the writer or the stream, if needed.protected StringBuilder
Returns the buffer that holds the current text.private String
void
head
(SinkEventAttributes attributes) Starts the head element.void
head_()
Ends the head element.void
horizontalRule
(SinkEventAttributes attributes) Adds a horizontal separator rule.protected void
init()
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.void
inline
(SinkEventAttributes attributes) Starts an inline element.void
inline_()
Ends an inline element.void
italic()
Starts an italic element.void
italic_()
Ends an italic element.void
lineBreak
(SinkEventAttributes attributes) Adds a line break.void
link
(String name, SinkEventAttributes attributes) Starts a link.void
link_()
Ends a link element.void
list_()
Ends an unordered list element.void
listItem
(SinkEventAttributes attributes) Starts a list item element within an unordered list.void
Ends a list item element within an unordered list.void
Starts a monospaced element.void
Ends a monospaced element.void
Adding a non breaking space, ie a space without any special formatting operations.void
numberedList
(int numbering, SinkEventAttributes attributes) Starts an ordered list element.void
Ends an ordered list element.void
numberedListItem
(SinkEventAttributes attributes) Starts a list item element within an ordered list.void
Ends a list item element within an ordered list.void
Adding a new page separator.void
paragraph
(SinkEventAttributes attributes) Starts a paragraph.void
Ends a paragraph element.void
Adding a raw text, ie a text without any special formatting operations.private boolean
protected void
Reset the StringBuilder.void
sectionTitle
(int level, SinkEventAttributes attributes) Start a new section title at the given level.void
sectionTitle_
(int level) Ends a section title at the given level.private void
startBlock
(boolean requireBlankLine) private void
startContext
(MarkdownSink.ElementContext newContext) void
table
(SinkEventAttributes attributes) Starts a table.void
tableCaption
(SinkEventAttributes attributes) Starts a table caption.void
Ends a caption element of a table.void
tableCell
(SinkEventAttributes attributes) Starts a table cell.void
Ends a cell element.void
tableHeaderCell
(SinkEventAttributes attributes) Starts a table header cell.void
Ends a cell header element.void
tableRow
(SinkEventAttributes attributes) Starts a table row.void
Ends a row element.void
tableRows
(int[] justification, boolean grid) Starts an element that contains rows of table data.void
Ends an element that contains rows of table data.void
text
(String text, SinkEventAttributes attributes) Adds a text.void
title_()
Ends the title element.void
unknown
(String name, Object[] requiredParams, SinkEventAttributes attributes) Add an unknown event.void
verbatim
(SinkEventAttributes attributes) Starts a verbatim block, ie a block where whitespace has semantic relevance.void
Ends a verbatim element.private void
private void
writeImage
(String alt, String src) private void
Emit the delimiter row which determines the alignmentprotected void
writeUnescaped
(String text) Methods inherited from class org.apache.maven.doxia.sink.impl.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_, title
Methods inherited from class org.apache.maven.doxia.sink.impl.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 totrue
for table rows containing at least one table header cell -
cellCount
private int cellCountnumber of cells in a table. -
cellJustif
justification of table cells per column. -
isFirstTableRow
private boolean isFirstTableRowis header row -
writer
The writer to use. -
bufferingWriter
A temporary writer used to buffer the last two lines -
inlineStack
Keep track of end markup for inline events. -
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 thewriter
is currently at the beginning of a new line. Optionally writes a line separator to ensure that. -
ensureBlankLine
private void ensureBlankLine()Ensures that thewriter
is 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:AbstractSink
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.- Overrides:
init
in classAbstractSink
-
resetBuffer
protected void resetBuffer()Reset the StringBuilder. -
head
Description copied from class:SinkAdapter
Starts 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:
head
in interfaceSink
- Overrides:
head
in classSinkAdapter
- Parameters:
attributes
- A set ofSinkEventAttributes
, may benull
.
-
head_
public void head_()Description copied from class:SinkAdapter
Ends the head element.- Specified by:
head_
in interfaceSink
- Overrides:
head_
in classSinkAdapter
-
body
Description copied from class:SinkAdapter
Starts the body of a document. This contains the document's content.Supported attributes are the
base attributes
.- Specified by:
body
in interfaceSink
- Overrides:
body
in classSinkAdapter
- Parameters:
attributes
- A set ofSinkEventAttributes
, may benull
.- See Also:
-
body_
public void body_()Description copied from class:SinkAdapter
Ends the body element.- Specified by:
body_
in interfaceSink
- Overrides:
body_
in classSinkAdapter
-
title_
public void title_()Description copied from class:SinkAdapter
Ends the title element.- Specified by:
title_
in interfaceSink
- Overrides:
title_
in classSinkAdapter
-
author_
public void author_()Description copied from class:SinkAdapter
Ends an author element.- Specified by:
author_
in interfaceSink
- Overrides:
author_
in classSinkAdapter
-
date_
public void date_()Description copied from class:SinkAdapter
Ends the date element.- Specified by:
date_
in interfaceSink
- Overrides:
date_
in classSinkAdapter
-
sectionTitle
Description copied from class:SinkAdapter
Start 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
section
element 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 attributes
plusALIGN
.- Specified by:
sectionTitle
in interfaceSink
- Overrides:
sectionTitle
in 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:SinkAdapter
Ends 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:SinkAdapter
Ends an unordered list element.- Specified by:
list_
in interfaceSink
- Overrides:
list_
in classSinkAdapter
-
listItem
Description copied from class:SinkAdapter
Starts a list item element within an unordered list.Supported attributes are the
base attributes
.- Specified by:
listItem
in interfaceSink
- Overrides:
listItem
in classSinkAdapter
- Parameters:
attributes
- A set ofSinkEventAttributes
, may benull
.
-
listItem_
public void listItem_()Description copied from class:SinkAdapter
Ends a list item element within an unordered list.- Specified by:
listItem_
in interfaceSink
- Overrides:
listItem_
in classSinkAdapter
-
numberedList
Description copied from class:SinkAdapter
Starts an ordered list element.Supported attributes are the
base attributes
.- Specified by:
numberedList
in interfaceSink
- Overrides:
numberedList
in classSinkAdapter
- Parameters:
numbering
- the numbering style.attributes
- A set ofSinkEventAttributes
, may benull
.- See Also:
-
numberedList_
public void numberedList_()Description copied from class:SinkAdapter
Ends an ordered list element.- Specified by:
numberedList_
in interfaceSink
- Overrides:
numberedList_
in classSinkAdapter
-
numberedListItem
Description copied from class:SinkAdapter
Starts a list item element within an ordered list.Supported attributes are the
base attributes
.- Specified by:
numberedListItem
in interfaceSink
- Overrides:
numberedListItem
in classSinkAdapter
- Parameters:
attributes
- A set ofSinkEventAttributes
, may benull
.
-
numberedListItem_
public void numberedListItem_()Description copied from class:SinkAdapter
Ends a list item element within an ordered list.- Specified by:
numberedListItem_
in interfaceSink
- Overrides:
numberedListItem_
in classSinkAdapter
-
definitionList
Description copied from class:SinkAdapter
Starts a definition list.Supported attributes are the
base attributes
.- Specified by:
definitionList
in interfaceSink
- Overrides:
definitionList
in classSinkAdapter
- Parameters:
attributes
- A set ofSinkEventAttributes
, may benull
.
-
definitionList_
public void definitionList_()Description copied from class:SinkAdapter
Ends a definition list element.- Specified by:
definitionList_
in interfaceSink
- Overrides:
definitionList_
in classSinkAdapter
-
definedTerm
Description copied from class:SinkAdapter
Starts a definition term element within a definition list.Supported attributes are the
base attributes
.- Specified by:
definedTerm
in interfaceSink
- Overrides:
definedTerm
in classSinkAdapter
- Parameters:
attributes
- A set ofSinkEventAttributes
, may benull
.
-
definedTerm_
public void definedTerm_()Description copied from class:SinkAdapter
Ends a definition term element within a definition list.- Specified by:
definedTerm_
in interfaceSink
- Overrides:
definedTerm_
in classSinkAdapter
-
definition
Description copied from class:SinkAdapter
Starts a definition element within a definition list.Supported attributes are the
base attributes
.- Specified by:
definition
in interfaceSink
- Overrides:
definition
in classSinkAdapter
- Parameters:
attributes
- A set ofSinkEventAttributes
, may benull
.
-
definition_
public void definition_()Description copied from class:SinkAdapter
Ends a definition element within a definition list.- Specified by:
definition_
in interfaceSink
- Overrides:
definition_
in classSinkAdapter
-
pageBreak
public void pageBreak()Description copied from class:SinkAdapter
Adding a new page separator.- Specified by:
pageBreak
in interfaceSink
- Overrides:
pageBreak
in classSinkAdapter
-
paragraph
Description copied from class:SinkAdapter
Starts a paragraph.Supported attributes are the
base attributes
plusALIGN
.- Specified by:
paragraph
in interfaceSink
- Overrides:
paragraph
in classSinkAdapter
- Parameters:
attributes
- A set ofSinkEventAttributes
, may benull
.
-
paragraph_
public void paragraph_()Description copied from class:SinkAdapter
Ends a paragraph element.- Specified by:
paragraph_
in interfaceSink
- Overrides:
paragraph_
in classSinkAdapter
-
verbatim
Description copied from class:SinkAdapter
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 attributes
plus:DECORATION
(values: "source"),ALIGN
,WIDTH
.- Specified by:
verbatim
in interfaceSink
- Overrides:
verbatim
in classSinkAdapter
- Parameters:
attributes
- A set ofSinkEventAttributes
, may benull
.
-
verbatim_
public void verbatim_()Description copied from class:SinkAdapter
Ends a verbatim element.- Specified by:
verbatim_
in interfaceSink
- Overrides:
verbatim_
in classSinkAdapter
-
blockquote
Description copied from class:SinkAdapter
Starts a blockquote element.Supported attributes are the
base attributes
.- Specified by:
blockquote
in interfaceSink
- Overrides:
blockquote
in classSinkAdapter
- Parameters:
attributes
- A set ofSinkEventAttributes
, may benull
.
-
blockquote_
public void blockquote_()Description copied from class:SinkAdapter
Ends an blockquote element.- Specified by:
blockquote_
in interfaceSink
- Overrides:
blockquote_
in classSinkAdapter
-
horizontalRule
Description copied from class:SinkAdapter
Adds a horizontal separator rule.Supported attributes are the
base attributes
plus:ALIGN
,NOSHADE
,SIZE
,WIDTH
.- Specified by:
horizontalRule
in interfaceSink
- Overrides:
horizontalRule
in classSinkAdapter
- Parameters:
attributes
- A set ofSinkEventAttributes
, may benull
.
-
table
Description copied from class:SinkAdapter
Starts 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 attributes
plus:ALIGN
,BGCOLOR
,BORDER
,CELLPADDING
,CELLSPACING
,FRAME
,RULES
,SUMMARY
,WIDTH
.- Specified by:
table
in interfaceSink
- Overrides:
table
in classSinkAdapter
- Parameters:
attributes
- A set ofSinkEventAttributes
, may benull
.
-
tableRows
public void tableRows(int[] justification, boolean grid) Description copied from class:SinkAdapter
Starts an element that contains rows of table data.- Specified by:
tableRows
in interfaceSink
- Overrides:
tableRows
in 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:SinkAdapter
Ends an element that contains rows of table data.- Specified by:
tableRows_
in interfaceSink
- Overrides:
tableRows_
in classSinkAdapter
-
tableRow
Description copied from class:SinkAdapter
Starts a table row.Supported attributes are the
base attributes
plus:ALIGN
,BGCOLOR
,VALIGN
.- Specified by:
tableRow
in interfaceSink
- Overrides:
tableRow
in classSinkAdapter
- Parameters:
attributes
- A set ofSinkEventAttributes
, may benull
.
-
tableRow_
public void tableRow_()Description copied from class:SinkAdapter
Ends 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:SinkAdapter
Starts a table cell.Supported attributes are the
base attributes
plus:ABBRV
,ALIGN
,AXIS
,BGCOLOR
,COLSPAN
,HEADERS
,HEIGHT
,NOWRAP
,ROWSPAN
,SCOPE
,VALIGN
,WIDTH
.- Specified by:
tableCell
in interfaceSink
- Overrides:
tableCell
in classSinkAdapter
- Parameters:
attributes
- A set ofSinkEventAttributes
, may benull
.
-
tableHeaderCell
Description copied from class:SinkAdapter
Starts a table header cell.Supported attributes are the same as for
tableCell
.- Specified by:
tableHeaderCell
in interfaceSink
- Overrides:
tableHeaderCell
in classSinkAdapter
- Parameters:
attributes
- A set ofSinkEventAttributes
, may benull
.
-
tableCell_
public void tableCell_()Description copied from class:SinkAdapter
Ends a cell element.- Specified by:
tableCell_
in interfaceSink
- Overrides:
tableCell_
in classSinkAdapter
-
tableHeaderCell_
public void tableHeaderCell_()Description copied from class:SinkAdapter
Ends 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:SinkAdapter
Starts 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 attributes
plusALIGN
.- Specified by:
tableCaption
in interfaceSink
- Overrides:
tableCaption
in classSinkAdapter
- Parameters:
attributes
- A set ofSinkEventAttributes
, may benull
.- See Also:
-
tableCaption_
public void tableCaption_()Description copied from class:SinkAdapter
Ends a caption element of a table.- Specified by:
tableCaption_
in interfaceSink
- Overrides:
tableCaption_
in classSinkAdapter
-
figure
Description copied from class:SinkAdapter
Starts 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:
figure
in interfaceSink
- Overrides:
figure
in classSinkAdapter
- Parameters:
attributes
- A set ofSinkEventAttributes
, may benull
.
-
figureGraphics
Description copied from class:SinkAdapter
Adds a graphic element.The
src
parameter 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 attributes
plus:SRC
,ALT
,WIDTH
,HEIGHT
,ALIGN
,BORDER
,HSPACE
,VSPACE
,ISMAP
,USEMAP
.If the
SRC
attribute is specified in SinkEventAttributes, it will be overridden by thesrc
parameter.- Specified by:
figureGraphics
in interfaceSink
- Overrides:
figureGraphics
in 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:SinkAdapter
Ends a basic image embedding element.- Specified by:
figure_
in interfaceSink
- Overrides:
figure_
in classSinkAdapter
-
writeImage
-
anchor
Starts an element which defines an anchor.The
name
parameter 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
. IfNAME
is specified in the SinkEventAttributes, it will be overwritten by thename
parameter.- Specified by:
anchor
in interfaceSink
- Overrides:
anchor
in 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:SinkAdapter
Ends an anchor element.- Specified by:
anchor_
in interfaceSink
- Overrides:
anchor_
in classSinkAdapter
-
link
Starts a link.The
name
parameter has to be a valid URI according to RFC 3986, i.e. for internal links (links to an anchor within the same source document),name
should start with the character "#". This also implies that all unsafe characters are already encoded.Supported attributes are the
base attributes
plus:CHARSET
,COORDS
,HREF
,HREFLANG
,REL
,REV
,SHAPE
,TARGET
,TYPE
.If
HREF
is specified in the SinkEventAttributes, it will be overwritten by thename
parameter.- Specified by:
link
in interfaceSink
- Overrides:
link
in classSinkAdapter
- Parameters:
name
- the name of the link.attributes
- A set ofSinkEventAttributes
, may benull
.- See Also:
-
link_
public void link_()Description copied from class:SinkAdapter
Ends a link element.- Specified by:
link_
in interfaceSink
- Overrides:
link_
in classSinkAdapter
-
inline
Description copied from class:SinkAdapter
Starts 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 attributes
plusSEMANTICS
(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:
inline
in interfaceSink
- Overrides:
inline
in classSinkAdapter
- Parameters:
attributes
- A set ofSinkEventAttributes
, may benull
.
-
inline_
public void inline_()Description copied from class:SinkAdapter
Ends an inline element.- Specified by:
inline_
in interfaceSink
- Overrides:
inline_
in classSinkAdapter
-
italic
public void italic()Description copied from class:SinkAdapter
Starts an italic element. Alternatively one may useSink.text(String,SinkEventAttributes)
withSTYLE
instead.- Specified by:
italic
in interfaceSink
- Overrides:
italic
in classSinkAdapter
-
italic_
public void italic_()Description copied from class:SinkAdapter
Ends an italic element. Alternatively one may useSink.text(String,SinkEventAttributes)
withSTYLE
instead.- Specified by:
italic_
in interfaceSink
- Overrides:
italic_
in classSinkAdapter
-
bold
public void bold()Description copied from class:SinkAdapter
Starts a bold element. Alternatively one may useSink.text(String,SinkEventAttributes)
withSTYLE
instead.- Specified by:
bold
in interfaceSink
- Overrides:
bold
in classSinkAdapter
-
bold_
public void bold_()Description copied from class:SinkAdapter
Ends a bold element. Alternatively one may useSink.text(String,SinkEventAttributes)
withSTYLE
instead.- Specified by:
bold_
in interfaceSink
- Overrides:
bold_
in classSinkAdapter
-
monospaced
public void monospaced()Description copied from class:SinkAdapter
Starts a monospaced element. Alternatively one may useSink.text(String,SinkEventAttributes)
withSTYLE
instead.- Specified by:
monospaced
in interfaceSink
- Overrides:
monospaced
in classSinkAdapter
-
monospaced_
public void monospaced_()Description copied from class:SinkAdapter
Ends a monospaced element. Alternatively one may useSink.text(String,SinkEventAttributes)
withSTYLE
instead.- Specified by:
monospaced_
in interfaceSink
- Overrides:
monospaced_
in classSinkAdapter
-
lineBreak
Description copied from class:SinkAdapter
- Specified by:
lineBreak
in interfaceSink
- Overrides:
lineBreak
in classSinkAdapter
- Parameters:
attributes
- A set ofSinkEventAttributes
, may benull
.
-
nonBreakingSpace
public void nonBreakingSpace()Description copied from class:SinkAdapter
Adding a non breaking space, ie a space without any special formatting operations.- Specified by:
nonBreakingSpace
in interfaceSink
- Overrides:
nonBreakingSpace
in classSinkAdapter
-
text
Description copied from class:SinkAdapter
Adds a text.The
text
parameter should contain only real content, ie any ignorable/collapsable whitespace/EOLs or other pretty-printing should be removed/normalized by a parser.If
text
contains any variants of line terminators, they should be normalized to the System EOL by an implementing Sink.Supported attributes are the
base attributes
plusSEMANTICS
(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:
text
in interfaceSink
- Overrides:
text
in classSinkAdapter
- Parameters:
text
- The text to write.attributes
- A set ofSinkEventAttributes
, may benull
.
-
rawText
Description copied from class:SinkAdapter
Adding a raw text, ie a text without any special formatting operations.- Specified by:
rawText
in interfaceSink
- Overrides:
rawText
in classSinkAdapter
- Parameters:
text
- The text to write.
-
comment
Description copied from class:SinkAdapter
Add a comment.- Specified by:
comment
in interfaceSink
- Overrides:
comment
in 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:
unknown
in interfaceSink
- Overrides:
unknown
in 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:
true
if any of the parent contexts require buffering
-
writeUnescaped
-
flush
public void flush()Description copied from class:SinkAdapter
Flush the writer or the stream, if needed. Flushing a previously-flushed Sink has no effect.- Specified by:
flush
in interfaceSink
- Overrides:
flush
in classSinkAdapter
-
close
public void close()Description copied from class:SinkAdapter
Close the writer or the stream, if needed. Closing a previously-closed Sink has no effect.- Specified by:
close
in interfaceAutoCloseable
- Specified by:
close
in interfaceSink
- Overrides:
close
in 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
-