From 90873fabd7451e1dd8c4b39303906e19bdc481f7 Mon Sep 17 00:00:00 2001 From: Ralph Amissah Date: Wed, 10 Apr 2024 22:24:34 -0400 Subject: 0.16.0 sisudoc (src/sisudoc sisudoc spine) - src/sisudoc (replaces src/doc_reform) - sisudoc spine (used more) --- src/sisudoc/meta/metadoc_curate_authors.d | 530 ++++++++++++++++++++++++++++++ 1 file changed, 530 insertions(+) create mode 100644 src/sisudoc/meta/metadoc_curate_authors.d (limited to 'src/sisudoc/meta/metadoc_curate_authors.d') diff --git a/src/sisudoc/meta/metadoc_curate_authors.d b/src/sisudoc/meta/metadoc_curate_authors.d new file mode 100644 index 0000000..cb2b1db --- /dev/null +++ b/src/sisudoc/meta/metadoc_curate_authors.d @@ -0,0 +1,530 @@ +/+ +- Name: SisuDoc Spine, Doc Reform [a part of] + - Description: documents, structuring, processing, publishing, search + - static content generator + + - Author: Ralph Amissah + [ralph.amissah@gmail.com] + + - Copyright: (C) 2015 - 2024 Ralph Amissah, All Rights Reserved. + + - License: AGPL 3 or later: + + Spine (SiSU), a framework for document structuring, publishing and + search + + Copyright (C) Ralph Amissah + + This program is free software: you can redistribute it and/or modify it + under the terms of the GNU AFERO General Public License as published by the + Free Software Foundation, either version 3 of the License, or (at your + option) any later version. + + This program is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + more details. + + You should have received a copy of the GNU General Public License along with + this program. If not, see [https://www.gnu.org/licenses/]. + + If you have Internet connection, the latest version of the AGPL should be + available at these locations: + [https://www.fsf.org/licensing/licenses/agpl.html] + [https://www.gnu.org/licenses/agpl.html] + + - Spine (by Doc Reform, related to SiSU) uses standard: + - docReform markup syntax + - standard SiSU markup syntax with modified headers and minor modifications + - docReform object numbering + - standard SiSU object citation numbering & system + + - Homepages: + [https://www.sisudoc.org] + [https://www.doc-reform.org] + + - Git + [https://git.sisudoc.org/] + ++/ +module sisudoc.meta.metadoc_curate_authors; +@safe: + import + std.algorithm, + std.array, + std.exception, + std.regex, + std.stdio, + std.string, + std.conv : to; + import + sisudoc.meta.defaults, + sisudoc.meta.rgx; + mixin spineCurateMetadata; + mixin InternalMarkup; +template spineMetaDocCuratesAuthors() { + static auto mkup = InlineMarkup(); + void spineMetaDocCuratesAuthors(H,M,O)( + H curates, + M _make_and_meta_struct, + O _opt_action, + ) { + string inline_search_form(M)( + M _make_and_meta_truct, + ) { + string o; + string _form; + if (_opt_action.html_link_search) { + o = format(q"┃ +
+ + + +
┃", + _make_and_meta_struct.conf.w_srv_cgi_action, + (_make_and_meta_struct.conf.w_srv_db_sqlite_filename.empty) + ? "" + : "\n ", + ); + } else { + o = ""; + } + return o; + } +string theme_dark_0 = format(q"┃ + body { + color : #CCCCCC; + background : #000000; + background-color : #000000; + } + a:link { + color : #FFFFFF; + text-decoration : none; + } + a:visited { + color : #999999; + text-decoration : none; + } + a:hover { + color : #000000; + background-color : #555555; + } + a:hover img { + background-color : #000000; + } + a:active { + color : #888888; + text-decoration : underline; + } + a.lev0:hover { + color : #FFFFFF; + background-color : #000000; + } + a.lev1:hover { + color : #FFFFFF; + background : #333333; + } + a.lev2:hover { + color : #FFFFFF; + background : #555555; + } + a.lev3:hover { + color : #FFFFFF; + background : #777777; + } + a.lnkicon:link { + text-decoration : none; + } + a.lnkicon:visited { + text-decoration : none; + } + a.lnkicon:hover { + font-size : 160%%; + } + a:hover img { + background-color : #FFFFFF; + } + input, select, textarea { + font-size : 150%%; + } + input { + color : #FFFFFF; + background-color : #777777; + } +┃"); +string theme_light_0 = format(q"┃ + body { + color : #000000; + background : #FFFFFF; + background-color : #FFFFFF; + } + a:link { + color : #003399; + text-decoration : none; + } + a:visited { + color : #003399; + text-decoration : none; + } + a:hover { + color : #000000; + background-color : #f9f9aa; + } + a:hover img { + background-color : #FFFFFF; + } + a:active { + color : #003399; + text-decoration : underline; + } + a.lev0:hover { + color : #000000; + background-color : #FFFFFF; + } + a.lev1:hover { + color : #FFFFFF; + background : #444444; + } + a.lev2:hover { + background : #888888; + } + a.lev3:hover { + background : #BBBBBB; + } + a.lnkicon:link { + text-decoration : none; + } + a.lnkicon:visited { + text-decoration : none; + } + a.lnkicon:hover { + font-size : 160%%; + } + a:hover img { + background-color : #FFFFFF; + } + input, select, textarea { + font-size : 150%%; + } + input { + color : #000000; + background-color : #FFFFFF; + } +┃"); +string theme_dark_1 = format(q"┃ + h1 { + color : #FFFFFF; + background : #000000; + } + p.letter { + color : #FFFFFF; + background : #333333; + } + p.lev0 { + color : #FFFFFF; + background : #000000; + } + p.lev1 { + color : #FFFFFF; + background : #333333; + } + p.lev2 { + background : #555555; + } + p.lev3 { + background : #777777; + } + p.lev4 { + background : #AAAAAA; + } + p.lev5 { + } +┃"); +string theme_light_1 = format(q"┃ + h1 { + color : #FFFFFF; + background : #1A3A7A; + } + p.letter { + color : #FFFFFF; + background : #1A3A7A; + } + p.lev0 { + color : #FFFFFF; + background : #000000; + } + p.lev1 { + color : #FFFFFF; + background : #444444; + } + p.lev2 { + background : #888888; + } + p.lev3 { + background : #BBBBBB; + } + p.lev4 { + background : #EEEEEE; + } + p.lev5 { + } +┃"); + string[] authors = []; + authors ~= format(q"┃ + + + + +⌘ Curated metadata - 🖋 Authors + + + + + + + + + + + + + +

⌘ Curated metadata - 🖋 Authors (output organised by language & filetype)

+
+ +%s +
+

+
+

ABCDEFGHIJKLMNOPQRSTUVWXYZ,  +┃", + _opt_action.css_theme_default ? theme_light_0 : theme_dark_0, + _opt_action.css_theme_default ? theme_light_1 : theme_dark_1, + inline_search_form(_make_and_meta_struct), +) ~ "\n"; + string[string] _au; + string[] _auth_date_title; + string[] _author_date_title; + string _prev_auth = ""; + char _prev_k = "_".to!char; + foreach(doc_curate; + curates + .multiSort!( + "toUpper(a.author_surname_fn) < toUpper(b.author_surname_fn)", + "a.date_published < b.date_published", + "a.title < b.title", + SwapStrategy.unstable + ) + ) { + if (doc_curate.author_surname_fn != _prev_auth) { + _au[doc_curate.author_surname_fn] + = format(q"┃

%s

%s "%s" [ %s ]

┃", + doc_curate.author_surname.translate([' ' : "_"]), + doc_curate.author_surname_fn, + (doc_curate.date_published.length > 0) + ? doc_curate.date_published : "", + doc_curate.path_html_segtoc, + doc_curate.title, + doc_curate.path_html_metadata, + doc_curate.language, + ); + _prev_auth = doc_curate.author_surname_fn; + } else { + _au[doc_curate.author_surname_fn] + ~= format(q"┃

%s "%s" [ %s ]

┃", + (doc_curate.date_published.length > 0) + ? doc_curate.date_published : "", + doc_curate.path_html_segtoc, + doc_curate.title, + doc_curate.path_html_metadata, + doc_curate.language, + ); + } + _author_date_title ~= format(q"┃%s %s "%s" [ %s ]%s┃", + doc_curate.author_surname_fn, + (doc_curate.date_published.length > 0) + ? "(" ~ doc_curate.date_published ~ ")" : "", + doc_curate.title, + doc_curate.path_html_metadata, + doc_curate.language, + (_opt_action.show_curate_authors) ? "\n " ~ doc_curate.path_abs_html_scroll : "", + ); + } + foreach (k; _au.keys.sort) { + if (k.toUpper.to!(char[])[0] != _prev_k) { + authors ~= format(q"┃

%s

┃", + k.toUpper.to!(char[])[0], + k.toUpper.to!(char[])[0], + ); + _prev_k = k.toUpper.to!(char[])[0]; + } + authors ~= _au[k]; + } + authors + ~= format(q"┃ +
+ + + + + + + + +┃") ~ "\n"; + import sisudoc.io_out.paths_output; + auto out_pth = spinePathsHTML!()(_make_and_meta_struct.conf.output_path, ""); + try { + auto f = File(out_pth.curate("authors.html"), "w"); + foreach (o; authors) { + f.writeln(o); + } + } catch (ErrnoException ex) { + // Handle error + } + if (_opt_action.show_curate_authors) { + foreach(_adt; _author_date_title.sort) { + writeln(_adt); + } + } + } +} -- cgit v1.2.3