From 17b78082858c43294a5e7b0a925b054c24d15c70 Mon Sep 17 00:00:00 2001 From: Aliaksandr Zahatski Date: Thu, 8 Feb 2024 09:47:59 +0100 Subject: [PATCH 01/34] fix readme --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 076dcaec..5bb6c768 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ -**Podlite is a block-based markup language designed for flexibility and ease of use.** +**Podlite is a lightweight block-based markup language designed for flexibility and ease of use.** Unbound by any specific domain, programming language, or concept, Podlite stands out as a universal markup language. It's versatile enough to be successfully implemented across various development fields, from web development to scientific research. From f0cc60c95e0ce4884e7dea846065e63b0670d1ac Mon Sep 17 00:00:00 2001 From: Aliaksandr Zahatski Date: Sun, 11 Feb 2024 13:58:24 +0100 Subject: [PATCH 02/34] remove markers in comments --- S26-documentation.pod6 | 25 ++++++------------------- 1 file changed, 6 insertions(+), 19 deletions(-) diff --git a/S26-documentation.pod6 b/S26-documentation.pod6 index 8d99d2e1..49423034 100644 --- a/S26-documentation.pod6 +++ b/S26-documentation.pod6 @@ -23,10 +23,15 @@ our L. =item Aliaksandr Zahatski |mailto:zag@cpan.org>> =end AUTHORS -=VERSION 1.0.0-beta1 +=VERSION 1.0.0-beta2 =begin CHANGES +=head2 1.0.0-beta2 +=head3 New: +=head3 Deprecated/removed: + =item markers in comments + =head2 1.0.0-beta1 =head3 New: =item add C<:id>, C<:caption>, C<:lang> attributes, @@ -2312,24 +2317,6 @@ verbatim, which often eliminates the need for the C> as well: The C> formatting code is the inline equivalent of a L block|#Comments>. -=head4 Comments as category markers - -Most Podlite renderers will provide a mechanism that allows particular Pod -blocks to be explicitly excluded or included if they match a particular -pattern. For example, a renderer might be instructed to omit any block -that contains the pattern C. Corresponding "invisibility -markers" can then be placed inside C> comments within any block that -should not normally be displayed. For example: - -=for code :allow - class Widget is Bauble - { - has $.things; #= a collection of other stuff - #={ Z - This variable needs to be replaced for political reasons - } - } - =head3 Links The C> code is used to specify all kinds of links, filenames, citations, From 547c726af81e795333597148bb145a7d877be55f Mon Sep 17 00:00:00 2001 From: Aliaksandr Zahatski Date: Sun, 11 Feb 2024 14:00:51 +0100 Subject: [PATCH 03/34] remove =finish block --- S26-documentation.pod6 | 21 +++------------------ 1 file changed, 3 insertions(+), 18 deletions(-) diff --git a/S26-documentation.pod6 b/S26-documentation.pod6 index 49423034..beeeb8f6 100644 --- a/S26-documentation.pod6 +++ b/S26-documentation.pod6 @@ -30,6 +30,7 @@ our L. =head2 1.0.0-beta2 =head3 New: =head3 Deprecated/removed: + =item C<=finish> =item markers in comments =head2 1.0.0-beta1 @@ -699,7 +700,7 @@ directive. For example: previous directive =end code -Within a C<=pod>, C<=item>, C<=defn>, C<=nested>, C<=finish>, or +Within a C<=pod>, C<=item>, C<=defn>, C<=nested>, or L block, ordinary paragraphs do not require an explicit marker or delimiters, but there is also an explicit C marker (which may be used anywhere): @@ -752,7 +753,7 @@ For example: =end code Implicit code blocks may only be used within C<=pod>, C<=item>, C<=defn>, -C<=nested>, C<=finish>, or L blocks. +C<=nested>, or L blocks. There is also an explicit C<=code> block (which can be specified within I other block type, not just C<=pod>, C<=item>, etc.): @@ -1637,22 +1638,6 @@ and for temporarily removing parts of a document: B<=end comment> =end code -=head3 The C<=finish> block - -The C<=finish> block is special in that all three of its forms -(L, L, and -L) are terminated only by the end of the -current file. That is, neither C<=finish> nor C<=for finish> are terminated by the -next blank line, and C<=end finish> has no effect within a C<=begin finish> block. -A warning is issued if an explicit C<=end finish> appears within a document. - -An C<=finish> block indicates the end-point of any ambient material within -the document. This means that the parser will treat all the remaining -text in the file as Pod, even if it is not inside an explicit block. In -other words, apart from its special end-of-file termination behaviour, -an C<=finish> block is in all other respects identical to a C<=pod> block. - - =head3 Data blocks This section is not yet implemented From c99e54a0bd734058f5470cea4044e05104d2d756 Mon Sep 17 00:00:00 2001 From: Aliaksandr Zahatski Date: Sun, 25 Feb 2024 13:57:11 +0100 Subject: [PATCH 04/34] fix examples for :checked attrubute --- S26-documentation.pod6 | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/S26-documentation.pod6 b/S26-documentation.pod6 index beeeb8f6..28b2aa24 100644 --- a/S26-documentation.pod6 +++ b/S26-documentation.pod6 @@ -1150,8 +1150,8 @@ attribute to C<=item> block. The rendered output looks like this: - [ ] Buy groceries - [X] Clean the garage + [X] Buy groceries + [ ] Clean the garage Alternatively, if item content starts with brackets with space (C<[ ]>) the item is treated as having a C<:!checked> attribute. @@ -1160,8 +1160,8 @@ of C<:checked> attribute. For example: =begin code :allow - =item B<[ ]> Buy groceries - =itme B<[x]> Clean the garage + =item B<[x]> Buy groceries + =itme B<[ ]> Clean the garage =end code It possiible to create multilevel to-do lists, which permits the From dc6a3560165300520f2413d9c77c395d4dc6c1cf Mon Sep 17 00:00:00 2001 From: Aliaksandr Zahatski Date: Sun, 25 Feb 2024 13:58:05 +0100 Subject: [PATCH 05/34] logo --- assets/bigtitle-social-logo.png | Bin 0 -> 52297 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 assets/bigtitle-social-logo.png diff --git a/assets/bigtitle-social-logo.png b/assets/bigtitle-social-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..a7c8d5d840d84a782469b4980b0433c8112563c8 GIT binary patch literal 52297 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 Date: Sun, 25 Feb 2024 15:30:12 +0100 Subject: [PATCH 06/34] =data: csv example --- S26-documentation.pod6 | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/S26-documentation.pod6 b/S26-documentation.pod6 index 28b2aa24..dcd4da48 100644 --- a/S26-documentation.pod6 +++ b/S26-documentation.pod6 @@ -1640,18 +1640,20 @@ and for temporarily removing parts of a document: =head3 Data blocks -This section is not yet implemented +The C<=data> block is used to embed various types of data directly into a document. -=begin comment +For example, to include a CSV file in a document, it is possible to +use the following syntax: -Named Podlite blocks whose typename is C are the Podlite equivalent of -the Perl 5 C<__DATA__> section. The difference is that C<=data> blocks are -just regular Podlite blocks and may appear anywhere within a source file, and as -many times as required. +=begin code :allow -There is a corresponding variable, C<$=data>, from which each C<=data> block -can be retrieved. C<$=data> holds an object that does both the Associative -and Positional roles. + =begin data :key :mime-type + name,month,amount + John Doe,January,1000 + Jane Doe,February,1500 + =end data + +=end code Each C<=data> block can be given a C<:key> option, to name it. The contents of any C<=data> block with a key are accessible (as a single string) via From 5a7410b651462c0708fe4d2499bf802270587eec Mon Sep 17 00:00:00 2001 From: Aliaksandr Zahatski Date: Sun, 25 Feb 2024 15:30:42 +0100 Subject: [PATCH 07/34] =data :key attr --- S26-documentation.pod6 | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/S26-documentation.pod6 b/S26-documentation.pod6 index dcd4da48..3365be62 100644 --- a/S26-documentation.pod6 +++ b/S26-documentation.pod6 @@ -1656,19 +1656,18 @@ use the following syntax: =end code Each C<=data> block can be given a C<:key> option, to name it. The contents -of any C<=data> block with a key are accessible (as a single string) via -the Associative aspect of C<$=data> object. For example: +of any C<=data> block with a key are addressable via +the C schema. For example: -=begin code :allow - - =begin data :key - Laziness - Impatience - Hubris - =end data +=begin code + =begin data :key :mime-type + id,name,position,department + 1,John Doe,Manager,Marketing + 2,Jane Smith,Developer,Engineering + 3,Bob Brown,Designer,Product + =end data - say 'The three virtues are:'; - say $=data; + =table data:employee_data =end code From 9c84da432674c983f6ccee313e6c6f264969c81a Mon Sep 17 00:00:00 2001 From: Aliaksandr Zahatski Date: Sun, 25 Feb 2024 15:32:14 +0100 Subject: [PATCH 08/34] =data embed file --- S26-documentation.pod6 | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/S26-documentation.pod6 b/S26-documentation.pod6 index 3365be62..7bf8c5c5 100644 --- a/S26-documentation.pod6 +++ b/S26-documentation.pod6 @@ -1678,11 +1678,15 @@ they appear in the file. For example: =begin code :allow - say 'The second anti_Virtue is: ', $=data[1]; - - =data Industry - =data Patience - =data Humility + =begin data :key :filename :mime-type + = :access-time<2022-01-01T00:00:00Z> :modify-time<2022-01-02T10:00:00Z> + = :encoding + iVBORw0KGgoAAAANSUhEUgAAAAMAAAAFCAYAAACAcVaiAAAAS0lEQVR4AWPOPfjpvWZSW4db + ZLk+kwTHP24HUQYGfi4WTiZVAcYfDtIMDCJc/38xK6TWth37wcrw7cufF8yeeWUGrL8Z33Ey + /t0HAMBnF2nt5sNRAAAAAElFTkSuQmCC + =end data + + =picture data:Logo =end code From 5c30fc01c1108188b62050563a3998dc5289f7d5 Mon Sep 17 00:00:00 2001 From: Aliaksandr Zahatski Date: Sun, 25 Feb 2024 15:32:24 +0100 Subject: [PATCH 09/34] =data embed file --- S26-documentation.pod6 | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/S26-documentation.pod6 b/S26-documentation.pod6 index 7bf8c5c5..7aa08115 100644 --- a/S26-documentation.pod6 +++ b/S26-documentation.pod6 @@ -1690,6 +1690,17 @@ they appear in the file. For example: =end code +In the example above, we have a C<=data> block with C<:id> C that stores +the base64-encoded image data. We also specify the filename, mime type, +access time, and edit time as attributes of the C<=data> block. + +The image can then be referenced using the `=picture` block with the scheme +C and the block name C. + + +The C<=data> blocks are just regular Podlite blocks and may appear anywhere +within a source file, and as many times as required. + Note that in Podlite, it is possible to specify C<=data> blocks I the point in the source where their contents will be used. From a667c17e16d723a0a8f8ef1fd8b3f332e72a25c9 Mon Sep 17 00:00:00 2001 From: Aliaksandr Zahatski Date: Sun, 25 Feb 2024 15:32:53 +0100 Subject: [PATCH 10/34] =data embed file --- S26-documentation.pod6 | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/S26-documentation.pod6 b/S26-documentation.pod6 index 7aa08115..e10be996 100644 --- a/S26-documentation.pod6 +++ b/S26-documentation.pod6 @@ -1671,10 +1671,19 @@ the C schema. For example: =end code -The contents of any C<=data> block that does not have a C<:key> are -accessible (as a single string) via the Positional aspect of -C<$=data>. Unkeyed C<=data> blocks are stored in the same order -they appear in the file. For example: +Each =data block can include several attributes to provide additional information +about the contained data: + +=begin defn +C<:filename> + +This option specifies the original file name of the embedded data, which +can be used to hint at the type of data contained if the C<:mime/type> is not +explicitly provided. +=end defn + + +Example of storing images in C<=data> blocks: =begin code :allow From b83c6e45c87a6c3fcec210ed461ff5ae52568a4e Mon Sep 17 00:00:00 2001 From: Aliaksandr Zahatski Date: Sun, 25 Feb 2024 15:33:22 +0100 Subject: [PATCH 11/34] clean --- S26-documentation.pod6 | 5 ----- 1 file changed, 5 deletions(-) diff --git a/S26-documentation.pod6 b/S26-documentation.pod6 index e10be996..c6c945b7 100644 --- a/S26-documentation.pod6 +++ b/S26-documentation.pod6 @@ -1713,13 +1713,8 @@ within a source file, and as many times as required. Note that in Podlite, it is possible to specify C<=data> blocks I the point in the source where their contents will be used. -When C<$=data> itself is stringified, it returns the concatenation of all -the unkeyed C<=data> blocks the parser has seen. - C<=data> blocks are never rendered by the standard Podlite renderers. - -=end comment =head3 Semantic blocks All uppercase block typenames are reserved for specifying standard From fafae34fca3461ec488afa8e632402f44b263e07 Mon Sep 17 00:00:00 2001 From: Aliaksandr Zahatski Date: Sun, 25 Feb 2024 15:35:07 +0100 Subject: [PATCH 12/34] tidy --- S26-documentation.pod6 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/S26-documentation.pod6 b/S26-documentation.pod6 index c6c945b7..0d6451b3 100644 --- a/S26-documentation.pod6 +++ b/S26-documentation.pod6 @@ -1551,7 +1551,7 @@ It draw somethink like this: | Item and Quantity | Description | |----------------------------------|--------------------------| | Apples | 5 | | - |--------------|-------------------| Fruit for snacking | + |--------------|-------------------| Fruit for snacking | | Bananas | 3 | | --------------------------------------------------------------- From f5ee3e8f4436fa51113b9cc9269a357780b278a9 Mon Sep 17 00:00:00 2001 From: Aliaksandr Zahatski Date: Sun, 25 Feb 2024 15:36:18 +0100 Subject: [PATCH 13/34] refactor parser modes --- S26-documentation.pod6 | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/S26-documentation.pod6 b/S26-documentation.pod6 index 0d6451b3..ead81bb3 100644 --- a/S26-documentation.pod6 +++ b/S26-documentation.pod6 @@ -120,8 +120,14 @@ will I ignore such blocks, but see L<#Aliases>. All directives have a defined terminator and the Podlite parser always reverts to D<"ambient"|Ambient mode; parser modes> at the end of each Podlite directive or -block. To cause the parser to remain in "Pod" mode, you must enclose the desired -Podlite region in a C block: +block. + +The C<=pod> block puts the parser in D<"pod" mode|Pod mode; parser modes>, +treating all text between blocks as implicit paragraph Podlite, even if +it's not inside an explicit block. + +To keep the parser in "pod" mode, enclose the desired Podlite region +in a C block: =begin code :allow B<=begin pod> From 751509c97a2673c4fdd66dcf248eeece940b4b7a Mon Sep 17 00:00:00 2001 From: Aliaksandr Zahatski Date: Sun, 25 Feb 2024 15:36:27 +0100 Subject: [PATCH 14/34] refactor parser modes --- S26-documentation.pod6 | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/S26-documentation.pod6 b/S26-documentation.pod6 index ead81bb3..1a6f5669 100644 --- a/S26-documentation.pod6 +++ b/S26-documentation.pod6 @@ -141,10 +141,8 @@ in a C block: B<=end pod> =end code -The contents of files with the extensions '.pod6' and '.podlite' are -implicitly wrapped in a C<=pod> directive. This puts the parser in -D<"Pod" mode|Pod mode; parser modes> for the entire file, treating - all text as Podlite even if it's not inside an explicit block. +The contents of files with the extensions '.podlite' and '.pod6' are +implicitly wrapped in a C<=pod> directive. For '.md' and '.markdown' files, the parser operates in D<"Markdown" mode|Markdown mode; parser modes> for the entire file, treating all From 9477f0f40eee58c1f69a2eaab1c675f5171d4e79 Mon Sep 17 00:00:00 2001 From: Aliaksandr Zahatski Date: Sun, 25 Feb 2024 15:37:08 +0100 Subject: [PATCH 15/34] =include :mime-type attr --- S26-documentation.pod6 | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/S26-documentation.pod6 b/S26-documentation.pod6 index 1a6f5669..46c02c5f 100644 --- a/S26-documentation.pod6 +++ b/S26-documentation.pod6 @@ -1912,6 +1912,22 @@ or, equivalently: =VERSION 1.0.0 =end code +Podlite detects type of the included file by its extension. +For example, if the included file has a C<.md> extension, +it is treated as a Markdown file. + +To override the type of the included file by extension, you can use the C<:mime-type> +attribute. This attribute allows you to specify the MIME type of the included file. +For example: + +=begin code + =for include :mime-type('text/podlite') + file:./includes/text.txt +=end code + +The C<:mime-type> attribute is particularly useful when including files with +extensions that do not match their actual MIME type. + It's crucial to think about security concerns, as adding content from external sources could potentially create vulnerabilities such as injecting harmful code or malicious material. Tools responsible for displaying and handling the content From d80371acf1749423db6e92b4cf8b5f7ad7c1cc3a Mon Sep 17 00:00:00 2001 From: Aliaksandr Zahatski Date: Sun, 25 Feb 2024 15:37:26 +0100 Subject: [PATCH 16/34] refactor parser modes --- S26-documentation.pod6 | 1 + 1 file changed, 1 insertion(+) diff --git a/S26-documentation.pod6 b/S26-documentation.pod6 index 46c02c5f..e5c71322 100644 --- a/S26-documentation.pod6 +++ b/S26-documentation.pod6 @@ -117,6 +117,7 @@ would be the source code of the program that the Podlite is documenting. Podlite parsers still parse this text into the internal representation of the file, representing it as a "ambient" block. Renderers will I ignore such blocks, but see L<#Aliases>. +This is the D of the parser. All directives have a defined terminator and the Podlite parser always reverts to D<"ambient"|Ambient mode; parser modes> at the end of each Podlite directive or From 0545db32351b76787a0106bcd535519d74769daf Mon Sep 17 00:00:00 2001 From: Aliaksandr Zahatski Date: Sun, 25 Feb 2024 15:37:33 +0100 Subject: [PATCH 17/34] refactor parser modes --- S26-documentation.pod6 | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/S26-documentation.pod6 b/S26-documentation.pod6 index e5c71322..52977471 100644 --- a/S26-documentation.pod6 +++ b/S26-documentation.pod6 @@ -149,6 +149,10 @@ For '.md' and '.markdown' files, the parser operates in D<"Markdown" mode|Markdown mode; parser modes> for the entire file, treating all text as markdown even if it is not inside an C<=markdown> block. +Any other file extension puts the parser in default mode. The L +block|#Include block > has a mechanism to override this behavior by using +the C<:mime-type> attribute for the included files. + =head3 Delimited blocks Delimited blocks are bounded by C<=begin> and C<=end> markers, both of From eb77f5e6de23d8d2680b33a3f8c3992310623729 Mon Sep 17 00:00:00 2001 From: Aliaksandr Zahatski Date: Sun, 25 Feb 2024 15:38:11 +0100 Subject: [PATCH 18/34] =picture data: schema --- S26-documentation.pod6 | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/S26-documentation.pod6 b/S26-documentation.pod6 index 52977471..66579d38 100644 --- a/S26-documentation.pod6 +++ b/S26-documentation.pod6 @@ -1953,7 +1953,8 @@ The first non-blank line of content within the C<=picture> block specifies the source of the image and the remaining content is treated as caption. This source can be either local or remote, and it can be -indicated using different schemas: C for remote images or C for local ones. +indicated using different schemas: C for remote images, C for +local ones, or C for L in to the document. If no schema is provided, it defaults to C. =begin code :allow @@ -1961,6 +1962,7 @@ If no schema is provided, it defaults to C. =picture file:/local/image.png =picture /local/image.png =picture ../image.png + =picture data:Logo =end code Following the source line, it possible to include an image caption. From fa21ecbfe67cf37e27ab74074e8e7c17f3496c40 Mon Sep 17 00:00:00 2001 From: Aliaksandr Zahatski Date: Sun, 25 Feb 2024 15:38:46 +0100 Subject: [PATCH 19/34] =data :mime-type attr --- S26-documentation.pod6 | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/S26-documentation.pod6 b/S26-documentation.pod6 index 66579d38..962b1c02 100644 --- a/S26-documentation.pod6 +++ b/S26-documentation.pod6 @@ -1691,6 +1691,34 @@ can be used to hint at the type of data contained if the C<:mime/type> is not explicitly provided. =end defn +=begin defn +C<:mime-type> + +This option indicates the MIME type of the data, such as C for PNG images, +which helps in determining how the data should be interpretered and processed. + +Here is a list of few well-known mime types and their corresponding file extensions: + +=table + MIME Type | File Extension + ------------------ | -------------- + text/plain | .txt + text/markdown | .md, .markdown + text/podlite | .podlite, .pod6 + application/json | .json + application/xml | .xml + image/jpeg | .jpg, .jpeg + image/png | .png + application/pdf | .pdf + application/zip | .zip + audio/mpeg | .mp3 + video/mp4 | .mp4 + application/msword | .doc, .docx + text/csv | .csv + text/tab-separated-values | .tsv, .tab + +=end defn + Example of storing images in C<=data> blocks: From acb9c1912012dab45d08340050f017b29f3363d0 Mon Sep 17 00:00:00 2001 From: Aliaksandr Zahatski Date: Sun, 25 Feb 2024 15:39:23 +0100 Subject: [PATCH 20/34] =data last accessed or edited times --- S26-documentation.pod6 | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/S26-documentation.pod6 b/S26-documentation.pod6 index 962b1c02..d6167f02 100644 --- a/S26-documentation.pod6 +++ b/S26-documentation.pod6 @@ -1719,6 +1719,21 @@ Here is a list of few well-known mime types and their corresponding file extensi =end defn +=begin defn +C<:access-time> and C<:modify-time> + +This attributes record time for when the data was last accessed or +edited. + +=end defn + +=begin defn +C + +This option specifies the encoding method used to store the data. +For non-text data, such as images in the PNG format, +the encoding method C is used. +=end defn Example of storing images in C<=data> blocks: From 6e47dbb9acc168ac8db5b3ce82d835fcd9fc5a74 Mon Sep 17 00:00:00 2001 From: Aliaksandr Zahatski Date: Sun, 25 Feb 2024 15:40:09 +0100 Subject: [PATCH 21/34] =table render files from external data --- S26-documentation.pod6 | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/S26-documentation.pod6 b/S26-documentation.pod6 index d6167f02..ddc99b4f 100644 --- a/S26-documentation.pod6 +++ b/S26-documentation.pod6 @@ -1597,6 +1597,25 @@ For example: =end code +=head4 Table from CSV files or data blocks + +=begin code :allow + =table B + + =for table :caption('Basic cake recipe ingredients') + B + + =begin data :key :mime-type + ingredient,quantity,unit + flour,2,cups + sugar,1,cups + eggs,2,items + butter,0.5,cups + baking powder,2,teaspoons + =end data +=end code + + =head3 Named blocks Blocks whose names contain at least one uppercase and one lowercase From 9a843b3b42d6ae36ed0add6bb99f940faaf64952 Mon Sep 17 00:00:00 2001 From: Aliaksandr Zahatski Date: Sun, 25 Feb 2024 15:40:18 +0100 Subject: [PATCH 22/34] =table render files from external data --- S26-documentation.pod6 | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/S26-documentation.pod6 b/S26-documentation.pod6 index ddc99b4f..f78c68dd 100644 --- a/S26-documentation.pod6 +++ b/S26-documentation.pod6 @@ -1599,6 +1599,11 @@ For example: =head4 Table from CSV files or data blocks +It is possible to create tables from files or data blocks. +To do this, use the C or C schema in the first non-blank line +to specify the source of the table data. +For example: + =begin code :allow =table B From 0d887b3d0b571334bb68881935066d8b8edbe414 Mon Sep 17 00:00:00 2001 From: Aliaksandr Zahatski Date: Sun, 25 Feb 2024 16:21:20 +0100 Subject: [PATCH 23/34] update samples --- S26-documentation.pod6 | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/S26-documentation.pod6 b/S26-documentation.pod6 index f78c68dd..2aa04a63 100644 --- a/S26-documentation.pod6 +++ b/S26-documentation.pod6 @@ -1407,14 +1407,15 @@ Or: =begin code =begin table - Programming Language Possible Values + Energy Source Benefit - Python python - Raku raku - HTML html - CSS css - - =end table + Solar power Reduces electricity bills + Wind energy Clean power source + Hydroelectric power Highly efficient + Geothermal energy Low emissions + Biomass Reduces waste + +=end table =end code or line-by-line with multi-line headers: From 55279395995871adf504575eb876c5d72551356a Mon Sep 17 00:00:00 2001 From: Aliaksandr Zahatski Date: Sun, 25 Feb 2024 16:22:04 +0100 Subject: [PATCH 24/34] update samples --- S26-documentation.pod6 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/S26-documentation.pod6 b/S26-documentation.pod6 index 2aa04a63..3fb065ba 100644 --- a/S26-documentation.pod6 +++ b/S26-documentation.pod6 @@ -2130,7 +2130,7 @@ content within Podlite documents. This is achieved using the C<=markdown> block. =end markdown =end code -This block allows to seamlessly combine Pod's structured blocks with +This block allows to seamlessly combine Podlite's structured blocks with the flexibility of Markdown. From 8f005394ea284f887313d3b89c1b5d13c354d3e4 Mon Sep 17 00:00:00 2001 From: Aliaksandr Zahatski Date: Sun, 25 Feb 2024 16:22:20 +0100 Subject: [PATCH 25/34] update --- S26-documentation.pod6 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/S26-documentation.pod6 b/S26-documentation.pod6 index 3fb065ba..6c9c1115 100644 --- a/S26-documentation.pod6 +++ b/S26-documentation.pod6 @@ -16,7 +16,7 @@ you're welcome to suggest changes or start a conversation on our L. =end nested -=Toc head1, head2,head3 +=toc head1, head2, head3 =begin AUTHORS =item Damian Conway |mailto:damian@conway.org>> @@ -2552,7 +2552,7 @@ Serial Number for a publication. For example: =end defn -To refer to a specific section within a webpage, manpage, or Pod +To refer to a specific section within a webpage, manpage, or Podlite document, add the name of that section after the main link, separated by a C<#>. For example: From bb459306a50e9cffa4cf28b4b20b0f69eea52f64 Mon Sep 17 00:00:00 2001 From: Aliaksandr Zahatski Date: Sun, 25 Feb 2024 16:22:33 +0100 Subject: [PATCH 26/34] update samples --- S26-documentation.pod6 | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/S26-documentation.pod6 b/S26-documentation.pod6 index 6c9c1115..aaac4d71 100644 --- a/S26-documentation.pod6 +++ b/S26-documentation.pod6 @@ -2390,20 +2390,19 @@ For example: to quit all applications. =end code -In Perl 5 POD, the C> code was widely used to break up text that would -otherwise be considered mark-up: - +In certain scenarios, the C> code is used to break up text that +would otherwise be considered mark-up: =begin code :allow - In Perl 5 POD, the ZB><> code was widely used to break up text - that would otherwise be considered mark-up. + In certain scenarios, the ZB><> code is used to break up text that + would otherwise be considered mark-up. =end code That technique still works, but it's now easier to accomplish the same goal using a verbatim formatting code: =begin code :allow - In Perl 5 POD, the B«V>>» code was widely used to break up text - that would otherwise be considered mark-up. + In certain scenarios, the B«V>>» code is used to break up text that + would otherwise be considered mark-up. =end code Moreover, the C> code automatically treats its contents as being From 26bb2babac13fc08c62ca09d7d8d2c640a0893ee Mon Sep 17 00:00:00 2001 From: Aliaksandr Zahatski Date: Sun, 25 Feb 2024 18:15:25 +0100 Subject: [PATCH 27/34] M<> refactor --- S26-documentation.pod6 | 47 +++++++++++++++++------------------------- 1 file changed, 19 insertions(+), 28 deletions(-) diff --git a/S26-documentation.pod6 b/S26-documentation.pod6 index aaac4d71..b9debe5c 100644 --- a/S26-documentation.pod6 +++ b/S26-documentation.pod6 @@ -2805,42 +2805,33 @@ E Plants grow without soil, using mineral nutrient solutions. =end nested -=head3 Module-defined formatting codes +=head3 Module-defined handler for extends markup features -This section is not yet implemented +The C> code in Podlite extends the language's capabilities by allowing users +to specify additional processing instructions within their documents. +This is achieved by combining content text with a custom scheme specifier, +followed by extra content that is passed verbatim to a handler function. -=begin comment -Modules loaded with a L|#How Podlite is parsed and processed> -can define classes that implement new formatting codes, which can -then be specified using the C> code. An C> code must start with -a colon-terminated scheme specifier. The rest of the enclosed text is -treated as the (verbatim) contents of the formatting code. For example: +The structure of the C> markup code as follows: -=begin code :allow - DOC use Pod::TT; + M< CONTENT-TEXT|SCHEME: VERBATIM_EXTRA_CONTENT> - =head1 Overview of the B> class - (version B>) +This syntax includes an optional CONTENT-TEXT section, followed by a + scheme specifier (SCHEME:) and then the VERBATIM_EXTRA_CONTENT. +The scheme specifier should follow the same rules as for L. +The scheme specifier allows the verbatim extra content (VERBATIM_EXTRA_CONTENT), +which may include additional attributes or instructions for the markup code handler. - B> -=end code +An example of how this code might be used is : + +=for code :allow + B This text is highlighted in yellowB<|Marker: yellow>>. -The C> formatting code is the inline equivalent of a -L. +In this example, the text s "This text is highlighted in yellow"> is subject +to special handling specified by the C scheme and C, indicating +that the textshould be highlighted in yellow. -Internally an C> code is converted to an object derived from the -C class. The name of the scheme becomes -the final component of the object's classname. For instance, the C> -code in the previous example would be converted to a -C object, whose C<.typename> -method retrieves the string C<"TT"> and whose C<.contents> -method retrieves a list of the formatting code's (verbatim, -unformatted) contents. -If the formatting code is unrecognized, the contents of the code (i.e. -everything after the first colon) would normally be rendered as -ordinary text. -=end comment =head2 Block pre-configuration From 733fbceca64a0b6be8101faddd69f3e0da0be12d Mon Sep 17 00:00:00 2001 From: Aliaksandr Zahatski Date: Sun, 25 Feb 2024 18:15:35 +0100 Subject: [PATCH 28/34] M<> refactor --- S26-documentation.pod6 | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/S26-documentation.pod6 b/S26-documentation.pod6 index b9debe5c..fdc4e841 100644 --- a/S26-documentation.pod6 +++ b/S26-documentation.pod6 @@ -2832,6 +2832,13 @@ to special handling specified by the C scheme and C, indicatin that the textshould be highlighted in yellow. +If the C is unrecognized, the content text (CONTENT-TEXT) should be +rendered as ordinary text. This ensures that documents remain readable even +if specific processing instructions cannot be executed. + +This feature enhances the flexibility and capability of Podlite documents, +enabling custom formatting and behavior that goes beyond standard markup features. + =head2 Block pre-configuration From 2a163b2bd3c876c549d231372a03c3f9c72b7a9e Mon Sep 17 00:00:00 2001 From: Aliaksandr Zahatski Date: Sun, 25 Feb 2024 18:17:29 +0100 Subject: [PATCH 29/34] tidy codes --- S26-documentation.pod6 | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/S26-documentation.pod6 b/S26-documentation.pod6 index fdc4e841..6a9fac49 100644 --- a/S26-documentation.pod6 +++ b/S26-documentation.pod6 @@ -805,19 +805,19 @@ or more formatting codes. Those codes will then remain active inside the code block. For example: =begin code - =begin code :allow< B R > - sub demo { - B 'Hello R'; - } - =end code + =begin code :allow< B R > + sub demo { + B 'Hello R'; + } + =end code =end code would be rendered: =begin code :allow< B R > -sub demo { - B 'Hello R'; -} + sub demo { + B 'Hello R'; + } =end code Note that the use of the C<:allow> option also makes it possible @@ -834,11 +834,11 @@ renderers or syntax highlighting tools. For example: =begin code :allow - =begin code B<:lang> - sub demo { - say 'Hello R'; - } - =end code + =begin code B<:lang> + sub demo { + say 'Hello R'; + } + =end code =end code From 3cc1e5903c4ce9d967fc6a97f0c8b3f549301821 Mon Sep 17 00:00:00 2001 From: Aliaksandr Zahatski Date: Sun, 25 Feb 2024 18:18:01 +0100 Subject: [PATCH 30/34] add summary for changes in beta2 --- S26-documentation.pod6 | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/S26-documentation.pod6 b/S26-documentation.pod6 index 6a9fac49..64a37140 100644 --- a/S26-documentation.pod6 +++ b/S26-documentation.pod6 @@ -23,17 +23,25 @@ our L. =item Aliaksandr Zahatski |mailto:zag@cpan.org>> =end AUTHORS -=VERSION 1.0.0-beta2 +=VERSION 1.0-beta2 =begin CHANGES -=head2 1.0.0-beta2 +=head2 1.0-beta2 =head3 New: + =head3 New: + =item embedding binary data into documents, C<=data>, C<:filename>, C<:encoding> + =item C<:mime-type> attribute for C<=include> and C<=data> blocks + =item introduce С schema for use in =picture and C<=table> + =item render tables from CSV files, C<=table> + =item new markdown mode for parser + =item M<> - extends inline markup features + =head3 Deprecated/removed: =item C<=finish> =item markers in comments -=head2 1.0.0-beta1 +=head2 1.0-beta1 =head3 New: =item add C<:id>, C<:caption>, C<:lang> attributes, =item task lists, C<=item> and C<:checked> attribute, From 609fef96d61f08d28998bc3866a6f6ece86359c8 Mon Sep 17 00:00:00 2001 From: Aliaksandr Zahatski Date: Sun, 25 Feb 2024 18:18:31 +0100 Subject: [PATCH 31/34] deprecate =finish --- S26-documentation.pod6 | 1 - 1 file changed, 1 deletion(-) diff --git a/S26-documentation.pod6 b/S26-documentation.pod6 index 64a37140..ba5b6266 100644 --- a/S26-documentation.pod6 +++ b/S26-documentation.pod6 @@ -3105,7 +3105,6 @@ attribute. By default, handles are opened to the file "C". C<=pod> No "ambient" blocks inside C<=table> Simple rectangular table C<=data> Data section - C<=finish> No ambient blocks after this point C<=toc> Autogenerated table of contents C<=include> Include other blocks, documents C<=picture> Inserting pictures From c0ef0c9a19d85e30202d2b255af46df9da83f86d Mon Sep 17 00:00:00 2001 From: Aliaksandr Zahatski Date: Sun, 25 Feb 2024 18:19:18 +0100 Subject: [PATCH 32/34] tidy --- S26-documentation.pod6 | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/S26-documentation.pod6 b/S26-documentation.pod6 index ba5b6266..65c8fba8 100644 --- a/S26-documentation.pod6 +++ b/S26-documentation.pod6 @@ -29,13 +29,12 @@ our L. =head2 1.0-beta2 =head3 New: - =head3 New: - =item embedding binary data into documents, C<=data>, C<:filename>, C<:encoding> - =item C<:mime-type> attribute for C<=include> and C<=data> blocks - =item introduce С schema for use in =picture and C<=table> - =item render tables from CSV files, C<=table> - =item new markdown mode for parser - =item M<> - extends inline markup features + =item embedding binary data into documents, C<=data>, C<:filename>, C<:encoding> + =item C<:mime-type> attribute for C<=include> and C<=data> blocks + =item introduce С schema for use in =picture and C<=table> + =item render tables from CSV files, C<=table> + =item new markdown mode for parser + =item M<> - extends inline markup features =head3 Deprecated/removed: =item C<=finish> From 4a5b2d6da55341f1b6e328d44b8500d28d5380dc Mon Sep 17 00:00:00 2001 From: Aliaksandr Zahatski Date: Sun, 25 Feb 2024 18:25:50 +0100 Subject: [PATCH 33/34] file name --- S26-documentation.pod6 => Specification.pod6 | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename S26-documentation.pod6 => Specification.pod6 (100%) diff --git a/S26-documentation.pod6 b/Specification.pod6 similarity index 100% rename from S26-documentation.pod6 rename to Specification.pod6 From e4494b7ad1e68d44fcbee32c2753bdd144e0d5d1 Mon Sep 17 00:00:00 2001 From: Aliaksandr Zahatski Date: Sun, 25 Feb 2024 18:41:19 +0100 Subject: [PATCH 34/34] add podlite related links --- README.md | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/README.md b/README.md index 5bb6c768..6e3e42d6 100644 --- a/README.md +++ b/README.md @@ -18,3 +18,51 @@ One of the key features of Podlite is its extensibility. This allows for definin Its flexibility makes it an ideal tool for creating documentation, blogs, educational materials, and much more. Podlite aims to provide users with a means for creativity and expressing ideas in a structured form, while ensuring ease of use and high flexibility in content creation. + + +[The specification](https://github.com/podlite/podlite-specs/blob/main/Specification.pod6) for the Podlite markup language is written using Podlite markup itself. + + +
+ +##### specification + +
+ +* [Source](https://github.com/podlite/podlite-specs) +* [in HTML](https://podlite.org/specification) +* [Discussions](https://github.com/podlite/podlite-specs/discussions) +* [Implementation](https://github.com/podlite/podlite) + +
+ +##### publishing system + +
+ +* [Podlite-web](https://github.com/podlite/podlite-web) +* [How-to article](https://zahatski.com/2022/8/23/1/start-you-own-blog-site-with-podlite-for-web) +* [Issues](https://github.com/podlite/podlite-specs/issues) + +
+ +##### desktop viewer/editor + +
+ +* [Podlite-desktop](https://github.com/podlite/podlite-desktop) +* [Releases](https://github.com/podlite/podlite-desktop/releases) +* [Issues](https://github.com/podlite/podlite-desktop/issues) + +
+ +##### online resurces + +
+ + +* [podlite.org](https://podlite.org) +* [pod6.in](https://pod6.in/) +* [github.com/podlite](https://github.com/podlite/) + +