diff options
| author | Ralph Amissah <ralph.amissah@gmail.com> | 2019-10-30 17:39:18 -0400 | 
|---|---|---|
| committer | Ralph Amissah <ralph.amissah@gmail.com> | 2019-11-19 16:55:31 -0500 | 
| commit | 0f70fd8a52ab0f748de6e9cc426e4e04a2393ac3 (patch) | |
| tree | 4ef5e19a10527e07469e543b36b8430c5937d8a1 /src/doc_reform | |
| parent | minor (diff) | |
regex, remove unused
- some potentially useful (review as needed)
- speeds up compilation
Diffstat (limited to 'src/doc_reform')
| -rw-r--r-- | src/doc_reform/meta/rgx.d | 71 | ||||
| -rw-r--r-- | src/doc_reform/output/rgx.d | 36 | 
2 files changed, 1 insertions, 106 deletions
| diff --git a/src/doc_reform/meta/rgx.d b/src/doc_reform/meta/rgx.d index 11f4aa5..a7826be 100644 --- a/src/doc_reform/meta/rgx.d +++ b/src/doc_reform/meta/rgx.d @@ -6,10 +6,9 @@ static template DocReformRgxInit() {    import doc_reform.meta.defaults;    static struct Rgx {      /+ misc +/ -    static true_dollar                                    = ctRegex!(`\$`, "gm"); +    // static true_dollar                                    = ctRegex!(`\$`, "gm");      static sep                                            = ctRegex!(`␣`, "gm");      static flag_action                                    = ctRegex!(`^(--[a-z][a-z0-9-]+)$`); -    static flag_action_str                                = ctRegex!(` (--[a-z][a-z0-9-]+)`);      static within_quotes                                  = ctRegex!(`"(.+?)"`, "m");      static yaml_tag_is_str                                = ctRegex!(`:str$`);      static yaml_tag_is_int                                = ctRegex!(`:int$`); @@ -34,17 +33,13 @@ static template DocReformRgxInit() {      static table_row_delimiter                            = ctRegex!("\n[ ]*\n+", "mg");      static table_row_delimiter_special                    = ctRegex!("[ ]*\n", "mg");      static table_col_delimiter_special                    = ctRegex!("[ ]*[|][ ]*", "mg"); -    static levels_markup                                  = ctRegex!(`^[A-D1-4]$`);      static levels_numbered                                = ctRegex!(`^[0-9]$`);      static levels_numbered_headings                       = ctRegex!(`^[0-7]$`);      static numeric                                        = ctRegex!(`[ 0-9,.-]+`);      static numeric_col                                    = ctRegex!(`^[ 0-9,.%$£₤Є€€¥()-]+$`);      /+ comments +/      static comment                                        = ctRegex!(`^%+ `); -    static comments                                       = ctRegex!(`^%+ |^%+$`);      /+ header +/ -    static make_simple_substitutions_rb                   = ctRegex!(`(?P<substitution>/(?P<match>.+?)/,[ ]*['"](?P<replace>.+?)['"])`); -    static make_simple_substitutions_d                    = ctRegex!(`(?P<substitution>` ~ '`' ~ `(?P<match>.+?)` ~ '`' ~ `,[ ]*['"](?P<replace>.+?)['"])`);      /+ header +/      static variable_doc_title                             = ctRegex!(`@title`);      static variable_doc_author                            = ctRegex!(`@author|@creator`); @@ -63,9 +58,6 @@ static template DocReformRgxInit() {      static heading_marker_missing_tag                     = ctRegex!(`^:?([A-D1-4])[~] `);      static heading_anchor_tag_plus_colon                  = ctRegex!(`^:?([A-D1-4][~])([a-z0-9_.:-]+) `,"i");      static heading_marker_tag_has_colon                   = ctRegex!(`([:])`); -    static heading_title                                  = ctRegex!(`^:?[A-D1-4][~][a-z0-9_.-]*[?]?\s+(.+?)$`); -    static heading_all                                    = ctRegex!(`^:?([A-D1-4])[~]([a-z0-9_.-]*[?]?)\s+(.+?)$`); -    static heading_backmatter                             = ctRegex!(`^:?1[~][!](glossary|bibliography|biblio|blurb)\s+`,"i");      static heading_biblio                                 = ctRegex!(`^:?(1)[~][!](biblio(?:graphy)?|references?)`);      static heading_glossary                               = ctRegex!(`^:?(1)[~][!](glossary)`);      static heading_blurb                                  = ctRegex!(`^:?(1)[~][!](blurb)`); @@ -82,7 +74,6 @@ static template DocReformRgxInit() {      static block_open                                     = ctRegex!("^((code(?:[.][a-z][0-9a-z#+_]+)?|(?:poem|group|block|quote)(?:[.][a-z][0-9a-z_]+)?|table)(?:[(][ a-zA-Z0-9;:,]*[)])?[{][ ]*$)|^`{3} (code(?:[.][a-z][0-9a-z#+_]+)?|(?:poem|group|block|quote)(?:[.][a-z][0-9a-z_]+)?|table)(?:[(][ a-zA-Z0-9;:,]*[)])?|^[{]table[(](?:h;)?(?P<columns>(?:[ ,]+[0-9]+)+)[)][}]");      static block_poem_open                                = ctRegex!("^((poem(?:[(][ a-zA-Z0-9;:,]*[)])?[{][ ]*$)|`{3} poem(?:[(][ a-zA-Z0-9;:,]*[)])?)");      /+ blocked markup tics +/ -    static block_tic_open                                 = ctRegex!("^`{3} (code(?:[.][a-z][0-9a-z#+_]+)?|(?:poem|group|block|quote)(?:[.][a-z][0-9a-z_]+)?|table)");      static block_tic_code_open                            = ctRegex!("^`{3} code(?:[.](?P<syntax>[a-z][0-9a-z#+_]+))?(?:[(](?P<attrib>[ a-zA-Z0-9;:,]*)[)])?");      static block_tic_poem_open                            = ctRegex!("^`{3} poem(?:[.](?P<lang>[a-z][0-9a-z_]+))?(?:[(](?P<attrib>[ a-zA-Z0-9;:,]*)[)])?");      static block_tic_group_open                           = ctRegex!("^`{3} group(?:[.](?P<lang>[a-z][0-9a-z_]+))?(?:[(](?P<attrib>[ a-zA-Z0-9;:,]*)[)])?"); @@ -91,7 +82,6 @@ static template DocReformRgxInit() {      static block_tic_table_open                           = ctRegex!("^`{3} table(?:[(](?P<attrib>[ a-zA-Z0-9;:,]*)[)])?"); // ctRegex!("^`{3} table(?:\(.*?\))?");      static block_tic_close                                = ctRegex!("^(`{3})$","m");      /+ blocked markup curly +/ -    static block_curly_open                               = ctRegex!(`^((?:code([.][a-z][0-9a-z#+_]+)?|(?:poem|group|block|quote)(?:[.][a-z][0-9a-z_]+)?|table)(?:[(][ a-zA-Z0-9;:,]*[)])?[{][ ]*$)`);      static block_curly_code_open                          = ctRegex!(`^(?:code(?:[.](?P<syntax>[a-z][0-9a-z_]+))?(?:[(](?P<attrib>[ a-zA-Z0-9;:,]*)[)])?[{][ ]*$)`);      static block_curly_code_close                         = ctRegex!(`^([}]code)`);      static block_curly_poem_open                          = ctRegex!(`^(poem(?:[.](?P<lang>[a-z][0-9a-z_]+))?(?:[(](?P<attrib>[ a-zA-Z0-9;:,]*)[)])?[{][ ]*$)`); @@ -116,8 +106,6 @@ static template DocReformRgxInit() {      /+ inline markup footnotes endnotes +/      static inline_notes_curly_gen                         = ctRegex!(`~\{.+?\}~`, "m");      static inline_notes_curly                             = ctRegex!(`~\{\s*(.+?)\}~`, "mg"); -    static inline_curly_delimiter_open_and_close_regular  = ctRegex!(`~\{\s*|\s*\}~`, "m"); -    static inline_notes_delimiter_curly_regular           = ctRegex!(`~\{[ ]*(.+?)\}~`, "m");      static inline_notes_curly_sp                          = ctRegex!(`~\{[*+]+\s+(.+?)\}~`, "m");      static inline_notes_curly_sp_asterisk                 = ctRegex!(`~\{[*]+\s+(.+?)\}~`, "m");      static inline_notes_curly_sp_plus                     = ctRegex!(`~\{[+]+\s+(.+?)\}~`, "m"); @@ -126,12 +114,6 @@ static template DocReformRgxInit() {      static inline_text_and_note_square_sp                 = ctRegex!(`(.+?)~\[[*+]+\s+(.+?)\]~`, "mg");      static inline_text_and_note_square                    = ctRegex!(`(.+?)~\[\s*(.+?)\]~`, "mg");      static inline_note_square_delimiters                  = ctRegex!(`(~\[\s*)(.+?)(\]~)`, "mg"); -    static inline_curly_delimiter_open_regular            = ctRegex!(`~\{\s*`, "m"); -    static inline_curly_delimiter_open_symbol_star        = ctRegex!(`~\{[*]\s`, "m"); -    static inline_curly_delimiter_open_symbol_plus        = ctRegex!(`~\{[+]\s`, "m"); -    static inline_curly_delimiter_open_star_or_plus       = ctRegex!(`~\{[+*]`, "m"); -    static inline_curly_delimiter_close_regular           = ctRegex!(`\s*\}~`, "m"); -    static inline_text_and_note_curly                     = ctRegex!(`(?P<text>.+?)(?:(?:[~])[{][*+ ]*)(?P<note>.+?)(?:[}][~])`, "mg");      static note_ref                                       = ctRegex!(`^\S+?noteref_(?P<ref>[0-9]+)`, "mg");     // {^{73.}^}#noteref_73      static webserv_url_doc_root                           = ctRegex!(`(?P<url>(?P<domain>https?:\/\/[^ /]+)\/(?P<path>\S*))`, "mg");      static smid_inline_url_generic                        = ctRegex!(`(?:^|[}(\[ ])(?:(?:https?|git):\/\/|¤?\.\.\/|¤?\.\/|¤|#)[a-zA-Z0-9_#]`, "mg"); @@ -146,13 +128,6 @@ static template DocReformRgxInit() {      static smid_image_with_dimensions                      = ctRegex!(`(?P<pre>(?:^|[ ]|[^\S]?)[{┥](?:~\^\s+|\s*))(?P<image>[a-zA-Z0-9._-]+?\.(?:png|gif|jpg))\s+(?P<width>\d+)x(?P<height>\d+)\s*(?P<post>(?:.*?)\s*[}┝](?:image|┤.*?├|(?:(?:https?|git):\/\/|¤?\.\.\/|¤?\.\/|¤|#)\S+?)(?=[;:!,?.]?([ )\]]|$)))`, "mg");      static smid_mod_image_without_dimensions               = ctRegex!(`[{┥](?:~\^\s+|\s*)☼\S+\.(?:png|gif|jpg),w0h0.*[}┝](?:image|┤.*?├|(?:https?|git):\/\/\S+?)(?=[;:!,?.]?([ )\]]|$))`, "mg");      static smid_a_image                                    = ctRegex!(`(?P<pre>(?:^|[ ]|[^\S]?)[{](?:~\^\s+|\s*))(?P<image>[a-zA-Z0-9._-]+?\.(?:png|gif|jpg))(?P<post>(?:.*?)\s*[}](?:image|(?:(?:https?|git):\/\/|¤?\.\.\/|¤?\.\/|¤|#)\S+?)(?=[;:!,?.]?([ )\]]|$)))`, "mg"); -    static smid_a_image_generic                            = ctRegex!(`(?:^|[ ]|[^\S]?)[{](?:~\^\s+|\s*)\S+\.(?:png|gif|jpg).*?[}](?:image|(?:(?:https?|git):\/\/|¤?\.\.\/|¤?\.\/|¤|#)\S+?)(?=[;:!,?.]?([ )\]]|$))`, "mg"); -    static smid_a_image_with_dimensions                    = ctRegex!(`(?P<pre>(?:^|[ ]|[^\S]?)[{](?:~\^\s+|\s*))(?P<image>[a-zA-Z0-9._-]+?\.(?:png|gif|jpg))\s+(?P<width>\d+)x(?P<height>\d+)\s*(?P<post>(?:.*?)\s*[}](?:image|(?:(?:https?|git):\/\/|¤?\.\.\/|¤?\.\/|¤|#)\S+?)(?=[;:!,?.]?([ )\]]|$)))`, "mg"); -    static smid_a_mod_image_without_dimensions             = ctRegex!(`[{](?:~\^\s+|\s*)☼\S+\.(?:png|gif|jpg),w0h0.*[}](?:image|(?:https?|git):\/\/\S+?)(?=[;:!,?.]?([ )\]]|$))`, "mg"); -    static smid_b_image                                    = ctRegex!(`(?P<pre>(?:^|[ ]|[^\S]?)[┥](?:~\^\s+|\s*))(?P<image>[a-zA-Z0-9._-]+?\.(?:png|gif|jpg))(?P<post>(?:.*?)\s*[┝](?:┤.*?├|(?:(?:https?|git):\/\/|¤?\.\.\/|¤?\.\/|¤|#)\S+?)(?=[;:!,?.]?([ )\]]|$)))`, "mg"); -    static smid_b_image_generic                            = ctRegex!(`(?:^|[ ]|[^\S]?)[┥](?:~\^\s+|\s*)\S+\.(?:png|gif|jpg).*?[┝](?:┤.*?├|(?:(?:https?|git):\/\/|¤?\.\.\/|¤?\.\/|¤|#)\S+?)(?=[;:!,?.]?([ )\]]|$))`, "mg"); -    static smid_b_image_with_dimensions                    = ctRegex!(`(?P<pre>(?:^|[ ]|[^\S]?)[┥](?:~\^\s+|\s*))(?P<image>[a-zA-Z0-9._-]+?\.(?:png|gif|jpg))\s+(?P<width>\d+)x(?P<height>\d+)\s*(?P<post>(?:.*?)\s*[┝](?:┤.*?├|(?:(?:https?|git):\/\/|¤?\.\.\/|¤?\.\/|¤|#)\S+?)(?=[;:!,?.]?([ )\]]|$)))`, "mg"); -    static smid_b_mod_image_without_dimensions             = ctRegex!(`[┥](?:~\^\s+|\s*)☼\S+\.(?:png|gif|jpg),w0h0.*[┝](?:┤.*?├|(?:https?|git):\/\/\S+?)(?=[;:!,?.]?([ )\]]|$))`, "mg");      static smid_image_delimit                              = ctRegex!(`(?P<pre>^|[ ]|[^\S]?)\{\s*(?P<text>.+?)\s*\}(?:image)(?=[;:!,?.]?([ )\]]|$))`, "mg");      /+ inline markup book index +/      static book_index                                     = ctRegex!(`^=\{\s*(?P<bookindex>.+?)\}$`, "m"); @@ -180,15 +155,7 @@ static template DocReformRgxInit() {      /+ ignore outside code blocks +/      static skip_from_regular_parse    = ctRegex!(`^(--[+~-]#|-[\\]{2}-|=[.\\]{2}=)$`);      /+ line & page breaks +/ -    static break_line_within_object                       = ctRegex!(`[\\]{2}( |$)`); -    static break_page                                     = ctRegex!(`^-[\\]{2}-$`); -    static break_page_new                                 = ctRegex!(`^=[\\]{2}=$`); -    static break_page_line_across                         = ctRegex!(`^=[.]{2}=$`);      static break_string                                   = ctRegex!(`』`); -    static parent                                         = ctRegex!(`([0-7]):([0-9]+)`); -    static header_regex_content                           = ctRegex!(`([0-7]):([0-9]+)`); -    /+ json +/ -    static tailing_comma                                  = ctRegex!(`,$`, "m");      /+ biblio tags +/      static biblio_tags                                    = ctRegex!(`^(is|au|author_raw|author|author_arr|editor_raw|ed|editor_arr|ti|title|subtitle|fulltitle|lng|language|trans|src|jo|journal|in|vol|volume|edn|edition|yr|year|pl|place|pb|pub|publisher|url|pg|pages|note|short_name|id):\s+(.+)`);      static biblio_abbreviations                           = ctRegex!(`^(au|ed|ti|lng|jo|vol|edn|yr|pl|pb|pub|pg|pgs|sn)$`); @@ -202,53 +169,31 @@ static template DocReformRgxInit() {      static topic_register_sub_terms_split                 = ctRegex!(`\s*\|\s*`);      static topic_register_multiple_sub_terms_split        = ctRegex!(`␣([^|␣]+(?:\|[^|␣]+)+)`);      /+ language codes +/ -    auto language_codes                                    = -       ctRegex!("(am|bg|bn|br|ca|cs|cy|da|de|el|en|eo|es|et|eu|fi|fr|ga|gl|he|hi|hr|hy|ia|is|it|ja|ko|la|lo|lt|lv|ml|mr|nl|no|nn|oc|pl|pt|pt_BR|ro|ru|sa|se|sk|sl|sq|sr|sv|ta|te|th|tk|tr|uk|ur|vi|zh)");      auto language_code_and_filename                                    =         ctRegex!("(?:^|[/])(am|bg|bn|br|ca|cs|cy|da|de|el|en|eo|es|et|eu|fi|fr|ga|gl|he|hi|hr|hy|ia|is|it|ja|ko|la|lo|lt|lv|ml|mr|nl|no|nn|oc|pl|pt|pt_BR|ro|ru|sa|se|sk|sl|sq|sr|sv|ta|te|th|tk|tr|uk|ur|vi|zh)/[A-Za-z0-9._-].+?[.](?:sst|ssm)$");      static newline                                        = ctRegex!("\n", "mg"); -    static strip_br                                       = ctRegex!("^<br>\n|<br>\n*$");      static space                                          = ctRegex!(`[ ]`, "mg");      static spaces_keep                                    = ctRegex!(`(?P<keep_spaces>^[ ]+|[ ]{2,})`, "mg"); // code, verse, block      static spaces_line_start                              = ctRegex!(`^(?P<opening_spaces>[ ]+)`, "mg"); -    static spaces_multiple                                = ctRegex!(`(?P<multiple_spaces>[ ]{2,})`, "mg"); -    static two_spaces                                     = ctRegex!(`[ ]{2}`, "mg");      static nbsp_char                                      = ctRegex!(`░`, "mg"); -    static nbsp_chars_line_start                          = ctRegex!(`^░+`, "mg"); -    static nbsp_and_space                                 = ctRegex!(` [ ]`, "mg"); -    static nbsp_char_and_space                            = ctRegex!(`░[ ]`, "mg"); -    static special_markup_chars                           = ctRegex!(`[【】〖〗┥┝┤├¤░┘┙┚┼┿╂┊┏┚┆■]`, "mg");      static src_pth_sst_or_ssm                             = ctRegex!(`^(?P<path>[/]?(?:[a-zA-Z0-9._-]+/)*)(?P<filename>[a-zA-Z0-9._-]+[.](?P<extension>ss[tm]))$`);      static src_pth_pod_sst_or_ssm                         = ctRegex!(`^(?P<podpath>[/]?(?:[a-zA-Z0-9._-]+/)*)media/text/[a-z]{2}/(?P<filename>[a-zA-Z0-9][a-zA-Z0-9._-]*?[.]ss[tm])$`);      static src_pth_contents                               = ctRegex!(`^(?P<path>[/]?(?:[a-zA-Z0-9._-]+/)*)(?P<filename>[a-zA-Z0-9][a-zA-Z0-9._-]*)/pod[.]manifest$`);      static src_pth_zip                                    = ctRegex!(`^(?P<path>[/]?(?:[a-zA-Z0-9._-]+/)*)(?P<filename>[a-zA-Z0-9._-]+[.]zip)$`); -    static src_pth_unzip_pod                              = ctRegex!(`^(?P<path>media/text/[a-z]{2}/)*(?P<filename>[a-zA-Z0-9._-]+[.]ss[im])$`);      static src_pth_types                                  =        ctRegex!(`^(?P<path>[/]?[a-zA-Z0-9._-]+/)*(?P<gotfile>(?P<filename>[a-zA-Z0-9._-]+[.]ss[tm])|(?P<filelist>[a-zA-Z0-9._-]+/pod[.]manifest)|(?P<filezip>[a-zA-Z0-9._-]+[.]zip))$`); -    static pod_content_location                           = -      ctRegex!(`^(?P<filename>[a-zA-Z0-9._-]+[.]ss[tm])(?P<languages>(?:\s+[a-z]{2}(?:,|$))+)`, "mg");      static src_fn                                         =        ctRegex!(`^([/]?(?:[a-zA-Z0-9._-]+/)*)(?P<fn_src>(?P<fn_base>[a-zA-Z0-9._-]+)[.](?P<fn_src_suffix>ss[tm]))$`);      static src_fn_master                                  = ctRegex!(`^(?P<path>/?(?:[a-zA-Z0-9._-]+/)*)(?P<filename>[a-zA-Z0-9._-]+[.]ssm)$`); -    static src_fn_text                                    = ctRegex!(`^(?P<path>/?(?:[a-zA-Z0-9._-]+/)*)(?P<filename>[a-zA-Z0-9._-]+[.]sst)$`); -    static src_fn_insert                                  = ctRegex!(`^(?P<path>/?(?:[a-zA-Z0-9._-]+/)*)(?P<filename>[a-zA-Z0-9._-]+[.]ssi)$`);      static src_fn_find_inserts                            = ctRegex!(`^(?P<path>/?(?:[a-zA-Z0-9._-]+/)*)(?P<filename>[a-zA-Z0-9._-]+[.]ss[im])$`);      static insert_src_fn_ssi_or_sst                       = ctRegex!(`^<<\s*(?P<path>[a-zA-Z0-9._-]+/)*(?P<filename>[a-zA-Z0-9._-]+[.]ss[ti])$`);      static src_base_parent_dir_name                       = ctRegex!(`[/](?P<dir>(?:[a-zA-Z0-9._-]+))(?:/media/text/[a-z]{2})$`); // formalizes dir structure -    static src_base_parent_path                           = ctRegex!(`(?P<dir>(?:[/a-zA-Z0-9._-]+))(?:/media/text/[a-z]{2})$`); // formalizes dir structure      static src_formalised_file_path_parts                 = ctRegex!(`(?P<pth>(?:[/a-zA-Z0-9._-]+?)(?P<dir>[a-zA-Z0-9._-]+))(?:/media/text/[a-z]{2})$`); // formalizes dir structure      /+ line breaks +/ -    static empty_line                                     = ctRegex!(`^\s*$`); -    static empty_block                                    = ctRegex!(`^\s*$`, "mg"); -    static br_line_natural                                = ctRegex!(`\n`, "mg");      static br_empty_line                                  = ctRegex!(`\n[ ]*\n`, "mg");      static br_newlines_linebreaks                         = ctRegex!(`[\n┘┙]`, "mg");      static br_line                                        = ctRegex!(`┘`, "mg");      static br_nl                                          = ctRegex!(`┙`, "mg"); -    static br_paragraph                                   = ctRegex!(`┚`, "mg"); -    static br_page_line                                   = ctRegex!(`┼`, "mg"); -    static br_page                                        = ctRegex!(`┿`, "mg"); -    static br_page_new                                    = ctRegex!(`╂`, "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 @@ -262,18 +207,12 @@ static template DocReformRgxInit() {      static inline_al_delimiter_open_regular               = ctRegex!(`【\s`, "m");      static inline_al_delimiter_open_symbol_star           = ctRegex!(`【[*]\s`, "m");      static inline_al_delimiter_open_symbol_plus           = ctRegex!(`【[+]\s`, "m"); -    static inline_al_delimiter_close_regular              = ctRegex!(`】`, "m"); -    static inline_al_delimiter_open_and_close_regular     = ctRegex!(`【|】`, "m"); -    static inline_al_delimiter_open_asterisk              = ctRegex!(`【\*`, "m"); -    static inline_al_delimiter_open_plus                  = ctRegex!(`【\+`, "m"); -    static inline_text_and_note_al                        = ctRegex!(`(?P<text>.+?)【(?:[*+ ]*)(?P<note>.+?)】`, "mg");      static inline_text_and_note_al_                       = ctRegex!(`(.+?(?:【[*+]*\s+.+?】|$))`, "mg");      /+ inline markup links +/      static inline_image                                   = ctRegex!(`(?P<pre>┥)☼(?P<imginf>(?P<img>[a-zA-Z0-9._-]+?\.(?:jpg|gif|png)),w(?P<width>\d+)h(?P<height>\d+))\s*(?P<post>.*?┝┤.*?├)`, "mg");      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>.+?)├`, "mg");      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 @@ -282,20 +221,15 @@ static template DocReformRgxInit() {      static inline_link_hash                               = ctRegex!(`┥(?P<text>.+?)┝┤(?P<link>#(?P<segname>\S+?))├`, "mg");      static inline_link_clean                              = ctRegex!(`┤(?:.+?)├|[┥┝]`, "mg");      static inline_link_toc_to_backmatter                  = ctRegex!(`┤#(?P<link>endnotes|bibliography|bookindex|glossary|blurb)├`, "mg"); -    static inline_a_url                                   = ctRegex!(`(┤)([^\s┥┝┤├]+)(├)`, "mg");      static url                                            = ctRegex!(`https?://`, "mg");      static uri                                            = ctRegex!(`(?:https?|git)://`, "mg");      static uri_identify_components                        = ctRegex!(`(?P<type>(?:https?|git)://)(?P<path>\S+?/)(?P<file>[^/]+)$`, "mg");      static inline_link_subtoc                             = ctRegex!(`^(?P<level>[5-7])~ ┥(?P<text>.+?)┝┤(?P<link>.+?)├`, "mg"); -    static fn_suffix                                      = ctRegex!(`\.fnSuffix`, "mg");      static inline_link_fn_suffix                          = ctRegex!(`¤(.+?)(\.fnSuffix)`, "mg");      static inline_seg_link                                = ctRegex!(`(¤)(?:.+?)\.fnSuffix`, "mg");      static mark_internal_site_lnk                         = ctRegex!(`¤`, "mg");      static quotation_mark_sql_insert_delimiter            = ctRegex!("[']", "mg"); -    static quotation_mark_various                         = ctRegex!(q"┃['‘’“”"`´¨]┃", "mg");      /+ inline markup font face mod +/ -    static inline_mark_faces                            = ctRegex!(`(?P<markup>(?P<mod>[*!/_^,+#"-])\{(?P<text>.+?)\}[*!/_^,+#"-])`, "mg"); -    static inline_mark_faces_to_mod                     = ctRegex!(`(?P<mod>[*!/_^,+#"-])\{(?P<text>.+?)\}([*!/_^,+#"-])`, "mg");      static inline_mark_emphasis                         = ctRegex!(`(?P<mark>[*])\{(?P<text>.+?)\}[*]`, "mg");      static inline_mark_bold                             = ctRegex!(`(?P<mark>[!])\{(?P<text>.+?)\}[!]`, "mg");      static inline_mark_underscore                       = ctRegex!(`(?P<mark>[_])\{(?P<text>.+?)\}[_]`, "mg"); @@ -306,15 +240,12 @@ static template DocReformRgxInit() {      static inline_mark_insert                           = ctRegex!(`(?P<mark>[+])\{(?P<text>.+?)\}[+]`, "mg");      static inline_mark_mono                             = ctRegex!(`(?P<mark>[#])\{(?P<text>.+?)\}[#]`, "mg");      static inline_mark_cite                             = ctRegex!(`(?P<mark>["])\{(?P<text>.+?)\}["]`, "mg"); -    static inline_mark_fontface_clean                   = ctRegex!(`[*!_/^,+#■"-]\{|\}[*!_/^,+#■"-]`, "mg");      static inline_faces_line                              = ctRegex!(`^[*!/_]_ (?P<text>.+?)((?: [\\]{2}|[~]#){0,2}$)`);      static inline_emphasis_line                           = ctRegex!(`^\*_ (?P<text>.+?)(?P<tail>(?: [\\]{2}|[~]#){0,2}$)`);      static inline_bold_line                               = ctRegex!(`^!_ (?P<text>.+?)(?P<tail>(?: [\\]{2}|[~]#){0,2}$)`);      static inline_italics_line                            = ctRegex!(`^/_ (?P<text>.+?)(?P<tail>(?: [\\]{2}|[~]#){0,2}$)`);      static inline_underscore_line                         = ctRegex!(`^__ (?P<text>.+?)(?P<tail>(?: [\\]{2}|[~]#){0,2}$)`); -    static no_header_rgx                                  = ctRegex!(`^=NULL$`);      /+ inline markup font face mod +/ -    static inline_faces                                   = ctRegex!(`(?P<markup>(?P<mod>[*!_^,+■‖-])┨(?P<text>.+?)┣[*!_^,+■‖-])`, "mg");      static inline_emphasis                                = ctRegex!(`[*]┨(?P<text>.+?)┣[*]`, "mg");      static inline_bold                                    = ctRegex!(`[!]┨(?P<text>.+?)┣[!]`, "mg");      static inline_underscore                              = ctRegex!(`[_]┨(?P<text>.+?)┣[_]`, "mg"); diff --git a/src/doc_reform/output/rgx.d b/src/doc_reform/output/rgx.d index 89d5858..1c569f9 100644 --- a/src/doc_reform/output/rgx.d +++ b/src/doc_reform/output/rgx.d @@ -6,48 +6,28 @@ static template DocReformOutputRgxInit() {    import doc_reform.output.defaults;    static struct Rgx {      static newline                                        = ctRegex!("\n", "mg"); -    static strip_br                                       = ctRegex!("^<br>\n|<br>\n*$");      static space                                          = ctRegex!(`[ ]`, "mg");      static spaces_keep                                    = ctRegex!(`(?P<keep_spaces>^[ ]+|[ ]{2,})`, "mg"); // code, verse, block      static spaces_line_start                              = ctRegex!(`^(?P<opening_spaces>[ ]+)`, "mg"); -    static spaces_multiple                                = ctRegex!(`(?P<multiple_spaces>[ ]{2,})`, "mg"); -    static two_spaces                                     = ctRegex!(`[ ]{2}`, "mg");      static nbsp_char                                      = ctRegex!(`░`, "mg"); -    static nbsp_chars_line_start                          = ctRegex!(`^░+`, "mg"); -    static nbsp_and_space                                 = ctRegex!(` [ ]`, "mg"); -    static nbsp_char_and_space                            = ctRegex!(`░[ ]`, "mg"); -    static special_markup_chars                           = ctRegex!(`[【】〖〗┥┝┤├¤░┘┙┚┼┿╂┊┏┚┆■]`, "mg");      static src_pth_sst_or_ssm                             = ctRegex!(`^(?P<path>[/]?(?:[a-zA-Z0-9._-]+/)*)(?P<filename>[a-zA-Z0-9._-]+[.](?P<extension>ss[tm]))$`);      static src_pth_pod_sst_or_ssm                         = ctRegex!(`^(?P<podpath>[/]?(?:[a-zA-Z0-9._-]+/)*)media/text/[a-z]{2}/(?P<filename>[a-zA-Z0-9][a-zA-Z0-9._-]*?[.]ss[tm])$`);      static src_pth_contents                               = ctRegex!(`^(?P<path>[/]?(?:[a-zA-Z0-9._-]+/)*)(?P<filename>[a-zA-Z0-9][a-zA-Z0-9._-]*)/pod[.]manifest$`);      static src_pth_zip                                    = ctRegex!(`^(?P<path>[/]?(?:[a-zA-Z0-9._-]+/)*)(?P<filename>[a-zA-Z0-9._-]+[.]zip)$`); -    static src_pth_unzip_pod                              = ctRegex!(`^(?P<path>media/text/[a-z]{2}/)*(?P<filename>[a-zA-Z0-9._-]+[.]ss[im])$`);      static src_pth_types                                  =        ctRegex!(`^(?P<path>[/]?[a-zA-Z0-9._-]+/)*(?P<gotfile>(?P<filename>[a-zA-Z0-9._-]+[.]ss[tm])|(?P<filelist>[a-zA-Z0-9._-]+/pod[.]manifest)|(?P<filezip>[a-zA-Z0-9._-]+[.]zip))$`); -    static pod_content_location                           = -      ctRegex!(`^(?P<filename>[a-zA-Z0-9._-]+[.]ss[tm])(?P<languages>(?:\s+[a-z]{2}(?:,|$))+)`, "mg");      static src_fn                                         =        ctRegex!(`^([/]?(?:[a-zA-Z0-9._-]+/)*)(?P<fn_src>(?P<fn_base>[a-zA-Z0-9._-]+)[.](?P<fn_src_suffix>ss[tm]))$`);      static src_fn_master                                  = ctRegex!(`^(?P<path>/?(?:[a-zA-Z0-9._-]+/)*)(?P<filename>[a-zA-Z0-9._-]+[.]ssm)$`); -    static src_fn_text                                    = ctRegex!(`^(?P<path>/?(?:[a-zA-Z0-9._-]+/)*)(?P<filename>[a-zA-Z0-9._-]+[.]sst)$`); -    static src_fn_insert                                  = ctRegex!(`^(?P<path>/?(?:[a-zA-Z0-9._-]+/)*)(?P<filename>[a-zA-Z0-9._-]+[.]ssi)$`);      static src_fn_find_inserts                            = ctRegex!(`^(?P<path>/?(?:[a-zA-Z0-9._-]+/)*)(?P<filename>[a-zA-Z0-9._-]+[.]ss[im])$`);      static insert_src_fn_ssi_or_sst                       = ctRegex!(`^<<\s*(?P<path>[a-zA-Z0-9._-]+/)*(?P<filename>[a-zA-Z0-9._-]+[.]ss[ti])$`);      static src_base_parent_dir_name                       = ctRegex!(`[/](?P<dir>(?:[a-zA-Z0-9._-]+))(?:/media/text/[a-z]{2})$`); // formalizes dir structure -    static src_base_parent_path                           = ctRegex!(`(?P<dir>(?:[/a-zA-Z0-9._-]+))(?:/media/text/[a-z]{2})$`); // formalizes dir structure      static src_formalised_file_path_parts                 = ctRegex!(`(?P<pth>(?:[/a-zA-Z0-9._-]+?)(?P<dir>[a-zA-Z0-9._-]+))(?:/media/text/[a-z]{2})$`); // formalizes dir structure      /+ line breaks +/ -    static empty_line                                     = ctRegex!(`^\s*$`); -    static empty_block                                    = ctRegex!(`^\s*$`, "mg"); -    static br_line_natural                                = ctRegex!(`\n`, "mg");      static br_empty_line                                  = ctRegex!(`\n[ ]*\n`, "mg");      static br_newlines_linebreaks                         = ctRegex!(`[\n┘┙]`, "mg");      static br_line                                        = ctRegex!(`┘`, "mg");      static br_nl                                          = ctRegex!(`┙`, "mg"); -    static br_paragraph                                   = ctRegex!(`┚`, "mg"); -    static br_page_line                                   = ctRegex!(`┼`, "mg"); -    static br_page                                        = ctRegex!(`┿`, "mg"); -    static br_page_new                                    = ctRegex!(`╂`, "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 @@ -61,18 +41,12 @@ static template DocReformOutputRgxInit() {      static inline_al_delimiter_open_regular               = ctRegex!(`【\s`, "m");      static inline_al_delimiter_open_symbol_star           = ctRegex!(`【[*]\s`, "m");      static inline_al_delimiter_open_symbol_plus           = ctRegex!(`【[+]\s`, "m"); -    static inline_al_delimiter_close_regular              = ctRegex!(`】`, "m"); -    static inline_al_delimiter_open_and_close_regular     = ctRegex!(`【|】`, "m"); -    static inline_al_delimiter_open_asterisk              = ctRegex!(`【\*`, "m"); -    static inline_al_delimiter_open_plus                  = ctRegex!(`【\+`, "m"); -    static inline_text_and_note_al                        = ctRegex!(`(?P<text>.+?)【(?:[*+ ]*)(?P<note>.+?)】`, "mg");      static inline_text_and_note_al_                       = ctRegex!(`(.+?(?:【[*+]*\s+.+?】|$))`, "mg");      /+ inline markup links +/      static inline_image                                   = ctRegex!(`(?P<pre>┥)☼(?P<imginf>(?P<img>[a-zA-Z0-9._-]+?\.(?:jpg|gif|png)),w(?P<width>\d+)h(?P<height>\d+))\s*(?P<post>.*?┝┤.*?├)`, "mg");      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>.+?)├`, "mg");      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 @@ -81,20 +55,15 @@ static template DocReformOutputRgxInit() {      static inline_link_hash                               = ctRegex!(`┥(?P<text>.+?)┝┤(?P<link>#(?P<segname>\S+?))├`, "mg");      static inline_link_clean                              = ctRegex!(`┤(?:.+?)├|[┥┝]`, "mg");      static inline_link_toc_to_backmatter                  = ctRegex!(`┤#(?P<link>endnotes|bibliography|bookindex|glossary|blurb)├`, "mg"); -    static inline_a_url                                   = ctRegex!(`(┤)([^\s┥┝┤├]+)(├)`, "mg");      static url                                            = ctRegex!(`https?://`, "mg");      static uri                                            = ctRegex!(`(?:https?|git)://`, "mg");      static uri_identify_components                        = ctRegex!(`(?P<type>(?:https?|git)://)(?P<path>\S+?/)(?P<file>[^/]+)$`, "mg");      static inline_link_subtoc                             = ctRegex!(`^(?P<level>[5-7])~ ┥(?P<text>.+?)┝┤(?P<link>.+?)├`, "mg"); -    static fn_suffix                                      = ctRegex!(`\.fnSuffix`, "mg");      static inline_link_fn_suffix                          = ctRegex!(`¤(.+?)(\.fnSuffix)`, "mg");      static inline_seg_link                                = ctRegex!(`(¤)(?:.+?)\.fnSuffix`, "mg");      static mark_internal_site_lnk                         = ctRegex!(`¤`, "mg");      static quotation_mark_sql_insert_delimiter            = ctRegex!("[']", "mg"); -    static quotation_mark_various                         = ctRegex!(q"┃['‘’“”"`´¨]┃", "mg");      /+ inline markup font face mod +/ -    static inline_mark_faces                            = ctRegex!(`(?P<markup>(?P<mod>[*!/_^,+#"-])\{(?P<text>.+?)\}[*!/_^,+#"-])`, "mg"); -    static inline_mark_faces_to_mod                     = ctRegex!(`(?P<mod>[*!/_^,+#"-])\{(?P<text>.+?)\}([*!/_^,+#"-])`, "mg");      static inline_mark_emphasis                         = ctRegex!(`(?P<mark>[*])\{(?P<text>.+?)\}[*]`, "mg");      static inline_mark_bold                             = ctRegex!(`(?P<mark>[!])\{(?P<text>.+?)\}[!]`, "mg");      static inline_mark_underscore                       = ctRegex!(`(?P<mark>[_])\{(?P<text>.+?)\}[_]`, "mg"); @@ -105,15 +74,12 @@ static template DocReformOutputRgxInit() {      static inline_mark_insert                           = ctRegex!(`(?P<mark>[+])\{(?P<text>.+?)\}[+]`, "mg");      static inline_mark_mono                             = ctRegex!(`(?P<mark>[#])\{(?P<text>.+?)\}[#]`, "mg");      static inline_mark_cite                             = ctRegex!(`(?P<mark>["])\{(?P<text>.+?)\}["]`, "mg"); -    static inline_mark_fontface_clean                   = ctRegex!(`[*!_/^,+#■"-]\{|\}[*!_/^,+#■"-]`, "mg");      static inline_faces_line                              = ctRegex!(`^[*!/_]_ (?P<text>.+?)((?: [\\]{2}|[~]#){0,2}$)`);      static inline_emphasis_line                           = ctRegex!(`^\*_ (?P<text>.+?)(?P<tail>(?: [\\]{2}|[~]#){0,2}$)`);      static inline_bold_line                               = ctRegex!(`^!_ (?P<text>.+?)(?P<tail>(?: [\\]{2}|[~]#){0,2}$)`);      static inline_italics_line                            = ctRegex!(`^/_ (?P<text>.+?)(?P<tail>(?: [\\]{2}|[~]#){0,2}$)`);      static inline_underscore_line                         = ctRegex!(`^__ (?P<text>.+?)(?P<tail>(?: [\\]{2}|[~]#){0,2}$)`); -    static no_header_rgx                                  = ctRegex!(`^=NULL$`);      /+ inline markup font face mod +/ -    static inline_faces                                   = ctRegex!(`(?P<markup>(?P<mod>[*!_^,+■‖-])┨(?P<text>.+?)┣[*!_^,+■‖-])`, "mg");      static inline_emphasis                                = ctRegex!(`[*]┨(?P<text>.+?)┣[*]`, "mg");      static inline_bold                                    = ctRegex!(`[!]┨(?P<text>.+?)┣[!]`, "mg");      static inline_underscore                              = ctRegex!(`[_]┨(?P<text>.+?)┣[_]`, "mg"); @@ -134,8 +100,6 @@ static template DocReformOutputRgxInit() {      static xhtml_less_than                            = ctRegex!(`[<]`, "m");      // <      static xhtml_greater_than                         = ctRegex!(`[>]`, "m");      // >      static xhtml_line_break                           = ctRegex!(` [\\]{2}`, "m"); // <br /> -    static latex_special_char_shortlist               = ctRegex!(`([%$_#&\\])`); -    static latex_special_char_curlybraces             = ctRegex!(`([{}])`);      static latex_special_char                         = ctRegex!(`([%${}_#&\\])`);      static latex_special_char_for_escape              = ctRegex!(`([%${}_#\\])`);      static latex_special_char_for_escape_and_braces   = ctRegex!(`([&])`); | 
