From 4bf61c31fac50313753246e76993739fff3bfa14 Mon Sep 17 00:00:00 2001 From: Ralph Amissah Date: Fri, 3 Feb 2017 15:42:31 -0500 Subject: doc_matters, add image list --- org/ao_defaults.org | 7 +++++++ org/ao_doc_abstraction.org | 12 ++++++++++++ org/sdp.org | 8 ++++++-- 3 files changed, 25 insertions(+), 2 deletions(-) (limited to 'org') diff --git a/org/ao_defaults.org b/org/ao_defaults.org index b2604ac..a798763 100644 --- a/org/ao_defaults.org +++ b/org/ao_defaults.org @@ -1003,6 +1003,13 @@ static inline_link_endnote_url_helper = ctRegex!(`\{~\^\s+(.+?) static inline_a_url = ctRegex!(`(┤)(\S+?)(├)`, "mg"); #+END_SRC +** images :images: + +#+name: ao_rgx +#+BEGIN_SRC d +static image = ctRegex!(`([a-zA-Z._-]+?\.(?:png|gif|jpg))`, "mg"); +#+END_SRC + ** inline markup book index :inline:bookindex: #+name: ao_rgx diff --git a/org/ao_doc_abstraction.org b/org/ao_doc_abstraction.org index 6911b63..33ebea3 100644 --- a/org/ao_doc_abstraction.org +++ b/org/ao_doc_abstraction.org @@ -1667,6 +1667,14 @@ next are not yet known for backmatter during the second pass #+name: abs_post #+BEGIN_SRC d +string[] _images; +auto extract_images(S)(S content_block) { + string[] images_; + if (auto m = matchAll(content_block, rgx.image)) { + images_ ~= m.captures[1]; + } + return images_; +} foreach (ref obj; the_document_head_section) { if (obj.is_a == "heading") { debug(dom) { @@ -1754,9 +1762,12 @@ if (the_document_body_section.length > 1) { dom_set_collapsed_tags(dom_collapsed, obj.heading_lev_collapsed).dup; } heading_ancestors(obj, lv_ancestors); + } else if (obj.is_a == "para") { + _images ~= extract_images(obj.text); } } } +auto images=uniq(_images.sort()); /+ optional only one 1~ level +/ if (the_endnotes_section.length > 1) { dom_markedup_buffer = dom_markedup.dup; @@ -2033,6 +2044,7 @@ auto t = tuple( document_the, document_section_keys_sequenced, html_segnames, + images, ); return t; #+END_SRC diff --git a/org/sdp.org b/org/sdp.org index cafb5d9..9cb677b 100644 --- a/org/sdp.org +++ b/org/sdp.org @@ -501,10 +501,11 @@ auto da = SiSUdocAbstraction!()( opts ); static assert(!isTypeTuple!(da)); -static assert(da.length==3); +static assert(da.length==4); auto doc_abstraction = da[0]; // head ~ toc ~ contents ~ endnotes_seg ~ glossary ~ bibliography ~ bookindex ~blurb; string[][string] _document_section_keys_sequenced = da[1]; string[] _doc_html_segnames = da[2]; +auto _images = da[3]; #+END_SRC ** 4. _document matters_ (compiled from various sources) @@ -540,6 +541,10 @@ struct DocumentMatters { string[] _k = _0_header_1_body_content_2_insert_filelist_tuple[2]; return _k; } + auto image_list() { + auto _k = _images; + return _k; + } auto opt_action_bool() { bool[string] _k = opts; return _k; @@ -548,7 +553,6 @@ struct DocumentMatters { auto _k = env; return _k; } - /+ add a list of images +/ } auto doc_matters = DocumentMatters(); #+END_SRC -- cgit v1.2.3