diff options
| author | Ralph Amissah <ralph.amissah@gmail.com> | 2020-01-05 20:17:17 -0500 | 
|---|---|---|
| committer | Ralph Amissah <ralph.amissah@gmail.com> | 2020-02-11 13:08:49 -0500 | 
| commit | de02319cfa7b4bbff8c111bda02be1a7c6591555 (patch) | |
| tree | 732c11d10bc2699cd1b72d00b3be943284eea130 /org | |
| parent | reduce use of auto, much with tuples (diff) | |
dlang safe default imminent, look ahead
- @safe @trusted & @system, reconsider @trusted
Diffstat (limited to 'org')
| -rw-r--r-- | org/default_misc.org | 22 | ||||
| -rw-r--r-- | org/default_paths.org | 132 | ||||
| -rw-r--r-- | org/default_shared.org | 2 | ||||
| -rw-r--r-- | org/in_source_files.org | 60 | ||||
| -rw-r--r-- | org/meta_conf_make_meta.org | 10 | ||||
| -rw-r--r-- | org/metaverse.org | 266 | ||||
| -rw-r--r-- | org/out_harvest_metadata.org | 4 | ||||
| -rw-r--r-- | org/out_latex.org | 62 | ||||
| -rw-r--r-- | org/out_metadata.org | 4 | ||||
| -rw-r--r-- | org/out_odt.org | 104 | ||||
| -rw-r--r-- | org/out_src_pod.org | 2 | ||||
| -rw-r--r-- | org/out_xmls.org | 190 | ||||
| -rw-r--r-- | org/out_xmls_css.org | 4 | ||||
| -rw-r--r-- | org/out_zip.org | 2 | ||||
| -rw-r--r-- | org/output_hub.org | 7 | ||||
| -rw-r--r-- | org/output_show.org | 8 | ||||
| -rw-r--r-- | org/spine.org | 232 | 
17 files changed, 515 insertions, 596 deletions
| diff --git a/org/default_misc.org b/org/default_misc.org index 5351c30..d5fd76d 100644 --- a/org/default_misc.org +++ b/org/default_misc.org @@ -40,7 +40,7 @@ module doc_reform.meta.defaults;  #+BEGIN_SRC d  template spineRgxInitFlags() {    /+ regex flags +/ -  static int[string] flags_type_init() { +  @safe static int[string] flags_type_init() {      int[string] flags_type_init = [        "make_headings"                       : 0,        "header_make"                         : 0, @@ -87,7 +87,7 @@ template spineRgxInitFlags() {  #+name: meta_defaults_template_node  #+BEGIN_SRC d  template spineNode() { -  static string[string] node_metadata_heading_str() { +  @safe static string[string] node_metadata_heading_str() {      string[string] _node = [          "is"                            : "",          "ocn"                           : "", @@ -98,7 +98,7 @@ template spineNode() {      ];      return _node;    } -  static int[string] node_metadata_heading_int() { +  @safe static int[string] node_metadata_heading_int() {      int[string] _node = [          "ocn"                           : 0, // decide whether to use or keep?          "ptr_doc_object"                : 0, @@ -111,7 +111,7 @@ template spineNode() {      ];      return _node;    } -  static string[string] node_metadata_para_str() { +  @safe static string[string] node_metadata_para_str() {      string[string] _node = [          "is"                            : "",          "ocn"                           : "", @@ -119,7 +119,7 @@ template spineNode() {      ];      return _node;    } -  static int[string] node_metadata_para_int() { +  @safe static int[string] node_metadata_para_int() {      int[string] _node = [          "ocn"                           : 0,          "indent_base"                   : 0, @@ -136,7 +136,7 @@ template spineNode() {  #+name: meta_defaults_template_harvest  #+BEGIN_SRC d  template spineHarvest() { -  auto spineHarvest() { +  @safe auto spineHarvest() {      struct _Harvest {        struct Harvest {          string   title                = ""; @@ -176,7 +176,7 @@ template spineHarvest() {  template spineBiblio() {    // required: deemed_author (author || editor); year; fulltitle;    struct BibJsnStr { -    static auto biblio_entry_tags_jsonstr() { +    @safe static auto biblio_entry_tags_jsonstr() {        string x =  `{          "is"                               : "",          "sortby_deemed_author_year_title"  : "", @@ -313,7 +313,7 @@ template InternalMarkup() {  template spineLanguageCodes() {    /+ language codes +/    struct Lang { -    static string[string][string] codes() { +    @safe static string[string][string] codes() {        auto _lang_codes = [          "am":    [ "c": "am",    "n": "Amharic",           "t": "Amharic",                   "xlp": "amharic"      ],          "bg":    [ "c": "bg",    "n": "Bulgarian",         "t": "Български (Bəlgarski)",     "xlp": "bulgarian"    ], @@ -380,15 +380,15 @@ template spineLanguageCodes() {        ];        return _lang_codes;      } -    static string[] code_arr_ptr() { +    @safe static string[] code_arr_ptr() {        string[] _lang_codes = ["am", "bg", "bn", "br", "ca", "cs", "cy", "da", "de", "el", "en", "eo", "es", "et", "eu", "fi", "fr", "ga", "gl", "he", "hi", "hr", "hy", "ia", "is", "it", "ja", "ko", "la", "lo", "lt", "lv", "ml", "mr", "nl", "no", "nn", "oc", "pl", "pt", "pt_BR", "ro", "ru", "sa", "se", "sk", "sl", "sq", "sr", "sv", "ta", "te", "th", "tk", "tr", "uk", "ur", "us", "vi", "zh", "en", "xx",];        return _lang_codes;      } -    static string[] code_arr() { +    @safe static string[] code_arr() {        string[] _lang_codes = ["am", "bg", "bn", "br", "ca", "cs", "cy", "da", "de", "el", "en", "eo", "es", "et", "eu", "fi", "fr", "ga", "gl", "he", "hi", "hr", "hy", "ia", "is", "it", "ja", "ko", "la", "lo", "lt", "lv", "ml", "mr", "nl", "no", "nn", "oc", "pl", "pt", "pt_BR", "ro", "ru", "sa", "se", "sk", "sl", "sq", "sr", "sv", "ta", "te", "th", "tk", "tr", "uk", "ur", "vi", "zh"];        return _lang_codes;      } -    static auto codes_() { +    @safe static auto codes_() {        return "(" ~ join(code_arr,"|") ~ ")";      }      static auto codes_regex() { diff --git a/org/default_paths.org b/org/default_paths.org index 82ea93d..2d03aa6 100644 --- a/org/default_paths.org +++ b/org/default_paths.org @@ -48,7 +48,7 @@ import  template PodManifest() {    mixin spineRgxInit;    static auto rgx = Rgx(); -  auto PodManifest(O)( +  @safe auto PodManifest(O)(      O       _opt_actions,      string  _pth=""    ) { @@ -56,7 +56,7 @@ template PodManifest() {        string pod_manifest_filename() {          return "pod.manifest";        } -      string pod_manifest_path() { +      @safe string pod_manifest_path() {          string _manifest_path;          if ((isValidPath(_pth) && exists(_pth) != 0 && _pth.isDir)          && (exists(_pth.chainPath(pod_manifest_filename).array) != 0 @@ -78,10 +78,10 @@ template PodManifest() {          }          return _manifest_path;        } -      string pods_collection_root_path() { +      @safe string pods_collection_root_path() {          return (pod_manifest_path.length > 0) ? ((chainPath(pod_manifest_path, "..")).asNormalizedPath).array.to!string : "";        } -      string pod_manifest_file_with_path() { +      @safe string pod_manifest_file_with_path() {          string _k;          if  (exists(pod_manifest_path.chainPath(pod_manifest_filename).array)!=0) {            _k = pod_manifest_path.chainPath(pod_manifest_filename).array; @@ -125,14 +125,14 @@ template PathMatters() {    mixin InternalMarkup;    static auto rgx  = Rgx();    static auto mkup = InlineMarkup(); -  auto PathMatters(O,E)( +  @safe auto PathMatters(O,E)(      O        _opt_actions,      E        _env,      string   _pth,      string   _fns              = "",      char[][] _manifest_fn_list = [[]],    ) { -    auto _manifested = PodManifest!()(_opt_actions, _pth); +    @safe auto _manifested = PodManifest!()(_opt_actions, _pth);      struct ManifestMatters_ {        auto env() {          auto _env = _env; @@ -146,7 +146,7 @@ template PathMatters() {          }          return Env_();        } -      auto opt() { +      @safe auto opt() {          struct Opt_ {            auto action() {              return _opt_actions; @@ -154,45 +154,45 @@ template PathMatters() {          }          return Opt_();        } -      bool src_is_pod() { +      @safe bool src_is_pod() {          return (_manifested.pod_manifest_path.length > 0) ? true : false;        } -      auto pod() { +      @safe auto pod() {          struct Pod_ { -          bool src_is_pod() { +          @safe bool src_is_pod() {              return (_manifested.pod_manifest_path.length > 0) ? true : false;            } -          string collection_root() { +          @safe string collection_root() {              return _manifested.pods_collection_root_path;            } -          string manifest_filename() { +          @safe string manifest_filename() {              return _manifested.pod_manifest_filename;            } -          string manifest_path() { +          @safe string manifest_path() {              return _manifested.pod_manifest_path;            } -          string pod_name_with_path() { +          @safe string pod_name_with_path() {              return _manifested.pod_manifest_path.baseName;            } -          string manifest_file_with_path() { +          @safe string manifest_file_with_path() {              return _manifested.pod_manifest_file_with_path;            } -          string[] config_dr_document_make_dirs() { +          @safe string[] config_dr_document_make_dirs() {              string[] _config_dirs;              return _config_dirs;            } -          string[] config_local_site_dirs() { +          @safe string[] config_local_site_dirs() {              string[] _config_dirs;              return _config_dirs;            } -          string[] image_dirs() { +          @safe string[] image_dirs() {              string[] _image_dirs;              return _image_dirs;            } -          auto manifest_list_of_filenames() { +          @safe auto manifest_list_of_filenames() {              return _manifest_fn_list;            } -          string[] manifest_list_of_languages() { +          @safe string[] manifest_list_of_languages() {              string[] _lngs;              foreach (filename_; manifest_list_of_filenames) {                string _k = "en"; @@ -206,43 +206,43 @@ template PathMatters() {          }          return Pod_();        } -      auto src() { +      @safe auto src() {          string _fns = _fns; // required here by dmd & not by ldc (for D:2078)          auto _opt_actions = _opt_actions;          auto _env = _env;          struct SRC_ { -          bool is_pod() { +          @safe bool is_pod() {              return (_manifested.pod_manifest_path.length > 0) ? true : false;            } -          string path_and_fn() { +          @safe string path_and_fn() {              return _fns;            } -          string pod_name_with_path() { +          @safe string pod_name_with_path() {              return (is_pod) ? _manifested.pod_manifest_path : "";            } -          string pods_collection_root_path() { +          @safe string pods_collection_root_path() {              return (is_pod) ? _manifested.pods_collection_root_path : "";            } -          string pod_name() { +          @safe string pod_name() {              return pod_name_with_path.baseName;            } -          string filename() { +          @safe string filename() {              return path_and_fn.baseName;            } -          string filename_base() { +          @safe string filename_base() {              return filename.stripExtension;            } -          string filename_extension() { +          @safe string filename_extension() {              return filename.match(rgx.src_pth_sst_or_ssm).captures["extension"];            } -          string lng() { +          @safe string lng() {              string _k;              if (auto m = path_and_fn.match(rgx.language_code_and_filename)) {                _k = m.captures[1];              } else {_k = "en"; }              return _k;            } -          string doc_uid() { +          @safe string doc_uid() {              string _uid;              if (is_pod && !(pod_name_with_path.empty)) {                if (pod_name_with_path.baseName == filename_base) { @@ -255,7 +255,7 @@ template PathMatters() {              }              return _uid;            } -          string doc_uid_out() { +          @safe string doc_uid_out() {              string _uid;              if (is_pod && !(pod_name_with_path.empty)) {                if (pod_name_with_path.baseName == filename_base) { @@ -268,7 +268,7 @@ template PathMatters() {              }              return _uid;            } -          string docname_composite_unique_per_src_doc() { +          @safe string docname_composite_unique_per_src_doc() {              string _fn;              if (pod_name_with_path.baseName == filename_base) {                _fn = filename_base ~ mkup.sep ~ filename_extension ~ mkup.sep ~ lng; @@ -279,7 +279,7 @@ template PathMatters() {              }              return _fn;            } -          string docname_composite_unique_per_src_pod() { +          @safe string docname_composite_unique_per_src_pod() {            /+              z pod name if any + src filename (without lng code)               filename ~ mkup.sep ~ lng @@ -298,19 +298,19 @@ template PathMatters() {              }              return _fn;            } -          string language() { +          @safe string language() {              return lng();            } -          string file_with_absolute_path() { +          @safe string file_with_absolute_path() {              return _env["pwd"].chainPath(path_and_fn).array;            } -          string absolute_path_to_src() { +          @safe string absolute_path_to_src() {              return (_env["pwd"].chainPath(path_and_fn)).dirName.array;            } -          string path_to_doc_root_path_to_lang_and_filename() { +          @safe string path_to_doc_root_path_to_lang_and_filename() {              return _env["pwd"].chainPath(path_and_fn).array;            } -          string base_dir() { +          @safe string base_dir() {              string _dir;              if (                auto m = (absolute_path_to_src) @@ -328,7 +328,7 @@ template PathMatters() {              }              return _dir;            } -          string base_parent_dir_path() { +          @safe string base_parent_dir_path() {              string _dir;              if (                auto m = (absolute_path_to_src) @@ -340,7 +340,7 @@ template PathMatters() {              }              return _dir;            } -          string base_dir_path() { +          @safe string base_dir_path() {              string _dir;              if (                auto m = (absolute_path_to_src) @@ -360,11 +360,11 @@ template PathMatters() {              }              return _dir;            } -          string media_dir_path() { +          @safe string media_dir_path() {              string _dir = ((base_dir_path.chainPath("media")).asNormalizedPath).array;              return _dir;            } -          string image_dir_path() { +          @safe string image_dir_path() {              string _paths;              string[] _possible_img_pths = [ "./image", "../image", "../../image" ];              string _img_pth_found = ""; @@ -388,10 +388,10 @@ template PathMatters() {              }              return _img_pth_found;            } -          auto conf_dir_path() { +          @safe auto conf_dir_path() {              return ((base_dir_path.chainPath("conf")).asNormalizedPath).array;            } -          auto base_parent_dir() { +          @safe auto base_parent_dir() {              string _dir;              if (                auto m = (absolute_path_to_src) @@ -406,13 +406,13 @@ template PathMatters() {              }              return _dir;            } -          string[] config_dirs() { +          @safe string[] config_dirs() {              string[] _config_dirs;              if (is_pod) {              } else {}              return _config_dirs;            } -          string[] image_dirs() { +          @safe string[] image_dirs() {              string[] _image_dirs;              if (is_pod) {              } else {} @@ -421,7 +421,7 @@ template PathMatters() {          }          return SRC_();        } -      auto output() { +      @safe auto output() {          /+            - command line if output path set            - config file if found and set set @@ -435,7 +435,7 @@ template PathMatters() {          +/          auto _env = _env;          struct Out_ { -          auto path() { +          @safe auto path() {              auto _output_path = _env["pwd"];              if ((_opt_actions.output_dir_set.length > 0)                && isValidPath(_opt_actions.output_dir_set) @@ -471,21 +471,21 @@ template PathMatters() {  template ConfigFilePaths() {    mixin spineRgxInit;    static auto rgx = Rgx(); -  auto ConfigFilePaths(M,E)( +  @safe auto ConfigFilePaths(M,E)(      M      _manifested,      E      _env,      string _cli_config_path_set = ""    ) {      struct ConfFilePaths { -      string config_filename_document() { +      @safe string config_filename_document() {          return "dr_document_make";        } -      string config_filename_site() { +      @safe string config_filename_site() {          return "config_local_site";        } -      auto possible_config_path_locations() { +      @safe auto possible_config_path_locations() {          struct _ConfFilePaths { -          string[] dr_document_make() { +          @safe string[] dr_document_make() {              /+ FIX clean up conf paths ↓ +/              /+ config local site (file system only, not in pod) +/              /+ return paths +/ @@ -534,7 +534,7 @@ template ConfigFilePaths() {              +/              return _possible_config_path_locations;            } -          string[] config_local_site() { +          @safe string[] config_local_site() {              /+ FIX clean up conf paths ↓ +/              /+ config local site (file system only, not in pod) +/              string[] _possible_config_path_locations; @@ -645,15 +645,15 @@ filelist for processing [things to ponder]  template spinePathsSRC() {    mixin spineRgxInit;    static auto rgx = Rgx(); -  auto spinePathsSRC(D,Fn)( +  @safe auto spinePathsSRC(D,Fn)(      D   _pwd,      Fn  _fn_src_and_path,    ) {      struct drSrcPaths { -      auto pwd() { +      @safe auto pwd() {          return _pwd;        } -      string language() { +      @safe string language() {          // use command line info as well?          string _k;          if (auto m = _fn_src_and_path.match(rgx.language_code_and_filename)) { @@ -663,28 +663,28 @@ template spinePathsSRC() {          }          return _k;        } -      string doc_root() { +      @safe string doc_root() {          return "dr_doc";        } -      auto media_root() { +      @safe auto media_root() {          return ((doc_root.chainPath("media")).asNormalizedPath).array;        } -      auto conf_root() { +      @safe auto conf_root() {          return ((doc_root.chainPath("conf")).asNormalizedPath).array;        } -      auto text_root() { +      @safe auto text_root() {          return ((media_root.chainPath("text")).asNormalizedPath).array;        } -      auto image_root() { +      @safe auto image_root() {          return ((media_root.chainPath("image")).asNormalizedPath).array;        } -      auto doc_src_fn_with_path_for_text_root_and_lng() { +      @safe auto doc_src_fn_with_path_for_text_root_and_lng() {          return ((text_root.chainPath(language)).asNormalizedPath).array;        } -      auto doc_src_fn() { +      @safe auto doc_src_fn() {          return ((_fn_src_and_path.baseName).asNormalizedPath).array;        } -      auto doc_src_with_path() { +      @safe auto doc_src_with_path() {          return ((pwd.chainPath(_fn_src_and_path)).asNormalizedPath).array;        }      } diff --git a/org/default_shared.org b/org/default_shared.org index 067b7b5..b0e242b 100644 --- a/org/default_shared.org +++ b/org/default_shared.org @@ -32,7 +32,7 @@ module doc_reform.share.defaults;  #+BEGIN_SRC d  template Msg() {    import std.stdio; -  auto Msg(I)(I doc_matters) { +  @safe auto Msg(I)(I doc_matters) {      struct Msg_ {        void v()(string message) {          if (!(doc_matters.opt.action.quiet) && doc_matters.opt.action.verbose) { diff --git a/org/in_source_files.org b/org/in_source_files.org index 7ea9bae..a498688 100644 --- a/org/in_source_files.org +++ b/org/in_source_files.org @@ -51,7 +51,7 @@ static template readConfigSite() {      doc_reform.meta.rgx;    <<imports_std>>    mixin spineRgxInit; -  final auto readConfigSite(C)(C _conf_file_details) { +  @system final auto readConfigSite(C)(C _conf_file_details) {      static auto rgx = Rgx();      string conf_filename = "NONE";      string config_file_str; @@ -158,7 +158,7 @@ static template readConfigDoc() {      doc_reform.meta.rgx;    <<imports_std>>    mixin spineRgxInit; -  final auto readConfigDoc(M,E)(M _manifested, E _env) { +  @system final auto readConfigDoc(M,E)(M _manifested, E _env) {      static auto rgx = Rgx();      string config_file_str;      string conf_filename = "NONE"; @@ -185,13 +185,13 @@ static template readConfigDoc() {        if (config_file_str.length > 0) { break; }      }      struct _ConfContent { -      string filename() { +      @safe string filename() {          return conf_filename;        } -      string content() { +      @safe string content() {          return config_file_str;        } -      string filetype() { +      @safe string filetype() {          string _ft = "";          if (content.match(rgx.yaml_config)) {            _ft = "yaml"; @@ -204,33 +204,13 @@ static template readConfigDoc() {  }  #+END_SRC -*** 1. YAML config files get - -#+name: meta_config_file_yaml -#+BEGIN_SRC d -static template configYAML() { -  import dyaml; // -  <<imports_std>> -  YAMLDocument configYAML(string configuration, string conf_yaml_filename) { -    Node _yaml_conf; -    try { -      _yaml_conf = Loader.fromString(configuration).load() -    } catch(ErrnoException e) { -      stderr.writeln("Yaml problem with content for ", conf_yaml_filename); -      stderr.writeln(e.msg); -    } -    return _yaml_conf; -  } -} -#+END_SRC - -*** 2. YAML config (config_local_site & dr_document_make) :file:config:hub: +*** YAML config (config_local_site & dr_document_make) :file:config:hub:  #+name: meta_config_file_hub  #+BEGIN_SRC d  static template configReadSiteYAML() {    <<imports_std>> -  final YAMLDocument configReadSiteYAML(M,E)(M _manifested, E _env) { +  @safe final YAMLDocument configReadSiteYAML(M,E)(M _manifested, E _env) {      string _configuration = configReadInSiteYAML!()(_manifested, _env);      auto _conf_file_details = ConfigFilePaths!()(_manifested, _env);      string _conf_yaml_fn = _conf_file_details.config_filename_site; @@ -240,7 +220,7 @@ static template configReadSiteYAML() {  }  static template configReadDocYAML() {    <<imports_std>> -  final YAMLDocument configReadDocYAML(M,E)(M _manifested, E _env) { +  @safe final YAMLDocument configReadDocYAML(M,E)(M _manifested, E _env) {      string _configuration = configReadInDocYAML!()(_manifested, _env);      auto _conf_file_details = ConfigFilePaths!()(_manifested, _env);      string _conf_yaml_fn = _conf_file_details.config_filename_document; @@ -267,7 +247,7 @@ static template spineRawMarkupContent() {    mixin spineRgxInit;    static auto rgx = Rgx();    string[] _images=[]; -  string[] _extract_images(S)(S content_block) @safe { +  @safe string[] _extract_images(S)(S content_block) {      string[] images_;      string _content_block = content_block.to!string;      if (auto m = _content_block.matchAll(rgx.image)) { @@ -287,19 +267,19 @@ static template spineRawMarkupContent() {      string[], "insert_files",      string[], "images"    ); -  auto spineRawMarkupContent(O,Fn)(O _opt_action, Fn fn_src) @safe { +  @safe auto spineRawMarkupContent(O,Fn)(O _opt_action, Fn fn_src) {      auto _0_header_1_body_content_2_insert_filelist_tuple        = rawsrc.sourceContentSplitIntoHeaderAndBody(_opt_action, rawsrc.sourceContent(fn_src), fn_src);      return _0_header_1_body_content_2_insert_filelist_tuple;    }    struct RawMarkupContent { -    final sourceContent(in string fn_src) { +    @safe final sourceContent(in string fn_src) {        auto raw = MarkupRawUnit();        string source_txt_str          = raw.markupSourceReadIn(fn_src);        return source_txt_str;      } -    final auto sourceContentSplitIntoHeaderAndBody(O)( +    @safe final auto sourceContentSplitIntoHeaderAndBody(O)(        O         _opt_action,        in string source_txt_str,        in string fn_src="" @@ -348,7 +328,7 @@ static template spineRawMarkupContent() {        char[][], "insert_contents",        string[], "images"      ); -    ContentsAndImages scan_subdoc_source(O)( +    @safe ContentsAndImages scan_subdoc_source(O)(        O        _opt_action,        char[][] markup_sourcefile_insert_content,        string   fn_src @@ -360,7 +340,7 @@ static template spineRawMarkupContent() {        } // end src subdoc (inserts) loop        <<meta_inserts_scan_post>>      } -    ContentsInsertsImages scan_master_src_for_insert_files_and_import_content(O)( +    @safe ContentsInsertsImages scan_master_src_for_insert_files_and_import_content(O)(        O        _opt_action,        char[][] sourcefile_body_content,        string   fn_src @@ -382,7 +362,7 @@ static template spineRawMarkupContent() {  #+name: meta_markup_source_raw_read_file_source_string  #+BEGIN_SRC d -final private string readInMarkupSource(in char[] fn_src) { +@safe final private string readInMarkupSource(in char[] fn_src) {    enforce(      exists(fn_src) != 0,      "file not found: «" ~ @@ -414,7 +394,7 @@ split is on first match of level A~ (which is required)  #+name: meta_markup_source_raw_doc_header_and_content_split  #+BEGIN_SRC d -final private char[][] header0Content1(in string src_text) @trusted { // cast(char[]) +@trusted final private char[][] header0Content1(in string src_text) { // cast(char[])    /+ split string on _first_ match of "^:?A~\s" into [header, content] array/tuple +/    char[][] header_and_content;    auto m = (cast(char[]) src_text).matchFirst(rgx.heading_a); @@ -433,7 +413,7 @@ final private char[][] header0Content1(in string src_text) @trusted { // cast(ch  #+name: meta_markup_source_raw_source_line_array  #+BEGIN_SRC d -final private char[][] markupSourceLineArray(in char[] src_text) @trusted { // cast(char[]) +@trusted final private char[][] markupSourceLineArray(in char[] src_text) { // cast(char[])    char[][] source_line_arr      = (cast(char[]) src_text).split(rgx.newline_eol_strip_preceding);    return source_line_arr; @@ -448,7 +428,7 @@ final private char[][] markupSourceLineArray(in char[] src_text) @trusted { // c  #+name: meta_markup_source_raw_read_in_file  #+BEGIN_SRC d -string markupSourceReadIn(in string fn_src) { +@safe string markupSourceReadIn(in string fn_src) {    static auto rgx = Rgx();    enforce(      fn_src.match(rgx.src_pth_sst_or_ssm), @@ -469,7 +449,7 @@ string markupSourceReadIn(in string fn_src) {  #+name: meta_markup_source_raw_tuple_of_header_and_body  #+BEGIN_SRC d -HeaderContentInsertsImages markupSourceHeaderContentRawLineTupleArray(in string source_txt_str) @safe { +@safe HeaderContentInsertsImages markupSourceHeaderContentRawLineTupleArray(in string source_txt_str) {    string[] file_insert_list = [];    string[] images_list = [];    char[][] hc = header0Content1(source_txt_str); @@ -490,7 +470,7 @@ HeaderContentInsertsImages markupSourceHeaderContentRawLineTupleArray(in string  #+name: meta_markup_source_raw_get_insert_source_line_array  #+BEGIN_SRC d -final char[][] getInsertMarkupSourceContentRawLineArray( +@safe final char[][] getInsertMarkupSourceContentRawLineArray(    in char[]    fn_src_insert,    Regex!(char) rgx_file  ) { diff --git a/org/meta_conf_make_meta.org b/org/meta_conf_make_meta.org index 0362a83..a319758 100644 --- a/org/meta_conf_make_meta.org +++ b/org/meta_conf_make_meta.org @@ -76,7 +76,7 @@ static auto mkup = InlineMarkup();  #+name: meta_defaults_template_structs  #+BEGIN_SRC d -string url_markup(string line) @safe { +@safe string url_markup(string line) {    string line_ = line      .replaceAll(        rgx.smid_inline_link_markup_regular, @@ -357,7 +357,7 @@ static template contentYAMLtoSpineStruct() {      doc_reform.meta.defaults,      doc_reform.meta.rgx;    ConfComposite _struct_composite; -  auto contentYAMLtoSpineStruct(C,Y,M)( +  @system auto contentYAMLtoSpineStruct(C,Y,M)(      C _struct_composite,      Y _yaml,      M _manifested, @@ -1174,7 +1174,7 @@ static template contentJSONtoSpineStruct() {      doc_reform.meta.defaults,      doc_reform.meta.rgx;    ConfComposite _struct_composite; -  auto contentJSONtoSpineStruct(C,J,M)(C _struct_composite, J _json, M _manifested, string _identifier) @safe { +  @safe auto contentJSONtoSpineStruct(C,J,M)(C _struct_composite, J _json, M _manifested, string _identifier) {      mixin spineRgxInit;      static auto rgx = Rgx();      debug (json) { @@ -1823,7 +1823,7 @@ static template configParseYAMLreturnSpineStruct() {      doc_reform.meta.conf_make_meta_structs,      doc_reform.meta.conf_make_meta_json;    mixin contentYAMLtoSpineStruct; -  auto configParseYAMLreturnSpineStruct(T,CCm,M)( +  @system auto configParseYAMLreturnSpineStruct(T,CCm,M)(      T       _document_struct,      CCm     _make_and_meta_struct,      M       _manifested @@ -1866,7 +1866,7 @@ static template docHeaderMakeAndMetaTupYamlExtractAndConvertToStruct() {    mixin spineRgxInit;    mixin contentJSONtoSpineStruct;    static auto rgx = Rgx(); -  auto docHeaderMakeAndMetaTupYamlExtractAndConvertToStruct(CCm,Src,M)( +  @system auto docHeaderMakeAndMetaTupYamlExtractAndConvertToStruct(CCm,Src,M)(      Src     header_src,      CCm     _make_and_meta_struct,      M       _manifested, diff --git a/org/metaverse.org b/org/metaverse.org index be6c662..0483473 100644 --- a/org/metaverse.org +++ b/org/metaverse.org @@ -38,7 +38,7 @@ template docAbstraction() {    <<abs_top_init_struct>>    <<abs_inline_para_tag_associations>>                                                                                  /+ ↓ abstract marked up document +/ -  auto docAbstraction(CMM,Opt,Mf) ( +  @system auto docAbstraction(CMM,Opt,Mf) (      char[][]           markup_sourcefile_content,      CMM                conf_make_meta,      Opt                opt_action, @@ -267,7 +267,7 @@ enum DomTags { none, open, close, close_and_open, open_still, }  #+name: abs_top_init_struct  #+BEGIN_SRC d -pure ObjGenericComposite obj_heading_ancestors()( +@safe pure ObjGenericComposite obj_heading_ancestors()(    ObjGenericComposite  obj,    string[]             lv_ancestors_txt,  ) { @@ -326,7 +326,7 @@ pure ObjGenericComposite obj_heading_ancestors()(  #+name: abs_top_init_struct  #+BEGIN_SRC d -pure ObjGenericComposite obj_dom_structure_set_markup_tags()( +@safe pure ObjGenericComposite obj_dom_structure_set_markup_tags()(    ObjGenericComposite  obj,    int[]                dom,    int                  lev @@ -376,7 +376,7 @@ pure ObjGenericComposite obj_dom_structure_set_markup_tags()(  #+name: abs_top_init_struct  #+BEGIN_SRC d -pure ObjGenericComposite obj_dom_set_collapsed_tags()( +@safe pure ObjGenericComposite obj_dom_set_collapsed_tags()(    ObjGenericComposite  obj,    int[]                dom,    int                  lev @@ -426,10 +426,10 @@ pure ObjGenericComposite obj_dom_set_collapsed_tags()(  #+name: abs_top_init_struct  #+BEGIN_SRC d -static auto ocn_emit(int ocn_status_flag) { +@safe static auto ocn_emit(int ocn_status_flag) {    return object_citation_number.ocn_emitter(ocn_status_flag);  } -static auto inline_markup_faces(L)(L line) { +@safe static auto inline_markup_faces(L)(L line) {    static auto rgx = Rgx();    static auto mkup = InlineMarkup();    line = replaceAll!(m => mkup.quote_o ~ m[1] ~ mkup.quote_c)(line, rgx.within_quotes); @@ -440,7 +440,7 @@ static auto inline_markup_faces(L)(L line) {    }    return line;  } -static string links_and_images()(string obj_txt) { +@safe static string links_and_images()(string obj_txt) {    static auto rgx = Rgx();    static auto mkup = InlineMarkup();    if (obj_txt.match(rgx.smid_inline_url_generic)) { @@ -493,7 +493,7 @@ enum sObj { content, anchor_tag, notes_reg, notes_star, links, image_no_dimensio  #+name: abs_inline_para_tag_associations  #+BEGIN_SRC d -string[string][string] inline_para_link_anchor()( +@safe string[string][string] inline_para_link_anchor()(    string[string]          an_object,    string[string]          tag_in_seg,    string[string][string]  tag_assoc @@ -1744,6 +1744,7 @@ debug(bibliosection) {  ***** bibliography components +#+BEGIN_SRC d  JSONValue biblio_entry_tags_jsonstr =  `{    "is"                               : "",    "sortby_deemed_author_year_title"  : "", @@ -1773,6 +1774,7 @@ JSONValue biblio_entry_tags_jsonstr =  `{    "short_name"                       : "",    "id"                               : ""  }`; // is: book, article, magazine, newspaper, blog, other +#+END_SRC  **** bookindex section (scroll & seg)                         :book:index: @@ -1955,7 +1957,7 @@ NOTE there are issues attempting to do this on first pass as:  #+name: abs_post  #+BEGIN_SRC d -int[] _get_ancestors_markup(O)(O obj, ref int[] _ancestors_markup) { +@safe int[] _get_ancestors_markup(O)(O obj, ref int[] _ancestors_markup) {    if (obj.metainfo.is_a == "heading") {      debug(dom) {        writeln(obj.text); @@ -2048,7 +2050,7 @@ int[] _get_ancestors_markup(O)(O obj, ref int[] _ancestors_markup) {  #+name: abs_post  #+BEGIN_SRC d -int[] _get_ancestors_collapsed(O)(O obj, ref int[] _ancestors_collapsed) { +@safe int[] _get_ancestors_collapsed(O)(O obj, ref int[] _ancestors_collapsed) {    if (obj.metainfo.is_a == "heading") {      if (obj.metainfo.heading_lev_collapsed == 1) {        _ancestors_collapsed = [ @@ -2313,7 +2315,7 @@ Build here:  #+name: abs_post  #+BEGIN_SRC d -auto get_decendants()(ObjGenericComposite[] document_sections) { +@safe auto get_decendants()(ObjGenericComposite[] document_sections) {    int[string] _heading_ocn_decendants;    string[] _ocn_open_key = ["","","","","","","",""];    auto _doc_sect_length = document_sections.length - 1; @@ -2367,7 +2369,7 @@ auto get_decendants()(ObjGenericComposite[] document_sections) {  #+name: abs_post  #+BEGIN_SRC d  string[] _images; -string[] extract_images()(string content_block) { +@safe string[] extract_images()(string content_block) {    string[] images_;    if (auto m = content_block.matchAll(rgx.image)) {      images_ ~= m.captures[1]; @@ -2381,7 +2383,7 @@ string[] segnames_0_to_4;  #+name: abs_post  #+BEGIN_SRC d -auto _image_dimensions(O,M)(O obj, M manifested) { +@system auto _image_dimensions(O,M)(O obj, M manifested) {    if (obj.has.image_without_dimensions) {      import std.math;      import imageformats; @@ -2434,7 +2436,7 @@ auto _image_dimensions(O,M)(O obj, M manifested) {  #+name: abs_post  #+BEGIN_SRC d -auto _links(O)(O obj) { +@safe auto _links(O)(O obj) {    if (auto m = obj.text.match(rgx.inline_link_stow_uri)) {      debug(links) {        writeln("number of link matches to stow: ", (obj.text.match(rgx.inline_link_stow_uri)).count); @@ -3038,7 +3040,7 @@ dom_structure_collapsed_tags_status_buffer   = [ 0, 0, 0, 0, 0, 0, 0, 0, 0,];  #+name: abs_struct_doc_has  #+BEGIN_SRC d -auto doc_has() { +@safe auto doc_has() {    struct DocHas_ {      uint inline_links() {        return dochas["inline_links"]; @@ -3090,7 +3092,7 @@ auto doc_has() {  }  #+END_SRC -*** _return document tuple_ [#A]                               :return:tuple: +*** _return the document tuple_ [#A]                           :return:tuple:  #+name: abs_return_tuple  #+BEGIN_SRC d @@ -3110,7 +3112,7 @@ functions used in document abstraction  #+name: abs_functions_object_reset  #+BEGIN_SRC d -static string[string] object_reset()(string[string] an_object) @safe { +@safe static string[string] object_reset()(string[string] an_object) {    an_object.remove("body_nugget");    an_object.remove("substantive");    an_object.remove("is"); @@ -3124,7 +3126,7 @@ static string[string] object_reset()(string[string] an_object) @safe {  #+name: abs_functions_header_set_common  #+BEGIN_SRC d -void flow_common_reset_()( +@system void flow_common_reset_()(    return ref int[string]     line_occur,    return ref string[string]  an_object,    return ref int[string]     obj_type_status, @@ -3141,10 +3143,10 @@ void flow_common_reset_()(  #+name: abs_functions_ocn_status  #+BEGIN_SRC d -static int[string]         _check_ocn_status_()( +@safe static int[string] _check_ocn_status_()(    char[]           line,    int[string]      obj_type_status, -) @safe { +) {    static auto rgx = Rgx();    if (!(line.empty)      && (obj_type_status["ocn_status_off_for_multiple_objects"] == OCN_off_block_status.off) @@ -3207,10 +3209,10 @@ static int[string]         _check_ocn_status_()(  #+name: abs_functions_substitutions  #+BEGIN_SRC d -char[] _doc_header_and_make_substitutions_(CMM)( +@safe char[] _doc_header_and_make_substitutions_(CMM)(    char[]  line,    CMM     conf_make_meta, -) @safe { +) {    enum Substitute { match, markup, }    if (conf_make_meta.make.substitute) {      foreach(substitution_pair; conf_make_meta.make.substitute) { @@ -3228,10 +3230,10 @@ char[] _doc_header_and_make_substitutions_(CMM)(  #+name: abs_functions_substitutions  #+BEGIN_SRC d -char[] _doc_header_and_make_substitutions_fontface_(CMM)( +@safe char[] _doc_header_and_make_substitutions_fontface_(CMM)(    char[]  line,    CMM     conf_make_meta, -) @safe { +) {    enum Substitute { match, markup, }    if ( conf_make_meta.make.bold) {      line = line.replaceAll( @@ -3261,12 +3263,12 @@ char[] _doc_header_and_make_substitutions_fontface_(CMM)(  #+name: abs_functions_block  #+BEGIN_SRC d -void flow_txt_block_start()( +@safe void flow_txt_block_start()(               char[]         line,    return ref int[string]    obj_type_status,    return ref uint[string]   dochas,    return ref string[string] object_number_poem -) @safe { +) {  #+END_SRC  ****** block (various) curly open                                :curly: @@ -3545,11 +3547,11 @@ void flow_txt_block_start()(  #+name: abs_functions_block_code  #+BEGIN_SRC d -void flow_txt_block_code()( +@safe void flow_txt_block_code()(               char[]          line,    return ref string[string]  an_object,    return ref int[string]     obj_type_status -) @safe { +) {    static auto rgx = Rgx();    if (obj_type_status["curly_code"] == TriState.on) {      if (line.matchFirst(rgx.block_curly_code_close)) { @@ -3594,7 +3596,7 @@ void flow_txt_block_code()(  #+name: abs_functions_block_biblio  #+BEGIN_SRC d -final string biblio_tag_map()(string abr) { +@safe final string biblio_tag_map()(string abr) {    auto btm = [      "au"           : "author_raw",      "ed"           : "editor_raw", @@ -3646,7 +3648,7 @@ final string biblio_tag_map_()(string abr) {  #+name: abs_functions_block_biblio  #+BEGIN_SRC d -void flow_txt_block_biblio( +@system void flow_txt_block_biblio(    char[]                 line,    return ref int[string] obj_type_status,    return ref int         bib_entry, @@ -3781,11 +3783,11 @@ void flow_txt_block_biblio(  #+name: abs_functions_block_quote  #+BEGIN_SRC d -string[string] flow_txt_block_quote()( +@safe string[string] flow_txt_block_quote()(               char[]          line,               string[string]  an_object,    return ref int[string]     obj_type_status -) @safe { +) {    static auto rgx = Rgx();    if (obj_type_status["curly_quote"] == TriState.on) {      if (line.matchFirst(rgx.block_curly_quote_close)) { @@ -3829,11 +3831,11 @@ string[string] flow_txt_block_quote()(  #+name: abs_functions_block_group  #+BEGIN_SRC d -string[string] flow_txt_block_group()( +@safe string[string] flow_txt_block_group()(               char[]          line,               string[string]  an_object,    return ref int[string]     obj_type_status -) @safe { +) {    static auto rgx = Rgx();    if (obj_type_status["curly_group"] == State.on) {      if (line.matchFirst(rgx.block_curly_group_close)) { @@ -3878,11 +3880,11 @@ string[string] flow_txt_block_group()(  #+name: abs_functions_block_block  #+BEGIN_SRC d -string[string] flow_txt_block_block()( +@safe string[string] flow_txt_block_block()(               char[]          line,               string[string]  an_object,    return ref int[string]     obj_type_status -) @safe { +) {    static auto rgx = Rgx();    if (obj_type_status["curly_block"] == TriState.on) {      if (line.matchFirst(rgx.block_curly_block_close)) { @@ -3925,7 +3927,7 @@ why extra object stuff only in poem/verse?  #+name: abs_functions_block_poem  #+BEGIN_SRC d -string[string]  flow_txt_block_poem(CMM)( +@safe string[string]  flow_txt_block_poem(CMM)(               char[]          line,               string[string]  an_object,    return ref int[string]     obj_type_status, @@ -3933,7 +3935,7 @@ string[string]  flow_txt_block_poem(CMM)(               string[string]  object_number_poem,               CMM             conf_make_meta,               string[string]  tag_in_seg, -) @safe { +) {    static auto rgx = Rgx();    if (obj_type_status["curly_poem"] == TriState.on) {      if (line.matchFirst(rgx.block_curly_poem_close)) { @@ -4189,7 +4191,7 @@ you need:  #+name: abs_functions_block_table  #+BEGIN_SRC d -string[string] flow_txt_block_table(CMM)( +@system string[string] flow_txt_block_table(CMM)(               char[]          line,               string[string]  an_object,    return ref int[string]     obj_type_status, @@ -4259,7 +4261,7 @@ process and use an_object["table_head"] (then empty it)  #+name: abs_functions_block_line_status_empty  #+BEGIN_SRC d -void flow_table_closed_make_special_notation_table_(N,CMM)( +@system void flow_table_closed_make_special_notation_table_(N,CMM)(               char[]                line,    return ref string[string]        an_object,    return ref ObjGenericComposite[] the_document_body_section, @@ -4308,7 +4310,7 @@ void flow_table_closed_make_special_notation_table_(N,CMM)(  #+name: abs_functions_block_line_status_empty  #+BEGIN_SRC d -string[string] flow_block_flag_line_empty_(B,N,CMM,Ts)( +@system string[string] flow_block_flag_line_empty_(B,N,CMM,Ts)(               char[]                   line,               string[string]           an_object,               B                        bookindex_extract_hash, @@ -4666,7 +4668,7 @@ string[string] flow_block_flag_line_empty_(B,N,CMM,Ts)(  #+name: abs_functions_book_index  #+BEGIN_SRC d -string[string] flow_book_index_(B)( +@system string[string] flow_book_index_(B)(               char[]          line,               string[string]  an_object,    return ref string          book_idx_tmp, @@ -4723,13 +4725,13 @@ string[string] flow_book_index_(B)(  #+name: abs_functions_heading  #+BEGIN_SRC d -string[string] flow_heading_found_()( +@safe string[string] flow_heading_found_()(               char[]                line,               string[string]        heading_match_str,               string[]              _make_unmarked_headings,    return ref Regex!(char)[string]  heading_match_rgx,    return ref int[string]           obj_type_status -) @safe { +) {    static auto rgx = Rgx();    if ((_make_unmarked_headings.length > 2)    && (obj_type_status["make_headings"] == State.off)) {                        /+ headings found +/ @@ -4810,12 +4812,12 @@ string[string] flow_heading_found_()(  #+name: abs_functions_heading  #+BEGIN_SRC d -char[] flow_heading_make_set_()( +@safe char[] flow_heading_make_set_()(               char[]                line,               int[string]           line_occur,    return ref Regex!(char)[string]  heading_match_rgx,    return ref int[string]           obj_type_status -) @safe { +) {    if ((obj_type_status["make_headings"] == State.on)    && ((line_occur["para"] == State.off)    && (line_occur["heading"] == State.off)) @@ -4872,7 +4874,7 @@ char[] flow_heading_make_set_()(  #+name: abs_functions_heading  #+BEGIN_SRC d -string[string] flow_heading_matched_(CMM)( +@safe string[string] flow_heading_matched_(CMM)(               char[]          line,               string[string]  an_object,    return ref int[string]     line_occur, @@ -4881,7 +4883,7 @@ string[string] flow_heading_matched_(CMM)(    return ref int[string]     collapsed_lev,    return ref int[string]     obj_type_status,    return ref CMM             conf_make_meta, -) @safe { +) {    static auto rgx = Rgx();    if (auto m = line.match(rgx.heading)) {                                      /+ heading match +/      ++line_occur["heading"]; @@ -5031,7 +5033,7 @@ string[string] flow_heading_matched_(CMM)(  #+name: abs_functions_para  #+BEGIN_SRC d -string[string] flow_para_match_()( +@safe string[string] flow_para_match_()(               char[]         line,               string[string]  an_object,    return ref string          an_object_key, @@ -5039,7 +5041,7 @@ string[string] flow_para_match_()(    return ref bool            bullet,    return ref int[string]     obj_type_status,    return ref int[string]     line_occur, -) @safe { +) {    static auto rgx = Rgx();    if (line_occur["para"] == State.off) {      line = font_faces_line(line); @@ -5090,9 +5092,9 @@ string[string] flow_para_match_()(  #+name: abs_functions_para  #+BEGIN_SRC d -char[] font_faces_line()( +@safe char[] font_faces_line()(    char[]  textline, -) @safe { +) {    static auto rgx = Rgx();    static auto mkup = InlineMarkup();    if (textline.match(rgx.inline_faces_line)) { @@ -5127,10 +5129,10 @@ char[] font_faces_line()(  #+name: abs_functions_table  #+BEGIN_SRC d -ObjGenericComposite flow_table_instructions(H)( +@safe ObjGenericComposite flow_table_instructions(H)(    return ref ObjGenericComposite  table_object,               H                    table_head, -) @safe { +) {    static auto rgx = Rgx();    table_object.metainfo.is_of_part      = "body";    table_object.metainfo.is_of_section   = "body"; @@ -5158,10 +5160,10 @@ ObjGenericComposite flow_table_instructions(H)(  #+name: abs_functions_table  #+BEGIN_SRC d -ObjGenericComposite flow_table_array_munge(T)( +@safe ObjGenericComposite flow_table_array_munge(T)(    return ref ObjGenericComposite  table_object,    return ref T                    table_array, -) @safe { +) {    static auto rgx = Rgx();    static auto mng = InlineMarkup();    string _table_substantive; @@ -5288,7 +5290,7 @@ ObjGenericComposite flow_table_array_munge(T)(  #+name: abs_functions_table  #+BEGIN_SRC d -ObjGenericComposite flow_table_substantive_munge(T)( +@system ObjGenericComposite flow_table_substantive_munge(T)(    return ref ObjGenericComposite  table_object,    return ref T                    table_substantive,  ) { @@ -5310,7 +5312,7 @@ ObjGenericComposite flow_table_substantive_munge(T)(  #+name: abs_functions_table  #+BEGIN_SRC d -ObjGenericComposite flow_table_substantive_munge_special(T)( +@system ObjGenericComposite flow_table_substantive_munge_special(T)(    return ref ObjGenericComposite  table_object,    return ref T                    table_substantive,  ) { @@ -5334,11 +5336,11 @@ ObjGenericComposite flow_table_substantive_munge_special(T)(  #+name: meta_emitters_ocn  #+BEGIN_SRC d -pure struct OCNemitter { +@safe pure struct OCNemitter {    int ocn_digit, ocn_object_number, ocn_on_, ocn_off_, ocn_bkidx, ocn_bkidx_;    string object_identifier;    bool ocn_is_off; -  auto ocn_emitter(int ocn_status_flag) @safe { +  @safe auto ocn_emitter(int ocn_status_flag) {      OCNset ocn;      assert(ocn_status_flag <= OCNstatus.reset);      ocn_object_number = ocn_bkidx = 0; @@ -5390,7 +5392,7 @@ pure struct OCNemitter {  #+name: meta_emitters_obj_inline_markup_munge  #+BEGIN_SRC d -static struct ObjInlineMarkupMunge { +@safe static struct ObjInlineMarkupMunge {    string[string] obj_txt;    int n_foot, n_foot_reg, n_foot_sp_asterisk, n_foot_sp_plus;    string asterisks_, plus_; @@ -5398,7 +5400,7 @@ static struct ObjInlineMarkupMunge {    static auto rgx = Rgx();    static auto mkup = InlineMarkup();    int stage_reset_note_numbers = true; -  private auto initialize_note_numbers() @safe { +  private auto initialize_note_numbers() {      n_foot = 0;      n_foot_reg = 0;      n_foot_sp_asterisk = 0; @@ -5408,7 +5410,7 @@ static struct ObjInlineMarkupMunge {  #+name: meta_emitters_obj_inline_markup_munge  #+BEGIN_SRC d -  static auto images()(string obj_txt_in) @safe { +  @safe static auto images()(string obj_txt_in) {      static auto mng = InlineMarkup();      /+ url matched +/      obj_txt_in = obj_txt_in.replaceAll(rgx.inline_notes_al_special, ""); // TODO reinstate when special footnotes are implemented @@ -5444,7 +5446,7 @@ static struct ObjInlineMarkupMunge {  #+name: meta_emitters_obj_inline_markup_munge  #+BEGIN_SRC d -  TxtPlusHasFootnotes footnotes_endnotes_markup_and_number_or_stars()(string obj_txt_in, bool reset_note_numbers) @safe { +  @safe TxtPlusHasFootnotes footnotes_endnotes_markup_and_number_or_stars()(string obj_txt_in, bool reset_note_numbers) {      /+ endnotes (regular) +/      bool flg_notes_reg  = false;      bool flg_notes_star = false; @@ -5514,10 +5516,10 @@ static struct ObjInlineMarkupMunge {  #+name: meta_emitters_obj_inline_markup_munge  #+BEGIN_SRC d -  private TxtPlusHasFootnotesUrlsImages object_notes_and_links_()( +  @safe private TxtPlusHasFootnotesUrlsImages object_notes_and_links_()(      string obj_txt_in,      bool reset_note_numbers=false -  ) @safe { +  ) {      obj_txt_out = "";      bool urls = false;      bool images_without_dimensions = false; @@ -5585,10 +5587,10 @@ static struct ObjInlineMarkupMunge {  #+name: meta_emitters_obj_inline_markup_munge  #+BEGIN_SRC d -  auto munge_heading()( +  @safe auto munge_heading()(      string obj_txt_in,      bool reset_note_numbers=false -  ) @safe { +  ) {      obj_txt["munge"] = obj_txt_in       .replaceFirst(rgx.heading, "")       .replaceFirst(rgx.object_number_off_all, "") @@ -5616,7 +5618,7 @@ static struct ObjInlineMarkupMunge {  #+name: meta_emitters_obj_inline_markup_munge  #+BEGIN_SRC d -  auto munge_para()(string obj_txt_in) @safe { +  @safe auto munge_para()(string obj_txt_in) {      obj_txt["munge"]=(obj_txt_in)        .replaceFirst(rgx.para_attribs, "")        .replaceFirst(rgx.object_number_off_all, ""); @@ -5635,7 +5637,7 @@ static struct ObjInlineMarkupMunge {  #+name: meta_emitters_obj_inline_markup_munge  #+BEGIN_SRC d -  string munge_quote()(string obj_txt_in) @safe { +  @safe string munge_quote()(string obj_txt_in) {      obj_txt["munge"]=obj_txt_in;      return obj_txt["munge"];    } @@ -5654,7 +5656,7 @@ static struct ObjInlineMarkupMunge {  #+name: meta_emitters_obj_inline_markup_munge  #+BEGIN_SRC d -  auto munge_group(string obj_txt_in) @safe { +  @safe auto munge_group(string obj_txt_in) {      obj_txt["munge"]=obj_txt_in;      TxtPlusHasFootnotesUrlsImages t = object_notes_and_links_(obj_txt["munge"]);      return t; @@ -5674,7 +5676,7 @@ static struct ObjInlineMarkupMunge {  #+name: meta_emitters_obj_inline_markup_munge  #+BEGIN_SRC d -  auto munge_block()(string obj_txt_in) @safe { +  @safe auto munge_block()(string obj_txt_in) {      obj_txt["munge"]=obj_txt_in;      TxtPlusHasFootnotesUrlsImages t = object_notes_and_links_(obj_txt["munge"]);      return t; @@ -5694,7 +5696,7 @@ static struct ObjInlineMarkupMunge {  #+name: meta_emitters_obj_inline_markup_munge  #+BEGIN_SRC d -  auto munge_verse()(string obj_txt_in) @safe { +  @safe auto munge_verse()(string obj_txt_in) {      obj_txt["munge"]=obj_txt_in;      TxtPlusHasFootnotesUrlsImages t = object_notes_and_links_(obj_txt["munge"]);      return t; @@ -5713,7 +5715,7 @@ static struct ObjInlineMarkupMunge {  #+name: meta_emitters_obj_inline_markup_munge  #+BEGIN_SRC d -  string munge_code()(string obj_txt_in) @safe { +  @safe string munge_code()(string obj_txt_in) {      obj_txt_in = obj_txt_in.replaceAll(rgx.space, mkup.nbsp);      obj_txt["munge"] = obj_txt_in;      return obj_txt["munge"]; @@ -5728,7 +5730,7 @@ static struct ObjInlineMarkupMunge {  #+name: meta_emitters_obj_inline_markup_munge  #+BEGIN_SRC d -  string munge_table()(string obj_txt_in) @safe { +  @safe string munge_table()(string obj_txt_in) {      obj_txt["munge"]=obj_txt_in;      return obj_txt["munge"];    } @@ -5740,7 +5742,7 @@ static struct ObjInlineMarkupMunge {  #+name: meta_emitters_obj_inline_markup_munge  #+BEGIN_SRC d -  string munge_comment()(string obj_txt_in) @safe { +  @safe string munge_comment()(string obj_txt_in) {      obj_txt["munge"]=obj_txt_in;      return obj_txt["munge"];    } @@ -5771,12 +5773,12 @@ static struct ObjInlineMarkup {  #+name: meta_emitters_obj_inline_markup_and_anchor_tags_and_misc  #+BEGIN_SRC d -  TxtAndAnchorTagPlusHasFootnotesUrlsImages obj_inline_markup_and_anchor_tags_and_misc(CMM)( +  @safe TxtAndAnchorTagPlusHasFootnotesUrlsImages obj_inline_markup_and_anchor_tags_and_misc(CMM)(      string[string]   obj_,      string           obj_key_,      CMM              conf_make_meta,      Flag!"_new_doc"  _new_doc -  ) @safe { +  ) {      obj_txt["munge"] = obj_[obj_key_].dup;      obj_txt["munge"] = (obj_["is"].match(ctRegex!(`verse|code`)))      ? obj_txt["munge"] @@ -5870,23 +5872,23 @@ static struct ObjInlineMarkup {  #+name: meta_emitters_obj_inline_markup_table_of_contents  #+BEGIN_SRC d -  auto _clean_heading_toc_()( +  @safe auto _clean_heading_toc_()(      char[] heading_toc_, -  ) @safe { +  ) {     auto m = (cast(char[]) heading_toc_).matchFirst(rgx.heading);     heading_toc_ = (m.post).replaceAll(       rgx.inline_notes_curly_gen,       "");     return heading_toc_;    }; -  ObjGenericComposite[] flow_table_of_contents_gather_headings(CMM)( +  @safe ObjGenericComposite[] flow_table_of_contents_gather_headings(CMM)(                 string[string]         obj_,                 CMM                    conf_make_meta,                 string[string]         tag_in_seg,                 string                 _anchor_tag,      return ref string[][string]       lev4_subtoc,                 ObjGenericComposite[]  the_table_of_contents_section, -  ) @safe { +  ) {      ObjGenericComposite comp_obj_toc;      mixin InternalMarkup;      static auto mkup = InlineMarkup(); @@ -5982,12 +5984,12 @@ private:    static string heading_number_auto_composite = "";    static string heading_number_auto_composite_segname = "";    static bool[] auto_heading_numbering = [ true, true, true, true]; -  static string _configured_auto_heading_numbering_and_segment_anchor_tags(CMM)( +  @safe static string _configured_auto_heading_numbering_and_segment_anchor_tags(CMM)(      string           munge_,      string[string]   obj_,      CMM              conf_make_meta,      bool             _new_doc, -  ) @safe { +  ) {      if (_new_doc) {        heading_num = [ 0, 0, 0, 0 ];        heading_number_auto_composite = ""; @@ -6132,11 +6134,11 @@ private:  #+name: meta_emitters_obj_inline_markup_heading_numbering_segment_anchor_tags  #+BEGIN_SRC d    static int heading_num_lev1 = 0; -  static string _make_segment_anchor_tags_if_none_provided()( +  @safe static string _make_segment_anchor_tags_if_none_provided()(      string munge_,      string lev_,      bool   _new_doc -  ) @safe { +  ) {      if (!(munge_.match(rgx.heading_anchor_tag))) {        if (munge_.match(rgx.heading_identify_anchor_tag)) {          if (auto m = munge_.match(rgx.heading_extract_named_anchor_tag)) { @@ -6187,11 +6189,11 @@ struct ObjAttributes {  #+name: meta_emitters_obj_attributes_public  #+BEGIN_SRC d -  string obj_attributes()( +  @safe string obj_attributes()(      string              obj_is_,      string              obj_raw,      ObjGenericComposite _comp_obj_heading, -  ) @safe { +  ) {      scope(exit) {        destroy(obj_is_);        destroy(obj_raw); @@ -6262,7 +6264,7 @@ struct ObjAttributes {  #+name: meta_emitters_obj_attributes_private_an_attribute  #+BEGIN_SRC d -  string txt_para_and_blocks()(string obj_txt_in) { +  @safe string txt_para_and_blocks()(string obj_txt_in) {      if (obj_txt_in.matchFirst(rgx.para_bullet)) {        _obj_attributes =" \"bullet\": \"true\","        ~ " \"indent_hang\": 0," @@ -6292,7 +6294,7 @@ struct ObjAttributes {  #+name: meta_emitters_obj_attributes_private_an_attribute  #+BEGIN_SRC d -  string txt_heading()(string obj_txt_in) @safe { +  @safe string txt_heading()(string obj_txt_in) {      _obj_attributes = " \"use\": \"content\","      ~ " \"of\": \"para\","      ~ " \"is\": \"heading\""; @@ -6306,7 +6308,7 @@ struct ObjAttributes {  #+name: meta_emitters_obj_attributes_private_an_attribute  #+BEGIN_SRC d -  string txt_para()(string obj_txt_in) @safe { +  @safe string txt_para()(string obj_txt_in) {      _obj_attributes = " \"use\": \"content\","      ~ " \"of\": \"para\","      ~ " \"is\": \"para\""; @@ -6320,7 +6322,7 @@ struct ObjAttributes {  #+name: meta_emitters_obj_attributes_private_an_attribute  #+BEGIN_SRC d -  string txt_quote()(string obj_txt_in) @safe { +  @safe string txt_quote()(string obj_txt_in) {      _obj_attributes = " \"use\": \"content\","      ~ " \"of\": \"block\","      ~ " \"is\": \"quote\""; @@ -6334,7 +6336,7 @@ struct ObjAttributes {  #+name: meta_emitters_obj_attributes_private_an_attribute  #+BEGIN_SRC d -  string txt_group()(string obj_txt_in) @safe { +  @safe string txt_group()(string obj_txt_in) {      _obj_attributes = " \"use\": \"content\","      ~ " \"of\": \"block\","      ~ " \"is\": \"group\""; @@ -6348,7 +6350,7 @@ struct ObjAttributes {  #+name: meta_emitters_obj_attributes_private_an_attribute  #+BEGIN_SRC d -  string txt_block()(string obj_txt_in) @safe { +  @safe string txt_block()(string obj_txt_in) {      _obj_attributes = " \"use\": \"content\","      ~ " \"of\": \"block\","      ~ " \"is\": \"block\""; @@ -6362,7 +6364,7 @@ struct ObjAttributes {  #+name: meta_emitters_obj_attributes_private_an_attribute  #+BEGIN_SRC d -  string txt_verse()(string obj_txt_in) @safe { +  @safe string txt_verse()(string obj_txt_in) {      _obj_attributes = " \"use\": \"content\","      ~ " \"of\": \"block\","      ~ " \"is\": \"verse\""; @@ -6376,7 +6378,7 @@ struct ObjAttributes {  #+name: meta_emitters_obj_attributes_private_an_attribute  #+BEGIN_SRC d -  string txt_code()(string obj_txt_in) @safe { +  @safe string txt_code()(string obj_txt_in) {      _obj_attributes = " \"use\": \"content\","      ~ " \"of\": \"block\","      ~ " \"is\": \"code\""; @@ -6390,7 +6392,7 @@ struct ObjAttributes {  #+name: meta_emitters_obj_attributes_private_an_attribute  #+BEGIN_SRC d -  string txt_table()(string obj_txt_in) @safe { +  @safe string txt_table()(string obj_txt_in) {      _obj_attributes = " \"use\": \"content\","      ~ " \"of\": \"block\","      ~ " \"is\": \"table\""; @@ -6404,7 +6406,7 @@ struct ObjAttributes {  #+name: meta_emitters_obj_attributes_private_an_attribute  #+BEGIN_SRC d -  string txt_comment()(string obj_txt_in) @safe { +  @safe string txt_comment()(string obj_txt_in) {      _obj_attributes = " \"use\": \"comment\","      ~ " \"of\": \"comment\","      ~ " \"is\": \"comment\""; @@ -6418,11 +6420,11 @@ struct ObjAttributes {  #+name: meta_emitters_obj_attributes_private_json  #+BEGIN_SRC d -  string _set_additional_values_parse_as_json()( +  @safe string _set_additional_values_parse_as_json()(      string              _obj_attrib,      string              obj_is_,      ObjGenericComposite _comp_obj_heading, -  ) @safe { +  ) {      JSONValue oa_j = parseJSON(_obj_attrib);      assert(        (oa_j.type == JSON_TYPE.OBJECT) @@ -6461,11 +6463,11 @@ struct BookIndexNuggetHash {    string[] object_numbers;    string[][string][string] bi_hash_nugget;    string[] bi_main_terms_split_arr; -  string[][string][string] bookindex_nugget_hash(N,S)( +  @safe string[][string][string] bookindex_nugget_hash(N,S)(      string bookindex_section,      N      obj_cite_digits,      S      tag_in_seg, -  ) @safe { +  ) {      debug(asserts) {        static assert(is(typeof(obj_cite_digits.object_number) == int));      } @@ -6537,9 +6539,9 @@ struct BookIndexNuggetHash {  #+BEGIN_SRC d  struct BookIndexReportIndent {    int mkn, skn; -  void bookindex_report_indented()( +  @safe void bookindex_report_indented()(      string[][string][string] bookindex_unordered_hashes -  ) @safe { +  ) {      auto mainkeys        = bookindex_unordered_hashes.byKey.array.sort().release;      foreach (mainkey; mainkeys) { @@ -6578,9 +6580,9 @@ struct BookIndexReportSection {  #+name: meta_emitters_book_index_report_section  #+BEGIN_SRC d -  void bookindex_write_section()( +  @safe void bookindex_write_section()(      string[][string][string] bookindex_unordered_hashes -  ) @safe { +  ) {      auto mainkeys =        bookindex_unordered_hashes.byKey.array        .sort!("toUpper(a) < toUpper(b)", SwapStrategy.stable).release; @@ -6613,7 +6615,7 @@ struct BookIndexReportSection {  #+name: meta_emitters_book_index_report_section  #+BEGIN_SRC d -  auto bookindex_build_abstraction_section(N,B)( +  @system auto bookindex_build_abstraction_section(N,B)(      string[][string][string] bookindex_unordered_hashes,      N                        obj_cite_digits,      B                        opt_action, @@ -6794,11 +6796,11 @@ struct NotesSection {  #+name: meta_emitters_endnotes  #+BEGIN_SRC d -  private auto gather_notes_for_endnote_section( +  @safe private auto gather_notes_for_endnote_section(      ObjGenericComposite[] contents_am,      string[string]        tag_in_seg,      int                   cntr, -  ) @safe { +  ) {      assert((contents_am[cntr].metainfo.is_a == "para")      || (contents_am[cntr].metainfo.is_a     == "heading")      || (contents_am[cntr].metainfo.is_a     == "quote") @@ -6880,7 +6882,7 @@ struct NotesSection {  #+name: meta_emitters_endnotes  #+BEGIN_SRC d -  private auto gathered_notes() @safe { +  @safe private auto gathered_notes() {      string[][string] endnotes_;      if (object_notes.length > 1) {        endnotes_["notes"] = (object_notes["notes"].split(rgx.break_string))[0..$-1]; @@ -6897,10 +6899,10 @@ struct NotesSection {  #+name: meta_emitters_endnotes  #+BEGIN_SRC d -  private auto endnote_objects(N,O)( +  @safe private auto endnote_objects(N,O)(      N              obj_cite_digits,      O              opt_action, -  ) @safe { +  ) {      mixin spineNode;      ObjGenericComposite[] the_endnotes_section;      auto endnotes_ = gathered_notes(); @@ -7028,7 +7030,7 @@ struct Bibliography {  #+name: meta_emitters_bibliography  #+BEGIN_SRC d -  public JSONValue[] flow_bibliography_()( +@system public JSONValue[] flow_bibliography_()(      return ref string[]    biblio_unsorted_incomplete,      return ref JSONValue[] bib_arr_json    ) { @@ -7059,7 +7061,7 @@ struct Bibliography {  #+name: meta_emitters_bibliography  #+BEGIN_SRC d -  final private JSONValue[] biblio_make_unsorted_array_of_json_objects()( +  @system final private JSONValue[] biblio_make_unsorted_array_of_json_objects()(      string[]      biblio_unordered,      JSONValue[]   bib_arr_json    ) { @@ -7093,7 +7095,7 @@ struct Bibliography {  #+name: meta_emitters_bibliography  #+BEGIN_SRC d -  final private JSONValue[] biblio_sort()(JSONValue[] biblio_unordered) { +  @system final private JSONValue[] biblio_sort()(JSONValue[] biblio_unordered) {      JSONValue[] biblio_sorted_;      biblio_sorted_        = sort!((a, b){ @@ -7114,7 +7116,7 @@ struct Bibliography {  #+name: meta_emitters_bibliography  #+BEGIN_SRC d -  void biblio_debug()(JSONValue[] biblio_sorted) { +  @system void biblio_debug()(JSONValue[] biblio_sorted) {      debug(biblio0) {        foreach (j; biblio_sorted) {          if (!empty(j["fulltitle"].str)) { @@ -7148,7 +7150,7 @@ struct NodeStructureMetadata {  #+name: meta_emitters_metadata  #+BEGIN_SRC d -  ObjGenericComposite node_location_emitter(La,Ta,N)( +  @safe ObjGenericComposite node_location_emitter(La,Ta,N)(      string         lev_markup_number,      string[string] tag_in_seg,      La             lev_anchor_tag, @@ -7157,7 +7159,7 @@ struct NodeStructureMetadata {      int            cntr_,      int            ptr_,      string         is_ -  ) @safe { +  ) {      debug(asserts) {        static assert(is(typeof(obj_cite_digits.object_number) == int));      } @@ -7208,7 +7210,7 @@ struct NodeStructureMetadata {  #+name: meta_emitters_metadata  #+BEGIN_SRC d -  ObjGenericComposite node_emitter_heading(Hd,TaL,TA,N,fNr,fNs,fL)( +  @safe ObjGenericComposite node_emitter_heading(Hd,TaL,TA,N,fNr,fNs,fL)(      string         _text,      string         lev_markup_number,      string         lev_collapsed_number, @@ -7225,7 +7227,7 @@ struct NodeStructureMetadata {      fNr            flag_notes_reg,      fNs            flag_notes_star,      fL             flag_links, -  ) @safe { +  ) {      debug(asserts) {        static assert(is(typeof(lev)                                       == string));        static assert(is(typeof(obj_cite_digits.object_number)             == int)); @@ -7418,10 +7420,10 @@ struct NodeStructureMetadata {  #+name: abs_functions_assertions  #+BEGIN_SRC d -pure void assertions_doc_structure()( +@safe pure void assertions_doc_structure()(    string[string]  an_object,    int[string]     lv -) @safe { +) {    if (lv["h3"] > State.off) {      assert(lv["h0"] > State.off);      assert(lv["h1"] > State.off); @@ -7599,7 +7601,7 @@ pure void assertions_doc_structure()(  #+name: abs_functions_assertions  #+BEGIN_SRC d -pure void assertions_flag_types_block_status_none_or_closed()(int[string] obj_type_status) @safe { +@safe pure void assertions_flag_types_block_status_none_or_closed()(int[string] obj_type_status) {    assert(      (obj_type_status["code"] == TriState.off)      || (obj_type_status["code"] == TriState.closing), @@ -7628,7 +7630,7 @@ pure void assertions_flag_types_block_status_none_or_closed()(int[string] obj_ty  #+name: template_doc_sect_keys_seq  #+BEGIN_SRC d  template docSectKeysSeq() { -  auto docSectKeysSeq(string[][string] document_section_keys_sequenced) @safe { +  @safe auto docSectKeysSeq(string[][string] document_section_keys_sequenced) {      struct doc_sect_keys_seq {        string[] scroll() {          return document_section_keys_sequenced["scroll"]; @@ -7704,22 +7706,22 @@ struct DocObj_MetaInfo_ {    int                    o_n_bibliography                   = 0;    int                    o_n_book_index                     = 0;    int                    o_n_blurb                          = 0; -  string object_number_substantive() const @property { +  @safe  string object_number_substantive() const @property {      return (o_n_substantive==0) ? "" : o_n_substantive.to!string;    } -  string object_number_non_substantive() const @property { +  @safe 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 { +  @safe string object_number_glossary() const @property {      return (o_n_glossary==0) ? "" : o_n_glossary.to!string;    } -  string object_number_bibliography() const @property { +  @safe string object_number_bibliography() const @property {      return (o_n_bibliography==0) ? "" : o_n_bibliography.to!string;    } -  string object_number_book_index() const @property { +  @safe 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 { +  @safe string object_number_blurb() const @property {      return (o_n_blurb==0) ? "" : o_n_blurb.to!string;    }    bool                   object_number_off                  = false; @@ -7729,13 +7731,13 @@ struct DocObj_MetaInfo_ {    string[string][string] node;    int                    ocn                                = 0;    string                 identifier                         = ""; -  string object_number() const @property { +  @safe 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 { +  @safe string marked_up_level() const @property {      string _out;      switch (heading_lev_markup) {      case 0  : _out = "A"; break; diff --git a/org/out_harvest_metadata.org b/org/out_harvest_metadata.org index 4b7fe7e..cb26cf0 100644 --- a/org/out_harvest_metadata.org +++ b/org/out_harvest_metadata.org @@ -22,10 +22,10 @@  #+BEGIN_SRC d :tangle "../src/doc_reform/meta/metadoc_harvest.d"  module doc_reform.meta.metadoc_harvest;  template spineMetaDocHarvest() { -  auto spineMetaDocHarvest(T,H)( +  @safe auto spineMetaDocHarvest(T,H)(      T  doc_matters,      H  hvst, -  ) @safe { +  ) {      <<metadoc_harvest_imports>>      mixin InternalMarkup;      <<metadoc_harvest_initialize>> diff --git a/org/out_latex.org b/org/out_latex.org index 8a84ceb..cb73d5c 100644 --- a/org/out_latex.org +++ b/org/out_latex.org @@ -129,7 +129,7 @@ import  #+BEGIN_SRC d      auto paper() {        struct PaperType { -        auto a4() @safe { +        @safe auto a4() {            struct A4 {              auto portrait() {                struct V { @@ -150,7 +150,7 @@ import            }            return A4();          } -        auto a5() @safe { +        @safe auto a5() {            struct A5 {              auto portrait() {                struct V { @@ -171,7 +171,7 @@ import            }            return A5();          } -        auto b4() @safe { +        @safe auto b4() {            struct B4 {              auto portrait() {                struct V { @@ -192,7 +192,7 @@ import            }            return B4();          } -        auto letter() @safe { +        @safe auto letter() {            struct Letter {              auto portrait() {                struct V { @@ -213,7 +213,7 @@ import            }            return Letter();          } -        auto legal() @safe { +        @safe auto legal() {            struct Legal {              auto portrait() {                struct V { @@ -244,10 +244,10 @@ import  #+name: output_latex_shared  #+BEGIN_SRC d -string sp_char_esc(O)( +@safe string sp_char_esc(O)(    string      _txt,    const    O  obj, -) @safe { +) {    string _unescape_sp_char_esc()(string _txt) {      _txt = _txt        .replaceAll(rgx.latex_special_char_escaped, @@ -273,9 +273,9 @@ string sp_char_esc(O)(  #+name: output_latex_shared  #+BEGIN_SRC d -string sp_char_esc_txt()( +@safe string sp_char_esc_txt()(    string      _txt, -) @safe { +) {    string _unescape_sp_char_esc()(string _txt) {      _txt = _txt        .replaceAll(rgx.latex_special_char_escaped, @@ -300,9 +300,9 @@ string sp_char_esc_txt()(  *** not used latex \escape special characters  #+BEGIN_SRC d -string sp_char_esc()( +@safe string sp_char_esc()(    string      _txt, -) @safe { +) {    _txt = replaceAll!(m => "\\" ~ m[1])(_txt, rgx.latex_special_char);    return _txt;  } @@ -315,9 +315,9 @@ string sp_char_esc()(  #+name: output_latex_shared  #+BEGIN_SRC d -string fontface()( +@safe string fontface()(    string      _txt, -) @safe { +) {  _txt = _txt    .replaceAll(rgx.inline_emphasis,    format(q"┃\begin{bfseries}%s\end{bfseries}┃", "$1"))    .replaceAll(rgx.inline_bold,        format(q"┃\begin{bfseries}%s\end{bfseries}┃", "$1")) @@ -338,9 +338,9 @@ _txt = _txt  #+name: output_latex_shared  #+BEGIN_SRC d -string leading_hardspaces()( +@safe string leading_hardspaces()(    string      _txt, -) @safe { +) {    string hardspaces(string _spaces) {      _spaces  = _spaces        .replaceAll(rgx.space, "\\hardspace "); @@ -355,7 +355,7 @@ string leading_hardspaces()(  #+name: output_latex_shared  #+BEGIN_SRC d -string nbsp_char()(string _txt) @safe { +@safe string nbsp_char()(string _txt) {    if (_txt.match(rgx.nbsp_char)) {      _txt  = _txt.replaceAll(rgx.nbsp_char, "\\hardspace ");    } @@ -367,7 +367,7 @@ string nbsp_char()(string _txt) @safe {  #+name: output_latex_shared  #+BEGIN_SRC d -string nbsp_char_to_space()(string _txt) @safe { +@safe string nbsp_char_to_space()(string _txt) {    if (_txt.match(rgx.nbsp_char)) {      _txt  = _txt.replaceAll(rgx.nbsp_char, " ");    } @@ -380,11 +380,11 @@ string nbsp_char_to_space()(string _txt) @safe {  #+name: output_latex_shared  #+BEGIN_SRC d -string links_and_images(O,M)( +@safe string links_and_images(O,M)(    string      _txt,    const    O  obj,             M  doc_matters, -) @safe { +) {    if (obj.has.inline_links) { // TODO some images do not have inline links ... image without link      string _width_adjust(string _width) {        if (_width.to!int > 300) { _width = "300"; } // will need to vary max with papersize & orientation @@ -432,9 +432,9 @@ string links_and_images(O,M)(  #+name: output_latex_shared  #+BEGIN_SRC d -string footnotes()( +@safe string footnotes()(    string      _txt, -) @safe { +) {    if (_txt.match(rgx.inline_notes_al_gen)) {      string _tex_note = q"┃\hypertarget{noteref_%s}{}\footnote[%s]{%%  \label{note_%s}%s}┃"; @@ -453,9 +453,9 @@ string footnotes()(  #+name: output_latex_shared  #+BEGIN_SRC d -string remove_footnotes()( +@safe string remove_footnotes()(    string      _txt, -) @safe { +) {    if (_txt.match(rgx.inline_notes_al_gen)) {      _txt = replaceAll!(m => "")(_txt, rgx.inline_notes_al_gen);    } @@ -468,10 +468,10 @@ string remove_footnotes()(  #+name: output_latex_shared  #+BEGIN_SRC d -string para(O)( +@safe string para(O)(    string      _txt,    O           obj, -) @safe { +) {    if (obj.metainfo.is_of_type == "para") {      string _tex_para;      _tex_para = q"┃\begin{tiny}\hspace{0mm}\end{tiny}{\marginpar{\begin{tiny}\hspace{0mm}\hypertarget{%s}{%s}\end{tiny}}}%s┃"; @@ -489,10 +489,10 @@ string para(O)(  #+name: output_latex_shared  #+BEGIN_SRC d -string bookindex(O)( +@safe string bookindex(O)(    string      _txt,    O           obj, -) @safe { +) {    if (obj.metainfo.is_of_type == "para"      && obj.metainfo.is_a == "bookindex"    ) { @@ -510,10 +510,10 @@ string bookindex(O)(  #+name: output_latex_head  #+BEGIN_SRC d -string bullets_and_indentation(O)( +@safe string bullets_and_indentation(O)(    string      _txt,    O           obj, -) @safe { +) {    string _tex_para;    string _hang; string _indent;    int _paper_margin = -10; @@ -555,12 +555,12 @@ string bullets_and_indentation(O)(  #+name: output_latex_shared_0  #+BEGIN_SRC d -  string heading(O,M)( +  @safe string heading(O,M)(      string      _txt,      O           obj,      M           doc_matters,      string      _part = "" -  ) @safe { +  ) {      if (obj.metainfo.is_a == "heading") {        string _tex_para;        string _pg_break; diff --git a/org/out_metadata.org b/org/out_metadata.org index e8da2c4..3208994 100644 --- a/org/out_metadata.org +++ b/org/out_metadata.org @@ -22,7 +22,7 @@  #+BEGIN_SRC d :tangle "../src/doc_reform/io_out/metadata.d"  module doc_reform.io_out.metadata;  template outputMetadata() { -  void outputMetadata(T)( T  doc_matters) @safe { +  @safe void outputMetadata(T)( T  doc_matters) {      <<output_imports>>  <<harvested_html_themes>>  <<harvested_topics_html_head_1>> @@ -235,7 +235,7 @@ metadata_write_output(doc_matters, metadata_);  #+name: output_metadata_write  #+BEGIN_SRC d -void metadata_write_output(M)(M doc_matters, string[] metadata_) @trusted { +@safe void metadata_write_output(M)(M doc_matters, string[] metadata_) {    auto pth_html = spinePathsHTML!()(doc_matters.output_path, doc_matters.src.language);    try {      if (!exists(pth_html.base)) { diff --git a/org/out_odt.org b/org/out_odt.org index e843a48..224f303 100644 --- a/org/out_odt.org +++ b/org/out_odt.org @@ -89,7 +89,7 @@ template outputODT() {  #+name: odt_format_objects  #+BEGIN_SRC d -string _tags(O)(const O obj) @safe { +@safe string _tags(O)(const O obj) {    string _tags = "";    if (obj.tags.anchor_tags.length > 0) {      foreach (tag_; obj.tags.anchor_tags) { @@ -113,7 +113,7 @@ string _tags(O)(const O obj) @safe {  #+name: odt_format_objects  #+BEGIN_SRC d -string _xhtml_anchor_tags(O)(O obj) @safe { +@safe string _xhtml_anchor_tags(O)(O obj) {    const(string[]) anchor_tags = obj.tags.anchor_tags;    string tags="";    if (anchor_tags.length > 0) { @@ -131,7 +131,7 @@ string _xhtml_anchor_tags(O)(O obj) @safe {  #+name: odt_format_objects  #+BEGIN_SRC d -string obj_num(O)(const O obj) @safe { // TODO +@safe string obj_num(O)(const O obj) { // TODO    string _on;    _on = (obj.metainfo.object_number.empty)    ? "" @@ -147,7 +147,7 @@ string obj_num(O)(const O obj) @safe { // TODO  #+name: odt_format_objects  #+begin_src d -string _footnotes()(string _txt) @safe { +@safe string _footnotes()(string _txt) {    static auto rgx = Rgx();    _txt = _txt.replaceAll(      rgx.inline_notes_al_regular_number_note, @@ -172,7 +172,7 @@ string _footnotes()(string _txt) @safe {  #+name: odt_format_objects  #+BEGIN_SRC d -string _bullet(O)(const O obj) @safe { +@safe string _bullet(O)(const O obj) {    string _b = "";    if (obj.attrib.bullet) {      _b = format(q"┃● ┃",); @@ -185,7 +185,7 @@ string _bullet(O)(const O obj) @safe {  #+name: odt_format_objects  #+BEGIN_SRC d -string _indent(O)(string _txt, const O obj) @safe { // TODO +@safe string _indent(O)(string _txt, const O obj) { // TODO    // if (obj.attrib.indent_base > 0 ||    //   obj.attrib.indent_hang > 0    // ) { @@ -299,7 +299,7 @@ string _indent(O)(string _txt, const O obj) @safe { // TODO  #+name: odt_format_objects  #+BEGIN_SRC d -string _block_type_delimiters(O)(string[] _block_lines, const O obj) @safe { // TODO +@safe string _block_type_delimiters(O)(string[] _block_lines, const O obj) { // TODO    string _block = "";    foreach (i, _line; _block_lines) {      _line = _footnotes(_line); @@ -340,7 +340,7 @@ string _block_type_delimiters(O)(string[] _block_lines, const O obj) @safe { //  #+name: odt_format_objects  #+BEGIN_SRC d -string _special_characters(O)(string _txt, const O obj) @safe { +@safe string _special_characters(O)(string _txt, const O obj) {    _txt = _txt      .replaceAll(rgx.xhtml_ampersand,    "&")      .replaceAll(rgx.xhtml_quotation,    """) @@ -355,7 +355,7 @@ string _special_characters(O)(string _txt, const O obj) @safe {  #+name: odt_format_objects  #+BEGIN_SRC d -string _preserve_white_spaces(O)(string _txt, const O obj) @safe { +@safe string _preserve_white_spaces(O)(string _txt, const O obj) {    if (obj.metainfo.is_a == "code" || obj.metainfo.is_a == "verse" || obj.metainfo.is_a == "block") {      _txt = _txt        .replaceAll(rgx.space,      " "); @@ -388,9 +388,9 @@ string _font_face(string _txt){  #+name: odt_format_objects  #+BEGIN_SRC d -auto _obj_num(O)(O obj) @safe { // NOT USED YET +@safe auto _obj_num(O)(O obj) { // NOT USED YET    struct objNum { -    string reference() @safe { +    @safe string reference() {        return format(q"┃<text:span text:style-name="Span_subscript">      <text:bookmark-start text:name="%s"/>      <text:bookmark-end text:name="%s"/> @@ -399,7 +399,7 @@ auto _obj_num(O)(O obj) @safe { // NOT USED YET          obj.object_number,        );      } -    string display() @safe { +    @safe string display() {        return format(q"┃<text:span text:style-name="Span_subscript">    %s%s%s    </text:span>┃", @@ -417,7 +417,7 @@ auto _obj_num(O)(O obj) @safe { // NOT USED YET  #+name: odt_format_objects  #+BEGIN_SRC d -string _break_page()() @safe { +@safe string _break_page()() {    return format(q"┃  <text:p text:style-name="P_normal_page_new"/>  ┃", @@ -426,7 +426,7 @@ string _break_page()() @safe {  #+END_SRC  #+BEGIN_SRC d -string _break_page()() @safe { +@safe string _break_page()() {    return format(q"┃  <text:p text:style-name="P_page_break"> </text:p>  <text:p text:style-name="P_normal_page_new"/>┃", @@ -438,7 +438,7 @@ string _break_page()() @safe {  #+name: odt_format_objects  #+BEGIN_SRC d -string _empty_line_break(O)(string _txt, const O obj) @safe { +@safe string _empty_line_break(O)(string _txt, const O obj) {    if (obj.metainfo.is_a == "code" || obj.metainfo.is_a == "verse" || obj.metainfo.is_a == "block") {      _txt = _txt        .replaceAll(rgx.br_empty_line,    "<br />"); @@ -451,7 +451,7 @@ string _empty_line_break(O)(string _txt, const O obj) @safe {  #+name: odt_format_objects  #+BEGIN_SRC d -string _links(O)(string _txt, const O obj) @safe { +@safe string _links(O)(string _txt, const O obj) {    if (obj.metainfo.is_a != "code") {      if (obj.metainfo.is_a == "toc") {        _txt = replaceAll!(m => @@ -497,7 +497,7 @@ string _links(O)(string _txt, const O obj) @safe {  #+name: odt_format_objects  #+BEGIN_SRC d -string _images(O)(string _txt, const O obj) @safe { +@safe string _images(O)(string _txt, const O obj) {    if (_txt.match(rgx.inline_image)) {      _txt = _txt        .replaceAll(rgx.inline_image, @@ -514,7 +514,7 @@ string _images(O)(string _txt, const O obj) @safe {  #+name: odt_format_objects  #+BEGIN_SRC d -string markup(O)(const O obj) @safe { +@safe string markup(O)(const O obj) {    /+ markup TODO +/    string _txt = obj.text;    _txt = _special_characters(_txt, obj);     // TODO & why both obj & obj.text, consider also in output_xmls.org @@ -536,10 +536,10 @@ string markup(O)(const O obj) @safe {  #+name: odt_format_objects  #+BEGIN_SRC d -string heading(O,M)( +@safe string heading(O,M)(    const        O  obj,    const        M  doc_matters, -) @safe { +) {    assert(obj.metainfo.is_of_part    == "body" || "frontmatter" || "backmatter");    assert(obj.metainfo.is_of_section == "body" || "toc" || "endnotes" || "glossary" || "bibliography" || "bookindex" || "blurb");    assert(obj.metainfo.is_of_type    == "para"); @@ -586,10 +586,10 @@ string heading(O,M)(  #+name: odt_format_objects  #+BEGIN_SRC d -string para(O,M)( +@safe string para(O,M)(    const        O  obj,    const        M  doc_matters, -) @safe { +) {    assert(obj.metainfo.is_of_part    == "body" || "frontmatter" || "backmatter");    assert(obj.metainfo.is_of_section == "body" || "toc" || "endnotes" || "glossary" || "bibliography" || "bookindex" || "blurb");    assert(obj.metainfo.is_of_type    == "para"); @@ -612,10 +612,10 @@ string para(O,M)(  #+name: odt_format_objects  #+BEGIN_SRC d -string quote(O,M)( +@safe string quote(O,M)(    const        O  obj,    const        M  doc_matters, -) @safe { +) {    assert(obj.metainfo.is_of_part    == "body");    assert(obj.metainfo.is_of_section == "body" || "glossary" || "bibliography" || "bookindex" || "blurb");    assert(obj.metainfo.is_of_type    == "block"); @@ -633,10 +633,10 @@ string quote(O,M)(  #+name: odt_format_objects  #+BEGIN_SRC d -string group(O,M)( +@safe string group(O,M)(    const        O  obj,    const        M  doc_matters, -) @safe { +) {    assert(obj.metainfo.is_of_part    == "body");    assert(obj.metainfo.is_of_section == "body" || "glossary" || "bibliography" || "bookindex" || "blurb");    assert(obj.metainfo.is_of_type    == "block"); @@ -668,10 +668,10 @@ string group(O,M)(  #+name: odt_format_objects  #+BEGIN_SRC d -string block(O,M)( +@safe string block(O,M)(    const        O  obj,    const        M  doc_matters, -) @safe { +) {    assert(obj.metainfo.is_of_part    == "body");    assert(obj.metainfo.is_of_section == "body" || "glossary" || "bibliography" || "bookindex" || "blurb");    assert(obj.metainfo.is_of_type    == "block"); @@ -691,10 +691,10 @@ string block(O,M)(  #+name: odt_format_objects  #+BEGIN_SRC d -string verse(O,M)( +@safe string verse(O,M)(    const        O  obj,    const        M  doc_matters, -) @safe { +) {    assert(obj.metainfo.is_of_part    == "body");    assert(obj.metainfo.is_of_section == "body" || "glossary" || "bibliography" || "bookindex" || "blurb");    assert(obj.metainfo.is_of_type    == "block"); @@ -710,10 +710,10 @@ string verse(O,M)(  #+name: odt_format_objects  #+BEGIN_SRC d -string code(O,M)( +@safe string code(O,M)(    const        O  obj,    const        M  doc_matters, -) @safe { +) {    assert(obj.metainfo.is_of_part    == "body");    assert(obj.metainfo.is_of_section == "body");    assert(obj.metainfo.is_of_type    == "block"); @@ -764,10 +764,10 @@ string code(O,M)(  #+name: odt_format_objects  #+BEGIN_SRC d -Tuple!(string, string) tablarize(O)( +@safe Tuple!(string, string) tablarize(O)(    const        O    obj,    string            _txt, -) @safe { +) {    string[] _table_rows = (_txt).split(rgx.table_delimiter_row);    string[] _table_cols;    string _table; @@ -805,10 +805,10 @@ Tuple!(string, string) tablarize(O)(  #+name: odt_format_objects  #+BEGIN_SRC d  int _table_number = 0; -string table(O,M)( +@safe string table(O,M)(    const        O  obj,    const        M  doc_matters, -) @safe { +) {    assert(obj.metainfo.is_of_part    == "body");    assert(obj.metainfo.is_of_section == "body");    assert(obj.metainfo.is_of_type    == "block"); @@ -1011,7 +1011,7 @@ void dirtree(I)(  #+name: output_odt_fixed_mimetype  #+BEGIN_SRC d -string mimetype() @safe { +@safe string mimetype() {    string mimetype_ = format(q"┃application/vnd.oasis.opendocument.text┃");    return mimetype_;  } @@ -1021,7 +1021,7 @@ string mimetype() @safe {  #+name: output_odt_fixed_manifest_rdf  #+BEGIN_SRC d -string manifest_rdf() @safe { +@safe string manifest_rdf() {    string _manifest_rdf = format(q"┃<?xml version="1.0" encoding="utf-8"?>  #+END_SRC @@ -1057,7 +1057,7 @@ string manifest_rdf() @safe {  #+name: output_odt_fixed_settings_xml  #+BEGIN_SRC d -string settings_xml() @safe { +@safe string settings_xml() {    string _settings_xml = format(q"┃<?xml version="1.0" encoding="UTF-8"?>  #+END_SRC @@ -1171,7 +1171,7 @@ string settings_xml() @safe {  #+name: output_odt_fixed_styles_xml  #+BEGIN_SRC d -string styles_xml() @safe { +@safe string styles_xml() {    string _styles_xml = format(q"┃<?xml version="1.0" encoding="UTF-8"?>  #+END_SRC @@ -2084,7 +2084,7 @@ string styles_xml() @safe {  #+name: output_odt_variable_content_xml  #+BEGIN_SRC d -string odt_head(I)(I doc_matters) @safe { +@safe string odt_head(I)(I doc_matters) {    string _has_tables = format(q"┃  #+END_SRC @@ -2223,10 +2223,10 @@ string odt_head(I)(I doc_matters) @safe {  #+name: output_odt_variable_content_xml  #+BEGIN_SRC d -string odt_body(D,I)( +@safe string odt_body(D,I)(    const D    doc_abstraction,          I    doc_matters, -) @safe { +) {    mixin formatODT;    auto odt_format = formatODT();    string delimit = ""; @@ -2390,7 +2390,7 @@ string odt_body(D,I)(  #+name: output_odt_variable_content_xml  #+BEGIN_SRC d -string odt_tail() @safe { +@safe string odt_tail() {    string _odt_tail = format(q"┃<text:p text:style-name="P_normal">spine: <<text:a xl:type="simple" xl:href="http://www.doc_reform.org">www.doc_reform.org</text:a>> and <<text:a xl:type="simple" xl:href="http://www.sisudoc.org">www.sisudoc.org</text:a>></text:p>  </office:text></office:body></office:document-content>┃",);    return _odt_tail; @@ -2401,10 +2401,10 @@ string odt_tail() @safe {  #+name: output_odt_variable_content_xml  #+BEGIN_SRC d -string content_xml(D,I)( +@safe string content_xml(D,I)(    const D    doc_abstraction,          I    doc_matters, -) @safe { +) {    string _content_xml;    string break_line = (doc_matters.opt.action.debug_do) ? "\n" : "";    string odt_break_page = format(q"┃<text:p text:style-name="P_normal_page_new"/>┃",); @@ -2422,9 +2422,9 @@ string content_xml(D,I)(  #+name: output_odt_variable_manifest_xml  #+BEGIN_SRC d -string manifest_xml(M)( +@safe string manifest_xml(M)(    auto ref              M    doc_matters, -) @safe { +) {    string _bullet = format(q"┃<manifest:file-entry manifest:media-type="" manifest:full-path="Pictures/bullet_09.png"/>┃");    string[] _images = [ _bullet ];    foreach (image; doc_matters.srcs.image_list) { @@ -2460,9 +2460,9 @@ _images.join("\n"),  #+name: output_odt_variable_meta_xml  #+BEGIN_SRC d -string meta_xml(M)( +@safe string meta_xml(M)(    auto ref              M    doc_matters, -) @safe { +) {    /+ (meta_xml includes output time-stamp) +/    string _meta_xml = format(q"┃<?xml version="1.0" encoding="UTF-8"?>  #+END_SRC @@ -2494,9 +2494,9 @@ doc_matters.generated_time,  #+name: output_odt_variable_copy_odt_images  #+BEGIN_SRC d -void images_cp(M)( +@safe void images_cp(M)(    auto ref              M    doc_matters, -) @safe { +) {    { /+ (copy odt images) +/      auto pth_odt = spinePathsODT!()(doc_matters);      foreach (image; doc_matters.srcs.image_list) { diff --git a/org/out_src_pod.org b/org/out_src_pod.org index fa0bedb..9f87629 100644 --- a/org/out_src_pod.org +++ b/org/out_src_pod.org @@ -78,7 +78,7 @@ assert (doc_matters.src.filename.match(rgx.src_fn));  #+name: source_pod_archive  #+BEGIN_SRC d -auto pod_archive(Z)( +@system auto pod_archive(Z)(    string _source_type,    string _data_in,    string _pth_out, diff --git a/org/out_xmls.org b/org/out_xmls.org index 9738c23..ed3c92a 100644 --- a/org/out_xmls.org +++ b/org/out_xmls.org @@ -58,10 +58,10 @@ import  #+name: xhtml_format_objects  #+BEGIN_SRC d -string div_delimit( +@safe string div_delimit(               string  part,    return ref string  previous_part -) @safe { +) {    string delimit = "";    string delimit_ = "";    if (part != previous_part) { @@ -94,7 +94,7 @@ string div_delimit(  #+name: xhtml_format_objects  #+BEGIN_SRC d -string special_characters_text(string _txt) @safe { +@safe string special_characters_text(string _txt) {    _txt = _txt      .replaceAll(rgx.xhtml_ampersand,    "&")      .replaceAll(rgx.xhtml_quotation,    """) @@ -109,9 +109,9 @@ string special_characters_text(string _txt) @safe {  #+name: xhtml_format_objects  #+BEGIN_SRC d -string special_characters(O)( +@safe string special_characters(O)(    const  O         obj, -) @safe { +) {    string _txt = special_characters_text(obj.text);    if (!(obj.metainfo.is_a == "code")) {      _txt = (_txt) @@ -125,7 +125,7 @@ string special_characters(O)(  #+name: xhtml_format_objects  #+BEGIN_SRC d -string font_face(string _txt) @safe { +@safe string font_face(string _txt) {    _txt = _txt      .replaceAll(rgx.inline_emphasis,    ("<em>$1</em>"))      .replaceAll(rgx.inline_bold,        ("<b>$1</b>")) @@ -145,7 +145,7 @@ string font_face(string _txt) @safe {  #+name: xhtml_format_objects  #+BEGIN_SRC d -string _xhtml_anchor_tags(O)(O obj) @safe { +@safe string _xhtml_anchor_tags(O)(O obj) {    const(string[]) anchor_tags = obj.tags.anchor_tags;    string tags="";    if (anchor_tags.length > 0) { @@ -164,9 +164,9 @@ string _xhtml_anchor_tags(O)(O obj) @safe {  #+name: xhtml_format_objects  #+BEGIN_SRC d -string header_metadata(M)( +@safe string header_metadata(M)(    M  doc_matters, -) @safe { +) {    string _publisher="Publisher"; // TODO    string o;    o = format(q"┃<!-- spine DocReform header metadata --> @@ -207,9 +207,9 @@ string header_metadata(M)(  #+name: xhtml_format_objects  #+BEGIN_SRC d -string site_info_button(M)( +@safe string site_info_button(M)(    M  doc_matters, -) @safe { +) {    string _locations;    if (doc_matters.conf_make_meta.make.home_button_text.length > 0) {      _locations = (doc_matters.conf_make_meta.make.home_button_text) @@ -237,9 +237,9 @@ string site_info_button(M)(  #+name: xhtml_format_objects  #+BEGIN_SRC d -string inline_search_form(M)( +@safe string inline_search_form(M)(    M  doc_matters, -) @safe { +) {    string _action="http://www.sisudoc.org/cgi-bin/search.cgi";    string _db="spine.7a.manual";    string o; @@ -274,7 +274,7 @@ string inline_search_form(M)(  #+name: xhtml_format_objects  #+BEGIN_SRC d -string html_head(M)( +@safe string html_head(M)(    M  doc_matters,    string type,  ) { @@ -330,9 +330,9 @@ string html_head(M)(  #+name: xhtml_format_objects  #+BEGIN_SRC d -string epub3_seg_head(M)( +@safe string epub3_seg_head(M)(    M  doc_matters, -) @safe { +) {    string html_base = format(q"┃<!DOCTYPE html>  <html>┃",  ); @@ -404,7 +404,7 @@ string epub3_seg_head(M)(  #+name: xhtml_format_objects  #+BEGIN_SRC d -string tail() @safe { +@safe string tail() {    string o;    o = format(q"┃    <a name="bottom" id="bottom"></a> @@ -420,13 +420,13 @@ string tail() @safe {  #+name: xhtml_format_objects  #+BEGIN_SRC d -string inline_images(O,M)( +@safe string inline_images(O,M)(    string          _txt,    const        O  obj,                 M  doc_matters,    string          _suffix    = ".html",    string          _xml_type = "seg", -) @safe { +) {    string _img_pth;    switch (_xml_type) {    case "epub":   _img_pth = "image/";                           break; @@ -453,13 +453,13 @@ string inline_images(O,M)(  #+name: xhtml_format_objects  #+BEGIN_SRC d -string inline_links(O,M)( +@safe string inline_links(O,M)(    string          _txt,    const        O  obj,                 M  doc_matters,    string         _suffix   = ".html",    string         _xml_type = "seg", -) @safe { +) {    string seg_lvs;    if (obj.has.inline_links) {      if  (obj.metainfo.is_a != "code") { @@ -551,11 +551,11 @@ string inline_links(O,M)(  #+name: xhtml_format_objects  #+BEGIN_SRC d -string inline_notes_scroll(O,M)( +@safe string inline_notes_scroll(O,M)(    string          _txt,    const        O  obj,                 M  doc_matters, -) @safe { +) {    if (obj.has.inline_notes_reg) {      _txt = font_face(_txt);      _txt = _txt.replaceAll( @@ -588,11 +588,11 @@ string inline_notes_scroll(O,M)(  #+name: xhtml_format_objects  #+BEGIN_SRC d -Tuple!(string, string[]) inline_notes_seg(O,M)( +@safe Tuple!(string, string[]) inline_notes_seg(O,M)(              string  _txt,    const     O       obj,              M       doc_matters, -) @safe { +) {    string[] _endnotes;    if (obj.has.inline_notes_star) {      _txt = font_face(_txt); @@ -659,12 +659,12 @@ Tuple!(string, string[]) inline_notes_seg(O,M)(  #+name: xhtml_format_objects  #+BEGIN_SRC d -string inline_markup_scroll(O,M)( +@safe string inline_markup_scroll(O,M)(    string          _txt,    const        O  obj,                 M  doc_matters,    string          _suffix = ".html", -) @safe { +) {    if (obj.metainfo.dummy_heading      && (obj.metainfo.is_a == "toc" || obj.metainfo.is_a == "heading")) {      _txt = ""; @@ -681,13 +681,13 @@ string inline_markup_scroll(O,M)(  #+name: xhtml_format_objects  #+BEGIN_SRC d -auto inline_markup_seg(O,M)( +@safe auto inline_markup_seg(O,M)(    string          _txt,    const        O  obj,                 M  doc_matters,    string          _suffix = ".html",    string          _xml_type = "seg", -) @safe { +) {    if (obj.metainfo.dummy_heading      && ((_xml_type == "epub"      && (obj.metainfo.is_a == "toc" || obj.metainfo.is_a == "heading")) @@ -708,10 +708,10 @@ auto inline_markup_seg(O,M)(  #+name: xhtml_format_objects  #+BEGIN_SRC d -string lev4_heading_subtoc(O,M)( +@safe string lev4_heading_subtoc(O,M)(    const        O  obj,                 M  doc_matters, -) @safe { +) {    char[] lev4_subtoc;    lev4_subtoc ~= "  <div class=\"nav\">\n";    foreach (subtoc; obj.tags.lev4_subtoc) { @@ -741,10 +741,10 @@ string lev4_heading_subtoc(O,M)(  #+name: xhtml_format_objects  #+BEGIN_SRC d -auto nav_pre_next_svg(O,M)( +@safe auto nav_pre_next_svg(O,M)(    const        O  obj,                 M  doc_matters, -) @safe { +) {    string prev, next, toc;    if (obj.tags.segment_anchor_tag_epub == "toc") {      toc = ""; @@ -824,12 +824,12 @@ auto nav_pre_next_svg(O,M)(  #+name: xhtml_format_objects  #+BEGIN_SRC d -string heading(O,M)( +@safe string heading(O,M)(          string _txt,    const O      obj,          M      doc_matters,    string            _xml_type = "html", -) @safe { +) {    assert(obj.metainfo.is_of_part    == "body" || "frontmatter" || "backmatter");    assert(obj.metainfo.is_of_section == "body" || "toc" || "endnotes" || "glossary" || "bibliography" || "bookindex" || "blurb");    assert(obj.metainfo.is_of_type    == "para"); @@ -895,12 +895,12 @@ string heading(O,M)(  #+name: xhtml_format_objects  #+BEGIN_SRC d -string heading_scroll(O,M)( +@safe string heading_scroll(O,M)(    string          _txt,    const        O  obj,                 M  doc_matters,    string          _suffix = ".html", -) @safe { +) {    _txt = inline_markup_scroll(_txt, obj, doc_matters, _suffix);    string o = heading(_txt, obj, doc_matters);    return o; @@ -911,13 +911,13 @@ string heading_scroll(O,M)(  #+name: xhtml_format_objects  #+BEGIN_SRC d -Tuple!(string, string[]) heading_seg(O,M)( +@safe Tuple!(string, string[]) heading_seg(O,M)(    string          _txt,    const        O  obj,                 M  doc_matters,    string          _suffix = ".html",    string          _xml_type = "html", -) @safe { +) {    auto t = inline_markup_seg(_txt, obj, doc_matters, _suffix, _xml_type);    _txt = t[0];    string[] _endnotes = t[1]; @@ -935,11 +935,11 @@ Tuple!(string, string[]) heading_seg(O,M)(  #+name: xhtml_format_objects  #+BEGIN_SRC d -string para(O,M)( +@safe string para(O,M)(          string _txt,    const O      obj,          M      doc_matters, -) @safe { +) {    assert(obj.metainfo.is_of_part    == "body" || "frontmatter" || "backmatter");    assert(obj.metainfo.is_of_section == "body" || "toc" || "endnotes" || "glossary" || "bibliography" || "bookindex" || "blurb");    assert(obj.metainfo.is_of_type    == "para"); @@ -991,12 +991,12 @@ string para(O,M)(  #+name: xhtml_format_objects  #+BEGIN_SRC d -string para_scroll(O,M)( +@safe string para_scroll(O,M)(    string          _txt,    const        O  obj,                 M  doc_matters,    string          _suffix = ".html", -) @safe { +) {    if (obj.metainfo.is_a == "toc" && _txt.match(rgx.inline_link_toc_to_backmatter)) {      _txt = _txt.replaceAll(rgx.inline_link_toc_to_backmatter, "┤#section_$1├");    } @@ -1010,13 +1010,13 @@ string para_scroll(O,M)(  #+name: xhtml_format_objects  #+BEGIN_SRC d -Tuple!(string, string[]) para_seg(O,M)( +@safe Tuple!(string, string[]) para_seg(O,M)(    string          _txt,    const        O  obj,                 M  doc_matters,    string          _suffix = ".html",    string          _xml_type = "html", -) @safe { +) {    auto t = inline_markup_seg(_txt, obj, doc_matters, _suffix, _xml_type);    _txt = t[0].to!string;    string[] _endnotes = t[1]; @@ -1034,11 +1034,11 @@ Tuple!(string, string[]) para_seg(O,M)(  #+name: xhtml_format_objects  #+BEGIN_SRC d -string quote(O,M)( +@safe string quote(O,M)(          string _txt,    const O      obj,          M      doc_matters, -) @safe { +) {    assert(obj.metainfo.is_of_part    == "body");    assert(obj.metainfo.is_of_section == "body" || "glossary" || "bibliography" || "bookindex" || "blurb");    assert(obj.metainfo.is_of_type    == "block"); @@ -1076,12 +1076,12 @@ string quote(O,M)(  #+name: xhtml_format_objects  #+BEGIN_SRC d -string quote_scroll(O,M)( +@safe string quote_scroll(O,M)(    string          _txt,    const        O  obj,                 M  doc_matters,    string          _suffix = ".html", -) @safe { +) {    _txt = inline_markup_scroll(_txt, obj, doc_matters, _suffix);    string o = quote(_txt, obj, doc_matters);    return o; @@ -1092,13 +1092,13 @@ string quote_scroll(O,M)(  #+name: xhtml_format_objects  #+BEGIN_SRC d -Tuple!(string, string[]) quote_seg(O,M)( +@safe Tuple!(string, string[]) quote_seg(O,M)(    string          _txt,    const        O  obj,                 M  doc_matters,    string          _suffix = ".html",    string          _xml_type = "html", -) @safe { +) {    auto t = inline_markup_seg(_txt, obj, doc_matters, _suffix, _xml_type);    _txt = t[0].to!string;    string[] _endnotes = t[1]; @@ -1116,11 +1116,11 @@ Tuple!(string, string[]) quote_seg(O,M)(  #+name: xhtml_format_objects  #+BEGIN_SRC d -string group(O,M)( +@safe string group(O,M)(          string _txt,    const O      obj,          M      doc_matters, -) @safe { +) {    assert(obj.metainfo.is_of_part    == "body");    assert(obj.metainfo.is_of_section == "body" || "glossary" || "bibliography" || "bookindex" || "blurb");    assert(obj.metainfo.is_of_type    == "block"); @@ -1158,13 +1158,13 @@ string group(O,M)(  #+name: xhtml_format_objects  #+BEGIN_SRC d -string group_scroll(O,M)( +@safe string group_scroll(O,M)(    string          _txt,    const        O  obj,                 M  doc_matters,    string          _suffix = ".html",    string          _xml_type = "html", -) @safe { +) {    _txt = inline_markup_scroll(_txt, obj, doc_matters, _suffix);    string o = group(_txt, obj, doc_matters);    return o; @@ -1175,13 +1175,13 @@ string group_scroll(O,M)(  #+name: xhtml_format_objects  #+BEGIN_SRC d -Tuple!(string, string[]) group_seg(O,M)( +@safe Tuple!(string, string[]) group_seg(O,M)(    string          _txt,    const        O  obj,                 M  doc_matters,    string          _suffix = ".html",    string          _xml_type = "html", -) @safe { +) {    auto t = inline_markup_seg(_txt, obj, doc_matters, _suffix, _xml_type);    _txt = t[0].to!string;    string[] _endnotes = t[1]; @@ -1199,11 +1199,11 @@ Tuple!(string, string[]) group_seg(O,M)(  #+name: xhtml_format_objects  #+BEGIN_SRC d -string block(O,M)( +@safe string block(O,M)(          string _txt,    const O      obj,          M      doc_matters, -) @safe { +) {    assert(obj.metainfo.is_of_part    == "body");    assert(obj.metainfo.is_of_section == "body" || "glossary" || "bibliography" || "bookindex" || "blurb");    assert(obj.metainfo.is_of_type    == "block"); @@ -1237,13 +1237,13 @@ string block(O,M)(  #+name: xhtml_format_objects  #+BEGIN_SRC d -string block_scroll(O,M)( +@safe string block_scroll(O,M)(    string          _txt,    const        O  obj,                 M  doc_matters,    string          _suffix = ".html",    string          _xml_type = "html", -) @safe { +) {    _txt = inline_markup_scroll(_txt, obj, doc_matters, _suffix);    string o = block(_txt, obj, doc_matters);    return o; @@ -1254,13 +1254,13 @@ string block_scroll(O,M)(  #+name: xhtml_format_objects  #+BEGIN_SRC d -Tuple!(string, string[]) block_seg(O,M)( +@safe Tuple!(string, string[]) block_seg(O,M)(    string          _txt,    const        O  obj,                 M  doc_matters,    string          _suffix = ".html",    string          _xml_type = "html", -) @safe { +) {    auto t = inline_markup_seg(_txt, obj, doc_matters, _suffix, _xml_type);    _txt = t[0].to!string;    string[] _endnotes = t[1]; @@ -1278,11 +1278,11 @@ Tuple!(string, string[]) block_seg(O,M)(  #+name: xhtml_format_objects  #+BEGIN_SRC d -string verse(O,M)( +@safe string verse(O,M)(          string _txt,    const O      obj,          M      doc_matters, -) @safe { +) {    assert(obj.metainfo.is_of_part    == "body");    assert(obj.metainfo.is_of_section == "body" || "glossary" || "bibliography" || "bookindex" || "blurb");    assert(obj.metainfo.is_of_type    == "block"); @@ -1316,13 +1316,13 @@ string verse(O,M)(  #+name: xhtml_format_objects  #+BEGIN_SRC d -string verse_scroll(O,M)( +@safe string verse_scroll(O,M)(    string          _txt,    const        O  obj,                 M  doc_matters,    string          _suffix = ".html",    string          _xml_type = "html", -) @safe { +) {    _txt = inline_markup_scroll(_txt, obj, doc_matters, _suffix);    string o = verse(_txt, obj, doc_matters);    return o; @@ -1333,13 +1333,13 @@ string verse_scroll(O,M)(  #+name: xhtml_format_objects  #+BEGIN_SRC d -Tuple!(string, string[]) verse_seg(O,M)( +@safe Tuple!(string, string[]) verse_seg(O,M)(    string          _txt,    const        O  obj,                 M  doc_matters,    string          _suffix = ".html",    string          _xml_type = "html", -) @safe { +) {    auto t = inline_markup_seg(_txt, obj, doc_matters, _suffix, _xml_type);    _txt = t[0].to!string;    string[] _endnotes = t[1]; @@ -1356,11 +1356,11 @@ Tuple!(string, string[]) verse_seg(O,M)(  #+name: xhtml_format_objects_code  #+BEGIN_SRC d -string code(O,M)( +@safe string code(O,M)(          string _txt,    const O      obj,          M      doc_matters, -) @safe { +) {    assert(obj.metainfo.is_of_part    == "body");    assert(obj.metainfo.is_of_section == "body");    assert(obj.metainfo.is_of_type    == "block"); @@ -1428,10 +1428,10 @@ align="left|right|center"  #+name: xhtml_format_objects  #+BEGIN_SRC d -Tuple!(string, string) tablarize(O)( +@safe Tuple!(string, string) tablarize(O)(    string            _txt,    const        O    obj, -) @safe { +) {    string[] _table_rows = (_txt).split(rgx.table_delimiter_row);    string[] _table_cols;    string _table; @@ -1467,11 +1467,11 @@ Tuple!(string, string) tablarize(O)(  #+name: xhtml_format_objects  #+BEGIN_SRC d -string table(O,M)( +@safe string table(O,M)(          string _txt,    const O      obj,          M      doc_matters, -) @safe { +) {    assert(obj.metainfo.is_of_part    == "body");    assert(obj.metainfo.is_of_section == "body");    assert(obj.metainfo.is_of_type    == "block"); @@ -1523,10 +1523,10 @@ template outputHTML() {  #+name: output_html_scroll  #+BEGIN_SRC d -void scroll(D,M)( +@safe void scroll(D,M)(    const        D    doc_abstraction,                 M    doc_matters, -) @safe { +) {    mixin spineOutputRgxInit;    auto xhtml_format = outputXHTMLs();    static auto rgx = Rgx(); @@ -1729,10 +1729,10 @@ void scroll(D,M)(  #+name: output_html_scroll  #+BEGIN_SRC d -void scroll_write_output(D,M)( +@trusted void scroll_write_output(D,M)(    D doc,    M doc_matters, -) @trusted { +) {    debug(asserts) {      static assert(is(typeof(doc)    == string[]));    } @@ -1759,10 +1759,10 @@ void scroll_write_output(D,M)(  #+name: output_html_seg  #+BEGIN_SRC d -void seg(D,M)( +@safe void seg(D,M)(    const D    doc_abstraction,          M    doc_matters, -) @safe { +) {    mixin spineOutputRgxInit;    static auto rgx = Rgx();    auto xhtml_format = outputXHTMLs(); @@ -2060,11 +2060,11 @@ void seg(D,M)(  #+name: output_html_seg  #+BEGIN_SRC d -void seg_write_output(D,E,M)( +@trusted void seg_write_output(D,E,M)( // @system?    D doc_html,    E doc_html_endnotes,    M doc_matters, -) @trusted { // @system? +) {    debug(asserts) {      static assert(is(typeof(doc_html)      == string[][string]));    } @@ -2100,7 +2100,7 @@ void seg_write_output(D,E,M)(  #+name: output_html_css  #+BEGIN_SRC d -void css(M)(M doc_matters) @safe { +@safe void css(M)(M doc_matters) {    auto css = spineCss(doc_matters);    auto pth_html = spinePathsHTML!()(doc_matters.output_path, doc_matters.src.language);    try { @@ -2121,9 +2121,9 @@ void css(M)(M doc_matters) @safe {  #+name: copy_html_images  #+BEGIN_SRC d -void images_cp(M)( +@trusted void images_cp(M)( // @system    M    doc_matters, -) @trusted { // @system +) {    { /+ (copy html images) +/      auto pth_html = spinePathsHTML!()(doc_matters.output_path, doc_matters.src.language); @@ -2190,7 +2190,7 @@ template outputEPub3() {  #+name: output_epub3_fixed  #+BEGIN_SRC d -string epub3_mimetypes() @safe { +@safe string epub3_mimetypes() {    string o;    o = format(q"┃application/epub+zip┃") ~ "\n";    return o; @@ -2203,7 +2203,7 @@ string epub3_mimetypes() @safe {  #+name: output_epub3_fixed  #+BEGIN_SRC d -string epub3_container_xml() @safe { +@safe string epub3_container_xml() {    string o;    o = format(q"┃<?xml version='1.0' encoding='utf-8'?>┃") ~ "\n";    o ~= format(q"┃<container version="1.0" @@ -2225,7 +2225,7 @@ xmlns="urn:oasis:names:tc:opendocument:xmlns:container">  #+name: output_epub3_constructs  #+BEGIN_SRC d -string epub3_oebps_content(D,M,P)(D doc_abstraction, M doc_matters, P parts) @safe { +@safe string epub3_oebps_content(D,M,P)(D doc_abstraction, M doc_matters, P parts) {    auto xhtml_format = outputXHTMLs();    auto pth_epub3 = spinePathsEPUB!()(doc_matters.output_path, doc_matters.src.language);    string _uuid = "18275d951861c77f78acd05672c9906924c59f18a2e0ba06dad95959693e9bd8"; // TODO sort uuid in doc_matters! @@ -2331,7 +2331,7 @@ string epub3_oebps_content(D,M,P)(D doc_abstraction, M doc_matters, P parts) @sa  #+name: output_epub3_constructs  #+BEGIN_SRC d -string epub3_oebps_toc_nav_xhtml(D,I)(D doc_abstraction, I doc_matters) @safe { +@safe string epub3_oebps_toc_nav_xhtml(D,I)(D doc_abstraction, I doc_matters) {    enum DomTags { none, open, close, close_and_open, open_still, }    auto markup = InlineMarkup();    static auto rgx = Rgx(); @@ -2419,7 +2419,7 @@ string epub3_oebps_toc_nav_xhtml(D,I)(D doc_abstraction, I doc_matters) @safe {  #+name: output_epub3_constructs  #+BEGIN_SRC d -string epub2_oebps_toc_ncx(D,I)(D doc_abstraction, I doc_matters) @safe { +@safe string epub2_oebps_toc_ncx(D,I)(D doc_abstraction, I doc_matters) {    int counter = 0;    string _uuid = "18275d951861c77f78acd05672c9906924c59f18a2e0ba06dad95959693e9bd8"; // TODO shared elsewhere    auto markup = InlineMarkup(); @@ -2515,10 +2515,10 @@ string epub2_oebps_toc_ncx(D,I)(D doc_abstraction, I doc_matters) @safe {  #+name: output_epub3_xhtml_seg  #+BEGIN_SRC d -void outputEPub3(D,I)( +@system void outputEPub3(D,I)(    const D    doc_abstraction,          I    doc_matters, -) { // @trusted +) {    mixin spineOutputRgxInit;    auto xhtml_format = outputXHTMLs();    static auto rgx = Rgx(); @@ -2872,10 +2872,10 @@ void outputEPub3(D,I)(  #+name: output_epub3_xhtml_seg  #+BEGIN_SRC d -void epub3_write_output_files(W,M)( +@system void epub3_write_output_files(W,M)(    W epub_write,    M doc_matters, -) { // @trusted +) {    debug(asserts) {      static assert(is(typeof(epub_write.doc_epub3)              == string[][string]));      static assert(is(typeof(epub_write.mimetypes)              == string)); diff --git a/org/out_xmls_css.org b/org/out_xmls_css.org index d827e30..b1f9a77 100644 --- a/org/out_xmls_css.org +++ b/org/out_xmls_css.org @@ -28,7 +28,7 @@  module doc_reform.io_out.xmls_css;  template spineCss() {    import std.format; -  auto spineCss(M)(M doc_matters) @safe { +  @safe auto spineCss(M)(M doc_matters) {  <<css_insert_shared_insert_variable_indent_values>>  <<css_insert_shared_insert_variable_ocn_color_values>>      string _css_light_html_seg = format(q"┃ @@ -79,7 +79,7 @@ template spineCss() {      _css_indent,      _color_ocn_dark,  ); -    auto css_() @safe { +    @safe auto css_() {        struct _CSS {          string html_seg    = "/* spine css html seg stylesheet */\n";          string html_scroll = "/* spine css html scroll stylesheet */\n"; diff --git a/org/out_zip.org b/org/out_zip.org index ef4b036..f8821ff 100644 --- a/org/out_zip.org +++ b/org/out_zip.org @@ -29,7 +29,7 @@ template createZipFile() {    import std.outbuffer;    import std.string;    import std.zip; -  void createZipFile( +  @safe void createZipFile(      string zip_file_name,      void[] compressed_zip_data,    ) { diff --git a/org/output_hub.org b/org/output_hub.org index aad6240..4f2d3e0 100644 --- a/org/output_hub.org +++ b/org/output_hub.org @@ -29,7 +29,10 @@ module doc_reform.io_out.hub;  template outputHub() {    <<output_imports>>    import std.parallelism; -  void outputHub(D,I)(const D doc_abstraction, I doc_matters) { +  @system void outputHub(D,I)( +    const D doc_abstraction, +    I doc_matters +  ) {      mixin spineOutputRgxInit;      mixin Msg;      auto msg = Msg!()(doc_matters); @@ -56,7 +59,7 @@ template outputHub() {  }  template outputHubOp() {    <<output_imports>> -  void outputHubOp(E,O)(E env, O opt_action) { +  @system void outputHubOp(E,O)(E env, O opt_action) {      mixin spineOutputRgxInit;      static auto rgx = Rgx();      <<output_options_op>> diff --git a/org/output_show.org b/org/output_show.org index 7ce14f2..951c88a 100644 --- a/org/output_show.org +++ b/org/output_show.org @@ -22,7 +22,7 @@  #+BEGIN_SRC d :tangle "../src/doc_reform/meta/metadoc_show_summary.d"  module doc_reform.meta.metadoc_show_summary;  template spineMetaDocSummary() { -  void spineMetaDocSummary(S,T)( +  @safe void spineMetaDocSummary(S,T)(      const S  doc_abstraction,            T  doc_matters,    ) { @@ -137,7 +137,7 @@ writefln(  #+BEGIN_SRC d :tangle "../src/doc_reform/meta/metadoc_show_config.d"  module doc_reform.meta.metadoc_show_config;  template spineShowConfig() { -  void spineShowConfig(T)( +  @safe void spineShowConfig(T)(      T  doc_matters,    ) {      <<metadoc_show_summary_imports>> @@ -239,7 +239,7 @@ writefln(  #+BEGIN_SRC d :tangle "../src/doc_reform/meta/metadoc_show_make.d"  module doc_reform.meta.metadoc_show_make;  template spineShowMake() { -  void spineShowMake(T)( +  @safe void spineShowMake(T)(      T  doc_matters,    ) {      <<metadoc_show_summary_imports>> @@ -310,7 +310,7 @@ writefln(  #+BEGIN_SRC d :tangle "../src/doc_reform/meta/metadoc_show_metadata.d"  module doc_reform.meta.metadoc_show_metadata;  template spineShowMetaData() { -  void spineShowMetaData(T)( +  @safe void spineShowMetaData(T)(      T  doc_matters,    ) {      <<metadoc_show_summary_imports>> diff --git a/org/spine.org b/org/spine.org index 27dfdc1..5c66ce6 100644 --- a/org/spine.org +++ b/org/spine.org @@ -85,7 +85,7 @@ name        "spine"  description "A SiSU inspired document parser writen in D."  homepage    "http://sisudoc.org"  +/ -void main(string[] args) { +@system void main(string[] args) {    <<spine_mixin>>    <<spine_init>>    <<spine_args>> @@ -458,16 +458,16 @@ if (helpInfo.helpWanted) {  #+BEGIN_SRC d  enum outTask { source_or_pod, sqlite, sqlite_multi, latex, odt, epub, html_scroll, html_seg, html_stuff }  struct OptActions { -  bool assertions() @trusted { +  @trusted bool assertions() {      return opts["assertions"];    } -  bool concordance() @trusted { +  @trusted bool concordance() {      return opts["concordance"];    }    auto config_path_set() {      return settings["config"];    } -  bool css_theme_default() @trusted { +  @trusted bool css_theme_default() {      bool _is_light;      if (opts["light"] || opts["theme-light"]) {        _is_light = true; @@ -478,94 +478,94 @@ struct OptActions {      }      return _is_light;    } -  bool debug_do() @trusted { +  @trusted bool debug_do() {      return opts["debug"];    } -  bool digest() @trusted { +  @trusted bool digest() {      return opts["digest"];    } -  bool epub() @trusted { +  @trusted bool epub() {      return opts["epub"];    } -  bool harvest_link() @trusted { +  @trusted bool harvest_link() {      return (opts["harvest-link"]) ? true : false;    } -  bool harvest() @trusted { +  @trusted bool harvest() {      return (opts["harvest"] || opts["harvest-authors"] || opts["harvest-topics"]) ? true : false;    } -  bool harvest_authors() @trusted { +  @trusted bool harvest_authors() {      return (opts["harvest"] || opts["harvest-authors"]) ? true : false;    } -  bool harvest_topics() @trusted { +  @trusted bool harvest_topics() {      return (opts["harvest"] || opts["harvest-topics"]) ? true : false;    } -  bool html() @trusted { +  @trusted bool html() {      return (opts["html"] || opts["html-seg"] || opts["html-scroll"]) ? true : false;    } -  bool html_seg() @trusted { +  @trusted bool html_seg() {      return (opts["html"] || opts["html-seg"]) ? true : false;    } -  bool html_scroll() @trusted { +  @trusted bool html_scroll() {      return (opts["html"] || opts["html-scroll"]) ? true : false;    } -  bool html_stuff() @trusted { +  @trusted bool html_stuff() {      return (opts["html"] || opts["html-scroll"] || opts["html-seg"]) ? true : false;    } -  bool latex() @trusted { +  @trusted bool latex() {      return (opts["latex"] || opts["pdf"]) ? true : false;    } -  bool odt() @trusted { +  @trusted bool odt() {      return (opts["odf"] || opts["odt"]) ? true : false;    } -  bool manifest() @trusted { +  @trusted bool manifest() {      return opts["manifest"];    } -  bool ocn_hidden() @trusted { +  @trusted bool ocn_hidden() {      return opts["hide-ocn"];    } -  bool ocn_off() @trusted { +  @trusted bool ocn_off() {      return opts["ocn-off"];    } -  bool quiet() @trusted { +  @trusted bool quiet() {      return opts["quiet"];    } -  bool pod() @trusted { +  @trusted bool pod() {      return opts["pod"];    } -  bool show_summary() @trusted { +  @trusted bool show_summary() {      return opts["show-summary"];    } -  bool show_make() @trusted { +  @trusted bool show_make() {      return opts["show-make"];    } -  bool show_metadata() @trusted { +  @trusted bool show_metadata() {      return opts["show-metadata"];    } -  bool show_config() @trusted { +  @trusted bool show_config() {      return opts["show-config"];    } -  bool source() @trusted { +  @trusted bool source() {      return opts["source"];    } -  bool source_or_pod() @trusted { +  @trusted bool source_or_pod() {      return (opts["pod"] || opts["source"]) ? true : false;    } -  bool sqlite_discrete() @trusted { +  @trusted bool sqlite_discrete() {      return opts["sqlite-discrete"];    } -  bool sqlite_db_drop() @trusted { +  @trusted bool sqlite_db_drop() {      return (opts["sqlite-db-recreate"] || opts["sqlite-db-drop"]) ? true : false;    } -  bool sqlite_db_create() @trusted { +  @trusted bool sqlite_db_create() {      return (opts["sqlite-db-recreate"] || opts["sqlite-db-create"]) ? true : false;    } -  bool sqlite_delete() @trusted { +  @trusted bool sqlite_delete() {      return opts["sqlite-delete"];    } -  bool sqlite_update() @trusted { +  @trusted bool sqlite_update() {      return (opts["sqlite-update"] || opts["sqlite-insert"]) ? true : false;    } -  bool sqlite_shared_db_action() @trusted { +  @trusted bool sqlite_shared_db_action() {      return (        opts["sqlite-db-recreate"]        || opts["sqlite-db-create"] @@ -574,46 +574,46 @@ struct OptActions {        || opts["sqlite-update"]      ) ? true : false;    } -  bool text() @trusted { +  @trusted bool text() {      return opts["text"];    } -  bool verbose() @trusted { +  @trusted bool verbose() {      return (opts["verbose"] || opts["very-verbose"]) ? true : false;    } -  bool very_verbose() @trusted { +  @trusted bool very_verbose() {      return opts["very-verbose"];    } -  bool xhtml() @trusted { +  @trusted bool xhtml() {      return opts["xhtml"];    } -  bool section_toc() @trusted { +  @trusted bool section_toc() {      return opts["section_toc"];    } -  bool section_body() @trusted { +  @trusted bool section_body() {      return opts["section_body"];    } -  bool section_endnotes() @trusted { +  @trusted bool section_endnotes() {      return opts["section_endnotes"];    } -  bool section_glossary() @trusted { +  @trusted bool section_glossary() {      return opts["section_glossary"];    } -  bool section_biblio() @trusted { +  @trusted bool section_biblio() {      return opts["section_biblio"];    } -  bool section_bookindex() @trusted { +  @trusted bool section_bookindex() {      return opts["section_bookindex"];    } -  bool section_blurb() @trusted { +  @trusted bool section_blurb() {      return opts["section_blurb"];    } -  bool backmatter() @trusted { +  @trusted bool backmatter() {      return opts["backmatter"];    } -  bool skip_output() @trusted { +  @trusted bool skip_output() {      return opts["skip-output"];    } -  bool workon() @trusted { +  @trusted bool workon() {      return opts["workon"];    }    auto languages_set() { @@ -625,7 +625,7 @@ struct OptActions {    auto sqlite_filename() {      return settings["sqlite-filename"];    } -  bool parallelise() @trusted { +  @trusted bool parallelise() {      bool _is;      if (opts["parallel"] == true) {        _is = true; @@ -649,7 +649,7 @@ struct OptActions {      } else { _is = false; }      return _is;    } -  bool parallelise_subprocesses() @trusted { +  @trusted bool parallelise_subprocesses() {      return opts["parallel-subprocesses"];    }    auto output_task_scheduler() { @@ -680,7 +680,7 @@ struct OptActions {      }      return schedule.sort().uniq;    } -  bool abstraction() @trusted { +  @trusted bool abstraction() {      return (        opts["abstraction"]        || concordance @@ -696,7 +696,7 @@ struct OptActions {        || sqlite_update      ) ? true : false;    } -  bool meta_processing_general() @trusted { +  @trusted bool meta_processing_general() {      return (        opts["abstraction"]        || html @@ -707,7 +707,7 @@ struct OptActions {        || sqlite_update      ) ? true :false;    } -  bool meta_processing_xml_dom() @trusted { +  @trusted bool meta_processing_xml_dom() {      return (        opts["abstraction"]        || html @@ -726,20 +726,20 @@ auto _opt_action = OptActions();  #+NAME: spine_args  #+BEGIN_SRC d -auto program_info() { +@safe auto program_info() {    struct ProgramInfo { -    string project() { +    @safe string project() {        return project_name;      } -    string name() { +    @safe string name() {        return program_name;      } -    string ver() { +    @safe string ver() {        return format("%s.%s.%s",          _ver.major, _ver.minor, _ver.patch,        );      } -    string compiler() { +    @safe string compiler() {        return format ("%s D:%s, %s %s",          __VENDOR__, __VERSION__,          bits, os, @@ -1168,7 +1168,7 @@ template spineAbstraction() {    enum makeMeta { make, meta }    enum docAbst  { doc_abstract_obj, doc_has }    static auto rgx = Rgx(); -  auto spineAbstraction(E,P,O,M,S)( +  @system auto spineAbstraction(E,P,O,M,S)(      E _env,      P program_info,      O _opt_action, @@ -1339,39 +1339,39 @@ struct DocumentMatters {  #+NAME: spine_each_file_do_document_matters  #+BEGIN_SRC d -  auto generator_program() { +  @safe auto generator_program() {      struct Prog_ { -      string project_name() { +      @safe string project_name() {          return "spine";        } -      string name() { +      @safe string name() {          return program_info.name;        } -      string ver() { +      @safe string ver() {          return program_info.ver;        } -      string name_and_version() @trusted { +      @trusted string name_and_version() {          return format("%s-%s",            name,            ver,          );        } -      string url_home() { +      @safe string url_home() {          return "http://sisudoc.org";        } -      string url_git() { +      @safe string url_git() {          return "https://git.sisudoc.org/software/sisu";        } -      auto compiler() { +      @safe auto compiler() {          return program_info.compiler;        } -      auto stime() { +      @safe auto stime() {          return Clock.currTime(UTC()).toSimpleString();        }      }      return Prog_();    } -  auto generated_time() { +  @safe auto generated_time() {      auto _st = Clock.currTime(UTC());      auto _time = _st.year.to!string        ~ "-" ~ _st.month.to!int.to!string // prefer as month number @@ -1388,10 +1388,10 @@ struct DocumentMatters {  #+NAME: spine_each_file_do_document_matters  #+BEGIN_SRC d -  auto conf_make_meta() { +  @safe auto conf_make_meta() {      return _make_and_meta_struct;    } -  auto has() { +  @safe auto has() {      return _doc_has_struct;    }  #+END_SRC @@ -1400,12 +1400,12 @@ struct DocumentMatters {  #+NAME: spine_each_file_do_document_matters  #+BEGIN_SRC d -  auto env() { +  @safe auto env() {      struct Env_ { -      auto pwd() { +      @safe auto pwd() {          return _manifest.env.pwd;        } -      auto home() { +      @safe auto home() {          return _manifest.env.home;        }      } @@ -1417,9 +1417,9 @@ struct DocumentMatters {  #+NAME: spine_each_file_do_document_matters  #+BEGIN_SRC d -  auto opt() { +  @safe auto opt() {      struct Opt_ { -      auto action() { +      @safe auto action() {          /+ getopt options, commandline instructions, raw           - processing instructions --epub --html etc.           - command line config instructions --output-path @@ -1435,27 +1435,27 @@ struct DocumentMatters {  #+NAME: spine_each_file_do_document_matters  #+BEGIN_SRC d -  auto src() { +  @safe auto src() {      return _manifest.src;    } -  auto src_path_info() { +  @safe auto src_path_info() {      return spinePathsSRC!()(_manifest.env.pwd, _manifest.src.file_with_absolute_path); // would like (to have and use) relative path    } -  auto pod() { +  @safe auto pod() {      return _manifest.pod;    } -  auto sqlite() { +  @safe auto sqlite() {      struct SQLite_ { -      string filename() { +      @safe string filename() {          return _opt_action.sqlite_filename;        }      }      return SQLite_();    } -  auto output_path() { +  @safe auto output_path() {      return _make_and_meta_struct.conf.output_path;    } -  auto srcs() { +  @safe auto srcs() {      struct SRC_ {        auto file_insert_list() {          return _header_body_insertfilelist_imagelist[headBody.insert_file_list]; @@ -1487,72 +1487,6 @@ if ((_opt_action.debug_do)  }  #+END_SRC -**** H. abridged doc matters, for harvest (from doc head only, doc abstraction not performed) -- harvest abridged doc matters gathered -***** doc matters shared - -#+NAME: spine_each_file_do_document_matters_abridged -#+BEGIN_SRC d -if ((_opt_action.debug_do) -|| (_opt_action.verbose) -) { -  writeln("step4 commence → (doc_matters)"); -} -struct DocumentMattersShared { -  auto env() { -    struct Env_ { -      auto pwd() { -        return _manifest.env.pwd; -      } -      auto home() { -        return _manifest.env.home; -      } -    } -    return Env_(); -  } -  auto opt() { -    struct Opt_ { -      auto action() { -        return _opt_action; -      } -    } -    return Opt_(); -  } -} -DocumentMattersShared doc_matters_shared = DocumentMattersShared(); -#+END_SRC - -***** abridged doc matters, for harvest (from doc head only, doc abstraction not performed) TODO - -#+NAME: spine_each_file_do_document_matters_abridged -#+BEGIN_SRC d -struct DocumentMattersAbridged { -  auto conf_make_meta() { -    return _make_and_meta_struct; -  } -  auto src() { -    return _manifest.src; -  } -  auto src_path_info() { -    return spinePathsSRC!()(_manifest.env.pwd, _manifest.src.file_with_absolute_path); -  } -  auto pod() { -    return _manifest.pod; -  } -  auto sqlite() { -    struct SQLite_ { -      string filename() { -        return _opt_action.sqlite_filename; -      } -    } -    return SQLite_(); -  } -  auto output_path() { -    return _make_and_meta_struct.conf.output_path; -  } -} -#+END_SRC -  * __END__  dev notes | 
