From 4b0c115b58211dcc063bcd09f8fe122e558b92ce Mon Sep 17 00:00:00 2001 From: Ralph Amissah Date: Tue, 20 Oct 2015 18:52:12 -0400 Subject: literate programming introduced, tangle not yet run --- org/ao_rgx.org | 243 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 243 insertions(+) create mode 100644 org/ao_rgx.org (limited to 'org/ao_rgx.org') diff --git a/org/ao_rgx.org b/org/ao_rgx.org new file mode 100644 index 0000000..90c7492 --- /dev/null +++ b/org/ao_rgx.org @@ -0,0 +1,243 @@ +#+TITLE: Emacs config file written in org-mode +#+AUTHOR: Ralph Amissah +#+EMAIL: ralph.amissah@gmail.com +#+STARTUP: indent +#+LANGUAGE: en +#+OPTIONS: H:3 num:nil toc:t \n:nil @:t ::t |:t ^:nil -:t f:t *:t <:t +#+OPTIONS: TeX:t LaTeX:t skip:nil d:nil todo:t pri:nil tags:not-in-toc +#+OPTIONS: author:nil email:nil creator:nil timestamp:nil +#+OPTIONS: ^:nil _:nil#+OPTIONS: ^:nil _:nil +#+EXPORT_SELECT_TAGS: export +#+EXPORT_EXCLUDE_TAGS: noexport +#+TAGS: Amissah(A) Class(c) WEB(W) noexport(n) + +* regex +** misc +#+name: ao_rgx +#+BEGIN_SRC d :exports none +/* 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 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]$`); +#+end_src +** markup insert file +#+name: ao_rgx +#+BEGIN_SRC d :exports none +/* insert markup file */ +static insert_src_fn_ssi_or_sst = ctRegex!(`^<<\s*(?P[a-zA-Z0-9._-]+/)*(?P[a-zA-Z0-9._-]+[.]ss[ti])$`); +#+end_src +** header & comments +#+name: ao_rgx +#+BEGIN_SRC d :exports none +/* 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"); +#+end_src +** header & paragraph operators +#+name: ao_rgx +#+BEGIN_SRC d :exports none +/* 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])?[*]) `); +#+end_src +** blocked markup tics +#+name: ao_rgx +#+BEGIN_SRC d :exports none +/* 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"); +#+end_src +** blocked markup curly +#+name: ao_rgx +#+BEGIN_SRC d :exports none +/* 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)`); +#+end_src +** inline markup font face mod +#+name: ao_rgx +#+BEGIN_SRC d :exports none +/* inline markup font face mod */ +static inline_emphasis = ctRegex!(`\*\{(?P.+?)\}\*`); +static inline_bold = ctRegex!(`!\{(?P.+?)\}!`); +static inline_italics = ctRegex!(`/\{(?P.+?)\}/`); +static inline_superscript = ctRegex!(`\^\{(?P.+?)\}\^`); +static inline_subscript = ctRegex!(`,\{(?P.+?)\},`); +static inline_strike = ctRegex!(`-\{(?P.+?)\}-`); +static inline_insert = ctRegex!(`\+\{(?P.+?)\}\+`); +static inline_mono = ctRegex!(`#\{(?P.+?)\}#`); +#+end_src +** inline markup footnotes +#+name: ao_rgx +#+BEGIN_SRC d :exports none +/* 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.+?)【(?:[*+ ]*)(?P.+?)】`, "mg"); +static inline_text_and_note_curly = ctRegex!(`(?P.+?)(?:(?:[~])[{][*+ ]*)(?P.+?)(?:[}][~])`, "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"); +#+end_src +** inline markup book index +#+name: ao_rgx +#+BEGIN_SRC d :exports none +/* inline markup book index */ +static book_index = ctRegex!(`^=\{\s*(.+?)\}$`, "m"); +static book_index_open = ctRegex!(`^=\{\s*([^}]+?)$`); +static book_index_close = ctRegex!(`^(.*?)\}$`, "m"); // strip +#+end_src +** no ocn object +#+name: ao_rgx +#+BEGIN_SRC d :exports none +/* no ocn object */ +static ocn_off = ctRegex!(`~#$`, "m"); +static ocn_off_dh = ctRegex!(`-#$`, "m"); +static ocn_off_all = ctRegex!(`[~-]#$`, "m"); +#+end_src +** no ocn block +#+name: ao_rgx +#+BEGIN_SRC d :exports none +/* no ocn block */ +static ocn_off_block = ctRegex!(`^--~#$`); +static ocn_off_block_dh = ctRegex!(`^---#$`); +static ocn_off_block_close = ctRegex!(`^--\+#$`); +// static auto_ocn_ignore = ctRegex!(`^[+~*$-]{3,}$`); // reminder +static ocn_block_marks = ctRegex!(`^--[+~-]#$`); +#+end_src +** ignore outside code blocks +#+name: ao_rgx +#+BEGIN_SRC d :exports none +/* ignore outside code blocks */ +static regular_parse_skip = ctRegex!(`^(--[+~-]#|-[\\]{2}-|=[.\\]{2}=)$`); // not structural info +#+end_src +** line & page breaks +#+name: ao_rgx +#+BEGIN_SRC d :exports none +/* 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]+)`); +#+end_src +** json +#+name: ao_rgx +#+BEGIN_SRC d :exports none +/* json */ +static tailing_comma = ctRegex!(`,$`, "m"); +#+end_src +** head +#+name: ao_rgx +#+BEGIN_SRC d :exports none +/* 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"); +#+end_src +** biblio tags +#+name: ao_rgx +#+BEGIN_SRC d :exports none +/* 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)$`); +#+end_src +** bookindex split +#+name: ao_rgx +#+BEGIN_SRC d :exports none +/* 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+)`); +#+end_src +* tangles +** code structure: :ao_rgx.d: +#+name: tangle_ao_rgx +#+BEGIN_SRC d :tangle ../lib/sdp/ao_rgx.d :exports none :noweb yes +/* + regex + ao_rgx.d +*/ +mixin template RgxInit() { + class Rgx { + <> + } +} +#+end_src -- cgit v1.2.3