diff options
Diffstat (limited to 'src/sdp/ao_rgx.d')
-rw-r--r-- | src/sdp/ao_rgx.d | 181 |
1 files changed, 181 insertions, 0 deletions
diff --git a/src/sdp/ao_rgx.d b/src/sdp/ao_rgx.d new file mode 100644 index 0000000..e675ca1 --- /dev/null +++ b/src/sdp/ao_rgx.d @@ -0,0 +1,181 @@ +/+ + regex + ao_rgx.d ++/ +template RgxInit() { + struct Rgx { + /+ misc +/ + static flag_action = ctRegex!(`^(--[a-z][a-z0-9-]+)$`); + static flag_action_str = ctRegex!(` (--[a-z][a-z0-9-]+)`); + static src_pth = ctRegex!(`^([a-zA-Z0-9._-]+/)*([a-zA-Z0-9._-]+[.]ss[tm])$`); + static src_fn = ctRegex!(`^([a-zA-Z0-9._-]+/)*([a-zA-Z0-9._-]+[.]ss[tm])$`); + static src_fn_master = ctRegex!(`^([a-zA-Z0-9._-]+/)*([a-zA-Z0-9._-]+[.]ssm)$`); + static src_fn_find_inserts = ctRegex!(`^([a-zA-Z0-9._-]+/)*([a-zA-Z0-9._-]+[.]ss[im])$`); + // static ssm_fn = ctRegex!(`^[a-zA-Z0-9._-]+[.]ssm$`); + static line_delimiter = ctRegex!("\n"); + // static arr_delimiter = ctRegex!(`\s*[;]\s*`); + static within_quotes = ctRegex!(`"(.+?)"`); + static make_heading_delimiter = ctRegex!(`[;][ ]*`); + static arr_delimiter = ctRegex!(`[ ]*[;][ ]*`); + static name_delimiter = ctRegex!(`^([^,]+)[ ]*,[ ]+(.+?)$`); + // static name_delimiter = ctRegex!(`^(.+?)[ ]*,[ ]*(.+?)$`); + static book_index_go = ctRegex!("([0-9]+)(?:-[0-9]+)?"); + static trailing_comma = ctRegex!(",[ ]*$"); + static trailing_linebreak = ctRegex!(",[ ]{1,2}\\\\\\\\\n[ ]{4}$","m"); + static line_delimiter_ws_strip = ctRegex!("[ ]*\n[ ]*"); + static line_delimiter_only = ctRegex!("^\n"); + static para_delimiter = ctRegex!("\n[ ]*\n+"); + static levels_markup = ctRegex!(`^[A-D1-4]$`); + static levels_numbered = ctRegex!(`^[0-9]$`); + static levels_numbered_headings = ctRegex!(`^[0-7]$`); + /+ insert markup file +/ + // static insert_src_fn_ssi_or_sst = ctRegex!(`^<<\s*([a-zA-Z0-9._-]+/)*(?P<filename>[a-zA-Z0-9._-]+[.]ss[ti])$`); + static insert_src_fn_ssi_or_sst = ctRegex!(`^<<\s*(?P<path>[a-zA-Z0-9._-]+/)*(?P<filename>[a-zA-Z0-9._-]+[.]ss[ti])$`); + // static insert_ssi_or_sst_fn = ctRegex!(`^<<\s*[a-zA-Z0-9._-]+[.]ss[ti]`); + /+ comments +/ + static comment = ctRegex!(`^%+ `); + /+ header +/ + static header = ctRegex!(`^@([a-z_]+):(?:\s|$)`); + static header_make = ctRegex!(`^@(make):(?:\s|$)`); + static header_metadata = ctRegex!(`^@([a-z_]+):(?:\s|$)`); + static header_sub = ctRegex!(`^[ ]+:([a-z_]+):\s`); + static head_main = ctRegex!(`^@([a-z_]+):\s*(.*)`, "m"); + static head_sub = ctRegex!(`^[ ]*:([a-z_]+):\s+(.+)`, "m"); + /+ heading & paragraph operators +/ + static heading = ctRegex!(`^:?([A-D1-4])[~]([a-z0-9_.-]*[?]?) `); + static heading_marker = ctRegex!(`^:?([A-D1-4])[~]`); + static heading_title = ctRegex!(`^:?[A-D1-4][~][a-z0-9_.-]*[?]?\s+(.+?)$`); + static heading_all = ctRegex!(`^:?([A-D1-4])[~]([a-z0-9_.-]*[?]?)\s+(.+?)$`); // test, particularly [2] name/hashtag which may or may not be, does this affect title [3] + static heading_biblio = ctRegex!(`^:?(1)[~][!](biblio(?:graphy)?|references?)`); + static heading_glossary = ctRegex!(`^:?(1)[~][!](glossary)`); + static para_bullet = ctRegex!(`^_[*] `); + static para_bullet_indent = ctRegex!(`^_([1-9])[*] `); + static para_indent = ctRegex!(`^_([1-9]) `); + static para_indent_hang = ctRegex!(`^_([0-9])_([0-9]) `); + static para_attribs = ctRegex!(`^_(([0-9])(_([0-9]))?|_([1-9])?[*]) `); + /+ blocked markup +/ + static block_open = ctRegex!("^((code|poem|group|block|quote|table)[{].*?$)|^`{3} (code|poem|group|block|quote|table)"); + // static block_open_less_code = ctRegex!("^(((poem|group|block|quote|table)[{].*?$)|`{3} (poem|group|block|quote|table))"); + static block_poem_open = ctRegex!("^((poem[{].*?$)|`{3} poem)"); + /+ blocked markup tics +/ + static block_tic_open = ctRegex!("^`{3} (code|poem|group|block|quote|table)"); + // static block_tic_open_less_code = ctRegex!("^`{3} (poem|group|block|quote|table)"); + static block_tic_code_open = ctRegex!("^`{3} (code)"); + static block_tic_poem_open = ctRegex!("^`{3} (poem)"); + static block_tic_group_open = ctRegex!("^`{3} (group)"); + static block_tic_block_open = ctRegex!("^`{3} (block)"); + static block_tic_quote_open = ctRegex!("^`{3} (quote)"); + static block_tic_table_open = ctRegex!("^`{3} (table)"); + static block_tic_close = ctRegex!("^(`{3})$","m"); + /+ blocked markup curly +/ + static block_curly_open = ctRegex!(`^((code|poem|group|block|quote|table)[{].*?$)`); + // static block_curly_open_less_code = ctRegex!(`^((poem|group|block|quote|table)[{].*?$)`); + static block_curly_code_open = ctRegex!(`^(code[{].*?$)`); + static block_curly_code_close = ctRegex!(`^([}]code)`); + static block_curly_poem_open = ctRegex!(`^(poem[{].*?$)`); + static block_curly_poem_close = ctRegex!(`^([}]poem)`); + static block_curly_group_open = ctRegex!(`^(group[{].*?$)`); + static block_curly_group_close = ctRegex!(`^([}]group)`); + static block_curly_block_open = ctRegex!(`^(block[{].*?$)`); + static block_curly_block_close = ctRegex!(`^([}]block)`); + static block_curly_quote_open = ctRegex!(`^(quote[{].*?$)`); + static block_curly_quote_close = ctRegex!(`^([}]quote)`); + static block_curly_table_open = ctRegex!(`^(table[{].*?$)`); + static block_curly_table_close = ctRegex!(`^([}]table)`); + /+ inline markup font face mod +/ + static inline_emphasis = ctRegex!(`\*\{(?P<text>.+?)\}\*`); + static inline_bold = ctRegex!(`!\{(?P<text>.+?)\}!`); + static inline_italics = ctRegex!(`/\{(?P<text>.+?)\}/`); + static inline_superscript = ctRegex!(`\^\{(?P<text>.+?)\}\^`); + static inline_subscript = ctRegex!(`,\{(?P<text>.+?)\},`); + static inline_strike = ctRegex!(`-\{(?P<text>.+?)\}-`); + static inline_insert = ctRegex!(`\+\{(?P<text>.+?)\}\+`); + static inline_mono = ctRegex!(`#\{(?P<text>.+?)\}#`); + /+ inline markup footnotes +/ + static true_dollar = ctRegex!(`\$`, "gm"); + static inline_notes_al = ctRegex!(`【(?:[*+]\s+|\s*)(.+?)】`, "mg"); + static inline_notes_al_gen = ctRegex!(`【.+?】`, "m"); + static inline_notes_curly_gen = ctRegex!(`~\{.+?\}~`, "m"); + static inline_notes_curly = ctRegex!(`~\{\s*(.+?)\}~`, "mg"); + // static inline_notes_curly = ctRegex!(`~\{(?:[*+]\s+|\s*)(.+?)\}~`, "mg"); + static inline_al_delimiter_open_regular = ctRegex!(`【`, "m"); + static inline_al_delimiter_close_regular = ctRegex!(`】`, "m"); + static inline_al_delimiter_open_and_close_regular = ctRegex!(`【|】`, "m"); + static inline_notes_delimiter_al_regular = ctRegex!(`【(.+?)】`, "m"); + static inline_notes_delimiter_al_regular_number_note = ctRegex!(`【(\d+)\s+(.+?)】`, "m"); + + static inline_al_delimiter_open_asterisk = ctRegex!(`【\*`, "m"); + static inline_al_delimiter_open_plus = ctRegex!(`【\+`, "m"); + + static inline_curly_delimiter_open_regular = ctRegex!(`~\{\s*`, "m"); + static inline_curly_delimiter_close_regular = ctRegex!(`\s*\}~`, "m"); + static inline_curly_delimiter_open_and_close_regular = ctRegex!(`~\{\s*|\s*\}~`, "m"); + static inline_notes_delimiter_curly_regular = ctRegex!(`~\{[ ]*(.+?)\}~`, "m"); + // static inline_notes_curly_regular = ctRegex!(`(?:[~][{][ ]*)(.+?)(?:[}][~])`, "m"); + // static inline_notes_curly_regular = ctRegex!(`~\{\s*(.+?)\}~`, "m"); + // static inline_notes_curly = ctRegex!(`~\{(?:[*+]\s+|\s*)(.+?)\}~`, "mg"); + 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"); + // static inline_text_and_note_curly = ctRegex!(`(.+?)~\{(?:[*+]\s+|\s*)(.+?)\}~`, "mg"); + static inline_text_and_note_al = ctRegex!(`(?P<text>.+?)【(?:[*+ ]*)(?P<note>.+?)】`, "mg"); + static inline_text_and_note_curly = ctRegex!(`(?P<text>.+?)(?:(?:[~])[{][*+ ]*)(?P<note>.+?)(?:[}][~])`, "mg"); + // static inline_text_and_note_curly = ctRegex!(`(?P<text>.+?)~\{(?:[*+]\s+|\s*)(?P<note>.+?)\}~`, "mg"); + // static inline_text_and_note_curly_sp = ctRegex!(`(.+?)~\{[*+]+\s+(.+?)\}~`, "mg"); + // static inline_text_and_note_curly_sp_asterisk = ctRegex!(`(.+?)~\{[*]+\s+(.+?)\}~`, "mg"); + // static inline_text_and_note_curly_sp_plus = ctRegex!(`(.+?)~\{[+]+\s+(.+?)\}~`, "mg"); + static inline_note_curly_delimiters = ctRegex!(`(~\{[*+]?\s*)(.+?)(\}~)`, "mg"); + static inline_notes_square = ctRegex!(`~\[\s*(.+?)\]~`, "mg"); + 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"); + /+ inline markup book index +/ + static book_index = ctRegex!(`^=\{\s*(.+?)\}$`, "m"); + static book_index_open = ctRegex!(`^=\{\s*([^}]+?)$`); + static book_index_close = ctRegex!(`^(.*?)\}$`, "m"); // strip + /+ no obj_cite_number object +/ + static obj_cite_number_off = ctRegex!(`~#$`, "m"); + static obj_cite_number_off_dh = ctRegex!(`-#$`, "m"); + static obj_cite_number_off_all = ctRegex!(`[~-]#$`, "m"); + /+ no obj_cite_number block +/ + static obj_cite_number_off_block = ctRegex!(`^--~#$`); + static obj_cite_number_off_block_dh = ctRegex!(`^---#$`); + static obj_cite_number_off_block_close = ctRegex!(`^--\+#$`); + // static auto_obj_cite_number_ignore = ctRegex!(`^[+~*$-]{3,}$`); // reminder + static obj_cite_number_block_marks = ctRegex!(`^--[+~-]#$`); + /+ ignore outside code blocks +/ + static regular_parse_skip = ctRegex!(`^(--[+~-]#|-[\\]{2}-|=[.\\]{2}=)$`); // not structural info + /+ line & page breaks +/ + static break_line_within_object = ctRegex!(`[\\]{2}( |$)`); + // static break_line_break_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!(`』`); + // ancestry, parent + static parent = ctRegex!(`([0-7]):([0-9]+)`); + /+ json +/ + static tailing_comma = ctRegex!(`,$`, "m"); + /+ head +/ + static main_headers = ctRegex!(`^(?:creator|title|rights|date|original|classify|identifier|notes|publisher|make|links)$`, "m"); + static subhead_creator = ctRegex!(`^(?:author|translator|illustrator)$`, "m"); + static subhead_title = ctRegex!(`^(?:main|sub(?:title)?|full|language|edition|note)$`, "m"); + static subhead_rights = ctRegex!(`^(?:copyright|illustrations|license|cover)$`, "m"); + static subhead_date = ctRegex!(`^(?:published|created|issued|available|valid|modified|added_to_site)$`, "m"); + static subhead_original = ctRegex!(`^(?:title|language|source)$`, "m"); + static subhead_classify = ctRegex!(`^(?:topic_register|subject|keywords|loc|dewey)$`, "m"); + static subhead_identifier = ctRegex!(`^(?:oclc|pg|isbn)$`, "m"); + static subhead_notes = ctRegex!(`^(?:abstract|description)$`, "m"); + static subhead_publisher = ctRegex!(`^(?:name)$`, "m"); + static subhead_make = ctRegex!(`^(?:cover_image|home_button_image|home_button_text|footer|headings|num_top|breaks|substitute|bold|italics|emphasis|texpdf_font|css)$`, "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)$`); + // static biblio_tags = ctRegex!(`^(is|author_raw|author|author_arr|editor_raw|editor_arr|title|subtitle|fulltitle|language|trans|src|journal|in|volume|edition|year|place|publisher|url|pages|note|short_name|id):\s+(.+)`); + /+ bookindex split +/ + static bi_main_terms_split = ctRegex!(`\s*;\s*`); + static bi_main_term_plus_rest_split = ctRegex!(`\s*:\s*`); + static bi_sub_terms_plus_obj_cite_number_offset_split = ctRegex!(`\s*\|\s*`); + static bi_term_and_obj_cite_numbers_match = ctRegex!(`^(.+?)\+(\d+)`); + } +} |