vimwiki

Personal wiki for vim
git clone https://github.com/vimwiki/vimwiki.git
Log | Files | Refs | README | LICENSE

commit 4f0df71d846250a2bb612f80a1ea1c3ca9b88f5a
parent 1b2f34f5e00fe147d12363a6a86f5cd265dda98e
Author: Chip Senkbeil <chip@senkbeil.org>
Date:   Sun,  4 Oct 2020 10:36:52 -0500

Rename component to element

Diffstat:
Mdoc/specification.wiki | 81+++++++++++++++++++++++++++++++++++++++----------------------------------------
1 file changed, 40 insertions(+), 41 deletions(-)

diff --git a/doc/specification.wiki b/doc/specification.wiki @@ -30,9 +30,8 @@ mode) until the language has become relatively stable. == Language == -The following will describe the individual elements - hereby described as -components - of the vimwiki language. It will cover each component's purpose -and a clear description of the syntax. +The following will describe the individual elements of the vimwiki language. +It will cover each element's purpose and a clear description of the syntax. For details on parsing prescedence, see the [[#Specification#Parser Details|companion section]]. @@ -40,7 +39,7 @@ For details on parsing prescedence, see the [[#Specification#Parser Details|comp In order to define the vimwiki language, we first need to present several definitions for primitive building blocks used to shape up higher-level -components. Relevant definitions are borrowed from +elements. Relevant definitions are borrowed from [[https://spec.commonmark.org/0.29/#characters-and-lines|commonmark characters and lines]]. A *character* in vimwiki is a valid UTF-8 code point. @@ -58,10 +57,10 @@ A line with no characters, or a line containing only spaces (`U+0020`) or tabs A *whitespace character* is a space (`U+0020`) or tab (`U+0009`). -=== Block Components === +=== Block Elements === -The vimwiki language has a variety of syntax that represent components within -a page. In this section, we discuss block-level components, which are vimwiki +The vimwiki language has a variety of syntax that represent elements within +a page. In this section, we discuss block-level elements, which are vimwiki syntax that are standalone and can comprise one or more entire lines within a file. @@ -133,16 +132,16 @@ zero or more [[#definition line|definition lines]] A *term line* is represented by the following: 1. Starts at the beginning of a line -2. One or more [[#inline components|inline components]] before the sequence `::` +2. One or more [[#inline elements|inline elements]] before the sequence `::` 3. The sequence `::` -4. An optional one or more [[#inline components|inline components]] before [[#line ending|line ending]] +4. An optional one or more [[#inline elements|inline elements]] before [[#line ending|line ending]] to be the first definition 5. A [[#line ending|line ending]] or end of input A *definition line* is represented by the following: 1. Starts at the beginning of a line 2. The sequence `::` -3. One or more [[#inline components|inline components]] before [[#line ending|line ending]] +3. One or more [[#inline elements|inline elements]] before [[#line ending|line ending]] 4. A [[#line ending|line ending]] or end of input *Extra Notes*: Each term and definition is trimmed to remove all leading and @@ -182,7 +181,7 @@ A *header* is represented by the following: 2. Zero or more [[#whitespace character|whitespace characters]] (implying whether or not a header is centered) 3. One or more equal sign (`U+003D`) characters -4. One or more [[#inline components|inline components]] +4. One or more [[#inline elements|inline elements]] 5. An equivalent number of equal sign characters as in step #3 6. A [[#line ending|line ending]] or end of input @@ -193,7 +192,7 @@ For example, `= header =` is equal to `=header=`. ==== List ==== A list is composed of a series list items, each being comprised -of [[#inline components|inline components]] and [[#list|sub lists]]. It mirrors the +of [[#inline elements|inline elements]] and [[#list|sub lists]]. It mirrors the functionality available in an [[https://developer.mozilla.org/en-US/docs/Web/HTML/Element/ul|HTML Unordered List]] and [[https://developer.mozilla.org/en-US/docs/Web/HTML/Element/ol|HTML Ordered List]]. @@ -238,7 +237,7 @@ A *starting list item line* is represented by the following: for an ordered list 4. A [[#whitespace character|whitespace character]] 5. An optional [[#todo attribute|todo attribute]] and additional [[#whitespace character|whitespace character]] -6. Zero or more [[#inline components|inline components]] +6. Zero or more [[#inline elements|inline elements]] 7. A [[#line ending|line ending]] or end of input A *companion list item line* is represented by the following: @@ -248,7 +247,7 @@ A *companion list item line* is represented by the following: 3. One of the following: * The start of a new [[#list|list]] (to be treated as a sublist of the current list item) - * A series of one or more [[#inline components|inline components]] + * A series of one or more [[#inline elements|inline elements]] (to be added to the content of the current list item) followed by a [[#line ending|line ending]] or end of input * A [[#blank line|blank line]] if there is guaranteed to still be some @@ -343,7 +342,7 @@ A *paragraph line* is represented by the following: * [[#blockquote|blockquote]] * [[#divider|divider]] * [[#placeholder|placeholder]] -4. One or more [[#inline components|inline components]] +4. One or more [[#inline elements|inline elements]] 5. A [[#line ending|line ending]] or end of input TODO ... should we combine [[#non-blank line|non-blank line]] with paragraph @@ -473,7 +472,7 @@ An *ending preformatted text line* is represented by the following: ==== Table ==== -A table is composed of a series of rows containing various other components. It +A table is composed of a series of rows containing various other elements. It mirrors [[https://developer.mozilla.org/en-US/docs/Web/HTML/Element/table|HTML Table]]. {{{vimwiki @@ -526,7 +525,7 @@ A *span left cell* is represented by the following: A *content cell* is represented by the following: 1. Zero or more [[#whitespace character|whitespace characters]] -2. One or more [[#inline components|inline components]] not comprised of `|` +2. One or more [[#inline elements|inline elements]] not comprised of `|` 3. Zero or more [[#whitespace character|whitespace characters]] A *cell boundary* is represented by the pipe character (`U+007C` aka `|`). @@ -534,7 +533,7 @@ A *cell boundary* is represented by the pipe character (`U+007C` aka `|`). ==== Non-blank Line ==== A non-blank line is a single line that is not a paragraph. It is used to -capture text not represented by any other component. +capture text not represented by any other element. {{{vimwiki Some other text containing *bold* and [[links]]. @@ -544,22 +543,22 @@ capture text not represented by any other component. A *non-blank line* is represented by the following: 1. Between one and three [[#whitespace character|whitespace characters]] -2. One or more [[#inline components|inline components]] +2. One or more [[#inline elements|inline elements]] 3. A [[#line ending|line ending]] or end of input TODO ... should we combine [[#non-blank line|non-blank line]] with paragraph by having a paragraph trim all leading [[#whitespace character|whitespace]]? -=== Inline Components === +=== Inline Elements === The vimwiki language also has a variety of syntax that can be used within a -line on a page. These are referred to as *inline components* and can be found -within a variety of [[#block components|block components]] as well as nested -within other inline components. +line on a page. These are referred to as *inline elements* and can be found +within a variety of [[#block elements|block elements]] as well as nested +within other inline elements. ==== Math Inline ==== -A math inline component is composed of a single-line formula. +A math inline element is composed of a single-line formula. Like its big brother, the [[#math block|math block]], it is rendered in HTML using the [[https://www.mathjax.org/|MathJax engine]]. @@ -568,23 +567,23 @@ $ \sum_i a_i^2 = 1 $ }}} TODO ... is there a way to escape the `$` used to mark the beginning and end - of an inline math component? Is `$` even a concern within an + of an inline math element? Is `$` even a concern within an inline formula? If it is, maybe an escape sequence of `\$` would be applicable. ===== Syntax ===== -An *inline math* component is represented by the following: +An *inline math* element is represented by the following: 1. A dollar sign (`U+0024` aka `$`) 2. One or more characters that are not a dollar sign or [[#line ending|line ending]] 3. A dollar sign (`U+0024` aka `$`) -*Extra Notes*: The formula within the inline component is trimmed to remove all +*Extra Notes*: The formula within the inline element is trimmed to remove all leading and trailing [[#whitespace character|whitespace characters]]. ==== Tags ==== -A tags component is composed of a series of individual tag elements. It is used +A tags element is composed of a series of individual tag elements. It is used both to mark various places within a page as well as act as an [[#anchor|anchor]]. {{{vimwiki @@ -593,7 +592,7 @@ both to mark various places within a page as well as act as an [[#anchor|anchor] ===== Syntax ===== -A *tags* component is represented by the following: +A *tags* element is represented by the following: 1. A [[#tag separator|tag separator]] 2. A sequence of [[#tag|tag]] separated by [[#tag separator|tag separator]] 3. A [[#tag separator|tag separator]] @@ -607,7 +606,7 @@ TODO ... should tags with whitespace be allowed? ==== Link ==== -A link is a crucial inline component of vimwiki and is able to connect pages +A link is a crucial inline element of vimwiki and is able to connect pages with each other as well as external wikis and resources. {{{vimwiki @@ -699,9 +698,9 @@ A *link description* is represented by one of the following: * One or more characters that are not a [[#link end seq|link end seq]] or [[#line ending|line ending]] A *link anchor* is represented by a series of pairs, each comprised of -a [[#link anchor prefix|link anchor prefix]] and a [[#link anchor component|link anchor component]] +a [[#link anchor prefix|link anchor prefix]] and a [[#link anchor element|link anchor element]] -A *link anchor component* is represented by one or more characters that are +A *link anchor element* is represented by one or more characters that are not a [[#link anchor prefix|link anchor prefix]], [[#link inner separator|link inner separator]], [[#link end seq|link end seq]], or [[#line ending|line ending]] @@ -829,7 +828,7 @@ A *keyword* is represented as one of the following: ==== Text ==== Text is a plain series of characters that have no special stylings applied -directly, but can be included in other [[#inline components|inline components]]. +directly, but can be included in other [[#inline elements|inline elements]]. ===== Syntax ===== @@ -844,8 +843,8 @@ is encountered: === Comments === -Separately from [[#block components|block components]] and [[#inline components|inline components]], -comments are another component available within vimwiki. There are two +Separately from [[#block elements|block elements]] and [[#inline elements|inline elements]], +comments are another element available within vimwiki. There are two classifications: 1. Line comment in the form of `%%CONTENT` @@ -901,8 +900,8 @@ first linesecond line == Parser Details == -When building a parser for the vimwiki language, certain components may overlap -in the text that they can match. This means that the order in which components +When building a parser for the vimwiki language, certain elements may overlap +in the text that they can match. This means that the order in which elements are evaluated can affect how a page is perceived. Additionally, the inclusion of [[#comments|comments]] further complicates the @@ -912,14 +911,14 @@ multi-line comments can remove [[#line ending|line ending]] characters. To that end, a two-pass parser is required to support properly extracting comments prior to parsing the full vimwiki syntax: 1. Parse all comments and remove from input -2. Parse a page that is full of [[#block components|block components]] +2. Parse a page that is full of [[#block elements|block elements]] {{{ Comment = | Multi Line Comment | Line Comment -Page = (Block Component)+ -Block Component = +Page = (Block Element)+ +Block Element = | Header | Definition List | List @@ -931,7 +930,7 @@ Block Component = | Placeholder | Paragraph | Non-blank Line -Inline Component = +Inline Element = | Math Inline | Tags | Link