aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/doc_reform/meta/object_setter.d
diff options
context:
space:
mode:
Diffstat (limited to 'src/doc_reform/meta/object_setter.d')
-rw-r--r--src/doc_reform/meta/object_setter.d126
1 files changed, 126 insertions, 0 deletions
diff --git a/src/doc_reform/meta/object_setter.d b/src/doc_reform/meta/object_setter.d
new file mode 100644
index 0000000..f481ec1
--- /dev/null
+++ b/src/doc_reform/meta/object_setter.d
@@ -0,0 +1,126 @@
+/++
+ object setter:
+ setting of sisu objects for downstream processing
+ meta_object_setter.d
++/
+module doc_reform.meta.object_setter;
+template ObjectSetter() {
+ /+ structs +/
+ struct DocObj_MetaInfo_ {
+ string is_of_part = ""; // frontmatter, body, backmatter
+ string is_of_section = ""; // toc, body, glossary, biography, book index, blurb
+ string is_of_type = ""; // para, block ?
+ string is_a = ""; // heading, para, table, code block, group, ...
+ alias of_part = is_of_part;
+ alias of_section = is_of_section;
+ alias is_of = is_of_type;
+ /+ o_n +/
+ int o_n_substantive = 0;
+ int o_n_non_substantive = 0;
+ int o_n_glossary = 0;
+ int o_n_bibliography = 0;
+ int o_n_book_index = 0;
+ int o_n_blurb = 0;
+ string object_number_substantive() const @property {
+ return (o_n_substantive==0) ? "" : o_n_substantive.to!string;
+ }
+ string object_number_non_substantive() const @property {
+ return (o_n_non_substantive==0) ? "" : o_n_non_substantive.to!string;
+ }
+ string object_number_glossary() const @property {
+ return (o_n_glossary==0) ? "" : o_n_glossary.to!string;
+ }
+ string object_number_bibliography() const @property {
+ return (o_n_bibliography==0) ? "" : o_n_bibliography.to!string;
+ }
+ string object_number_book_index() const @property {
+ return (o_n_book_index==0) ? "" : o_n_book_index.to!string;
+ }
+ string object_number_blurb() const @property {
+ return (o_n_blurb==0) ? "" : o_n_blurb.to!string;
+ }
+ string object_number_off = "";
+ bool visible_object_number = false;
+ // enum ONtype { none, substantive, non_substantive, glossary, bibliography, book_index, blurb, comment }
+ int object_number_type = 0; // { ocn, non, bkidx }
+ /+ node +/
+ string[string][string] node;
+ int ocn = 0;
+ string object_number() const @property {
+ return (ocn==0) ? "" : ocn.to!string;
+ }
+ int o_n_type = 0;
+ int heading_lev_markup = 9;
+ int heading_lev_collapsed = 9;
+ string marked_up_level() const @property {
+ string _out;
+ switch (heading_lev_markup) {
+ case 0: _out = "A"; break;
+ case 1: _out = "B"; break;
+ case 2: _out = "C"; break;
+ case 3: _out = "D"; break;
+ case 4: _out = "1"; break;
+ case 5: _out = "2"; break;
+ case 6: _out = "3"; break;
+ case 7: _out = "4"; break;
+ default: _out = ""; break;
+ }
+ return _out;
+ }
+ int[] markedup_ancestors = [ 0, 0, 0, 0, 0, 0, 0, 0,];
+ int[] collapsed_ancestors = [ 0, 0, 0, 0, 0, 0, 0, 0,];
+ int[] dom_structure_markedup_tags_status = [ 0, 0, 0, 0, 0, 0, 0, 0,];
+ int[] dom_structure_collapsed_tags_status = [ 0, 0, 0, 0, 0, 0, 0, 0,];
+ int parent_lev_markup = 0;
+ int parent_ocn = 0;
+ int last_decendant_ocn = 0;
+ }
+ struct DocObj_TxtAttrib_ {
+ int indent_base = 0;
+ int indent_hang = 0;
+ bool bullet = false;
+ string language = ""; // not implemented, consider
+ }
+ struct DocObj_Has_ { // has
+ bool inline_links = false;
+ bool inline_notes_reg = false;
+ bool inline_notes_star = false;
+ bool contains_image_without_dimensions = false;
+ }
+ struct DocObj_Table_ {
+ int number_of_columns = 0;
+ double[] column_widths = [];
+ string[] column_aligns = [];
+ bool heading = false;
+ bool walls = false; // not implemented
+ }
+ struct DocObj_CodeBlock_ {
+ string syntax = "";
+ }
+ struct DocObj_Pointer_ {
+ int doc_object = 0;
+ int html_segnames = 0;
+ int heading = 0;
+ }
+ struct DocObj_Tags_ {
+ string[] heading_ancestors_text = [ "", "", "", "", "", "", "", "", ]; // TODO redundant? see markedup and collapsed ancestors DONE
+ string segment_anchor_tag = "";
+ string segname_prev = "";
+ string segname_next = "";
+ string[] lev4_subtoc = [];
+ string[] anchor_tags = [];
+ }
+ struct ObjGenericComposite {
+ string text = "";
+ DocObj_MetaInfo_ metainfo;
+ DocObj_TxtAttrib_ attrib;
+ DocObj_Tags_ tags;
+ DocObj_Has_ has;
+ DocObj_Table_ table;
+ DocObj_CodeBlock_ code_block;
+ DocObj_Pointer_ ptr;
+ }
+ struct TheObjects {
+ ObjGenericComposite[] oca;
+ }
+}