From: Lady Date: Tue, 31 Mar 2026 01:28:11 +0000 (-0400) Subject: New block behaviour and repository layout X-Git-Tag: 0.7.0~1 X-Git-Url: https://git.ladys.computer/LesML/commitdiff_plain/7ddcc7cae1ad36324aa1a3b3c2176bec9b9a8def3bfd67233188ecb50999a5e7?hp=7ddcc7cae1ad36324aa1a3b3c2176bec9b9a8def3bfd67233188ecb50999a5e7 New block behaviour and repository layout This commit makes extremely breaking changes to the block‐level semantics of the language, effectively rewriting those aspects of parsing from scratch. At the same time, it restructures the repository and adds test cases. Commits (and tags) prior to this commit have been redone with Les·M·L‐format commit messages, and the repository now uses Sha·256 hashes rather than Sha·1. One could consider this a “version 2” of the Les·M·L format, but it is the softest of reboots: Most files will continue to produce more·or·less exactly the same result after only a replacement of `#!lesml´ with `#?lesml´. (There are some negligible differences in whitespace handling.) The major cases where this is ⹐not⹑ true are those of blockquotes, footers, and continuations. The concepts of bracketed and quoted paragraphs have been removed and footers and blockquotes are now ordinary block types alongside sections and list items. Blocks now have a “level”, indicated by the number of leading `⋮´ characters, and blocks of higher level are nested inside preceding ones of lower level. This makes the existing continuation behaviour more consistent and makes the language more flexible. The character `⋮´ is used instead of `⋯´ because it is semantically more accurate and the latter can also make up horizontal rules. Multiple block sigils can now be used together to create deeply nested block structures that an equal number of continuation symbols are used to continue. For example, a leading `» • •´ introduces a list inside a list inside a blockquote, and `⋮ ⋮ •´ introduces a second list item in the nested list. The higher‐level unordered list characters `◦▪⁃´ are supported only as the first block sigils after any continuation symbols. They are simply a shorthand for `⋮ •´, `⋮ ⋮ •´, and `⋮ ⋮ ⋮ •´, respectively. The ordered list characters have been replaced by a single `№´. Preformatted text requires the same prefix on each line. The prefix, which begins with any continuation characters or block sigils, can end in one of three ways :⁠— № With a pipe, a syntax name, and a dollar sign, such as `|sh$´. The syntax name can consist only of Ascii lowercase letters, numbers, slashes, dots, and hyphen dashes and identifies the preformatted text as code in the corresponding language. The semantics of syntax names are left undefined and up to profiles or applications to determine. № With a pipe and a dollar sign with nothing inbetween. In this case, the preformatted text is code of an unspecified syntax. № With a pipe only. In this case, the text is preformatted, but not code. Footnote references now have the format `[^fn_id]´ and the corresponding footnotes `^¶fn_id´. “Footnotes” which are never referenced in a document are now dropped, meaning that they can be used to fully remove text from the output (unlike most forms of commenting, which produce X·M·L comments). The character `*´ was considered over `^´, but it has too many additional meanings in English text. The character introducing footers has been changed from `]´ to `∎´. The character introducing abstracts has been changed from `@´ to `∫´. A new “tip” section has been introduced, with sigil `💡´. Whitespace is no longer ignored before attribute specifications. In general, more whitespace is preserved literally. The hope at this point is that the Les·M·L format is fairly stable, and no major backwards‐incompatible changes will be made (excepting the minor backwards incompatibility which is inherent in adding new features to a syntax which already accepts all inputs with·out complaint). A couple more features are anticipated, but “Version 1.0.0” will probably come soon. ---