diff options
Diffstat (limited to 'src/sisudoc/meta')
| -rw-r--r-- | src/sisudoc/meta/metadoc_from_src.d | 10 | ||||
| -rw-r--r-- | src/sisudoc/meta/metadoc_from_src_functions.d | 17 | ||||
| -rw-r--r-- | src/sisudoc/meta/rgx.d | 33 | 
3 files changed, 35 insertions, 25 deletions
diff --git a/src/sisudoc/meta/metadoc_from_src.d b/src/sisudoc/meta/metadoc_from_src.d index 24ae935..904444a 100644 --- a/src/sisudoc/meta/metadoc_from_src.d +++ b/src/sisudoc/meta/metadoc_from_src.d @@ -939,7 +939,7 @@ template docAbstraction() {      }      { // document segnames        ST_segnames get_segnames; -      get_segnames = the_document_body_section.after_doc_determine_segnames(the_document_endnotes_section, the_document_glossary_section, the_document_bibliography_section, the_document_bookindex_section, the_document_blurb_section, segnames, html_segnames_ptr_cntr, html_segnames_ptr); // +      get_segnames = the_document_body_section.after_doc_determine_segnames(the_document_endnotes_section, the_document_glossary_section, the_document_bibliography_section, the_document_bookindex_section, the_document_blurb_section, segnames, html_segnames_ptr_cntr, html_segnames_ptr);        segnames                          = get_segnames.segnames;        html_segnames_ptr_cntr            = get_segnames.html_segnames_ptr_cntr;        html_segnames_ptr                 = get_segnames.html_segnames_ptr; @@ -1376,36 +1376,42 @@ template docAbstraction() {        "scroll": ["head", "toc", "body",],        "seg":    ["head", "toc", "body",],        "sql":    ["head", "body",], -      "latex":  ["head", "toc", "body",] +      "latex":  ["head", "toc", "body",], +      "text":   ["head", "toc", "body",],      ];      if (document_the["endnotes"].length > 1) {        document_section_keys_sequenced["scroll"] ~= "endnotes";        document_section_keys_sequenced["seg"]    ~= "endnotes";        document_section_keys_sequenced["latex"]  ~= "endnotes"; +      document_section_keys_sequenced["text"]   ~= "endnotes";      }      if (document_the["glossary"].length > 1) {        document_section_keys_sequenced["scroll"] ~= "glossary";        document_section_keys_sequenced["seg"]    ~= "glossary";        document_section_keys_sequenced["sql"]    ~= "glossary";        document_section_keys_sequenced["latex"]  ~= "glossary"; +      document_section_keys_sequenced["text"]  ~= "glossary";      }      if (document_the["bibliography"].length > 1) {        document_section_keys_sequenced["scroll"] ~= "bibliography";        document_section_keys_sequenced["seg"]    ~= "bibliography";        document_section_keys_sequenced["sql"]    ~= "bibliography";        document_section_keys_sequenced["latex"]  ~= "bibliography"; +      document_section_keys_sequenced["text"]  ~= "bibliography";      }      if (document_the["bookindex"].length > 1) {        document_section_keys_sequenced["scroll"] ~= "bookindex";        document_section_keys_sequenced["seg"]    ~= "bookindex";        document_section_keys_sequenced["sql"]    ~= "bookindex";        document_section_keys_sequenced["latex"]  ~= "bookindex"; +      document_section_keys_sequenced["text"]   ~= "bookindex";      }      if (document_the["blurb"].length > 1) {        document_section_keys_sequenced["scroll"] ~= "blurb";        document_section_keys_sequenced["seg"]    ~= "blurb";        document_section_keys_sequenced["sql"]    ~= "blurb";        document_section_keys_sequenced["latex"]  ~= "blurb"; +      document_section_keys_sequenced["text"]   ~= "blurb";      }      if ((opt_action.html)      || (opt_action.html_scroll) diff --git a/src/sisudoc/meta/metadoc_from_src_functions.d b/src/sisudoc/meta/metadoc_from_src_functions.d index 3ae10d1..6718e82 100644 --- a/src/sisudoc/meta/metadoc_from_src_functions.d +++ b/src/sisudoc/meta/metadoc_from_src_functions.d @@ -2557,10 +2557,8 @@ template docAbstractionFunctions() {        CMM              conf_make_meta,        Flag!"_new_doc"  _new_doc      ) { -      obj_txt["munge"]                                = obj_[obj_key_].dup; -      obj_txt["munge"]                                = (obj_["is"].match(ctRegex!(`verse|code`))) -      ? obj_txt["munge"] -      : obj_txt["munge"].strip; +      obj_txt["munge"]                  = obj_[obj_key_].dup; +      obj_txt["munge"]                  = (obj_["is"].match(ctRegex!(`verse|code`))) ? obj_txt["munge"] : obj_txt["munge"].strip;        if (_new_doc) {          anchor_tag = "";        } @@ -2579,8 +2577,8 @@ template docAbstractionFunctions() {          || (obj_["is"] == "group")          || (obj_["is"] == "block")          || (obj_["is"] == "verse")) { -        obj_txt["munge"]                              = (obj_txt["munge"]).inline_markup_faces; -        obj_txt["munge"]                              = (obj_txt["munge"]).links_and_images; +        obj_txt["munge"]                = (obj_txt["munge"]).inline_markup_faces; +        obj_txt["munge"]                = (obj_txt["munge"]).links_and_images;        }        switch (obj_["is"]) {        case "heading": @@ -3299,8 +3297,8 @@ template docAbstractionFunctions() {    // ↓ - endnotes    struct NotesSection {      string[string] object_notes; -    int previous_count; -    int mkn; +    int            previous_count; +    int            mkn;      static auto rgx = RgxI();      private auto gather_notes_for_endnote_section(        ObjGenericComposite[] contents_am, @@ -5406,6 +5404,9 @@ template docSectKeysSeq() {        string[] latex() {          return document_section_keys_sequenced["latex"];        } +      string[] text() { +        return document_section_keys_sequenced["text"]; +      }      }      return doc_sect_keys_seq();    } diff --git a/src/sisudoc/meta/rgx.d b/src/sisudoc/meta/rgx.d index 259ab82..1a26f73 100644 --- a/src/sisudoc/meta/rgx.d +++ b/src/sisudoc/meta/rgx.d @@ -148,16 +148,16 @@ static template spineRgxIn() {      static table_col_separator_nl                   = ctRegex!(`[┊]$`, "mg");      /+ inline markup footnotes endnotes +/      static inline_notes_curly_gen                   = ctRegex!(`~\{.+?\}~`, "m"); -    static inline_notes_curly                       = ctRegex!(`~\{\s*(.+?)\}~`, "mg"); -    static inline_notes_curly_sp_asterisk           = ctRegex!(`~\{[*]+\s+(.+?)\}~`, "m"); -    static inline_notes_curly_sp_plus               = ctRegex!(`~\{[+]+\s+(.+?)\}~`, "m"); +    static inline_notes_curly                       = ctRegex!(`~\{\s*(.+?)\s*\}~`, "mg"); +    static inline_notes_curly_sp_asterisk           = ctRegex!(`~\{[*]+\s+(.+?)\s*\}~`, "m"); +    static inline_notes_curly_sp_plus               = ctRegex!(`~\{[+]+\s+(.+?)\s*\}~`, "m");      static note_ref                                 = ctRegex!(`^\S+?noteref_(?P<ref>[0-9]+)`, "mg");     // {^{73.}^}#noteref_73      static smid_inline_url_generic                        = ctRegex!(`(?:^|[}(\[ ])(?:(?:https?|git):\/\/|¤?\.\.\/|¤?\.\/|¤|#)[a-zA-Z0-9_#]`, "mg");      static smid_inline_url                                = ctRegex!(`((?:(?:https?|git):\/\/|¤?\.\.\/|¤?\.\/|¤|#)[a-zA-Z0-9_]\S*)`, "mg");      static smid_inline_link_naked_url                     = ctRegex!(`(?P<pre>^|[ (\[])(?P<link>(?:(?:https?|git):\/\/|¤?\.\.\/|¤?\.\/|¤)\S+?)(?=[.,;:?!'"]?([ )\]]|$))`, "mg");      static smid_inline_link_markup_regular                = ctRegex!(`(?P<pre>^|[ (\[])\{\s*(?P<content>.+?)\s*\}(?P<link>(?:(?:https?|git):\/\/|¤?\.\.\/|¤?\.\/|¤|#)\S+?)(?=[;:!,?.]?([ )\]]|$))`, "mg"); -    static smid_inline_link_endnote_url_helper_punctuated = ctRegex!(`\{~\^\s+(?P<content>.+?)\}(?P<link>(?:(?:https?|git):\/\/|¤?\.\.\/|¤?\.\/|¤|#)\S+?)(?=[.,;:?!]?([ ]|$))`, "mg"); -    static smid_inline_link_endnote_url_helper            = ctRegex!(`\{~\^\s+(?P<content>.+?)\}(?P<link>(?:(?:https?|git):\/\/|¤?\.\.\/|¤?\.\/|¤|#)\S+)`, "mg"); +    static smid_inline_link_endnote_url_helper_punctuated = ctRegex!(`\{~\^\s+(?P<content>.+?)\s*\}(?P<link>(?:(?:https?|git):\/\/|¤?\.\.\/|¤?\.\/|¤|#)\S+?)(?=[.,;:?!]?([ ]|$))`, "mg"); +    static smid_inline_link_endnote_url_helper            = ctRegex!(`\{~\^\s+(?P<content>.+?)\s*\}(?P<link>(?:(?:https?|git):\/\/|¤?\.\.\/|¤?\.\/|¤|#)\S+)`, "mg");      static image                                    = ctRegex!(`([a-zA-Z0-9._-]+?\.(?:png|gif|jpg))`, "mg");      static smid_image                               = ctRegex!(`(?P<pre>(?:^|[ ])[{┥](?:~\^\s+|\s*))(?P<image>[a-zA-Z0-9._-]+?\.(?:png|gif|jpg))(?P<post>(?:.*?)\s*[}┝](?:image|┤.*?├|(?:(?:https?|git):\/\/|¤?\.\.\/|¤?\.\/|¤|#)\S+?)(?=[;:!,?.]?([ )\]]|$)))`, "mg");      static smid_image_generic                       = ctRegex!(`(?:^|[ ])[{┥](?:~\^\s+|\s*)\S+\.(?:png|gif|jpg).*?[}┝](?:image|┤.*?├|(?:(?:https?|git):\/\/|¤?\.\.\/|¤?\.\/|¤|#)\S+?)(?=[;:!,?.]?([ )\]]|$))`, "mg"); @@ -221,9 +221,9 @@ static template spineRgxIn() {      static br_empty_line                            = ctRegex!(`\n[ ]*\n`, "mg");      static br_linebreaks_newlines                   = ctRegex!(`[\n┘┙]`, "mg");      static br_linebreaks                            = ctRegex!(`[┘┙]`, "mg"); -    static br_line                                  = ctRegex!(`┘`, "mg"); -    static br_line_inline                           = ctRegex!(`┙`, "mg"); -    static br_line_spaced                           = ctRegex!(`┚`, "mg"); +    static br_line                                  = ctRegex!(`\s*┘\s*`, "mg"); +    static br_line_inline                           = ctRegex!(`\s*┙\s*`, "mg"); +    static br_line_spaced                           = ctRegex!(`\s*┚\s*`, "mg");      /+ inline markup footnotes endnotes +/      static inline_notes_al                          = ctRegex!(`【(?:[*+]\s+|\s*)(.+?)】`, "mg");      static inline_notes_al_special                  = ctRegex!(`【(?:[*+]\s+)(.+?)】`, "mg"); // TODO remove match when special footnotes are implemented @@ -231,6 +231,8 @@ static template spineRgxIn() {      static inline_notes_al_gen_text                 = ctRegex!(`【(?P<text>.+?)】`, "m");      static inline_notes_al_all_note                 = ctRegex!(`【(?P<num>\d+|(?:[*]|[+])+)\s+(?P<note>.+?)\s*】`, "mg");      static inline_notes_al_regular_number_note      = ctRegex!(`【(?P<num>\d+)\s+(?P<note>.+?)\s*】`, "mg"); +    // static inline_notes_al_all_note                 = ctRegex!(`【(?P<num>\d+|(?:[*]|[+])+)\s+(?P<note>.+?)\s*(≫\s\d+)?\s*】`, "mg"); // ocn of origin would be useful in endnote section +    // static inline_notes_al_regular_number_note      = ctRegex!(`【(?P<num>\d+)\s+(?P<note>.+?)\s*(≫\s\d+)?\s*】`, "mg"); // ocn of origin would be useful in endnote section      static inline_notes_al_special_char_note        = ctRegex!(`【(?P<char>(?:[*]|[+])+)\s+(?P<note>.+?)】`, "mg");      static inline_al_delimiter_open_regular         = ctRegex!(`【\s`, "m");      static inline_al_delimiter_open_symbol_star     = ctRegex!(`【[*]\s`, "m"); @@ -241,13 +243,14 @@ static template spineRgxIn() {      static inline_image_without_dimensions          = ctRegex!(`(?P<pre>┥)☼(?P<imginf>(?P<img>[a-zA-Z0-9._-]+?\.(?:jpg|gif|png)),w(?P<width>0)h(?P<height>0))\s*(?P<post>.*?┝┤.*?├)`, "mg");      static inline_image_info                        = ctRegex!(`☼?(?P<img>[a-zA-Z0-9._-]+?\.(?:jpg|gif|png)),w(?P<width>\d+)h(?P<height>\d+)`, "mg");      static inline_link_anchor                       = ctRegex!(`┃(?P<anchor>\S+?)┃`, "mg"); // TODO *~text_link_anchor -    static inline_link                              = ctRegex!(`┥(?P<text>.+?)┝┤(?P<link>#?(\S+?))├`, "mg"); -    static inline_link_empty                        = ctRegex!(`┥(?P<text>.+?)┝┤├`, "mg"); -    static inline_link_number                       = ctRegex!(`┥(?P<text>.+?)┝┤(?P<num>[0-9]+)├`, "mg"); // not used -    static inline_link_number_only                  = ctRegex!(`(?P<linked_text>┥.+?┝)┤(?P<num>[0-9]+)├`, "mg"); -    static inline_link_stow_uri                     = ctRegex!(`┥(?P<text>.+?)┝┤(?P<link>[^ 0-9#┥┝┤├][^ 0-9┥┝┤├]+)├`, "mg"); // will not stow (stowed links) or object number internal links -    static inline_link_hash                         = ctRegex!(`┥(?P<text>.+?)┝┤(?P<link>#(?P<hash>\S+?))├`, "mg"); -    static inline_link_seg_and_hash                 = ctRegex!(`┥(?P<text>.+?)┝┤(?P<link>(?P<seg>[^/#├]*)#(?P<hash>.+?))├`, "mg"); +    // space cleaning should not be necessary +    static inline_link                              = ctRegex!(`┥\s*(?P<text>.+?)\s*┝┤(?P<link>#?(\S+?))├`, "mg"); +    static inline_link_empty                        = ctRegex!(`┥\s*(?P<text>.+?)\s*┝┤├`, "mg"); +    static inline_link_number                       = ctRegex!(`┥\s*(?P<text>.+?)\s*┝┤(?P<num>[0-9]+)├`, "mg"); // not used +    static inline_link_number_only                  = ctRegex!(`\s*(?P<linked_text>\s*┥.+?┝)┤(?P<num>[0-9]+)├`, "mg"); +    static inline_link_stow_uri                     = ctRegex!(`┥\s*(?P<text>.+?)\s*┝┤(?P<link>[^ 0-9#┥┝┤├][^ 0-9┥┝┤├]+)├`, "mg"); // will not stow (stowed links) or object number internal links +    static inline_link_hash                         = ctRegex!(`┥\s*(?P<text>.+?)\s*┝┤(?P<link>#(?P<hash>\S+?))├`, "mg"); +    static inline_link_seg_and_hash                 = ctRegex!(`┥\s*(?P<text>.+?)\s*┝┤(?P<link>(?P<seg>[^/#├]*)#(?P<hash>.+?))├`, "mg");      static inline_link_clean                        = ctRegex!(`┤(?:.+?)├|[┥┝]`, "mg");      static inline_link_toc_to_backmatter            = ctRegex!(`┤#(?P<link>endnotes|bibliography|bookindex|glossary|blurb)├`, "mg");      static url                                      = ctRegex!(`https?://`, "mg");  | 
