From: Lady Date: Mon, 28 Apr 2025 00:42:16 +0000 (-0400) Subject: Quotes and brackets as multiparagraph divisions X-Git-Tag: 0.5.0~1 X-Git-Url: https://git.ladys.computer/LesML/commitdiff_plain/5532d05f05ad455dd406b4ea8b63eb2250f41c5bb238928f74cb1f02bbd0ca39?ds=sidebyside;hp=7e2c30560b50ec1857ad1cc6763dbd18ef89cf53a0e88f43098df8920c084ef6 Quotes and brackets as multiparagraph divisions This commit introduces a new concept of multiparagraph divisions (where the lines within are re·analysed after the prefix is removed) and transitions block quotations to it. I resisted this for a long while because it¦s less “simple”, but the precedent of preformatted text and the old quotation mechanism (which was kind of messy) was already conceptually close. And footer support really requires this. --- diff --git a/README.markdown b/README.markdown index 84ea519..32a54ec 100644 --- a/README.markdown +++ b/README.markdown @@ -52,6 +52,14 @@ Documents in the later case inherit the latest preceding `#!lesml` Documents are broken into paragraphs by blank lines. Empty paragraphs are ignored. + +If every line in the paragraph begins with (optional white·space + followed by) `»` it is quoted (``); if every line + begins with `]` it is bracketed. +The lines, minus this leading, are then re‐analysed. +Bracketed paragraphs which end quotes are treated as captions + (``); otherwise, they are footers (``). + Non·empty paragraphs are classified as follows :⁠— - If the paragraph consists of only the following section‐break @@ -98,21 +106,16 @@ Non·empty paragraphs are classified as follows :⁠— | `_` | `U+FF3F` | `FULLWIDTH LOW LINE` | | `~` | `U+FF5E` | `FULLWIDTH TILDE` | -- If every line in the paragraph begins with at least one space, then - it is considered to be a quoted paragraph (``). - There is only one level of paragraph quoting; quoted paragraphs may - not be quoted again. - - If every line in the paragraph begins with zero or more white·space characters followed by `|`, it is a “preformatted” paragraph and white·space is not collapsed (``). - A paragraph may be both quoted and preformatted. -- Otherwise, the paragraph is unquoted. +- Otherwise, the paragraph is ordinary. -After this classification, each quoted or unquoted paragraph is further +After this classification, each ordinary paragraph is further classified by type based on its first character (which is must be - followed by white·space, or else the only thing on the line) :⁠— + followed by white·space, a pilcrow, or else the only thing on the + line) :⁠— - If the paragraph is preformatted, it is an ordinary paragraph. @@ -172,10 +175,8 @@ After this classification, each quoted or unquoted paragraph is further - If the paragraph begins with `⋯`, it is a continuation paragraph (``). - Continuation paragraphs may be used to continue a preceding list item - or quote. - Note, however, that an unquoted paragraph cannot continue a quoted - one, or vice·versa. + Continuation paragraphs may be used to continue a preceding div or + list item. - Otherwise, it is an ordinary paragraph. @@ -202,7 +203,8 @@ Markup within paragraphs is delimited with·out exception by pairs of white·space‐only text nodes after elements ignored; if there is no such previous element or text node, an empty text node is used instead. - Multiple attributes can be given in sequence. + Multiple attributes can be given in sequence using multiple + specifications. Text nodes with attributes are wrapped in ``. - The characters `{🔗` and `>}` indicate a hyperlink to a U·R·L @@ -241,13 +243,8 @@ Markup within paragraphs is delimited with·out exception by pairs of Once the tree is built as above, it is remediated into its final form by the following steps :⁠— -- Successive quoted paragraphs are joined into one quote. - If the final quoted paragraph is an ordinary paragraph which begins - with `—` and a space, the quote is wrapped in a `` - and the final paragraph becomes its ``. - - Continuation paragraphs are joined with the preceding list items or - quotes. + divs. - List items of a higher level are nested in preceding list items, when present. diff --git a/parser.xslt b/parser.xslt index 459de3f..5e2b54f 100644 --- a/parser.xslt +++ b/parser.xslt @@ -13,7 +13,7 @@ If a copy of the M·P·L was not distributed with this file, You can obtain one --> - + @@ -32,6 +32,7 @@ If a copy of the M·P·L was not distributed with this file, You can obtain one version="1.0" > <书社:id>urn:fdc:ladys.computer:20240512:LesML:parser.xslt + -