aboutsummaryrefslogtreecommitdiffhomepage
path: root/lib/sdp/ao_rgx.d
diff options
context:
space:
mode:
authorRalph Amissah <ralph@amissah.com>2015-09-30 13:07:43 -0400
committerRalph Amissah <ralph@amissah.com>2015-09-30 13:12:21 -0400
commit45e96028ce7696381aca7f155c21b0b718b6a610 (patch)
treeeefcf5737cffc0d457bc433cd41ba21579076ff2 /lib/sdp/ao_rgx.d
sdp, abstract objects, a start
Diffstat (limited to 'lib/sdp/ao_rgx.d')
-rw-r--r--lib/sdp/ao_rgx.d195
1 files changed, 195 insertions, 0 deletions
diff --git a/lib/sdp/ao_rgx.d b/lib/sdp/ao_rgx.d
new file mode 100644
index 0000000..755ba11
--- /dev/null
+++ b/lib/sdp/ao_rgx.d
@@ -0,0 +1,195 @@
+/*
+#+OPTIONS: ^:nil _:nil#+OPTIONS: ^:nil _:nil
+* sisu_rgx.d
+*/
+mixin template RgxInit() {
+/*
+** misc
+*/
+ class Rgx {
+ 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 line_delimiter = ctRegex!("\n");
+ static within_quotes = ctRegex!(`"(.+?)"`);
+ static make_heading_delimiter = ctRegex!(`[;][ ]*`);
+ static arr_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*(?P<path>[a-zA-Z0-9._-]+/)*(?P<filename>[a-zA-Z0-9._-]+[.]ss[ti])$`);
+/*
+** header & comments
+*/
+ static comment = ctRegex!(`^%+ `);
+ 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 tics
+*/
+ 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_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_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_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_al = ctRegex!(`(?P<text>.+?)【(?:[*+ ]*)(?P<note>.+?)】`, "mg");
+ static inline_text_and_note_curly = ctRegex!(`(?P<text>.+?)(?:(?:[~])[{][*+ ]*)(?P<note>.+?)(?:[}][~])`, "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 ocn object
+*/
+ static ocn_off = ctRegex!(`~#$`, "m");
+ static ocn_off_dh = ctRegex!(`-#$`, "m");
+ static ocn_off_all = ctRegex!(`[~-]#$`, "m");
+/*
+** no ocn block
+*/
+ static ocn_off_block = ctRegex!(`^--~#$`);
+ static ocn_off_block_dh = ctRegex!(`^---#$`);
+ static ocn_off_block_close = ctRegex!(`^--\+#$`);
+ static ocn_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)$`);
+/*
+** 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_ocn_offset_split = ctRegex!(`\s*\|\s*`);
+ static bi_term_and_ocns_match = ctRegex!(`^(.+?)\+(\d+)`);
+/*
+* url matching http://url.is/got and { text }http://url.is/got
+* image matching
+* header substitution & bold & italics lists
+*/
+ }
+}