外观
fandoc
原文: https://finproducts.atlassian.net/wiki/spaces/JIDD3/pages/34793816135/FIN+5.3.1+fandoc 中文整理基于 FIN 5.3.1
导读: Fandoc 解析器和 DOM
以下为 API 参考,保留英文以便对照源码;目录已列出(英文标题便于检索);概述已尽量中译。
目录(导读)
- mixins
- classes
- enums
- errs
- docs
- Overview
- Header
- Inline Formatting
- Paragraphs
- Preformatted
- Unordered List
- Ordered List
- Horizontal Rules
- Block Quotes
- Images
- Headings
- Ex Heading 2
- Ex Heading 3
- Hyperlinks
- Fandoc API
- Slot Details
- htmlName
- id
- isInline
- findHeadings
- meta
- write
- add
- addAll
- addChild
- anchorId
- children
- eachChild
- insert
- path
- remove
- removeAll
- toText
- writeChildren
- dump
- isBlock
- isFirst
- isLast
- parent
- pos
- blockQuote
- code
- doc
- emphasis
- fromStr
- heading
- hr
- image
- link
- listItem
- orderedList
- para
- pre
- strong
- text
- unorderedList
- vals
- make
- str
- toStr
- docEnd
- docStart
- elemEnd
- elemStart
- onImage
- onLink
- file
- line
- main
- parse
- parseHeader
- parseStr
- silent
- level
- title
- docHead
- out
- alt
- size
- uri
- isCode
- isTextUri
- setText
- style
- fromFirstChar
- htmlType
- lowerAlpha
- lowerRoman
- number
- upperAlpha
- upperRoman
- admonition
API 正文(英文)
enums
| DocNodeId | DocNodeId |
| OrderedListStyle | OrderedListStyle |
errs
| FandocErr | FandocErr |
docs
Overview
Fandoc is documentation format written in plaintext similiar to Markdown. Fandoc is the format used for:
- Fantom source code documentation via the
**comment - All the documentation manuals (including this document itself)
- Comments on fantom.org discussion groups
You can use the fandoc APIs to parse fandoc plaintext into a document object model and generate HTML.
Header
The begining of a Fandoc document may be prefixed with a header block. The header block includes a series of lines which begin with **. If the line includes a colon, then it is added a key/value pair to Doc.meta. For example, we use the following header in the standard documentation:
**************************************************************************
** title: Fandoc
** author: Brian Frank
** created: 10 Apr 08
** copyright: Copyright (c) 2008, Brian Frank and Andy Frank
** license: Licensed under the Academic Free License version 3.0
**************************************************************************Inline Formatting
- Inline code: 'FandocParser'
- Strong: **foo bar**
- Emphasis: *foo bar*
- Strong+Emphasis: ** *foo bar* **
- Hyperlink: `https://fantom.org/`
- Hyperlink: [Fantom Home Page]`https://fantom.org/`- Code inline:
FandocParser - Strong: foo bar
- Emphasis: foo bar
- Strong+Emphasis: foo bar
- Hyperlink: https://fantom.org/
- Hyperlink: Fantom Home Page
Paragraphs
Paragraphs are separated by a blank line:
Lorem ipsum dolor sit amet, consectetur adipisicing elit,
sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris
nisi ut aliquip ex ea commodo consequat.Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
Preformatted
When documenting a programming language, you tend to include lots of code snippets. Anything indented two or more spaces is considered preformatted (like the pre tag in HTML). Preformatted code cannot start with a dash/space, number/dot/space, or letter/dot/space otherwise it considerded a list:
Examples:
"abcd"[0..2] => "abc"
"abcd"[3..3] => "d"
"abcd"[-2..-1] => "cd"Examples:
"abcd"[0..2] => "abc"
"abcd"[3..3] => "d"
"abcd"[-2..-1] => "cd"You can also denote a block of text as preformatted by wrapping it with the special tokens pre> and <pre:
pre>
- No markup
- I mean it!
<pre- No markup
- I mean it!Blocks annotated with the pre> token are trimmed based on the line with the left most margin.
Unordered List
Unordered lists use a dash followed by a space. Use indentation to indicate list hierarchy (two or more spaces):
- item 1
- item 2
- item 3
- sub 3a
- sub 3b
- item 4- item 1
- item 2
- item 3
- sub 3a
- sub 3b
- item 4
Ordered List
Ordered lists use an identifier followed by a dot and space. The identifier can be a number, letter, or roman numeral (lower or upper case). Use indentation to indicate list hierarchy (two or more spaces):
I. Chapter I
1. Section 1
2. Section 2
a. Subsection a
b. Subsection b
II. Chapter II
A. Section A
B. Section B
i. Subsection i
ii.Subsection ii- Chapter I
- Section 1
- Section 2
- Subsection a
- Subsection b
- Chapter II
- Section A
- Section B
- Subsection i
- Subsection ii
Horizontal Rules
Horizontal rules start with ---, and must be preceded by a blank line:
Above the rule
---
Below the ruleAbove the rule
Below the rule
Block Quotes
Block quotes start the first line (or every line) of the paragraph with the ">" character followed by a space:
> Lorem ipsum dolor sit amet, consectetur adipisicing elit,
> sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
> Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris
nisi ut aliquip ex ea commodo consequat.Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
Images
Images use the same syntax as a hyperlink with anchor text, but are prefixed with a bang:
![fan logo]`https://fantom.org/pod/fantomws/res/img/fantom.png`
You can set an explicit size for the image as follows:
![fan logo][80x18]`https://fantom.org/pod/fantomws/res/img/fantom.png`
You can make an image a link as follows with no spaces between the brackets:
[![alt]`https://fantom.org/pod/fantomws/res/img/fantom.png`]`https://fantom.org/`Headings
Headings are a title line followed by an "underline". Documentation should define an anchor id for each heading:
Ex Heading 1 [#h1]
##################
Ex Heading 2 [#h2]
******************
Ex Heading 3 [#h3]
==================
Ex Heading 4 [#h4]
------------------Ex Heading 1
Ex Heading 2
Ex Heading 3
Ex Heading 4
Note: By convention top level sections of a chapter use heading level 2. Heading level 1 is reserved for the chapter title.
Hyperlinks
The compilerDoc pod is used to compile API or stand-alone documentation. It allows you to use abstract uris to create cross reference hyperlinks. During the compilation these uris are translated into relative links to the appropiate HTML files. Hyperlinks to types and slots are automatically formatted as inline code.
**APIs:**
- `sys::index`: pod index
- `web::pod-doc`: pod documentation
- `sys::Str`: API for type
- `sys::Str.getRange`: API for slot
- `Int`: API for type (internal to pod)
- `Int.toHex` API for slot (internal to pod)
- [now]`sys::Duration.now` API with achor text
**Manuals:**
- `docLang::index`: pod index
- `docLang::Closures`: chapter
- `docLang::Closures#syntax`: anchor within chapter
- `Env`: chapter (internal to pod)
- `Env#index`: anchor within chapter (internal to pod)APIs:
- sys: pod index
- Web: pod documentation
Str: API for typeStr.getRange: API for slotInt: API for type (internal to pod)Int.toHexAPI for slot (internal to pod)nowAPI with achor text
Manuals:
- docLang: pod index
- Closures: chapter
- Closures: anchor within chapter
- Env: chapter (internal to pod)
- Env#index: anchor within chapter (internal to pod)
Fandoc API
The FandocParser class is used to parse fandoc plaintext into a document object model. The DocNode is the base class of all nodes in the document tree. The tree is organized as subclasses of DocElems. The leaves of the tree which contain the actual text content are DocText.
Once a tree has been parsed into a DOM, you can translate into alternate formats via the DocWriter class. You can use HtmlDocWriter to translate to XHTML:
// parse into document tree
doc := FandocParser.make.parseStr("you want to do *what*!")
// write as html snippet (we don't write the
// document itself, just its children)
doc.writeChildren(HtmlDocWriter.make)
// outputs
<p>you want to do <em>what</em>!</p>
// write as full html document with head/body tags
doc.write(HtmlDocWriter.make)
// outputs
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=UTF-8'/>
</head>
<body>
<p>you want to do <em>what</em>!</p>
</body>BlockQuote
@Js class BlockQuote : DocElem
BlockQuote models a block of quoted text.
Methods
| htmlName | |
| id | |
| isInline |
Slot Details
htmlName
virtual override Str htmlName()
id
virtual override DocNodeId id()
isInline
virtual override Bool isInline()
Code
@Js class Code : DocElem
Code is inline code
Methods
| htmlName | |
| id | |
| isInline |
Slot Details
htmlName
virtual override Str htmlName()
id
virtual override DocNodeId id()
isInline
virtual override Bool isInline()
Doc
@Js class Doc : DocElem
Doc models the top level node of a fandoc document.
Fields
| meta |
Methods
| findHeadings | Recursively walk th document to build an order list of the multi-level headings which can serve as a "table of contents" for the document. |
| htmlName | |
| id | |
| isInline | |
| write |
Slot Details
findHeadings
Heading[] findHeadings()
Recursively walk th document to build an order list of the multi-level headings which can serve as a "table of contents" for the document.
htmlName
virtual override Str htmlName()
id
virtual override DocNodeId id()
isInline
virtual override Bool isInline()
meta
Str:Str meta := [Str:Str][:]
write
virtual override Void write(DocWriter out)
DocElem
@Js abstract class DocElem : DocNode
DocElem is a container node which models a branch of the doc tree.
See pod doc for usage.
Fields
| anchorId |
Methods
| add | Add a child to this node. |
| addAll | Convenicence to call add for each node in the given list. |
| addChild | |
| children | Get a readonly list of this elements's children. |
| eachChild | Iterate the children nodes |
| htmlName | Get the HTML element name to use for this element. |
| insert | Insert a child node at the specified index. |
| path | Covariant override to narrow path to list of DocElem. |
| remove | Remove a child node. |
| removeAll | Remove all child nodes. |
| toText | Get all the DocText children as a string |
| write | Write this element and its children to the specified DocWriter. |
| writeChildren | Write this element's children to the specified DocWriter. |
Slot Details
add
@Operator This add(DocNode node)
Add a child to this node. If adding a text node it is automatically merged with the trailing text node (if applicable). If the node is arlready parented thorw ArgErr. Return this.
addAll
This addAll(DocNode[] nodes)
Convenicence to call add for each node in the given list.
addChild
@Deprecated { msg="Use add()" } This addChild(DocNode node)
anchorId
Str? anchorId
children
DocNode[] children()
Get a readonly list of this elements's children.
eachChild
Void eachChild(|DocNode| f)
Iterate the children nodes
htmlName
abstract Str htmlName()
Get the HTML element name to use for this element.
insert
This insert(Int index, DocNode node)
Insert a child node at the specified index. A negative index may be used to access an index from the end of the list. If adding a text node it is automatically merged with surrounding text nodes (if applicable). If the node is already parented throws ArgErr.
path
override DocElem[] path()
Covariant override to narrow path to list of DocElem.
remove
This remove(DocNode node)
Remove a child node. If this element is not the child's current parent throw ArgErr. Return this.
removeAll
This removeAll()
Remove all child nodes. Return this.
toText
virtual override Str toText()
Get all the DocText children as a string
write
virtual override Void write(DocWriter out)
Write this element and its children to the specified DocWriter.
writeChildren
Void writeChildren(DocWriter out)
Write this element's children to the specified DocWriter.
DocNode
@Js abstract class DocNode : Obj
DocNode is the base class for nodes in a fandoc model. There are two type of nodes: DocElem and DocText.
See pod doc for usage.
Fields
| parent | Get the DocElem that contains this node. |
Methods
| dump | Debug dump to output stream. |
| id | Get node id for node type. |
| isBlock | Is this a block element versus an inline element. |
| isFirst | Return true if this node is the first child in its parent. |
| isInline | Is this an inline versus a block node. |
| isLast | Return true if this node is the last child in its parent. |
| path | Get the path from the root of the DOM to this node. |
| pos | Get the index of this node in its parent's children. |
| toText | Get all the DocText children as a string |
| write | Write this node to the specified DocWriter. |
Slot Details
dump
Void dump(OutStream out := Env.cur().out())
Debug dump to output stream.
id
abstract DocNodeId id()
Get node id for node type.
isBlock
Bool isBlock()
Is this a block element versus an inline element.
isFirst
Bool isFirst()
Return true if this node is the first child in its parent.
isInline
abstract Bool isInline()
Is this an inline versus a block node.
isLast
Bool isLast()
Return true if this node is the last child in its parent.
parent
DocElem? parent { internal set }
Get the DocElem that contains this node. Return null if not parented.
path
virtual DocNode[] path()
Get the path from the root of the DOM to this node.
pos
Int? pos()
Get the index of this node in its parent's children. Return null if not parented.
toText
abstract Str toText()
Get all the DocText children as a string
write
abstract Void write(DocWriter out)
Write this node to the specified DocWriter.
DocNodeId
@Js @Serializable { simple=true } enum class DocNodeId : Enum
DocNodeId
Enum
| text | |
| doc | |
| heading | |
| para | |
| pre | |
| blockQuote | |
| orderedList | |
| unorderedList | |
| listItem | |
| emphasis | |
| strong | |
| code | |
| link | |
| image | |
| hr |
Constructors
| fromStr | Return the DocNodeId instance for the specified name. |
Fields
| vals | List of DocNodeId values indexed by ordinal |
Slot Details
blockQuote
const static DocNodeId blockQuote := ...
code
const static DocNodeId code := ...
doc
const static DocNodeId doc := ...
emphasis
const static DocNodeId emphasis := ...
fromStr
static new fromStr(Str name, Bool checked := true)
Return the DocNodeId instance for the specified name. If not a valid name and checked is false return null, otherwise throw ParseErr.
heading
const static DocNodeId heading := ...
hr
const static DocNodeId hr := ...
image
const static DocNodeId image := ...
link
const static DocNodeId link := ...
listItem
const static DocNodeId listItem := ...
orderedList
const static DocNodeId orderedList := ...
para
const static DocNodeId para := ...
pre
const static DocNodeId pre := ...
strong
const static DocNodeId strong := ...
text
const static DocNodeId text := ...
unorderedList
const static DocNodeId unorderedList := ...
vals
const static DocNodeId[] vals := ...
List of DocNodeId values indexed by ordinal
DocText
@Js class DocText : DocNode
DocText segment.
See pod doc for usage.
Constructors
| make |
Fields
| str |
Methods
| id | |
| isInline | |
| toStr | |
| toText | |
| write |
Slot Details
id
virtual override DocNodeId id()
isInline
virtual override Bool isInline()
make
new make(Str str)
str
Str str
toStr
virtual override Str toStr()
toText
virtual override Str toText()
write
virtual override Void write(DocWriter out)
DocWriter
@Js mixin DocWriter
DocWriter is used to output a fandoc model using a series of callbacks.
See pod doc for usage.
Methods
| docEnd | Exit a document. |
| docStart | Enter a document. |
| elemEnd | Exit an element. |
| elemStart | Enter an element. |
| text | Write text node. |
Slot Details
docEnd
abstract Void docEnd(Doc doc)
Exit a document.
docStart
abstract Void docStart(Doc doc)
Enter a document.
elemEnd
abstract Void elemEnd(DocElem elem)
Exit an element.
elemStart
abstract Void elemStart(DocElem elem)
Enter an element.
text
abstract Void text(DocText text)
Write text node.
Emphasis
@Js class Emphasis : DocElem
Emphasis is italic text
Methods
| htmlName | |
| id | |
| isInline |
Slot Details
htmlName
virtual override Str htmlName()
id
virtual override DocNodeId id()
isInline
virtual override Bool isInline()
FandocDocWriter
@Js class FandocDocWriter : Obj, DocWriter
FandocDocWriter outputs a fandoc model to plain text fandoc format
Constructors
| make |
Fields
| onImage | Callback to perform image link resolution and checking |
| onLink | Callback to perform link resolution and checking for every Link element |
Methods
| docEnd | |
| docStart | |
| elemEnd | |
| elemStart | |
| text |
Slot Details
docEnd
virtual override Void docEnd(Doc doc)
docStart
virtual override Void docStart(Doc doc)
elemEnd
virtual override Void elemEnd(DocElem elem)
elemStart
virtual override Void elemStart(DocElem elem)
make
new make(OutStream out)
onImage
|Image|? onImage := null
Callback to perform image link resolution and checking
onLink
|Link|? onLink := null
Callback to perform link resolution and checking for every Link element
text
virtual override Void text(DocText text)
FandocErr
@Js const class FandocErr : Err
FandocErr
Constructors
| make |
Fields
| file | |
| line |
Methods
| toStr |
Slot Details
file
const Str file
line
const Int line
make
new make(Str msg, Str file, Int line, Err? cause := null)
toStr
virtual override Str toStr()
FandocParser
@Js class FandocParser : Obj
FandocParser translate fandoc text into an in-memory representation of the document.
See pod doc for usage.
Fields
| errs | List of errors detected |
| parseHeader | If true, then leading lines starting with ** are parsed as header |
| silent | If not silent, then errors are dumped to stdout |
Methods
| main | |
| parse | Parse the document from the specified in stream into an in-memory tree structure. |
| parseStr | Parse a string into its in-memory document tree structure. |
Slot Details
errs
FandocErr[] errs := FandocErr[,]
List of errors detected
main
static Void main(Str[] args := Env.cur().args())
parse
Doc parse(Str filename, InStream in, Bool close := true)
Parse the document from the specified in stream into an in-memory tree structure. If close is true, the stream is guaranteed to be closed.
parseHeader
Bool parseHeader := true
If true, then leading lines starting with ** are parsed as header
parseStr
Doc parseStr(Str plaintext)
Parse a string into its in-memory document tree structure.
silent
Bool silent := false
If not silent, then errors are dumped to stdout
Heading
@Js class Heading : DocElem
Heading
Constructors
| make |
Fields
| level |
Methods
| htmlName | |
| id | |
| isInline | |
| title |
Slot Details
htmlName
virtual override Str htmlName()
id
virtual override DocNodeId id()
isInline
virtual override Bool isInline()
level
const Int level
make
new make(Int level)
title
Str title()
Hr
@Js class Hr : DocElem
Hr models a horizontal rule.
Methods
| htmlName | |
| id | |
| isInline |
Slot Details
htmlName
virtual override Str htmlName()
id
virtual override DocNodeId id()
isInline
virtual override Bool isInline()
HtmlDocWriter
@Js class HtmlDocWriter : Obj, DocWriter
HtmlDocWriter outputs a fandoc model to XHTML
See pod doc for usage.
Constructors
| make |
Fields
| onImage | Callback to perform image link resolution and checking |
| onLink | Callback to perform link resolution and checking for every Link element |
| out |
Methods
| docEnd | |
| docHead | |
| docStart | |
| elemEnd | |
| elemStart | |
| text |
Slot Details
docEnd
virtual override Void docEnd(Doc doc)
docHead
virtual Void docHead(Doc doc)
docStart
virtual override Void docStart(Doc doc)
elemEnd
virtual override Void elemEnd(DocElem elem)
elemStart
virtual override Void elemStart(DocElem elem)
make
new make(OutStream out := Env.cur().out())
onImage
|Image|? onImage := null
Callback to perform image link resolution and checking
onLink
|Link|? onLink := null
Callback to perform link resolution and checking for every Link element
out
OutStream out
text
virtual override Void text(DocText text)
Image
@Js class Image : DocElem
Image is a reference to an image file
Constructors
| make |
Fields
| alt | |
| line | |
| size | |
| uri |
Methods
| htmlName | |
| id | |
| isInline |
Slot Details
alt
Str alt
htmlName
virtual override Str htmlName()
id
virtual override DocNodeId id()
isInline
virtual override Bool isInline()
line
Int line
make
new make(Str uri, Str alt)
size
Str? size
uri
Str uri
Link
@Js class Link : DocElem
Link is a hyperlink.
Constructors
| make |
Fields
| isCode | |
| line | |
| uri |
Methods
| htmlName | |
| id | |
| isInline | |
| isTextUri | Is the text of the link the same as the URI string |
| setText | Change the text to display for the link |
Slot Details
htmlName
virtual override Str htmlName()
id
virtual override DocNodeId id()
isCode
Bool isCode := false
isInline
virtual override Bool isInline()
isTextUri
Bool isTextUri()
Is the text of the link the same as the URI string
line
Int line
make
new make(Str uri)
setText
Void setText(Str text)
Change the text to display for the link
uri
Str uri
ListItem
@Js class ListItem : DocElem
ListItem is an item in an OrderedList and UnorderedList.
Methods
| htmlName | |
| id | |
| isInline |
Slot Details
htmlName
virtual override Str htmlName()
id
virtual override DocNodeId id()
isInline
virtual override Bool isInline()
MarkdownDocWriter
@Js class MarkdownDocWriter : Obj, DocWriter
MarkdownDocWriter outputs a fandoc model to Markdown
Constructors
| make |
Fields
| onImage | Callback to perform image link resolution and checking |
| onLink | Callback to perform link resolution and checking for every Link element |
Methods
| docEnd | |
| docStart | |
| elemEnd | |
| elemStart | |
| main | |
| text |
Slot Details
docEnd
virtual override Void docEnd(Doc doc)
docStart
virtual override Void docStart(Doc doc)
elemEnd
virtual override Void elemEnd(DocElem elem)
elemStart
virtual override Void elemStart(DocElem elem)
main
static Void main(Str[] args := Env.cur().args())
make
new make(OutStream out := Env.cur().out())
onImage
|Image|? onImage := null
Callback to perform image link resolution and checking
onLink
|Link|? onLink := null
Callback to perform link resolution and checking for every Link element
text
virtual override Void text(DocText text)
OrderedList
@Js class OrderedList : DocElem
OrderedList models a numbered list
Constructors
| make |
Fields
| style |
Methods
| htmlName | |
| id | |
| isInline |
Slot Details
htmlName
virtual override Str htmlName()
id
virtual override DocNodeId id()
isInline
virtual override Bool isInline()
make
new make(OrderedListStyle style)
style
OrderedListStyle style
OrderedListStyle
@Js @Serializable { simple=true } enum class OrderedListStyle : Enum
OrderedListStyle
Enum
| number | |
| upperAlpha | |
| lowerAlpha | |
| upperRoman | |
| lowerRoman |
Constructors
| fromStr | Return the OrderedListStyle instance for the specified name. |
Fields
| vals | List of OrderedListStyle values indexed by ordinal |
Methods
| fromFirstChar | |
| htmlType |
Slot Details
fromFirstChar
static OrderedListStyle fromFirstChar(Int ch)
fromStr
static new fromStr(Str name, Bool checked := true)
Return the OrderedListStyle instance for the specified name. If not a valid name and checked is false return null, otherwise throw ParseErr.
htmlType
Str htmlType()
lowerAlpha
const static OrderedListStyle lowerAlpha := ...
lowerRoman
const static OrderedListStyle lowerRoman := ...
number
const static OrderedListStyle number := ...
upperAlpha
const static OrderedListStyle upperAlpha := ...
upperRoman
const static OrderedListStyle upperRoman := ...
vals
const static OrderedListStyle[] vals := ...
List of OrderedListStyle values indexed by ordinal
Para
@Js class Para : DocElem
Para models a paragraph of text.
Fields
| admonition |
Methods
| htmlName | |
| id | |
| isInline |
Slot Details
admonition
Str? admonition
htmlName
virtual override Str htmlName()
id
virtual override DocNodeId id()
isInline
virtual override Bool isInline()
Pre
@Js class Pre : DocElem
Pre models a pre-formated code block.
Methods
| htmlName | |
| id | |
| isInline |
Slot Details
htmlName
virtual override Str htmlName()
id
virtual override DocNodeId id()
isInline
virtual override Bool isInline()
Strong
@Js class Strong : DocElem
Strong is bold text
Methods
| htmlName | |
| id | |
| isInline |
Slot Details
htmlName
virtual override Str htmlName()
id
virtual override DocNodeId id()
isInline
virtual override Bool isInline()
UnorderedList
@Js class UnorderedList : DocElem
UnorderedList models a bullet list
Methods
| htmlName | |
| id | |
| isInline |
Slot Details
htmlName
virtual override Str htmlName()
id
virtual override DocNodeId id()
isInline
virtual override Bool isInline()