From 0b2bb143e4512e0c78d4e2efdb9161772d54459c Mon Sep 17 00:00:00 2001
From: Ralph Amissah <ralph.amissah@gmail.com>
Date: Fri, 21 Feb 2025 12:42:55 -0500
Subject: triple single-quote marks block identifier added

- tics a bit cumbersome where single quotes work
  just as well
- testing required (special cases not covered)
- diverges from sisu markup which will need an
  update sometime
---
 src/sisudoc/io_in/read_source_files.d | 20 ++++++++++++++++++--
 1 file changed, 18 insertions(+), 2 deletions(-)

(limited to 'src/sisudoc/io_in')

diff --git a/src/sisudoc/io_in/read_source_files.d b/src/sisudoc/io_in/read_source_files.d
index 3cbaed0..c683d1e 100644
--- a/src/sisudoc/io_in/read_source_files.d
+++ b/src/sisudoc/io_in/read_source_files.d
@@ -253,7 +253,7 @@ template spineRawMarkupContent() {
     ) {
       char[][] contents_insert;
       int code_block_status     = 0;
-      enum codeBlock { off, curly, tic, }
+      enum codeBlock { off, curly, tic, quotemarks }
       auto fn_pth_full = fn_src.match(rgx_files.src_pth_sst_or_ssm);
       auto markup_src_file_path = fn_pth_full.captures[1];
       foreach (line; markup_sourcefile_insert_content) {
@@ -265,11 +265,19 @@ template spineRawMarkupContent() {
         } else if (line.matchFirst(rgx.block_curly_code_open)) {
           code_block_status   = codeBlock.curly;
           contents_insert ~= line;
+        } else if (code_block_status == codeBlock.quotemarks) {
+          if (line.matchFirst(rgx.block_quotemarks_close)) {
+            code_block_status = codeBlock.off;
+          }
+          contents_insert ~= line;
         } else if (code_block_status == codeBlock.tic) {
           if (line.matchFirst(rgx.block_tic_close)) {
             code_block_status = codeBlock.off;
           }
           contents_insert ~= line;
+        } else if (line.matchFirst(rgx.block_quotemarks_code_open)) {
+          code_block_status   = codeBlock.quotemarks;
+          contents_insert ~= line;
         } else if (line.matchFirst(rgx.block_tic_code_open)) {
           code_block_status   = codeBlock.tic;
           contents_insert ~= line;
@@ -328,7 +336,7 @@ template spineRawMarkupContent() {
       import std.algorithm;
       char[][] contents;
       int code_block_status     = 0;
-      enum codeBlock { off, curly, tic, }
+      enum codeBlock { off, curly, tic, quotemarks }
       auto fn_pth_full = fn_src.match(rgx_files.src_pth_sst_or_ssm);
       auto markup_src_file_path = fn_pth_full.captures[1];
       char[][] contents_insert;
@@ -343,11 +351,19 @@ template spineRawMarkupContent() {
         } else if (line.matchFirst(rgx.block_curly_code_open)) {
           code_block_status = codeBlock.curly;
           contents ~= line;
+        } else if (code_block_status == codeBlock.quotemarks) {
+          if (line.matchFirst(rgx.block_quotemarks_close)) {
+            code_block_status = codeBlock.off;
+          }
+          contents ~= line;
         } else if (code_block_status == codeBlock.tic) {
           if (line.matchFirst(rgx.block_tic_close)) {
             code_block_status = codeBlock.off;
           }
           contents ~= line;
+        } else if (line.matchFirst(rgx.block_quotemarks_code_open)) {
+          code_block_status = codeBlock.quotemarks;
+          contents ~= line;
         } else if (line.matchFirst(rgx.block_tic_code_open)) {
           code_block_status = codeBlock.tic;
           contents ~= line;
-- 
cgit v1.2.3