aboutsummaryrefslogtreecommitdiffhomepage
path: root/org
diff options
context:
space:
mode:
Diffstat (limited to 'org')
-rw-r--r--org/cgi_spine_search.org33
-rw-r--r--org/config_git.org2
-rw-r--r--org/config_make.org32
-rw-r--r--org/meta_conf_make_meta.org9
-rw-r--r--org/out_cgi_search_sqlite.org1074
-rw-r--r--org/out_latex.org420
-rw-r--r--org/out_sqlite.org172
-rw-r--r--org/out_src_pod.org7
-rw-r--r--org/out_xmls.org9
-rw-r--r--org/spine.org256
-rw-r--r--org/spine_info.org470
-rw-r--r--org/util_cgi_d_sqlite_search.org1000
-rw-r--r--org/util_cgi_rb_fcgi_sqlite_search.org916
-rw-r--r--org/util_spine_markup_conversion_from_sisu.org8
-rw-r--r--org/util_spine_syntax_highlighting_emacs.org6
-rw-r--r--org/util_spine_syntax_highlighting_vim.org20
16 files changed, 2326 insertions, 2108 deletions
diff --git a/org/cgi_spine_search.org b/org/cgi_spine_search.org
index 75d0ca1..a7265bd 100644
--- a/org/cgi_spine_search.org
+++ b/org/cgi_spine_search.org
@@ -140,7 +140,7 @@ void cgi_function_intro(Cgi cgi) {
<<spine_search_format_html_header>>
}
{
-<<spine_search_format_html_table>>
+ <<spine_search_format_html_table>>
}
{
string post_value(string field_name, string type="box", string set="on") {
@@ -757,21 +757,21 @@ return _previous_next;
#+NAME: spine_search_format_html_table
#+BEGIN_SRC d
- table = format(q"┃
- <table summary="band" border="0" cellpadding="2" cellspacing="0">
- <tr><td width="20%%">
- <table summary="home button / home information" border="0" cellpadding="2" cellspacing="0">
- <tr><td align="left">
- %s
- </td></tr>
- </table>
- </td>
- <td>
- </td></tr>
- </table>
- ┃",
- conf.cgi_search_form_html_title,
- );
+ table = format(q"┃
+<table summary="band" border="0" cellpadding="2" cellspacing="0">
+<tr><td width="20%%">
+ <table summary="home button / home information" border="0" cellpadding="2" cellspacing="0">
+ <tr><td align="left">
+ %s
+ </td></tr>
+ </table>
+</td>
+<td>
+</td></tr>
+</table>
+ ┃",
+ conf.cgi_search_form_html_title,
+ );
#+END_SRC
**** post_value(string field_name, string type="box", string set="on") {}
@@ -1235,7 +1235,6 @@ if (!select_query_results.empty) {
}
}
cgi.write( previous_next);
-
} else { // offset_not_beyond_limit = false;
cgi.write("select_query_results empty<p>\n");
}
diff --git a/org/config_git.org b/org/config_git.org
index 12bc0ce..a67cacd 100644
--- a/org/config_git.org
+++ b/org/config_git.org
@@ -25,6 +25,7 @@
,*
!.gitignore
!README.md
+!README
!COPYRIGHT
!CHANGELOG
!makefile
@@ -109,6 +110,7 @@ tmp/**
,*
!.gitignore
!README.md
+!README
!COPYRIGHT
!CHANGELOG
!makefile
diff --git a/org/config_make.org b/org/config_make.org
index e7aaeab..256e4e9 100644
--- a/org/config_make.org
+++ b/org/config_make.org
@@ -581,14 +581,14 @@ skel:
mkdir -p build; \
mkdir -p views; \
mkdir -p data; \
- mkdir -p sundry/util/d/cgi/search/cgi-bin/src; \
- mkdir -p sundry/util/d/tools/markup_conversion; \
- mkdir -p sundry/editor-syntax-etc/emacs; \
- mkdir -p sundry/editor-syntax-etc/vim/syntax; \
- mkdir -p sundry/editor-syntax-etc/vim/colors; \
- mkdir -p sundry/editor-syntax-etc/vim/ftplugin; \
- mkdir -p sundry/editor-syntax-etc/vim/rc; \
- mkdir -p sundry/editor-syntax-etc/vim/templates; \
+ mkdir -p sundry/misc/util/d/cgi/search/cgi-bin/src; \
+ mkdir -p sundry/misc/util/d/tools/markup_conversion; \
+ mkdir -p sundry/misc/editor-syntax-etc/emacs; \
+ mkdir -p sundry/misc/editor-syntax-etc/vim/syntax; \
+ mkdir -p sundry/misc/editor-syntax-etc/vim/colors; \
+ mkdir -p sundry/misc/editor-syntax-etc/vim/ftplugin; \
+ mkdir -p sundry/misc/editor-syntax-etc/vim/rc; \
+ mkdir -p sundry/misc/editor-syntax-etc/vim/templates; \
mkdir -p $(PRG_SRCDIR)/$(PRG_NAME_DIR)/conf; \
mkdir -p $(PRG_SRCDIR)/$(PRG_NAME_DIR)/io_in; \
mkdir -p $(PRG_SRCDIR)/$(PRG_NAME_DIR)/io_out; \
@@ -616,14 +616,14 @@ expunge:
distclean: expunge
distclean_and_init: expunge
mkdir -p views; \
- mkdir -p sundry/util/d/cgi/search/cgi-bin/src; \
- mkdir -p sundry/util/d/tools/markup_conversion; \
- mkdir -p sundry/editor-syntax-etc/emacs; \
- mkdir -p sundry/editor-syntax-etc/vim/syntax; \
- mkdir -p sundry/editor-syntax-etc/vim/colors; \
- mkdir -p sundry/editor-syntax-etc/vim/ftplugin; \
- mkdir -p sundry/editor-syntax-etc/vim/rc; \
- mkdir -p sundry/editor-syntax-etc/vim/templates; \
+ mkdir -p sundry/misc/util/d/cgi/search/cgi-bin/src; \
+ mkdir -p sundry/misc/util/d/tools/markup_conversion; \
+ mkdir -p sundry/misc/editor-syntax-etc/emacs; \
+ mkdir -p sundry/misc/editor-syntax-etc/vim/syntax; \
+ mkdir -p sundry/misc/editor-syntax-etc/vim/colors; \
+ mkdir -p sundry/misc/editor-syntax-etc/vim/ftplugin; \
+ mkdir -p sundry/misc/editor-syntax-etc/vim/rc; \
+ mkdir -p sundry/misc/editor-syntax-etc/vim/templates; \
mkdir -p $(PRG_SRCDIR)/$(PRG_NAME_DIR); \
mkdir -p $(PRG_BINDIR);
#+END_SRC
diff --git a/org/meta_conf_make_meta.org b/org/meta_conf_make_meta.org
index 118219e..31a4bd4 100644
--- a/org/meta_conf_make_meta.org
+++ b/org/meta_conf_make_meta.org
@@ -580,6 +580,8 @@ template contentYAMLtoSpineStruct() {
return _struct_composite;
}
}
+<<parse_yaml_return_spineStruct>>
+<<doc_header_convert_to_struct>>
#+END_SRC
** conf
@@ -1295,7 +1297,6 @@ if ("make" in _yaml
_struct_composite.make.substitute = _mk.substitute(_struct_composite.make_str.substitute);
_struct_composite.make.texpdf_font = _mk.texpdf_font(_struct_composite.make_str.texpdf_font);
}
-
#+END_SRC
** meta
@@ -2347,9 +2348,8 @@ if ("rights" in _json.object) {
** 1. parse Yaml config return spineStruct
-#+HEADER: :tangle "../src/doc_reform/meta/conf_make_meta_yaml.d"
+#+NAME: parse_yaml_return_spineStruct
#+BEGIN_SRC d
-<<doc_header_including_copyright_and_license>>
template configParseYAMLreturnSpineStruct() {
import dyaml;
import
@@ -2387,9 +2387,8 @@ template configParseYAMLreturnSpineStruct() {
** 2. parse YAML header to +(JSON then)+ Struct
-#+HEADER: :tangle "../src/doc_reform/meta/conf_make_meta_yaml.d"
+#+NAME: doc_header_convert_to_struct
#+BEGIN_SRC d
-<<doc_header_including_copyright_and_license>>
template docHeaderMakeAndMetaTupYamlExtractAndConvertToStruct() {
import
std.exception,
diff --git a/org/out_cgi_search_sqlite.org b/org/out_cgi_search_sqlite.org
index f65b1b7..cc58bfc 100644
--- a/org/out_cgi_search_sqlite.org
+++ b/org/out_cgi_search_sqlite.org
@@ -102,34 +102,34 @@ void cgi_function_intro(Cgi cgi) {
<<cgi_sqlite_initialize_cgi_val>>
cv.db_selected = "%s";
<<cgi_sqlite_initialize_text>>
- <<cgi_sqlite_initialize_rgx>>
- <<cgi_sqlite_initialize_fields>>
- <<cgi_sqlite_initialize_env_0>>
- <<cgi_sqlite_initialize_env_1>>
+ <<cgi_sqlite_initialize_rgx>>
+ <<cgi_sqlite_initialize_fields>>
+ <<cgi_sqlite_initialize_env_0>>
+ <<cgi_sqlite_initialize_env_1>>
<<cgi_sqlite_initialize_tail>>
<<cgi_sqlite_initialize_sql_select>>
<<cgi_sqlite_initialize_canned_url>>
<<cgi_sqlite_initialize_regex_for_canned_search>>
<<cgi_sqlite_initialize_show_matched_objects>>
<<cgi_sqlite_initialize_previous_next>>
-<<cgi_sqlite_header_0>>
+ <<cgi_sqlite_header_0>>
<<cgi_sqlite_header_1>>
<<cgi_sqlite_header_2>>
<<cgi_sqlite_table>>
-<<cgi_sqlite_form_0>>
-<<cgi_sqlite_form_1>>
+ <<cgi_sqlite_form_0>>
+ <<cgi_sqlite_form_1>>
<<cgi_sqlite_form_2>>
<<cgi_sqlite_form_3>>
"%s",
-<<cgi_sqlite_form_post_0>>
-<<cgi_sqlite_form_post_1>>
+ <<cgi_sqlite_form_post_0>>
+ <<cgi_sqlite_form_post_1>>
<<cgi_sqlite_write>>
<<cgi_sqlite_set_db>>
<<cgi_sqlite_select_statement_0>>
<<cgi_sqlite_select_statement_1>>
-<<cgi_sqlite_select_statement_2>>
-<<cgi_sqlite_select_statement_3>>
-<<cgi_sqlite_select_statement_4>>
+ <<cgi_sqlite_select_statement_2>>
+ <<cgi_sqlite_select_statement_3>>
+ <<cgi_sqlite_select_statement_4>>
<<cgi_sqlite_select_statement_5>>
<<cgi_sqlite_db_close>>
<<cgi_sqlite_db_tail>>
@@ -350,77 +350,77 @@ auto text_fields() {
#+NAME: cgi_sqlite_initialize_rgx
#+BEGIN_SRC d
- static struct Rgx {
- // static canned_query = ctRegex!(`\A(?P<matched>.+)\Z`, "m");
- static search_text_area = ctRegex!(`\A(?P<matched>.+)\Z`, "m");
- // static fulltext = ctRegex!(`\A(?P<matched>.+)\Z`, "m");
- static line = ctRegex!(`^(?P<matched>.+?)(?: ~|$)`, "m");
- static text = ctRegex!(`(?:^|\s~\s*)text:\s+(?P<matched>.+?)(?: ~|$)`, "m");
- static author = ctRegex!(`(?:^|\s~\s*)author:\s+(?P<matched>.+)$`, "m");
- static title = ctRegex!(`(?:^|\s~\s*)title:\s+(?P<matched>.+)$`, "m");
- static uid = ctRegex!(`(?:^|\s~\s*)uid:\s+(?P<matched>.+)$`, "m");
- static fn = ctRegex!(`(?:^|\s~\s*)fn:\s+(?P<matched>.+)$`, "m");
- static keywords = ctRegex!(`(?:^|\s~\s*)keywords:\s+(?P<matched>.+)$`, "m");
- static topic_register = ctRegex!(`(?:^|\s~\s*)topic_register:\s+(?P<matched>.+)$`, "m");
- static subject = ctRegex!(`(?:^|\s~\s*)subject:\s+(?P<matched>.+)$`, "m");
- static description = ctRegex!(`(?:^|\s~\s*)description:\s+(?P<matched>.+)$`, "m");
- static publisher = ctRegex!(`(?:^|\s~\s*)publisher:\s+(?P<matched>.+)$`, "m");
- static editor = ctRegex!(`(?:^|\s~\s*)editor:\s+(?P<matched>.+)$`, "m");
- static contributor = ctRegex!(`(?:^|\s~\s*)contributor:\s+(?P<matched>.+)$`, "m");
- static date = ctRegex!(`(?:^|\s~\s*)date:\s+(?P<matched>.+)$`, "m");
- static results_type = ctRegex!(`(?:^|\s~\s*)type:\s+(?P<matched>.+)$`, "m");
- static format = ctRegex!(`(?:^|\s~\s*)format:\s+(?P<matched>.+)$`, "m");
- static source = ctRegex!(`(?:^|\s~\s*)source:\s+(?P<matched>.+)$`, "m");
- static language = ctRegex!(`(?:^|\s~\s*)language:\s+(?P<matched>.+)$`, "m");
- static relation = ctRegex!(`(?:^|\s~\s*)relation:\s+(?P<matched>.+)$`, "m");
- static coverage = ctRegex!(`(?:^|\s~\s*)coverage:\s+(?P<matched>.+)$`, "m");
- static rights = ctRegex!(`(?:^|\s~\s*)rights:\s+(?P<matched>.+)$`, "m");
- static comment = ctRegex!(`(?:^|\s~\s*)comment:\s+(?P<matched>.+)$`, "m");
- // static abstract_ = ctRegex!(`(?:^|\s~\s*)abstract:\s+(?P<matched>.+)$`, "m");
- static src_filename_base = ctRegex!(`^src_filename_base:\s+(?P<matched>.+)$`, "m");
- }
+static struct Rgx {
+ // static canned_query = ctRegex!(`\A(?P<matched>.+)\Z`, "m");
+ static search_text_area = ctRegex!(`\A(?P<matched>.+)\Z`, "m");
+ // static fulltext = ctRegex!(`\A(?P<matched>.+)\Z`, "m");
+ static line = ctRegex!(`^(?P<matched>.+?)(?: ~|$)`, "m");
+ static text = ctRegex!(`(?:^|\s~\s*)text:\s+(?P<matched>.+?)(?: ~|$)`, "m");
+ static author = ctRegex!(`(?:^|\s~\s*)author:\s+(?P<matched>.+)$`, "m");
+ static title = ctRegex!(`(?:^|\s~\s*)title:\s+(?P<matched>.+)$`, "m");
+ static uid = ctRegex!(`(?:^|\s~\s*)uid:\s+(?P<matched>.+)$`, "m");
+ static fn = ctRegex!(`(?:^|\s~\s*)fn:\s+(?P<matched>.+)$`, "m");
+ static keywords = ctRegex!(`(?:^|\s~\s*)keywords:\s+(?P<matched>.+)$`, "m");
+ static topic_register = ctRegex!(`(?:^|\s~\s*)topic_register:\s+(?P<matched>.+)$`, "m");
+ static subject = ctRegex!(`(?:^|\s~\s*)subject:\s+(?P<matched>.+)$`, "m");
+ static description = ctRegex!(`(?:^|\s~\s*)description:\s+(?P<matched>.+)$`, "m");
+ static publisher = ctRegex!(`(?:^|\s~\s*)publisher:\s+(?P<matched>.+)$`, "m");
+ static editor = ctRegex!(`(?:^|\s~\s*)editor:\s+(?P<matched>.+)$`, "m");
+ static contributor = ctRegex!(`(?:^|\s~\s*)contributor:\s+(?P<matched>.+)$`, "m");
+ static date = ctRegex!(`(?:^|\s~\s*)date:\s+(?P<matched>.+)$`, "m");
+ static results_type = ctRegex!(`(?:^|\s~\s*)type:\s+(?P<matched>.+)$`, "m");
+ static format = ctRegex!(`(?:^|\s~\s*)format:\s+(?P<matched>.+)$`, "m");
+ static source = ctRegex!(`(?:^|\s~\s*)source:\s+(?P<matched>.+)$`, "m");
+ static language = ctRegex!(`(?:^|\s~\s*)language:\s+(?P<matched>.+)$`, "m");
+ static relation = ctRegex!(`(?:^|\s~\s*)relation:\s+(?P<matched>.+)$`, "m");
+ static coverage = ctRegex!(`(?:^|\s~\s*)coverage:\s+(?P<matched>.+)$`, "m");
+ static rights = ctRegex!(`(?:^|\s~\s*)rights:\s+(?P<matched>.+)$`, "m");
+ static comment = ctRegex!(`(?:^|\s~\s*)comment:\s+(?P<matched>.+)$`, "m");
+ // static abstract_ = ctRegex!(`(?:^|\s~\s*)abstract:\s+(?P<matched>.+)$`, "m");
+ static src_filename_base = ctRegex!(`^src_filename_base:\s+(?P<matched>.+)$`, "m");
+}
#+END_SRC
***** searchfields
#+NAME: cgi_sqlite_initialize_fields
#+BEGIN_SRC d
- struct searchFields {
- string canned_query = ""; // GET canned_query == cq
- string search_text_area = ""; // POST search_text_area == tsa
- string text = ""; // text == txt
- string author = ""; // author == au
- string title = ""; // title == ti
- string uid = ""; // uid == uid
- string fn = ""; // fn == fn
- string keywords = ""; // keywords == kw
- string topic_register = ""; // topic_register == tr
- string subject = ""; // subject == su
- string description = ""; // description == de
- string publisher = ""; // publisher == pb
- string editor = ""; // editor == ed
- string contributor = ""; // contributor == ct
- string date = ""; // date == dt
- string format = ""; // format == fmt
- string source = ""; // source == src sfn
- string language = ""; // language == lng
- string relation = ""; // relation == rl
- string coverage = ""; // coverage == cv
- string rights = ""; // rights == rgt
- string comment = ""; // comment == cmt
- // string abstract = "";
- string src_filename_base = ""; // src_filename_base == bfn
- string results_type = ""; // results_type == rt radio
- string sql_match_limit = ""; // sql_match_limit == sml radio
- string sql_match_offset = ""; // sql_match_offset == smo
- string stats = ""; // stats == sts checked
- string echo = ""; // echo == ec checked
- string url = ""; // url == url checked
- string searched = ""; // searched == se checked
- string sql = ""; // sql == sql checked
- }
- auto rgx = Rgx();
- auto got = searchFields();
+struct searchFields {
+ string canned_query = ""; // GET canned_query == cq
+ string search_text_area = ""; // POST search_text_area == tsa
+ string text = ""; // text == txt
+ string author = ""; // author == au
+ string title = ""; // title == ti
+ string uid = ""; // uid == uid
+ string fn = ""; // fn == fn
+ string keywords = ""; // keywords == kw
+ string topic_register = ""; // topic_register == tr
+ string subject = ""; // subject == su
+ string description = ""; // description == de
+ string publisher = ""; // publisher == pb
+ string editor = ""; // editor == ed
+ string contributor = ""; // contributor == ct
+ string date = ""; // date == dt
+ string format = ""; // format == fmt
+ string source = ""; // source == src sfn
+ string language = ""; // language == lng
+ string relation = ""; // relation == rl
+ string coverage = ""; // coverage == cv
+ string rights = ""; // rights == rgt
+ string comment = ""; // comment == cmt
+ // string abstract = "";
+ string src_filename_base = ""; // src_filename_base == bfn
+ string results_type = ""; // results_type == rt radio
+ string sql_match_limit = ""; // sql_match_limit == sml radio
+ string sql_match_offset = ""; // sql_match_offset == smo
+ string stats = ""; // stats == sts checked
+ string echo = ""; // echo == ec checked
+ string url = ""; // url == url checked
+ string searched = ""; // searched == se checked
+ string sql = ""; // sql == sql checked
+}
+auto rgx = Rgx();
+auto got = searchFields();
#+END_SRC
***** env
@@ -428,258 +428,258 @@ auto text_fields() {
#+NAME: cgi_sqlite_initialize_env_0
#+BEGIN_SRC d
- if (environment.get("REQUEST_METHOD", "POST") == "POST") {
- if ("sf" in cgi.post) {
- got.search_text_area = cgi.post["sf"];
- if (auto m = got.search_text_area.matchFirst(rgx.text)) {
+if (environment.get("REQUEST_METHOD", "POST") == "POST") {
+ if ("sf" in cgi.post) {
+ got.search_text_area = cgi.post["sf"];
+ if (auto m = got.search_text_area.matchFirst(rgx.text)) {
+ got.text = m["matched"];
+ got.canned_query ~= "sf=" ~ m["matched"];
+ } else if (auto m = got.search_text_area.matchFirst(rgx.line)) {
+ if (
+ !(m["matched"].matchFirst(rgx.author))
+ && !(m["matched"].matchFirst(rgx.title))
+ ) {
got.text = m["matched"];
got.canned_query ~= "sf=" ~ m["matched"];
- } else if (auto m = got.search_text_area.matchFirst(rgx.line)) {
- if (
- !(m["matched"].matchFirst(rgx.author))
- && !(m["matched"].matchFirst(rgx.title))
- ) {
- got.text = m["matched"];
- got.canned_query ~= "sf=" ~ m["matched"];
- }
- }
- if (auto m = got.search_text_area.matchFirst(rgx.author)) {
- got.author = m["matched"];
- got.canned_query ~= "&au=" ~ m["matched"];
- }
- if (auto m = got.search_text_area.matchFirst(rgx.title)) {
- got.title = m["matched"];
- got.canned_query ~= "&ti=" ~ m["matched"];
- }
- if (auto m = got.search_text_area.matchFirst(rgx.uid)) {
- got.uid = m["matched"];
- got.canned_query ~= "&uid=" ~ m["matched"];
- }
- if (auto m = got.search_text_area.matchFirst(rgx.fn)) {
- got.fn = m["matched"];
- got.canned_query ~= "&fn=" ~ m["matched"];
- } else if ("fn" in cgi.post) {
- got.search_text_area ~= "\nfn: " ~ cgi.post["fn"] ~ "\n";
- }
- if (auto m = got.search_text_area.matchFirst(rgx.keywords)) {
- got.keywords = m["matched"];
- got.canned_query ~= "&kw=" ~ m["matched"];
- }
- if (auto m = got.search_text_area.matchFirst(rgx.topic_register)) {
- got.topic_register = m["matched"];
- got.canned_query ~= "&tr=" ~ m["matched"];
- }
- if (auto m = got.search_text_area.matchFirst(rgx.subject)) {
- got.subject = m["matched"];
- got.canned_query ~= "&su=" ~ m["matched"];
- }
- if (auto m = got.search_text_area.matchFirst(rgx.description)) {
- got.description = m["matched"];
- got.canned_query ~= "&de=" ~ m["matched"];
- }
- if (auto m = got.search_text_area.matchFirst(rgx.publisher)) {
- got.publisher = m["matched"];
- got.canned_query ~= "&pb=" ~ m["matched"];
- }
- if (auto m = got.search_text_area.matchFirst(rgx.editor)) {
- got.editor = m["matched"];
- got.canned_query ~= "&ed=" ~ m["matched"];
- }
- if (auto m = got.search_text_area.matchFirst(rgx.contributor)) {
- got.contributor = m["matched"];
- got.canned_query ~= "&ct=" ~ m["matched"];
- }
- if (auto m = got.search_text_area.matchFirst(rgx.date)) {
- got.date = m["matched"];
- got.canned_query ~= "&dt=" ~ m["matched"];
- }
- // if (auto m = got.search_text_area.matchFirst(rgx.results_type)) {
- // got.results_type = m["matched"];
- // got.canned_query ~= "&rt=" ~ m["matched"];
- // }
- if (auto m = got.search_text_area.matchFirst(rgx.format)) {
- got.format = m["matched"];
- got.canned_query ~= "&fmt=" ~ m["matched"];
- }
- if (auto m = got.search_text_area.matchFirst(rgx.source)) {
- got.source = m["matched"];
- got.canned_query ~= "&src=" ~ m["matched"];
- }
- if (auto m = got.search_text_area.matchFirst(rgx.language)) {
- got.language = m["matched"];
- got.canned_query ~= "&lng=" ~ m["matched"];
- }
- if (auto m = got.search_text_area.matchFirst(rgx.relation)) {
- got.relation = m["matched"];
- got.canned_query ~= "&rl=" ~ m["matched"];
- }
- if (auto m = got.search_text_area.matchFirst(rgx.coverage)) {
- got.coverage = m["matched"];
- got.canned_query ~= "&cv=" ~ m["matched"];
- }
- if (auto m = got.search_text_area.matchFirst(rgx.rights)) {
- got.rights = m["matched"];
- got.canned_query ~= "&rgt=" ~ m["matched"];
- }
- if (auto m = got.search_text_area.matchFirst(rgx.comment)) {
- got.comment = m["matched"];
- got.canned_query ~= "&cmt=" ~ m["matched"];
- }
- // if (auto m = search_text_area.matchFirst(rgx.abstract)) {
- // got.abstract = m["matched"];
- // }
- if (auto m = got.search_text_area.matchFirst(rgx.src_filename_base)) {
- got.src_filename_base = m["matched"];
- got.canned_query ~= "&bfn=" ~ m["matched"];
}
}
- if ("fn" in cgi.post) {
- got.fn = cgi.post["fn"];
- got.canned_query ~= "&fn=" ~ cgi.post["fn"];
+ if (auto m = got.search_text_area.matchFirst(rgx.author)) {
+ got.author = m["matched"];
+ got.canned_query ~= "&au=" ~ m["matched"];
}
- if ("rt" in cgi.post) {
- got.results_type = cgi.post["rt"];
- got.canned_query ~= "&rt=" ~ cgi.post["rt"];
+ if (auto m = got.search_text_area.matchFirst(rgx.title)) {
+ got.title = m["matched"];
+ got.canned_query ~= "&ti=" ~ m["matched"];
}
- if ("sts" in cgi.post) {
- got.stats = cgi.post["sts"];
- got.canned_query ~= "&sts=" ~ cgi.post["sts"];
+ if (auto m = got.search_text_area.matchFirst(rgx.uid)) {
+ got.uid = m["matched"];
+ got.canned_query ~= "&uid=" ~ m["matched"];
}
- if ("ec" in cgi.post) {
- got.echo = cgi.post["ec"];
- got.canned_query ~= "&ec=" ~ cgi.post["ec"];
+ if (auto m = got.search_text_area.matchFirst(rgx.fn)) {
+ got.fn = m["matched"];
+ got.canned_query ~= "&fn=" ~ m["matched"];
+ } else if ("fn" in cgi.post) {
+ got.search_text_area ~= "\nfn: " ~ cgi.post["fn"] ~ "\n";
}
- if ("url" in cgi.post) {
- got.url = cgi.post["url"];
- got.canned_query ~= "&url=" ~ cgi.post["url"];
+ if (auto m = got.search_text_area.matchFirst(rgx.keywords)) {
+ got.keywords = m["matched"];
+ got.canned_query ~= "&kw=" ~ m["matched"];
}
- if ("se" in cgi.post) {
- got.searched = cgi.post["se"];
- got.canned_query ~= "&se=" ~ cgi.post["se"];
+ if (auto m = got.search_text_area.matchFirst(rgx.topic_register)) {
+ got.topic_register = m["matched"];
+ got.canned_query ~= "&tr=" ~ m["matched"];
}
- if ("sql" in cgi.post) {
- got.sql = cgi.post["sql"];
- got.canned_query ~= "&sql=" ~ cgi.post["sql"];
+ if (auto m = got.search_text_area.matchFirst(rgx.subject)) {
+ got.subject = m["matched"];
+ got.canned_query ~= "&su=" ~ m["matched"];
}
- if ("sml" in cgi.post) {
- got.sql_match_limit = cgi.post["sml"];
- got.canned_query ~= "&sml=" ~ cgi.post["sml"];
+ if (auto m = got.search_text_area.matchFirst(rgx.description)) {
+ got.description = m["matched"];
+ got.canned_query ~= "&de=" ~ m["matched"];
}
- if ("smo" in cgi.post) {
- got.sql_match_offset = "0"; // cgi.post["smo"];
- got.canned_query ~= "&smo=0"; // ~ cgi.post["smo"];
+ if (auto m = got.search_text_area.matchFirst(rgx.publisher)) {
+ got.publisher = m["matched"];
+ got.canned_query ~= "&pb=" ~ m["matched"];
}
- got.canned_query = got.canned_query.strip.split(" ").join("%%20");
- conf.query_string = got.canned_query;
- // cgi.write("f.canned_query: " ~ got.canned_query ~ "<br>");
-#+END_SRC
-
-****** GET
-
-#+NAME: cgi_sqlite_initialize_env_1
-#+BEGIN_SRC d
- } else if (environment.get("REQUEST_METHOD", "POST") == "GET") {
- got.canned_query = environment.get("QUERY_STRING", "");
- // cgi.write("f.canned_query: " ~ got.canned_query ~ "<br>");
- got.search_text_area = "";
- if ("sf" in canned_query && !(canned_query["sf"]).empty) {
- got.text = canned_query["sf"].split("%%20").join(" ");
- got.search_text_area ~= "text: " ~ got.text ~ "\n";
- }
- if ("au" in canned_query && !(canned_query["au"]).empty) {
- got.author = canned_query["au"].split("%%20").join(" ");
- got.search_text_area ~= "author: " ~ got.author ~ "\n";
- }
- if ("ti" in canned_query && !(canned_query["ti"]).empty) {
- got.title = canned_query["ti"].split("%%20").join(" ");
- got.search_text_area ~= "title: " ~ got.title ~ "\n";
- }
- if ("uid" in canned_query && !(canned_query["uid"]).empty) {
- got.uid = canned_query["uid"].split("%%20").join(" ");
- got.search_text_area ~= "uid: " ~ got.uid ~ "\n";
- }
- if ("fn" in canned_query && !(canned_query["fn"]).empty) {
- got.fn = canned_query["fn"].split("%%20").join(" ");
- got.search_text_area ~= "fn: " ~ got.fn ~ "\n";
- }
- if ("kw" in canned_query && !(canned_query["kw"]).empty) {
- got.keywords = canned_query["kw"].split("%%20").join(" ");
- got.search_text_area ~= "keywords: " ~ got.keywords ~ "\n";
- }
- if ("tr" in canned_query && !(canned_query["tr"]).empty) {
- got.topic_register = canned_query["tr"].split("%%20").join(" ");
- got.search_text_area ~= "topic_register: " ~ got.topic_register ~ "\n";
- }
- if ("su" in canned_query && !(canned_query["su"]).empty) {
- got.subject = canned_query["su"].split("%%20").join(" ");
- got.search_text_area ~= "subject: " ~ got.subject ~ "\n";
+ if (auto m = got.search_text_area.matchFirst(rgx.editor)) {
+ got.editor = m["matched"];
+ got.canned_query ~= "&ed=" ~ m["matched"];
}
- if ("de" in canned_query && !(canned_query["de"]).empty) {
- got.description = canned_query["de"].split("%%20").join(" ");
- got.search_text_area ~= "description: " ~ got.description ~ "\n";
+ if (auto m = got.search_text_area.matchFirst(rgx.contributor)) {
+ got.contributor = m["matched"];
+ got.canned_query ~= "&ct=" ~ m["matched"];
}
- if ("pb" in canned_query && !(canned_query["pb"]).empty) {
- got.publisher = canned_query["pb"].split("%%20").join(" ");
- got.search_text_area ~= "publisher: " ~ got.publisher ~ "\n";
+ if (auto m = got.search_text_area.matchFirst(rgx.date)) {
+ got.date = m["matched"];
+ got.canned_query ~= "&dt=" ~ m["matched"];
}
- if ("ed" in canned_query && !(canned_query["ed"]).empty) {
- got.editor = canned_query["ed"].split("%%20").join(" ");
- got.search_text_area ~= "editor: " ~ got.editor ~ "\n";
- }
- if ("ct" in canned_query && !(canned_query["ct"]).empty) {
- got.contributor = canned_query["ct"].split("%%20").join(" ");
- got.search_text_area ~= "contributor: " ~ got.contributor ~ "\n";
- }
- if ("dt" in canned_query && !(canned_query["dt"]).empty) {
- got.date = canned_query["dt"].split("%%20").join(" ");
- got.search_text_area ~= "date: " ~ got.date ~ "\n";
- }
- if ("rt" in canned_query && !(canned_query["rt"]).empty) {
- got.results_type = canned_query["rt"].split("%%20").join(" ");
- // got.search_text_area ~= "results_type: " ~ got.results_type ~ "\n";
- }
- if ("fmt" in canned_query && !(canned_query["fmt"]).empty) {
- got.format = canned_query["fmt"].split("%%20").join(" ");
- got.search_text_area ~= "format: " ~ got.format ~ "\n";
+ // if (auto m = got.search_text_area.matchFirst(rgx.results_type)) {
+ // got.results_type = m["matched"];
+ // got.canned_query ~= "&rt=" ~ m["matched"];
+ // }
+ if (auto m = got.search_text_area.matchFirst(rgx.format)) {
+ got.format = m["matched"];
+ got.canned_query ~= "&fmt=" ~ m["matched"];
}
- if ("src" in canned_query && !(canned_query["src"]).empty) {
- got.source = canned_query["src"].split("%%20").join(" ");
- got.search_text_area ~= "source: " ~ got.source ~ "\n";
+ if (auto m = got.search_text_area.matchFirst(rgx.source)) {
+ got.source = m["matched"];
+ got.canned_query ~= "&src=" ~ m["matched"];
}
- if ("lng" in canned_query && !(canned_query["lng"]).empty) {
- got.language = canned_query["lng"].split("%%20").join(" ");
- got.search_text_area ~= "language: " ~ got.language ~ "\n";
+ if (auto m = got.search_text_area.matchFirst(rgx.language)) {
+ got.language = m["matched"];
+ got.canned_query ~= "&lng=" ~ m["matched"];
}
- if ("rl" in canned_query && !(canned_query["rl"]).empty) {
- got.relation = canned_query["rl"].split("%%20").join(" ");
- got.search_text_area ~= "relation: " ~ got.relation ~ "\n";
+ if (auto m = got.search_text_area.matchFirst(rgx.relation)) {
+ got.relation = m["matched"];
+ got.canned_query ~= "&rl=" ~ m["matched"];
}
- if ("cv" in canned_query && !(canned_query["cv"]).empty) {
- got.coverage = canned_query["cv"].split("%%20").join(" ");
- got.search_text_area ~= "coverage: " ~ got.coverage ~ "\n";
+ if (auto m = got.search_text_area.matchFirst(rgx.coverage)) {
+ got.coverage = m["matched"];
+ got.canned_query ~= "&cv=" ~ m["matched"];
}
- if ("rgt" in canned_query && !(canned_query["rgt"]).empty) {
- got.rights = canned_query["rgt"].split("%%20").join(" ");
- got.search_text_area ~= "rights: " ~ got.rights ~ "\n";
+ if (auto m = got.search_text_area.matchFirst(rgx.rights)) {
+ got.rights = m["matched"];
+ got.canned_query ~= "&rgt=" ~ m["matched"];
}
- if ("cmt" in canned_query && !(canned_query["cmt"]).empty) {
- got.comment = canned_query["cmt"].split("%%20").join(" ");
- got.search_text_area ~= "comment: " ~ got.comment ~ "\n";
+ if (auto m = got.search_text_area.matchFirst(rgx.comment)) {
+ got.comment = m["matched"];
+ got.canned_query ~= "&cmt=" ~ m["matched"];
}
- // if ("abstract" in canned_query && !(canned_query["abstract"]).empty) {
- // got.abstract = canned_query["abstract"];
+ // if (auto m = search_text_area.matchFirst(rgx.abstract)) {
+ // got.abstract = m["matched"];
// }
- if ("bfn" in canned_query && !(canned_query["bfn"]).empty) { // search_field
- got.src_filename_base = canned_query["bfn"].split("%%20").join(" ");
- got.search_text_area ~= "src_filename_base: " ~ got.src_filename_base ~ "\n";
- }
- if ("sml" in canned_query && !(canned_query["sml"]).empty) {
- got.sql_match_limit = canned_query["sml"].split("%%20").join(" ");
- // got.search_text_area ~= "sql_match_limit: " ~ got.sql_match_limit ~ "\n";
+ if (auto m = got.search_text_area.matchFirst(rgx.src_filename_base)) {
+ got.src_filename_base = m["matched"];
+ got.canned_query ~= "&bfn=" ~ m["matched"];
}
- // cgi.write("f.search_text_area: " ~ got.search_text_area ~ "<br>");
}
- return got;
+ if ("fn" in cgi.post) {
+ got.fn = cgi.post["fn"];
+ got.canned_query ~= "&fn=" ~ cgi.post["fn"];
+ }
+ if ("rt" in cgi.post) {
+ got.results_type = cgi.post["rt"];
+ got.canned_query ~= "&rt=" ~ cgi.post["rt"];
+ }
+ if ("sts" in cgi.post) {
+ got.stats = cgi.post["sts"];
+ got.canned_query ~= "&sts=" ~ cgi.post["sts"];
+ }
+ if ("ec" in cgi.post) {
+ got.echo = cgi.post["ec"];
+ got.canned_query ~= "&ec=" ~ cgi.post["ec"];
+ }
+ if ("url" in cgi.post) {
+ got.url = cgi.post["url"];
+ got.canned_query ~= "&url=" ~ cgi.post["url"];
+ }
+ if ("se" in cgi.post) {
+ got.searched = cgi.post["se"];
+ got.canned_query ~= "&se=" ~ cgi.post["se"];
+ }
+ if ("sql" in cgi.post) {
+ got.sql = cgi.post["sql"];
+ got.canned_query ~= "&sql=" ~ cgi.post["sql"];
+ }
+ if ("sml" in cgi.post) {
+ got.sql_match_limit = cgi.post["sml"];
+ got.canned_query ~= "&sml=" ~ cgi.post["sml"];
+ }
+ if ("smo" in cgi.post) {
+ got.sql_match_offset = "0"; // cgi.post["smo"];
+ got.canned_query ~= "&smo=0"; // ~ cgi.post["smo"];
+ }
+ got.canned_query = got.canned_query.strip.split(" ").join("%%20");
+ conf.query_string = got.canned_query;
+ // cgi.write("f.canned_query: " ~ got.canned_query ~ "<br>");
+#+END_SRC
+
+****** GET
+
+#+NAME: cgi_sqlite_initialize_env_1
+#+BEGIN_SRC d
+} else if (environment.get("REQUEST_METHOD", "POST") == "GET") {
+ got.canned_query = environment.get("QUERY_STRING", "");
+ // cgi.write("f.canned_query: " ~ got.canned_query ~ "<br>");
+ got.search_text_area = "";
+ if ("sf" in canned_query && !(canned_query["sf"]).empty) {
+ got.text = canned_query["sf"].split("%%20").join(" ");
+ got.search_text_area ~= "text: " ~ got.text ~ "\n";
+ }
+ if ("au" in canned_query && !(canned_query["au"]).empty) {
+ got.author = canned_query["au"].split("%%20").join(" ");
+ got.search_text_area ~= "author: " ~ got.author ~ "\n";
+ }
+ if ("ti" in canned_query && !(canned_query["ti"]).empty) {
+ got.title = canned_query["ti"].split("%%20").join(" ");
+ got.search_text_area ~= "title: " ~ got.title ~ "\n";
+ }
+ if ("uid" in canned_query && !(canned_query["uid"]).empty) {
+ got.uid = canned_query["uid"].split("%%20").join(" ");
+ got.search_text_area ~= "uid: " ~ got.uid ~ "\n";
+ }
+ if ("fn" in canned_query && !(canned_query["fn"]).empty) {
+ got.fn = canned_query["fn"].split("%%20").join(" ");
+ got.search_text_area ~= "fn: " ~ got.fn ~ "\n";
+ }
+ if ("kw" in canned_query && !(canned_query["kw"]).empty) {
+ got.keywords = canned_query["kw"].split("%%20").join(" ");
+ got.search_text_area ~= "keywords: " ~ got.keywords ~ "\n";
+ }
+ if ("tr" in canned_query && !(canned_query["tr"]).empty) {
+ got.topic_register = canned_query["tr"].split("%%20").join(" ");
+ got.search_text_area ~= "topic_register: " ~ got.topic_register ~ "\n";
+ }
+ if ("su" in canned_query && !(canned_query["su"]).empty) {
+ got.subject = canned_query["su"].split("%%20").join(" ");
+ got.search_text_area ~= "subject: " ~ got.subject ~ "\n";
+ }
+ if ("de" in canned_query && !(canned_query["de"]).empty) {
+ got.description = canned_query["de"].split("%%20").join(" ");
+ got.search_text_area ~= "description: " ~ got.description ~ "\n";
+ }
+ if ("pb" in canned_query && !(canned_query["pb"]).empty) {
+ got.publisher = canned_query["pb"].split("%%20").join(" ");
+ got.search_text_area ~= "publisher: " ~ got.publisher ~ "\n";
+ }
+ if ("ed" in canned_query && !(canned_query["ed"]).empty) {
+ got.editor = canned_query["ed"].split("%%20").join(" ");
+ got.search_text_area ~= "editor: " ~ got.editor ~ "\n";
+ }
+ if ("ct" in canned_query && !(canned_query["ct"]).empty) {
+ got.contributor = canned_query["ct"].split("%%20").join(" ");
+ got.search_text_area ~= "contributor: " ~ got.contributor ~ "\n";
+ }
+ if ("dt" in canned_query && !(canned_query["dt"]).empty) {
+ got.date = canned_query["dt"].split("%%20").join(" ");
+ got.search_text_area ~= "date: " ~ got.date ~ "\n";
+ }
+ if ("rt" in canned_query && !(canned_query["rt"]).empty) {
+ got.results_type = canned_query["rt"].split("%%20").join(" ");
+ // got.search_text_area ~= "results_type: " ~ got.results_type ~ "\n";
+ }
+ if ("fmt" in canned_query && !(canned_query["fmt"]).empty) {
+ got.format = canned_query["fmt"].split("%%20").join(" ");
+ got.search_text_area ~= "format: " ~ got.format ~ "\n";
+ }
+ if ("src" in canned_query && !(canned_query["src"]).empty) {
+ got.source = canned_query["src"].split("%%20").join(" ");
+ got.search_text_area ~= "source: " ~ got.source ~ "\n";
+ }
+ if ("lng" in canned_query && !(canned_query["lng"]).empty) {
+ got.language = canned_query["lng"].split("%%20").join(" ");
+ got.search_text_area ~= "language: " ~ got.language ~ "\n";
+ }
+ if ("rl" in canned_query && !(canned_query["rl"]).empty) {
+ got.relation = canned_query["rl"].split("%%20").join(" ");
+ got.search_text_area ~= "relation: " ~ got.relation ~ "\n";
+ }
+ if ("cv" in canned_query && !(canned_query["cv"]).empty) {
+ got.coverage = canned_query["cv"].split("%%20").join(" ");
+ got.search_text_area ~= "coverage: " ~ got.coverage ~ "\n";
+ }
+ if ("rgt" in canned_query && !(canned_query["rgt"]).empty) {
+ got.rights = canned_query["rgt"].split("%%20").join(" ");
+ got.search_text_area ~= "rights: " ~ got.rights ~ "\n";
+ }
+ if ("cmt" in canned_query && !(canned_query["cmt"]).empty) {
+ got.comment = canned_query["cmt"].split("%%20").join(" ");
+ got.search_text_area ~= "comment: " ~ got.comment ~ "\n";
+ }
+ // if ("abstract" in canned_query && !(canned_query["abstract"]).empty) {
+ // got.abstract = canned_query["abstract"];
+ // }
+ if ("bfn" in canned_query && !(canned_query["bfn"]).empty) { // search_field
+ got.src_filename_base = canned_query["bfn"].split("%%20").join(" ");
+ got.search_text_area ~= "src_filename_base: " ~ got.src_filename_base ~ "\n";
+ }
+ if ("sml" in canned_query && !(canned_query["sml"]).empty) {
+ got.sql_match_limit = canned_query["sml"].split("%%20").join(" ");
+ // got.search_text_area ~= "sql_match_limit: " ~ got.sql_match_limit ~ "\n";
+ }
+ // cgi.write("f.search_text_area: " ~ got.search_text_area ~ "<br>");
+}
+return got;
#+END_SRC
***** tail
@@ -833,8 +833,8 @@ string show_matched_objects (string fn) {
#+NAME: cgi_sqlite_header_0
#+BEGIN_SRC d
- {
- header = format(q"┃
+{
+ header = format(q"┃
#+END_SRC
**** html
@@ -1667,18 +1667,18 @@ string show_matched_objects (string fn) {
#+BEGIN_SRC html
{
table = format(q"┃
- <table summary="band" border="0" cellpadding="2" cellspacing="0">
- <tr><td width="20%%%%">
- <table summary="home button / home information" border="0" cellpadding="2" cellspacing="0">
- <tr><td align="left">
- %s
- </td></tr>
- </table>
- </td>
- <td>
+<table summary="band" border="0" cellpadding="2" cellspacing="0">
+<tr><td width="20%%%%">
+ <table summary="home button / home information" border="0" cellpadding="2" cellspacing="0">
+ <tr><td align="left">
+ %s
</td></tr>
</table>
- ┃");
+</td>
+<td>
+</td></tr>
+</table>
+┃");
}
#+END_SRC
@@ -1686,81 +1686,81 @@ string show_matched_objects (string fn) {
#+NAME: cgi_sqlite_form_0
#+BEGIN_SRC d
- {
- string post_value(string field_name, string type="box", string set="on") {
- string val = "";
- switch (type) {
- case "field":
- val = ((field_name in cgi.post && !(cgi.post[field_name]).empty)
- ? cgi.post[field_name]
- : (field_name in cgi.get)
- ? cgi.get[field_name]
- : "");
- val = tf.search_text_area;
- break;
- case "box": // generic for checkbox or radio; checkbox set == "on" radio set == "name set"
- val = ((field_name in cgi.post && !(cgi.post[field_name]).empty)
- ? (cgi.post[field_name] == set ? "checked" : "off")
- : (field_name in cgi.get)
- ? (cgi.get[field_name] == set ? "checked" : "off")
- : "off");
- break;
- case "radio": // used generic bo
- val = ((field_name in cgi.post && !(cgi.post[field_name]).empty)
- ? (cgi.post[field_name] == set ? "checked" : "off")
- : (field_name in cgi.get)
- ? (cgi.get[field_name] == set ? "checked" : "off")
- : "checked");
- break;
- case "checkbox": // used generic bo
- val = ((field_name in cgi.post && !(cgi.post[field_name]).empty)
- ? (cgi.post[field_name] == set ? "checked" : "off")
- : (field_name in cgi.get)
- ? (cgi.get[field_name] == set ? "checked" : "off")
- : "checked");
- break;
- default:
- }
- return val;
+{
+ string post_value(string field_name, string type="box", string set="on") {
+ string val = "";
+ switch (type) {
+ case "field":
+ val = ((field_name in cgi.post && !(cgi.post[field_name]).empty)
+ ? cgi.post[field_name]
+ : (field_name in cgi.get)
+ ? cgi.get[field_name]
+ : "");
+ val = tf.search_text_area;
+ break;
+ case "box": // generic for checkbox or radio; checkbox set == "on" radio set == "name set"
+ val = ((field_name in cgi.post && !(cgi.post[field_name]).empty)
+ ? (cgi.post[field_name] == set ? "checked" : "off")
+ : (field_name in cgi.get)
+ ? (cgi.get[field_name] == set ? "checked" : "off")
+ : "off");
+ break;
+ case "radio": // used generic bo
+ val = ((field_name in cgi.post && !(cgi.post[field_name]).empty)
+ ? (cgi.post[field_name] == set ? "checked" : "off")
+ : (field_name in cgi.get)
+ ? (cgi.get[field_name] == set ? "checked" : "off")
+ : "checked");
+ break;
+ case "checkbox": // used generic bo
+ val = ((field_name in cgi.post && !(cgi.post[field_name]).empty)
+ ? (cgi.post[field_name] == set ? "checked" : "off")
+ : (field_name in cgi.get)
+ ? (cgi.get[field_name] == set ? "checked" : "off")
+ : "checked");
+ break;
+ default:
}
+ return val;
+ }
#+END_SRC
**** canned search
#+NAME: cgi_sqlite_form_1
#+BEGIN_SRC d
- string the_can(string fv) {
- string show_the_can = post_value("url");
- string _the_can = "";
- if (show_the_can == "checked") {
- tf = text_fields;
- string method_get_url = conf.http_request_type ~ "://" ~ conf.http_host ~ conf.cgi_script ~ "?" ~ environment.get("QUERY_STRING", "");
- string method_post_url_construct = conf.http_request_type ~ "://" ~ conf.http_host ~ conf.cgi_script ~ "?" ~ tf.canned_query;
- // assert(method_get_url == environment.get("HTTP_REFERER", conf.http_request_type ~ "://" ~ conf.http_host ~ conf.cgi_script ~ "?" ~ conf.query_string));
- if (conf.request_method == "POST") {
- _the_can =
- "<font size=\"2\" color=\"#666666\">"
- ~ "POST:&nbsp;"
- ~ "<a href=\""
- ~ method_post_url_construct
- ~ "\">"
- ~ method_post_url_construct
- ~ "</a></font>"
- ~ "<br>";
- } else if (conf.request_method == "GET") {
- _the_can =
- "<font size=\"2\" color=\"#666666\">"
- ~ "GET:&nbsp;&nbsp;"
- ~ "<a href=\""
- ~ method_get_url
- ~ "\">"
- ~ method_get_url
- ~ "</a></font>";
- }
- conf.http_url = conf.http_request_type ~ "://" ~ conf.http_host ~ conf.cgi_script ~ tf.canned_query;
- }
- return _the_can;
+string the_can(string fv) {
+ string show_the_can = post_value("url");
+ string _the_can = "";
+ if (show_the_can == "checked") {
+ tf = text_fields;
+ string method_get_url = conf.http_request_type ~ "://" ~ conf.http_host ~ conf.cgi_script ~ "?" ~ environment.get("QUERY_STRING", "");
+ string method_post_url_construct = conf.http_request_type ~ "://" ~ conf.http_host ~ conf.cgi_script ~ "?" ~ tf.canned_query;
+ // assert(method_get_url == environment.get("HTTP_REFERER", conf.http_request_type ~ "://" ~ conf.http_host ~ conf.cgi_script ~ "?" ~ conf.query_string));
+ if (conf.request_method == "POST") {
+ _the_can =
+ "<font size=\"2\" color=\"#666666\">"
+ ~ "POST:&nbsp;"
+ ~ "<a href=\""
+ ~ method_post_url_construct
+ ~ "\">"
+ ~ method_post_url_construct
+ ~ "</a></font>"
+ ~ "<br>";
+ } else if (conf.request_method == "GET") {
+ _the_can =
+ "<font size=\"2\" color=\"#666666\">"
+ ~ "GET:&nbsp;&nbsp;"
+ ~ "<a href=\""
+ ~ method_get_url
+ ~ "\">"
+ ~ method_get_url
+ ~ "</a></font>";
}
+ conf.http_url = conf.http_request_type ~ "://" ~ conf.http_host ~ conf.cgi_script ~ tf.canned_query;
+ }
+ return _the_can;
+}
#+END_SRC
**** provide tip
@@ -1842,61 +1842,61 @@ string show_matched_objects (string fn) {
#+NAME: cgi_sqlite_form_post_0
#+BEGIN_SRC d
- (post_value("ec") == "checked") ? post_value("sf", "field") : "",
- provide_tip,
- search_note,
- the_can(post_value("sf", "field")),
- cv.db_selected,
- post_value("rt", "box", "idx"),
- post_value("rt", "box", "txt"),
- post_value("sml", "box", "1000"),
- post_value("sml", "box", "2500"),
- post_value("ec"),
- post_value("url"),
- post_value("se"),
- post_value("sql"),
- );
+ (post_value("ec") == "checked") ? post_value("sf", "field") : "",
+ provide_tip,
+ search_note,
+ the_can(post_value("sf", "field")),
+ cv.db_selected,
+ post_value("rt", "box", "idx"),
+ post_value("rt", "box", "txt"),
+ post_value("sml", "box", "1000"),
+ post_value("sml", "box", "2500"),
+ post_value("ec"),
+ post_value("url"),
+ post_value("se"),
+ post_value("sql"),
+);
#+END_SRC
**** set value (debug)
#+NAME: cgi_sqlite_form_post_1
#+BEGIN_SRC d
- {
- string set_value(string field_name, string default_val) {
- string val;
- if (field_name in cgi.post) {
- val = cgi.post[field_name];
- } else if (field_name in cgi.get) {
- val = cgi.get[field_name];
- } else { val = default_val; }
- return val;
- }
- bool set_bool(string field_name) {
- bool val;
- if (field_name in cgi.post
- && cgi.post[field_name] == "on") {
- val = true;
- } else if (field_name in cgi.get
- && cgi.get[field_name] == "on") {
- val = true;
- } else { val = false; }
- return val;
- }
- cv.db_selected = set_value("selected_db", "%s"); // selected_db_name == db (spine.search.db or whatever)
- cv.sql_match_limit = set_value("sml", "1000");
- cv.sql_match_offset = set_value("smo", "0");
- cv.search_text = set_value("sf", "");
- cv.results_type = set_value("rt", "idx");
- cv.checked_echo = set_bool("ec");
- cv.checked_stats = set_bool("sts");
- cv.checked_url = set_bool("url");
- cv.checked_searched = set_bool("se");
- cv.checked_tip = set_bool("tip");
- cv.checked_sql = set_bool("sql");
- tf = text_fields;
+ {
+ string set_value(string field_name, string default_val) {
+ string val;
+ if (field_name in cgi.post) {
+ val = cgi.post[field_name];
+ } else if (field_name in cgi.get) {
+ val = cgi.get[field_name];
+ } else { val = default_val; }
+ return val;
}
+ bool set_bool(string field_name) {
+ bool val;
+ if (field_name in cgi.post
+ && cgi.post[field_name] == "on") {
+ val = true;
+ } else if (field_name in cgi.get
+ && cgi.get[field_name] == "on") {
+ val = true;
+ } else { val = false; }
+ return val;
+ }
+ cv.db_selected = set_value("selected_db", "%s"); // selected_db_name == db (spine.search.db or whatever)
+ cv.sql_match_limit = set_value("sml", "1000");
+ cv.sql_match_offset = set_value("smo", "0");
+ cv.search_text = set_value("sf", "");
+ cv.results_type = set_value("rt", "idx");
+ cv.checked_echo = set_bool("ec");
+ cv.checked_stats = set_bool("sts");
+ cv.checked_url = set_bool("url");
+ cv.checked_searched = set_bool("se");
+ cv.checked_tip = set_bool("tip");
+ cv.checked_sql = set_bool("sql");
+ tf = text_fields;
}
+}
#+END_SRC
*** cgi write
@@ -2070,125 +2070,125 @@ LIMIT %%s OFFSET %%s
#+NAME: cgi_sqlite_select_statement_2
#+BEGIN_SRC d
- (cv.checked_sql)
- ? cgi.write(previous_next
- ~ "<hr><font size=\"2\" color=\"#666666\">"
- ~ sql_select.the_body.strip.split("\n ").join(" ").split("\n").join("<br>")
- ~ "</font>\n"
- )
- : "";
- cgi.write(previous_next);
- auto select_query_results = db.execute(sql_select.the_body).cached;
- string _old_uid = "";
- if (!select_query_results.empty) {
- string _date_published = "0000";
- string _close_para = "";
- string _matched_ocn_open = "";
- foreach (idx, row; select_query_results) {
- if (row["uid"].as!string != _old_uid) {
- _close_para = (idx == 1) ? "" : "</p>";
- _matched_ocn_open = (idx == 1) ? "" : "<p class=\"matched_ocn\">";
- _old_uid = row["uid"].as!string;
- _date_published = (row["date_published"].as!string.match(regex(r"^([0-9]{4})")))
- ? row["date_published"].as!string : "0000"; // used in regex that breaks if no match
- auto m = _date_published.match(regex(r"^([0-9]{4})"));
- string _date = (m.hit == "0000") ? "(year?) " : "(" ~ m.hit ~ ") ";
- cgi.write(
- _close_para
- ~ "<hr><div class=\"publication\">"
- ~ "<p class=\"publication\"><a href=\""
- ~ "https://" ~ conf.http_host ~ conf.doc_collection_sub_root ~ "/"
- ~ row["language_document_char"].as!string ~ "/html/"
- ~ row["src_filename_base"].as!string ~ "/"
- ~ "toc.html"
- ~ "\">\""
- ~ row["title"].as!string ~ "\""
- ~ "</a> "
- ~ _date
- ~ "[" ~ row["language_document_char"].as!string ~ "] "
- ~ row["creator_author_last_first"].as!string
- ~ " "
- ~ show_matched_objects(row["src_filename_base"].as!string)
- ~ "</p>"
- ~ "</div>"
- );
- }
+(cv.checked_sql)
+? cgi.write(previous_next
+ ~ "<hr><font size=\"2\" color=\"#666666\">"
+ ~ sql_select.the_body.strip.split("\n ").join(" ").split("\n").join("<br>")
+ ~ "</font>\n"
+ )
+: "";
+cgi.write(previous_next);
+auto select_query_results = db.execute(sql_select.the_body).cached;
+string _old_uid = "";
+if (!select_query_results.empty) {
+ string _date_published = "0000";
+ string _close_para = "";
+ string _matched_ocn_open = "";
+ foreach (idx, row; select_query_results) {
+ if (row["uid"].as!string != _old_uid) {
+ _close_para = (idx == 1) ? "" : "</p>";
+ _matched_ocn_open = (idx == 1) ? "" : "<p class=\"matched_ocn\">";
+ _old_uid = row["uid"].as!string;
+ _date_published = (row["date_published"].as!string.match(regex(r"^([0-9]{4})")))
+ ? row["date_published"].as!string : "0000"; // used in regex that breaks if no match
+ auto m = _date_published.match(regex(r"^([0-9]{4})"));
+ string _date = (m.hit == "0000") ? "(year?) " : "(" ~ m.hit ~ ") ";
+ cgi.write(
+ _close_para
+ ~ "<hr><div class=\"publication\">"
+ ~ "<p class=\"publication\"><a href=\""
+ ~ "https://" ~ conf.http_host ~ conf.doc_collection_sub_root ~ "/"
+ ~ row["language_document_char"].as!string ~ "/html/"
+ ~ row["src_filename_base"].as!string ~ "/"
+ ~ "toc.html"
+ ~ "\">\""
+ ~ row["title"].as!string ~ "\""
+ ~ "</a> "
+ ~ _date
+ ~ "[" ~ row["language_document_char"].as!string ~ "] "
+ ~ row["creator_author_last_first"].as!string
+ ~ " "
+ ~ show_matched_objects(row["src_filename_base"].as!string)
+ ~ "</p>"
+ ~ "</div>"
+ );
+ }
#+END_SRC
***** text found
#+NAME: cgi_sqlite_select_statement_3
#+BEGIN_SRC d
- if (cv.results_type == "txt") {
- if (row["ocn"].as!string != "0") {
- cgi.write(
- "<div class=\"flex-container\">"
- ~ "<div class=\"textview_ocn\" style=\"flex: 0 0 1.2em\">"
- ~ "<p class=\"ocn_is\"><a href=\""
- ~ "https://" ~ conf.http_host ~ conf.doc_collection_sub_root ~ "/"
- ~ row["language_document_char"].as!string ~ "/html/"
- ~ row["src_filename_base"].as!string ~ "/"
- ~ row["seg_name"].as!string ~ ".html#" ~ row["ocn"].as!string
- ~ "\">"
- ~ row["ocn"].as!string
- ~ "</a>:</p>"
- ~ "</div>"
- ~ "<div class=\"textview_found\">"
- ~ highlight_text_matched(row["body"].as!string, tf.text)
- ~ "</div>"
- ~ "</div>"
- );
- } else {
- cgi.write(
- "<div class=\"flex-container\">"
- ~ "<div class=\"textview_ocn\" style=\"flex: 0 0 1.2em\">"
- ~ "<p class=\"ocn_is\"><a href=\""
- ~ "https://" ~ conf.http_host ~ conf.doc_collection_sub_root ~ "/"
- ~ row["language_document_char"].as!string ~ "/html/"
- ~ row["src_filename_base"].as!string ~ "/toc.html"
- ~ "\">"
- ~ row["ocn"].as!string
- ~ "</a>:</p>"
- ~ "</div>"
- ~ "<div class=\"textview_found\">"
- ~ highlight_text_matched(row["body"].as!string, tf.text)
- ~ "</div>"
- ~ "</div>"
- );
- }
+if (cv.results_type == "txt") {
+ if (row["ocn"].as!string != "0") {
+ cgi.write(
+ "<div class=\"flex-container\">"
+ ~ "<div class=\"textview_ocn\" style=\"flex: 0 0 1.2em\">"
+ ~ "<p class=\"ocn_is\"><a href=\""
+ ~ "https://" ~ conf.http_host ~ conf.doc_collection_sub_root ~ "/"
+ ~ row["language_document_char"].as!string ~ "/html/"
+ ~ row["src_filename_base"].as!string ~ "/"
+ ~ row["seg_name"].as!string ~ ".html#" ~ row["ocn"].as!string
+ ~ "\">"
+ ~ row["ocn"].as!string
+ ~ "</a>:</p>"
+ ~ "</div>"
+ ~ "<div class=\"textview_found\">"
+ ~ highlight_text_matched(row["body"].as!string, tf.text)
+ ~ "</div>"
+ ~ "</div>"
+ );
+ } else {
+ cgi.write(
+ "<div class=\"flex-container\">"
+ ~ "<div class=\"textview_ocn\" style=\"flex: 0 0 1.2em\">"
+ ~ "<p class=\"ocn_is\"><a href=\""
+ ~ "https://" ~ conf.http_host ~ conf.doc_collection_sub_root ~ "/"
+ ~ row["language_document_char"].as!string ~ "/html/"
+ ~ row["src_filename_base"].as!string ~ "/toc.html"
+ ~ "\">"
+ ~ row["ocn"].as!string
+ ~ "</a>:</p>"
+ ~ "</div>"
+ ~ "<div class=\"textview_found\">"
+ ~ highlight_text_matched(row["body"].as!string, tf.text)
+ ~ "</div>"
+ ~ "</div>"
+ );
+ }
#+END_SRC
***** ocn index
#+NAME: cgi_sqlite_select_statement_4
#+BEGIN_SRC d
- } else {
- if (row["ocn"].as!string != "0") {
- cgi.write(
- _matched_ocn_open
- ~ "<a href=\""
- ~ "https://" ~ conf.http_host ~ conf.doc_collection_sub_root ~ "/"
- ~ row["language_document_char"].as!string ~ "/html/"
- ~ row["src_filename_base"].as!string ~ "/"
- ~ row["seg_name"].as!string ~ ".html#" ~ row["ocn"].as!string
- ~ "\">"
- ~ row["ocn"].as!string
- ~ "</a>, "
- );
- } else {
- cgi.write(
- _matched_ocn_open
- ~ "<a href=\""
- ~ "https://" ~ conf.http_host ~ conf.doc_collection_sub_root ~ "/"
- ~ row["language_document_char"].as!string ~ "/html/"
- ~ row["src_filename_base"].as!string ~ "/toc.html"
- ~ "\">"
- ~ row["ocn"].as!string
- ~ "</a>, "
- );
- }
- _matched_ocn_open = "";
- }
+} else {
+ if (row["ocn"].as!string != "0") {
+ cgi.write(
+ _matched_ocn_open
+ ~ "<a href=\""
+ ~ "https://" ~ conf.http_host ~ conf.doc_collection_sub_root ~ "/"
+ ~ row["language_document_char"].as!string ~ "/html/"
+ ~ row["src_filename_base"].as!string ~ "/"
+ ~ row["seg_name"].as!string ~ ".html#" ~ row["ocn"].as!string
+ ~ "\">"
+ ~ row["ocn"].as!string
+ ~ "</a>, "
+ );
+ } else {
+ cgi.write(
+ _matched_ocn_open
+ ~ "<a href=\""
+ ~ "https://" ~ conf.http_host ~ conf.doc_collection_sub_root ~ "/"
+ ~ row["language_document_char"].as!string ~ "/html/"
+ ~ row["src_filename_base"].as!string ~ "/toc.html"
+ ~ "\">"
+ ~ row["ocn"].as!string
+ ~ "</a>, "
+ );
+ }
+ _matched_ocn_open = "";
+}
#+END_SRC
***** tail
@@ -2272,7 +2272,7 @@ configuration "default" {
* cgi-search README
-#+HEADER: :NO-tangle "../sundry/util/d/cgi/search/README"
+#+HEADER: :NO-tangle "../sundry/misc/util/d/cgi/search/README"
#+BEGIN_SRC text
change db name to match name of db you create
cv.db_selected = "spine.search.sql.db";
diff --git a/org/out_latex.org b/org/out_latex.org
index 5aecfbd..326f8cd 100644
--- a/org/out_latex.org
+++ b/org/out_latex.org
@@ -54,25 +54,25 @@ template outputLaTeX() {
<<output_latex_shared_b_table>>
<<output_latex_head_bullets_and_indentation>>
<<output_latex_head_0>>
- <<output_latex_head_papertype>>
+ <<output_latex_head_papertype>>
<<output_latex_head_footer>>
-<<output_latex_head_b_tex_papermargins>>
-<<output_latex_head_b_tex_papermargins_portrait>>
+ <<output_latex_head_b_tex_papermargins>>
+ <<output_latex_head_b_tex_papermargins_portrait>>
<<output_latex_head_b_tex_papermargins_portrait_set>>
<<output_latex_head_b_tex_papermargins_portrait_close>>
-<<output_latex_head_b_tex_papermargins_landscape>>
+ <<output_latex_head_b_tex_papermargins_landscape>>
<<output_latex_head_b_tex_papermargins_landscape_set>>
<<output_latex_head_b_tex_papermargins_landscape_close>>
-<<output_latex_head_b_tex_columns_multi>>
-<<output_latex_head_b_tex_columns_multi_portrait>>
+ <<output_latex_head_b_tex_columns_multi>>
+ <<output_latex_head_b_tex_columns_multi_portrait>>
<<output_latex_head_b_tex_columns_multi_portrait_set>>
<<output_latex_head_b_tex_columns_multi_portrait_close>>
-<<output_latex_head_b_tex_columns_multi_landscape>>
-<<output_latex_head_b_tex_colorlinks>>
-<<output_latex_head_b_tex_colorlinks_mono>>
+ <<output_latex_head_b_tex_columns_multi_landscape>>
+ <<output_latex_head_b_tex_colorlinks>>
+ <<output_latex_head_b_tex_colorlinks_mono>>
<<output_latex_head_b_tex_colorlinks_mono_set>>
<<output_latex_head_b_tex_colorlinks_mono_close>>
-<<output_latex_head_b_tex_colorlinks_color>>
+ <<output_latex_head_b_tex_colorlinks_color>>
<<output_latex_head_b_tex_colorlinks_color_set>>
<<output_latex_head_b_tex_colorlinks_color_close>>
<<output_latex_head_format_string_paper_set>>
@@ -108,7 +108,7 @@ template outputLaTeX() {
<<output_latex_body_for_doc_frontmatter>>
<<output_latex_body_for_doc_body>>
<<output_latex_body_for_doc_backmatter>>
- <<output_latex_body_for_doc_default>>
+ <<output_latex_body_for_doc_default>>
<<output_latex_body_function_return>>
<<output_latex_tail_function>>
<<output_latex_tail_format_string>>
@@ -204,166 +204,166 @@ import doc_reform.io_out;
#+NAME: output_latex_shared_a_paper_type
#+BEGIN_SRC d
- auto paper() {
- struct PaperType {
- @safe auto a4() {
- struct A4 {
- auto portrait() {
- struct V {
- const uint w = 160;
- const uint h = 228;
- string width = format(q"┃%dmm┃", w);
- string height = format(q"┃%dmm┃", h);
- string font_size = "12pt";
- string name = "a4paper";
- uint img_px = 450;
- bool is_portrait = true;
- }
- return V();
- }
- auto landscape() {
- struct H {
- const uint w = 238;
- const uint h = 160;
- string width = format(q"┃%dmm┃", w);
- string height = format(q"┃%dmm┃", h);
- string font_size = "11pt";
- string name = "a4paper";
- uint img_px = 300;
- bool is_portrait = false;
- }
- return H();
- }
+auto paper() {
+ struct PaperType {
+ @safe auto a4() {
+ struct A4 {
+ auto portrait() {
+ struct V {
+ const uint w = 160;
+ const uint h = 228;
+ string width = format(q"┃%dmm┃", w);
+ string height = format(q"┃%dmm┃", h);
+ string font_size = "12pt";
+ string name = "a4paper";
+ uint img_px = 450;
+ bool is_portrait = true;
}
- return A4();
+ return V();
}
- @safe auto a5() {
- struct A5 {
- auto portrait() {
- struct V {
- const uint w = 112;
- const uint h = 162;
- string width = format(q"┃%dmm┃", w);
- string height = format(q"┃%dmm┃", h);
- string font_size = "0pt";
- string name = "a5paper";
- uint img_px = 280;
- bool is_portrait = true;
- }
- return V();
- }
- auto landscape() {
- struct H {
- const uint w = 152;
- const uint h = 100;
- string width = format(q"┃%dmm┃", w);
- string height = format(q"┃%dmm┃", h);
- string font_size = "0pt";
- string name = "a5paper";
- uint img_px = 190;
- bool is_portrait = false;
- }
- return H();
- }
+ auto landscape() {
+ struct H {
+ const uint w = 238;
+ const uint h = 160;
+ string width = format(q"┃%dmm┃", w);
+ string height = format(q"┃%dmm┃", h);
+ string font_size = "11pt";
+ string name = "a4paper";
+ uint img_px = 300;
+ bool is_portrait = false;
}
- return A5();
+ return H();
}
- @safe auto b4() {
- struct B4 {
- auto portrait() {
- struct V {
- const uint w = 140;
- const uint h = 204;
- string width = format(q"┃%dmm┃", w);
- string height = format(q"┃%dmm┃", h);
- string font_size = "0pt";
- string name = "b4paper";
- uint img_px = 356;
- bool is_portrait = true;
- }
- return V();
- }
- auto landscape() {
- struct H {
- const uint w = 200;
- const uint h = 130;
- string width = format(q"┃%dmm┃", w);
- string height = format(q"┃%dmm┃", h);
- string font_size = "0pt";
- string name = "b4paper";
- uint img_px = 260;
- bool is_portrait = false;
- }
- return H();
- }
+ }
+ return A4();
+ }
+ @safe auto a5() {
+ struct A5 {
+ auto portrait() {
+ struct V {
+ const uint w = 112;
+ const uint h = 162;
+ string width = format(q"┃%dmm┃", w);
+ string height = format(q"┃%dmm┃", h);
+ string font_size = "0pt";
+ string name = "a5paper";
+ uint img_px = 280;
+ bool is_portrait = true;
+ }
+ return V();
+ }
+ auto landscape() {
+ struct H {
+ const uint w = 152;
+ const uint h = 100;
+ string width = format(q"┃%dmm┃", w);
+ string height = format(q"┃%dmm┃", h);
+ string font_size = "0pt";
+ string name = "a5paper";
+ uint img_px = 190;
+ bool is_portrait = false;
+ }
+ return H();
+ }
+ }
+ return A5();
+ }
+ @safe auto b4() {
+ struct B4 {
+ auto portrait() {
+ struct V {
+ const uint w = 140;
+ const uint h = 204;
+ string width = format(q"┃%dmm┃", w);
+ string height = format(q"┃%dmm┃", h);
+ string font_size = "0pt";
+ string name = "b4paper";
+ uint img_px = 356;
+ bool is_portrait = true;
+ }
+ return V();
+ }
+ auto landscape() {
+ struct H {
+ const uint w = 200;
+ const uint h = 130;
+ string width = format(q"┃%dmm┃", w);
+ string height = format(q"┃%dmm┃", h);
+ string font_size = "0pt";
+ string name = "b4paper";
+ uint img_px = 260;
+ bool is_portrait = false;
}
- return B4();
+ return H();
}
- @safe auto letter() {
- struct Letter {
- auto portrait() {
- struct V {
- const uint w = 166;
- const uint h = 212;
- string width = format(q"┃%dmm┃", w);
- string height = format(q"┃%dmm┃", h);
- string font_size = "0pt";
- string name = "letterpaper";
- uint img_px = 468;
- bool is_portrait = true;
- }
- return V();
- }
- auto landscape() {
- struct H {
- const uint w = 226;
- const uint h = 166;
- string width = format(q"┃%dmm┃", w);
- string height = format(q"┃%dmm┃", h);
- string font_size = "0pt";
- string name = "letterpaper";
- uint img_px = 290;
- bool is_portrait = false;
- }
- return H();
- }
+ }
+ return B4();
+ }
+ @safe auto letter() {
+ struct Letter {
+ auto portrait() {
+ struct V {
+ const uint w = 166;
+ const uint h = 212;
+ string width = format(q"┃%dmm┃", w);
+ string height = format(q"┃%dmm┃", h);
+ string font_size = "0pt";
+ string name = "letterpaper";
+ uint img_px = 468;
+ bool is_portrait = true;
+ }
+ return V();
+ }
+ auto landscape() {
+ struct H {
+ const uint w = 226;
+ const uint h = 166;
+ string width = format(q"┃%dmm┃", w);
+ string height = format(q"┃%dmm┃", h);
+ string font_size = "0pt";
+ string name = "letterpaper";
+ uint img_px = 290;
+ bool is_portrait = false;
+ }
+ return H();
+ }
+ }
+ return Letter();
+ }
+ @safe auto legal() {
+ struct Legal {
+ auto portrait() {
+ struct V {
+ const uint w = 168;
+ const uint h = 286;
+ string width = format(q"┃%dmm┃", w);
+ string height = format(q"┃%dmm┃", h);
+ string font_size = "0pt";
+ string name = "legalpaper";
+ uint img_px = 474;
+ bool is_portrait = true;
}
- return Letter();
+ return V();
}
- @safe auto legal() {
- struct Legal {
- auto portrait() {
- struct V {
- const uint w = 168;
- const uint h = 286;
- string width = format(q"┃%dmm┃", w);
- string height = format(q"┃%dmm┃", h);
- string font_size = "0pt";
- string name = "legalpaper";
- uint img_px = 474;
- bool is_portrait = true;
- }
- return V();
- }
- auto landscape() {
- struct H {
- const uint w = 296;
- const uint h = 166;
- string width = format(q"┃%dmm┃", w);
- string height = format(q"┃%dmm┃", h);
- string font_size = "0pt";
- string name = "legalpaper";
- uint img_px = 420;
- bool is_portrait = false;
- }
- return H();
- }
+ auto landscape() {
+ struct H {
+ const uint w = 296;
+ const uint h = 166;
+ string width = format(q"┃%dmm┃", w);
+ string height = format(q"┃%dmm┃", h);
+ string font_size = "0pt";
+ string name = "legalpaper";
+ uint img_px = 420;
+ bool is_portrait = false;
}
- return Legal();
+ return H();
}
}
- return PaperType();
+ return Legal();
}
+ }
+ return PaperType();
+}
#+END_SRC
*** latex \escape special characters
@@ -1091,19 +1091,19 @@ string latex_head(M)(
#+NAME: output_latex_head_papertype
#+BEGIN_SRC d
- struct paperTypeLatex {
- string a4_portrait;
- string a4_landscape;
- string a5_portrait;
- string a5_landscape;
- string b4_portrait;
- string b4_landscape;
- string us_letter_portrait;
- string us_letter_landscape;
- string us_legal_portrait;
- string us_legal_landscape;
- }
- auto paper_type_latex = paperTypeLatex();
+struct paperTypeLatex {
+ string a4_portrait;
+ string a4_landscape;
+ string a5_portrait;
+ string a5_landscape;
+ string b4_portrait;
+ string b4_landscape;
+ string us_letter_portrait;
+ string us_letter_landscape;
+ string us_legal_portrait;
+ string us_legal_landscape;
+}
+auto paper_type_latex = paperTypeLatex();
#+END_SRC
****** footer
@@ -1145,18 +1145,18 @@ string latex_head(M)(
#+NAME: output_latex_head_b_tex_papermargins
#+BEGIN_SRC d
- struct paperMargins {
- string portrait;
- string landscape;
- }
- auto margins = paperMargins();
+struct paperMargins {
+ string portrait;
+ string landscape;
+}
+auto margins = paperMargins();
#+END_SRC
****** portrait
#+NAME: output_latex_head_b_tex_papermargins_portrait
#+BEGIN_SRC d
- margins.portrait = format(q"┃
+margins.portrait = format(q"┃
#+END_SRC
#+NAME: output_latex_head_b_tex_papermargins_portrait_set
@@ -1176,7 +1176,7 @@ string latex_head(M)(
#+NAME: output_latex_head_b_tex_papermargins_landscape
#+BEGIN_SRC d
- margins.landscape = format(q"┃
+margins.landscape = format(q"┃
#+END_SRC
#+NAME: output_latex_head_b_tex_papermargins_landscape_set
@@ -1197,18 +1197,18 @@ string latex_head(M)(
#+NAME: output_latex_head_b_tex_columns_multi
#+BEGIN_SRC d
- struct columnsMulti {
- string portrait;
- string landscape;
- }
- auto multicol = columnsMulti();
+struct columnsMulti {
+ string portrait;
+ string landscape;
+}
+auto multicol = columnsMulti();
#+END_SRC
****** portrait
#+NAME: output_latex_head_b_tex_columns_multi_portrait
#+BEGIN_SRC d
- multicol.portrait = format(q"┃
+multicol.portrait = format(q"┃
#+END_SRC
#+NAME: output_latex_head_b_tex_columns_multi_portrait_set
@@ -1226,7 +1226,7 @@ string latex_head(M)(
#+NAME: output_latex_head_b_tex_columns_multi_landscape
#+BEGIN_SRC d
- multicol.landscape = "";
+multicol.landscape = "";
#+END_SRC
***** color links
@@ -1234,18 +1234,18 @@ string latex_head(M)(
#+NAME: output_latex_head_b_tex_colorlinks
#+BEGIN_SRC d
- struct colorLinks {
- string mono;
- string color;
- }
- auto links = colorLinks();
+struct colorLinks {
+ string mono;
+ string color;
+}
+auto links = colorLinks();
#+END_SRC
****** mono
#+NAME: output_latex_head_b_tex_colorlinks_mono
#+BEGIN_SRC d
- links.mono = format(q"┃
+links.mono = format(q"┃
#+END_SRC
#+NAME: output_latex_head_b_tex_colorlinks_mono_set
@@ -1267,7 +1267,7 @@ string latex_head(M)(
#+NAME: output_latex_head_b_tex_colorlinks_color
#+BEGIN_SRC d
- links.color = format(q"┃
+links.color = format(q"┃
#+END_SRC
#+NAME: output_latex_head_b_tex_colorlinks_color_set
@@ -1900,25 +1900,25 @@ case "backmatter":
#+NAME: output_latex_body_for_doc_default
#+BEGIN_SRC d
- case "comment":
- break;
- default:
- { /+ debug +/
- if (doc_matters.opt.action.debug_do
- && doc_matters.opt.action.verbose) {
- writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_of_part);
- writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_a);
- writeln(__FILE__, ":", __LINE__, ": ", obj.text);
- }
+ case "comment":
+ break;
+ default:
+ { /+ debug +/
+ if (doc_matters.opt.action.debug_do
+ && doc_matters.opt.action.verbose) {
+ writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_of_part);
+ writeln(__FILE__, ":", __LINE__, ": ", obj.metainfo.is_a);
+ writeln(__FILE__, ":", __LINE__, ": ", obj.text);
}
- break;
}
+ break;
}
}
- if (_multicolumns) {
- _multicolumns = false;
- _latex_body ~= "\n\\end{multicols}\n";
- }
+}
+if (_multicolumns) {
+ _multicolumns = false;
+ _latex_body ~= "\n\\end{multicols}\n";
+}
#+END_SRC
**** latex body return
@@ -1982,7 +1982,9 @@ string _latex_tail = format(q"┃
#+HEADER: :tangle-mode (identity #o755)
#+HEADER: :shebang #!/usr/bin/env ruby
#+BEGIN_SRC ruby
-# <<doc_header_including_copyright_and_license>>
+=begin
+<<doc_header_including_copyright_and_license>>
+=end
require 'fileutils'
pwd = Dir.pwd
argv,texfiles_with_path,flags=[],[],[]
diff --git a/org/out_sqlite.org b/org/out_sqlite.org
index 1cb9b40..a0f5290 100644
--- a/org/out_sqlite.org
+++ b/org/out_sqlite.org
@@ -266,13 +266,13 @@ template SQLiteInsertMetadata() {
M doc_matters,
) {
<<sqlite_formatted_insertions_doc_matters_metadata_0>>
- <<sqlite_formatted_insertions_doc_matters_metadata_1>>
- <<sqlite_formatted_insertions_doc_matters_metadata_2>>
+ <<sqlite_formatted_insertions_doc_matters_metadata_1>>
+ <<sqlite_formatted_insertions_doc_matters_metadata_2>>
<<sqlite_formatted_insertions_doc_matters_metadata_3>>
<<sqlite_formatted_insertions_topic_register_0>>
<<sqlite_formatted_insertions_topic_register_1>>
- <<sqlite_formatted_insertions_topic_register_2>>
- <<sqlite_formatted_insertions_topic_register_3>>
+ <<sqlite_formatted_insertions_topic_register_2>>
+ <<sqlite_formatted_insertions_topic_register_3>>
<<sqlite_formatted_insertions_topic_register_4>>
<<sqlite_formatted_insertions_topic_register_5>>
return _insert_metadata;
@@ -293,8 +293,8 @@ template SQLiteInsertDocObjectsLoop() {
auto url_html = spineUrlsHTML!()(doc_matters.conf_make_meta.conf.w_srv_data_root_url_html, doc_matters.src.language);
string insertDocObjectsRow(O)(O obj) {
<<sqlite_formatted_insertions_doc_objects_0>>
- <<sqlite_formatted_insertions_doc_objects_1>>
- <<sqlite_formatted_insertions_doc_objects_2>>
+ <<sqlite_formatted_insertions_doc_objects_1>>
+ <<sqlite_formatted_insertions_doc_objects_2>>
<<sqlite_formatted_insertions_doc_objects_3>>
return _insert_doc_objects_row;
}
@@ -1762,67 +1762,67 @@ string _insert_metadata = format(q"┃
#+NAME: sqlite_formatted_insertions_doc_matters_metadata_1
#+BEGIN_SRC sql
- INSERT INTO metadata_and_text (
- uid,
- src_filename_base,
- src_filename_suffix,
- src_composite_id_per_txt,
- src_composite_id_per_pod,
- title,
- title_main,
- title_sub,
- title_short,
- title_edition,
- title_language,
- creator_author,
- creator_author_last_first,
- creator_author_email,
- creator_illustrator,
- creator_translator,
- language_document,
- language_document_char,
- date_added_to_site,
- date_available,
- date_created,
- date_issued,
- date_modified,
- date_published,
- date_valid,
- rights_copyright,
- rights_copyright_audio,
- rights_copyright_cover,
- rights_copyright_illustrations,
- rights_copyright_photographs,
- rights_copyright_text,
- rights_copyright_translation,
- rights_copyright_video,
- rights_license,
- identifier_oclc,
- identifier_isbn,
- classify_dewey,
- classify_keywords,
- classify_loc,
- classify_subject,
- classify_topic_register,
- original_title,
- original_publisher,
- original_language,
- original_language_char,
- original_source,
- notes_abstract,
- notes_description,
- publisher,
- site_url_doc_root
- )
+INSERT INTO metadata_and_text (
+ uid,
+ src_filename_base,
+ src_filename_suffix,
+ src_composite_id_per_txt,
+ src_composite_id_per_pod,
+ title,
+ title_main,
+ title_sub,
+ title_short,
+ title_edition,
+ title_language,
+ creator_author,
+ creator_author_last_first,
+ creator_author_email,
+ creator_illustrator,
+ creator_translator,
+ language_document,
+ language_document_char,
+ date_added_to_site,
+ date_available,
+ date_created,
+ date_issued,
+ date_modified,
+ date_published,
+ date_valid,
+ rights_copyright,
+ rights_copyright_audio,
+ rights_copyright_cover,
+ rights_copyright_illustrations,
+ rights_copyright_photographs,
+ rights_copyright_text,
+ rights_copyright_translation,
+ rights_copyright_video,
+ rights_license,
+ identifier_oclc,
+ identifier_isbn,
+ classify_dewey,
+ classify_keywords,
+ classify_loc,
+ classify_subject,
+ classify_topic_register,
+ original_title,
+ original_publisher,
+ original_language,
+ original_language_char,
+ original_source,
+ notes_abstract,
+ notes_description,
+ publisher,
+ site_url_doc_root
+)
#+END_SRC
***** VALUES
#+NAME: sqlite_formatted_insertions_doc_matters_metadata_2
#+BEGIN_SRC sql
- VALUES (
- '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s'
- );
+VALUES (
+ '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s'
+);
#+END_SRC
***** dlang values for formatting
@@ -1908,23 +1908,23 @@ _insert_topics ~= format(q"┃
#+NAME: sqlite_formatted_insertions_topic_register_2
#+BEGIN_SRC sql
- INSERT INTO topic_register (
- uid_metadata_and_text,
- topic_register_lv0,
- topic_register_lv1,
- topic_register_lv2,
- topic_register_lv3,
- topic_register_lv4
- )
+INSERT INTO topic_register (
+ uid_metadata_and_text,
+ topic_register_lv0,
+ topic_register_lv1,
+ topic_register_lv2,
+ topic_register_lv3,
+ topic_register_lv4
+)
#+END_SRC
***** VALUES
#+NAME: sqlite_formatted_insertions_topic_register_3
#+BEGIN_SRC sql
- VALUES (
- '%s', '%s', '%s', '%s', '%s', '%s'
- );
+VALUES (
+ '%s', '%s', '%s', '%s', '%s', '%s'
+);
#+END_SRC
***** dlang values for formatting
@@ -1969,26 +1969,26 @@ string _insert_doc_objects_row = format(q"┃
#+NAME: sqlite_formatted_insertions_doc_objects_1
#+BEGIN_SRC sql
- INSERT INTO doc_objects (
- uid_metadata_and_text,
- ocn,
- obj_id,
- clean,
- body,
- lev,
- is_of_type,
- is_a,
- seg_name
- )
+INSERT INTO doc_objects (
+ uid_metadata_and_text,
+ ocn,
+ obj_id,
+ clean,
+ body,
+ lev,
+ is_of_type,
+ is_a,
+ seg_name
+)
#+END_SRC
***** VALUES
#+NAME: sqlite_formatted_insertions_doc_objects_2
#+BEGIN_SRC sql
- VALUES (
- '%s', %s, '%s', '%s', '%s', %s, '%s', '%s', '%s'
- );
+VALUES (
+ '%s', %s, '%s', '%s', '%s', %s, '%s', '%s', '%s'
+);
#+END_SRC
***** dlang values for formatting
diff --git a/org/out_src_pod.org b/org/out_src_pod.org
index f1c6ff1..daa2f04 100644
--- a/org/out_src_pod.org
+++ b/org/out_src_pod.org
@@ -449,6 +449,13 @@ if (exists(fn_pod)) {
}
#+END_SRC
+** source pod zip
+
+#+NAME: source_pod_zip
+#+BEGIN_SRC d
+// source pod zip
+#+END_SRC
+
* document header including copyright & license
#+NAME: doc_header_including_copyright_and_license
diff --git a/org/out_xmls.org b/org/out_xmls.org
index df0d724..864e86e 100644
--- a/org/out_xmls.org
+++ b/org/out_xmls.org
@@ -2208,7 +2208,6 @@ default:
M doc_matters,
) {
{ /+ (copy html images) +/
-
auto pth_html = spinePathsHTML!()(doc_matters.output_path, doc_matters.src.language);
if (!exists(pth_html.image)) {
pth_html.image.mkdirRecurse;
@@ -2267,7 +2266,7 @@ template outputEPub3() {
<<output_epub3_constructs_oebps_toc_nav_xhtml>>
<<output_epub3_constructs_oebps_toc_ncx>>
<<output_epub3_xhtml_seg_output>>
- <<output_epub3_xhtml_seg_output_loop>>
+ <<output_epub3_xhtml_seg_output_loop>>
<<output_epub3_xhtml_seg_object_is_heading>>
<<output_epub3_xhtml_seg_object_is_not_heading>>
<<output_epub3_xhtml_seg_object_is_frontmatter>>
@@ -2687,9 +2686,9 @@ xmlns="urn:oasis:names:tc:opendocument:xmlns:container">
#+NAME: output_epub3_xhtml_seg_output_loop
#+BEGIN_SRC d
- foreach (part; doc_matters.has.keys_seq.seg) {
- foreach (obj; doc_abstraction[part]) {
- string _txt = xhtml_format.special_characters(obj);
+foreach (part; doc_matters.has.keys_seq.seg) {
+ foreach (obj; doc_abstraction[part]) {
+ string _txt = xhtml_format.special_characters(obj);
#+END_SRC
***** all headings
diff --git a/org/spine.org b/org/spine.org
index fa246b9..61ed8cc 100644
--- a/org/spine.org
+++ b/org/spine.org
@@ -1351,11 +1351,11 @@ template spineAbstraction() {
<<spine_each_file_do_document_abstraction>>
<<spine_each_file_do_document_matters_msg_step4_start>>
<<spine_each_file_do_document_matters_0_struct_open>>
- <<spine_each_file_do_document_matters_1_detail_program_time>>
- <<spine_each_file_do_document_matters_2_meta>>
- <<spine_each_file_do_document_matters_3_env>>
- <<spine_each_file_do_document_matters_4_opt>>
- <<spine_each_file_do_document_matters_5_doc>>
+ <<spine_each_file_do_document_matters_1_detail_program_time>>
+ <<spine_each_file_do_document_matters_2_meta>>
+ <<spine_each_file_do_document_matters_3_env>>
+ <<spine_each_file_do_document_matters_4_opt>>
+ <<spine_each_file_do_document_matters_5_doc>>
<<spine_each_file_do_document_matters_6_struct_close_gather>>
<<spine_each_file_do_document_matters_msg_step4_end>>
auto t = tuple(doc_abstraction, doc_matters);
@@ -1518,167 +1518,167 @@ struct DocumentMatters {
#+NAME: spine_each_file_do_document_matters_1_detail_program_time
#+BEGIN_SRC d
- @safe auto generator_program() {
- struct Prog_ {
- @safe string project_name() {
- return "spine";
- }
- @safe string name() {
- return program_info.name;
- }
- @safe string ver() {
- return program_info.ver;
- }
- @trusted string name_and_version() {
- return format("%s-%s",
- name,
- ver,
- );
- }
- @safe string url_home() {
- return "https://sisudoc.org";
- }
- @safe string url_git() {
- return "https://git.sisudoc.org/software/sisu";
- }
- @safe auto compiler() {
- return program_info.compiler;
- }
- @safe auto stime() {
- return Clock.currTime(UTC()).toSimpleString();
- }
+@safe auto generator_program() {
+ struct Prog_ {
+ @safe string project_name() {
+ return "spine";
+ }
+ @safe string name() {
+ return program_info.name;
+ }
+ @safe string ver() {
+ return program_info.ver;
+ }
+ @trusted string name_and_version() {
+ return format("%s-%s",
+ name,
+ ver,
+ );
+ }
+ @safe string url_home() {
+ return "https://sisudoc.org";
+ }
+ @safe string url_git() {
+ return "https://git.sisudoc.org/software/sisu";
+ }
+ @safe auto compiler() {
+ return program_info.compiler;
+ }
+ @safe auto stime() {
+ return Clock.currTime(UTC()).toSimpleString();
}
- return Prog_();
- }
- @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
- ~ "-" ~ _st.day.to!string
- ~ " [" ~ _st.isoWeek.to!string ~ "/" ~ _st.dayOfWeek.to!int.to!string ~ "]"
- ~ " " ~ _st.hour.to!string
- ~ ":" ~ _st.minute.to!string
- ~ ":" ~ _st.second.to!string;
- return _time;
}
+ return Prog_();
+}
+@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
+ ~ "-" ~ _st.day.to!string
+ ~ " [" ~ _st.isoWeek.to!string ~ "/" ~ _st.dayOfWeek.to!int.to!string ~ "]"
+ ~ " " ~ _st.hour.to!string
+ ~ ":" ~ _st.minute.to!string
+ ~ ":" ~ _st.second.to!string;
+ return _time;
+}
#+END_SRC
**** config make & meta
#+NAME: spine_each_file_do_document_matters_2_meta
#+BEGIN_SRC d
- @safe auto conf_make_meta() {
- return _make_and_meta_struct;
- }
- @safe auto has() {
- return _doc_has_struct;
- }
+@safe auto conf_make_meta() {
+ return _make_and_meta_struct;
+}
+@safe auto has() {
+ return _doc_has_struct;
+}
#+END_SRC
**** env related
#+NAME: spine_each_file_do_document_matters_3_env
#+BEGIN_SRC d
- @safe auto env() {
- struct Env_ {
- @safe auto pwd() {
- return _manifest.env.pwd;
- }
- @safe auto home() {
- return _manifest.env.home;
- }
+@safe auto env() {
+ struct Env_ {
+ @safe auto pwd() {
+ return _manifest.env.pwd;
+ }
+ @safe auto home() {
+ return _manifest.env.home;
}
- return Env_();
}
+ return Env_();
+}
#+END_SRC
**** opt
#+NAME: spine_each_file_do_document_matters_4_opt
#+BEGIN_SRC d
- @safe auto opt() {
- struct Opt_ {
- @safe auto action() {
- /+ getopt options, commandline instructions, raw
- - processing instructions --epub --html etc.
- - command line config instructions --output
- +/
- return _opt_action;
- }
+@safe auto opt() {
+ struct Opt_ {
+ @safe auto action() {
+ /+ getopt options, commandline instructions, raw
+ - processing instructions --epub --html etc.
+ - command line config instructions --output
+ +/
+ return _opt_action;
}
- return Opt_();
}
+ return Opt_();
+}
#+END_SRC
**** output related
#+NAME: spine_each_file_do_document_matters_5_doc
#+BEGIN_SRC d
- @safe auto src() {
- return _manifest.src;
- }
- @safe auto src_path_info() {
- return spinePathsSRC!()(_manifest.env.pwd, _manifest.src.file_with_absolute_path); // would like (to have and use) relative path
- }
- @safe auto pod() {
- return _manifest.pod;
- }
- @safe auto sqlite() {
- struct SQLite_ {
- @safe string filename() {
- string _fn = "";
- string _pth = "";
- if (_opt_action.sqliteDB_filename.length > 0) {
- _fn = _opt_action.sqliteDB_filename;
- } else if (_make_and_meta_struct.conf.w_srv_db_sqlite_filename.length > 0) {
- _fn = _make_and_meta_struct.conf.w_srv_db_sqlite_filename;
- }
- return _fn;
+@safe auto src() {
+ return _manifest.src;
+}
+@safe auto src_path_info() {
+ return spinePathsSRC!()(_manifest.env.pwd, _manifest.src.file_with_absolute_path); // would like (to have and use) relative path
+}
+@safe auto pod() {
+ return _manifest.pod;
+}
+@safe auto sqlite() {
+ struct SQLite_ {
+ @safe string filename() {
+ string _fn = "";
+ string _pth = "";
+ if (_opt_action.sqliteDB_filename.length > 0) {
+ _fn = _opt_action.sqliteDB_filename;
+ } else if (_make_and_meta_struct.conf.w_srv_db_sqlite_filename.length > 0) {
+ _fn = _make_and_meta_struct.conf.w_srv_db_sqlite_filename;
}
- @safe string path() {
- string _pth = "";
- if (_opt_action.sqliteDB_path.length > 0) {
- _pth = _opt_action.sqliteDB_path;
- } else if (_make_and_meta_struct.conf.w_srv_db_sqlite_path.length > 0) {
- _pth = _make_and_meta_struct.conf.w_srv_db_sqlite_path;
- }
- return _pth;
+ return _fn;
+ }
+ @safe string path() {
+ string _pth = "";
+ if (_opt_action.sqliteDB_path.length > 0) {
+ _pth = _opt_action.sqliteDB_path;
+ } else if (_make_and_meta_struct.conf.w_srv_db_sqlite_path.length > 0) {
+ _pth = _make_and_meta_struct.conf.w_srv_db_sqlite_path;
}
- @safe string cgi_filename() {
- string _fn = "";
- if (_opt_action.cgi_sqlite_search_filename.length > 0) {
- _fn = _opt_action.cgi_sqlite_search_filename;
- } else if (_make_and_meta_struct.conf.w_srv_cgi_search_script.length > 0) {
- _fn = _make_and_meta_struct.conf.w_srv_cgi_search_script;
- }
- return _fn;
+ return _pth;
+ }
+ @safe string cgi_filename() {
+ string _fn = "";
+ if (_opt_action.cgi_sqlite_search_filename.length > 0) {
+ _fn = _opt_action.cgi_sqlite_search_filename;
+ } else if (_make_and_meta_struct.conf.w_srv_cgi_search_script.length > 0) {
+ _fn = _make_and_meta_struct.conf.w_srv_cgi_search_script;
}
- @safe string cgi_filename_d() {
- string _fn = "";
- if (_opt_action.cgi_sqlite_search_filename_d.length > 0) {
- _fn = _opt_action.cgi_sqlite_search_filename_d;
- } else if (_make_and_meta_struct.conf.w_srv_cgi_search_script_raw_fn_d.length > 0) {
- _fn = _make_and_meta_struct.conf.w_srv_cgi_search_script_raw_fn_d;
- }
- return _fn;
+ return _fn;
+ }
+ @safe string cgi_filename_d() {
+ string _fn = "";
+ if (_opt_action.cgi_sqlite_search_filename_d.length > 0) {
+ _fn = _opt_action.cgi_sqlite_search_filename_d;
+ } else if (_make_and_meta_struct.conf.w_srv_cgi_search_script_raw_fn_d.length > 0) {
+ _fn = _make_and_meta_struct.conf.w_srv_cgi_search_script_raw_fn_d;
}
+ return _fn;
}
- return SQLite_();
- }
- @safe auto output_path() {
- return _make_and_meta_struct.conf.output_path;
}
- @safe auto srcs() {
- struct SRC_ {
- auto file_insert_list() {
- return _header_body_insertfilelist_imagelist[headBody.insert_file_list];
- }
- auto image_list() {
- return _doc_has_struct.imagelist;
- }
+ return SQLite_();
+}
+@safe auto output_path() {
+ return _make_and_meta_struct.conf.output_path;
+}
+@safe auto srcs() {
+ struct SRC_ {
+ auto file_insert_list() {
+ return _header_body_insertfilelist_imagelist[headBody.insert_file_list];
+ }
+ auto image_list() {
+ return _doc_has_struct.imagelist;
}
- return SRC_();
}
+ return SRC_();
+}
#+END_SRC
**** } close
diff --git a/org/spine_info.org b/org/spine_info.org
index a23f110..1f55127 100644
--- a/org/spine_info.org
+++ b/org/spine_info.org
@@ -21,21 +21,64 @@
* README :readme:
** tangle
+*** org
+
+#+HEADER: :tangle "../README"
+#+BEGIN_SRC text
+<<sisu_spine_readme_org_header>>
+
+<<sisu_spine_readme_info>>
+
+<<sisu_spine_readme_install_org>>
+
+<<sisu_spine_readme_configuration_org>>
+
+<<sisu_spine_readme_commands_org>>
+
+<<sisu_spine_readme_examples_org>>
+#+END_SRC
+
+*** md
#+HEADER: :tangle "../README.md"
#+BEGIN_SRC text
<<sisu_spine_readme_info>>
-<<sisu_spine_readme_description>>
-<<sisu_spine_readme_install>>
-<<sisu_spine_readme_configuration>>
-<<sisu_spine_readme_commands>>
-<<sisu_spine_readme_examples>>
+
+<<sisu_spine_readme_install_md>>
+
+<<sisu_spine_readme_configuration_md>>
+
+<<sisu_spine_readme_commands_md>>
+
+<<sisu_spine_readme_examples_md>>
+#+END_SRC
+
+** org header
+
+#+NAME: sisu_spine_readme_org_header
+#+BEGIN_SRC text
+-*- mode: org -*-
+#+TITLE: spine (doc_reform) (project) README
+#+DESCRIPTION: README for spine
+#+FILETAGS: :spine:build:tools:
+#+AUTHOR: Ralph Amissah
+#+EMAIL: [[mailto:ralph.amissah@gmail.com][ralph.amissah@gmail.com]]
+#+COPYRIGHT: Copyright (C) 2015 - 2021 Ralph Amissah
+#+LANGUAGE: en
+#+STARTUP: content hideblocks hidestars noindent entitiespretty
+#+OPTIONS: H:3 num:nil toc:t \n:nil @:t ::t |:t ^:nil _:nil -:t f:t *:t <:t
+#+PROPERTY: header-args :exports code
+#+PROPERTY: header-args+ :noweb yes
+#+PROPERTY: header-args+ :eval no
+#+PROPERTY: header-args+ :results no
+#+PROPERTY: header-args+ :cache no
+#+PROPERTY: header-args+ :padline no
#+END_SRC
** project name
#+NAME: sisu_spine_readme_info
-#+BEGIN_SRC markdown
+#+BEGIN_SRC yaml
project_name: Spine, Doc Reform
description: [
@@ -60,18 +103,42 @@ project_name: Spine, Doc Reform
]
#+END_SRC
-** short description
+** short description (currently UNUSED)
#+NAME: sisu_spine_readme_description
#+BEGIN_SRC text
#+END_SRC
** installation
+*** org
+
+#+NAME: sisu_spine_readme_install_org
+#+BEGIN_SRC text
+,* <<sisu_spine_readme_install_heading>>
-#+NAME: sisu_spine_readme_install
+<<sisu_spine_readme_install_body>>
+#+END_SRC
+
+*** md
+
+#+NAME: sisu_spine_readme_install_md
#+BEGIN_SRC markdown
-# Installation, Compilation
+# <<sisu_spine_readme_install_heading>>
+<<sisu_spine_readme_install_body>>
+#+END_SRC
+
+*** heading
+
+#+NAME: sisu_spine_readme_install_heading
+#+BEGIN_SRC text
+Installation, Compilation
+#+END_SRC
+
+*** text body
+
+#+NAME: sisu_spine_readme_install_body
+#+BEGIN_SRC markdown
SiSU spine is written in the programming language D for which there are 3 compilers:
- dmd
@@ -105,15 +172,38 @@ https://mesonbuild.com/
make meson
dub --force --compiler=ldc2 && sudo cp -v cgi-bin/spine-search /usr/lib/cgi-bin/.
-
#+END_SRC
** configuration
+*** org
+
+#+NAME: sisu_spine_readme_configuration_org
+#+BEGIN_SRC text
+,* <<sisu_spine_readme_configuration_heading>>
-#+NAME: sisu_spine_readme_configuration
+<<sisu_spine_readme_configuration_body>>
+#+END_SRC
+
+*** md
+
+#+NAME: sisu_spine_readme_configuration_md
#+BEGIN_SRC markdown
-# Configuration
+# <<sisu_spine_readme_configuration_heading>>
+
+<<sisu_spine_readme_configuration_body>>
+#+END_SRC
+
+*** heading
+#+NAME: sisu_spine_readme_configuration_heading
+#+BEGIN_SRC text
+Configuration
+#+END_SRC
+
+*** text body
+
+#+NAME: sisu_spine_readme_configuration_body
+#+BEGIN_SRC markdown
Configuration files are yaml files
The following paths are searched:
@@ -171,15 +261,38 @@ webserv:
db_sqlite: "spine.search.db"
db_pg_table: ""
db_pg_user: ""
-
#+END_SRC
** commands help
+*** org
+
+#+NAME: sisu_spine_readme_commands_org
+#+BEGIN_SRC text
+,* <<sisu_spine_readme_commands_heading>>
+
+<<sisu_spine_readme_commands_body>>
+#+END_SRC
+
+*** md
-#+NAME: sisu_spine_readme_commands
+#+NAME: sisu_spine_readme_commands_md
#+BEGIN_SRC markdown
-# Commands
+# <<sisu_spine_readme_commands_heading>>
+
+<<sisu_spine_readme_commands_body>>
+#+END_SRC
+*** heading
+
+#+NAME: sisu_spine_readme_commands_heading
+#+BEGIN_SRC text
+Commands
+#+END_SRC
+
+*** text body
+
+#+NAME: sisu_spine_readme_commands_body
+#+BEGIN_SRC markdown
for a list of commands from the program type:
spine -h
@@ -252,36 +365,91 @@ at the time of writing this provides the following output:
--workon (reserved for some matters under development & testing)
--xhtml xhtml output
-h --help This help information.
-
#+END_SRC
** command examples
+*** text body org
-#+NAME: sisu_spine_readme_examples
+#+NAME: sisu_spine_readme_examples_org
#+BEGIN_SRC markdown
-# Examples
+,* Examples
-if configuartion has been set specify just
-- the desired output and
-- the markup document/pod(s) to process
+,** curate
- spine -v --html ~spineMarkupSamples/markup/pod/sisu-manual
+<<sisu_spine_readme_examples_curate_text>>
-if configuartion has not been set or to overide the set configration specify
-- the output path as well as
-- the desired output and
-- the markup document/pod(s) to process
+,** sqlite
-note: ~webDocRoot should be the path to web doc root, provide a suitable output path.
+<<sisu_spine_readme_examples_sqlite_text>>
- spine -v --html --html-link-search --html-link-curate --output=`echo ~webDocRoot` ~spineMarkupSamples/pod/*
+,*** create db
- spine -v --html --html-link-search --html-link-curate --epub --output=`echo ~webDocRoot` ~spineMarkupSamples/pod/*
+<<sisu_spine_readme_examples_create_db_text>>
- spine -v --html --epub --latex --odt --curate --output=`echo ~webDocRoot` ~spineMarkupSamples/pod/*
+,*** populate db
+
+<<sisu_spine_readme_examples_populate_db_text>>
+
+,*** generate a cgi search form in d
+
+ <<sisu_spine_readme_examples_search_db_cgi_text>>
+
+,**** compile the cgi search form
+
+<<sisu_spine_readme_examples_compile_search_db_cgi_text>>
+
+,*** create db & search form
+
+ <<sisu_spine_readme_examples_create_db_and_search_form_text>>
+
+,*** html with links to search form
+
+ <<sisu_spine_readme_examples_html_with_links_to_search_form_text>>
+#+END_SRC
+
+*** text body md
+
+#+NAME: sisu_spine_readme_examples_md
+#+BEGIN_SRC markdown
+# Examples
## curate
+<<sisu_spine_readme_examples_curate_text>>
+
+## sqlite
+
+<<sisu_spine_readme_examples_sqlite_text>>
+
+### create db
+
+<<sisu_spine_readme_examples_create_db_text>>
+
+### populate db
+
+<<sisu_spine_readme_examples_populate_db_text>>
+
+### generate a cgi search form in d
+
+ <<sisu_spine_readme_examples_search_db_cgi_text>>
+
+#### compile the cgi search form
+
+<<sisu_spine_readme_examples_compile_search_db_cgi_text>>
+
+### create db & search form
+
+ <<sisu_spine_readme_examples_create_db_and_search_form_text>>
+
+### html with links to search form
+
+ <<sisu_spine_readme_examples_html_with_links_to_search_form_text>>
+#+END_SRC
+
+*** text body content
+
+#+NAME: sisu_spine_readme_examples_curate_text
+#+BEGIN_SRC text
if you have a document collection with documents that have metadata headers a
summary of the collection can be made using the curate command
@@ -292,11 +460,32 @@ summary of the collection can be made using the curate command
spine -v --html --html-link-search --html-link-curate --curate --output=`echo ~webDocRoot` ~spineMarkupSamples/pod/*
spine -v --html --html-link-search --html-link-curate --curate ~spineMarkupSamples/pod/*
+#+END_SRC
-## sqlite
+#+NAME: sisu_spine_readme_examples_sqlite_text
+#+BEGIN_SRC text
+if configuartion has been set specify just
+- the desired output and
+- the markup document/pod(s) to process
-### create db
+ spine -v --html ~spineMarkupSamples/markup/pod/sisu-manual
+
+if configuartion has not been set or to overide the set configration specify
+- the output path as well as
+- the desired output and
+- the markup document/pod(s) to process
+note: ~webDocRoot should be the path to web doc root, provide a suitable output path.
+
+ spine -v --html --html-link-search --html-link-curate --output=`echo ~webDocRoot` ~spineMarkupSamples/pod/*
+
+ spine -v --html --html-link-search --html-link-curate --epub --output=`echo ~webDocRoot` ~spineMarkupSamples/pod/*
+
+ spine -v --html --epub --latex --odt --curate --output=`echo ~webDocRoot` ~spineMarkupSamples/pod/*
+#+END_SRC
+
+#+NAME: sisu_spine_readme_examples_create_db_text
+#+BEGIN_SRC text
if there is no sqlite db you first need to create one, to do so
- the name of the db and
- the root path for document output
@@ -313,9 +502,10 @@ if you have a configration file providing this information that is to be used
for a document collection you can point to the document collection:
spine -v --sqlite-db-create ~spineMarkupSamples/pod
+#+END_SRC
-### populate db
-
+#+NAME: sisu_spine_readme_examples_populate_db_text
+#+BEGIN_SRC text
must specify:
- the name of the db and
- the root path for document output
@@ -331,29 +521,31 @@ if you have a configration file providing this information that is to be used
for a document collection you can point to the document collection:
spine -v --sqlite-update ~spineMarkupSamples/pod/*
+#+END_SRC
-### generate a cgi search form in d
-
- spine -v --cgi-search-form-codegen \
- --output=/var/www/html \
- ~spineMarkupSamples/pod
+#+NAME: sisu_spine_readme_examples_search_db_cgi_text
+#+BEGIN_SRC text
+spine -v --cgi-search-form-codegen \
+ --output=/var/www/html \
+ ~spineMarkupSamples/pod
- spine -v --cgi-search-form-codegen --config=~spineMarkupSamples/pod
+spine -v --cgi-search-form-codegen --config=~spineMarkupSamples/pod
- spine -v --cgi-search-form-codegen --config=~spineMarkupSamples/pod/.dr/config_local_site
+spine -v --cgi-search-form-codegen --config=~spineMarkupSamples/pod/.dr/config_local_site
- spine --cgi-search-form-codegen --output=`echo ~webDocRoot` ~spineMarkupSamples/pod
+spine --cgi-search-form-codegen --output=`echo ~webDocRoot` ~spineMarkupSamples/pod
- spine --cgi-search-form-codegen --cgi-sqlite-search-filename="spine_search" --output=`echo ~webDocRoot`
+spine --cgi-search-form-codegen --cgi-sqlite-search-filename="spine_search" --output=`echo ~webDocRoot`
- spine -v --cgi-search-form-codegen \
- --sqlite-db-filename="spine.search.db" \
- --cgi-sqlite-search-filename="spine-search" \
- --output=/var/www/html \
- ~spineMarkupSamples/pod
-
-#### compile the cgi search form
+spine -v --cgi-search-form-codegen \
+ --sqlite-db-filename="spine.search.db" \
+ --cgi-sqlite-search-filename="spine-search" \
+ --output=/var/www/html \
+ ~spineMarkupSamples/pod
+#+END_SRC
+#+NAME: sisu_spine_readme_examples_compile_search_db_cgi_text
+#+BEGIN_SRC text
cd /var/www/html/cgi # /var/www/html (default document root)
cd ~webDocRoot/cgi
@@ -376,49 +568,23 @@ cgi-bin directory
spine -v --html --html-link-search --output=`echo ~webDocRoot` ~spineMarkupSamples/pod/*
spine -v --html --html-link-search --cgi-sqlite-search-filename="spine-search" --html-link-curate --curate --output=`echo ~webDocRoot` ~spineMarkupSamples/pod/*
-
-### create db & search form
-
- spine -v \
- --sqlite-db-create --sqlite-db-filename="spine.search.db" \
- --cgi-search-form-codegen --cgi-sqlite-search-filename="spine-search" \
- --output=/var/www/html \
- ~spineMarkupSamples/pod/*
-
-### html with links to search form
-
- spine -v --html \
- --html-link-search \
- --output=`echo ~webDocRoot` \
- ~spineMarkupSamples/pod/*
-
#+END_SRC
-* +README+
-
-#+HEADER: :NO-tangle "../README"
-#+BEGIN_SRC txt
-project_name: Spine, Doc Reform
- description: [
- "documents, structuring, processing, publishing",
- search,
- object numbering,
- static content generator,
- sisu markup
- ]
-
- author:
- name: Ralph Amissah
- email: ralph.amissah@gmail.com
-
- copyright: "(C) 2015 - 2021 Ralph Amissah, All Rights Reserved."
-
- license: "AGPL 3 or later"
+#+NAME: sisu_spine_readme_examples_create_db_and_search_form_text
+#+BEGIN_SRC text
+spine -v \
+ --sqlite-db-create --sqlite-db-filename="spine.search.db" \
+ --cgi-search-form-codegen --cgi-sqlite-search-filename="spine-search" \
+ --output=/var/www/html \
+ ~spineMarkupSamples/pod/*
+#+END_SRC
- homepage: [
- "https://www.doc_reform.org",
- "https://www.sisudoc.org"
- ]
+#+NAME: sisu_spine_readme_examples_html_with_links_to_search_form_text
+#+BEGIN_SRC text
+spine -v --html \
+ --html-link-search \
+ --output=`echo ~webDocRoot` \
+ ~spineMarkupSamples/pod/*
#+END_SRC
* manpage :manpage:
@@ -4550,10 +4716,15 @@ matches are found.
#+HEADER: :tangle "../COPYRIGHT"
#+BEGIN_SRC txt
-<<sisu_spine_copyright>>
-<<sisu_spine_license_agpl3>>
-<<sisu_spine_summary>>
+- Name: spine - SiSU Spine, Doc Reform
+ <<sisu_spine_copyright>>
+
+ <<sisu_spine_license_agpl3>>
+
+ <<sisu_spine_summary>>
+
<<sisu_spine_markup_samples>>
+
<<sisu_spine_dependencies>>
#+END_SRC
@@ -4561,10 +4732,15 @@ matches are found.
#+HEADER: :tangle "../src/COPYRIGHT"
#+BEGIN_SRC txt
-<<sisu_spine_copyright>>
-<<sisu_spine_license_agpl3>>
-<<sisu_spine_summary>>
+- Name: spine - SiSU Spine, Doc Reform
+ <<sisu_spine_copyright>>
+
+ <<sisu_spine_license_agpl3>>
+
+ <<sisu_spine_summary>>
+
<<sisu_spine_markup_samples>>
+
<<sisu_spine_dependencies>>
#+END_SRC
@@ -4572,10 +4748,15 @@ matches are found.
#+HEADER: :tangle "../src/doc_reform/COPYRIGHT"
#+BEGIN_SRC txt
-<<sisu_spine_copyright>>
-<<sisu_spine_license_agpl3>>
-<<sisu_spine_summary>>
+- Name: spine - SiSU Spine, Doc Reform
+ <<sisu_spine_copyright>>
+
+ <<sisu_spine_license_agpl3>>
+
+ <<sisu_spine_summary>>
+
<<sisu_spine_markup_samples>>
+
<<sisu_spine_dependencies>>
#+END_SRC
@@ -4589,8 +4770,11 @@ matches are found.
#+HEADER: :tangle "./COPYRIGHT"
#+BEGIN_SRC txt
-<<sisu_spine_copyright>>
-<<sisu_spine_summary>>
+- Name: spine - SiSU Spine, Doc Reform
+ <<sisu_spine_copyright>>
+
+ <<sisu_spine_summary>>
+
<<sisu_spine_markup_samples>>
#+END_SRC
@@ -4606,15 +4790,13 @@ matches are found.
#+NAME: sisu_spine_copyright
#+BEGIN_SRC txt
-- Name: spine - SiSU Spine, Doc Reform
- - Description: documents, structuring, processing, publishing, search
- - static content generator
+- Description: documents, structuring, processing, publishing, search
+ - static content generator
- - Author: Ralph Amissah
- [ralph.amissah@gmail.com]
-
- - Copyright: (C) 2015 - 2021 Ralph Amissah
+- Author: Ralph Amissah
+ [ralph.amissah@gmail.com]
+- Copyright: (C) 2015 - 2021 Ralph Amissah
#+END_SRC
*** license
@@ -4622,48 +4804,46 @@ matches are found.
#+NAME: sisu_spine_license_agpl3
#+BEGIN_SRC txt
- - code under src/* src/doc_reform/*
- - License: AGPL 3 or later:
-
- Spine, Doc Reform (SiSU), a framework for document structuring, publishing and
- search
+- code under src/* src/doc_reform/*
+ - License: AGPL 3 or later:
- Copyright (C) Ralph Amissah
+ Spine, Doc Reform (SiSU), a framework for document structuring, publishing and
+ search
- 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.
+ Copyright (C) Ralph Amissah
- 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.
+ 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.
- You should have received a copy of the GNU General Public License along
- with this program. If not, see [https://www.gnu.org/licenses/].
+ 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.
- 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]
+ 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]
#+END_SRC
*** spine_summary
#+NAME: sisu_spine_summary
#+BEGIN_SRC txt
- - Spine, Doc Reform (related to SiSU) uses standard:
- - docReform markup syntax (based on SiSU markup)
- - standard SiSU markup syntax with modified headers and minor
- modifications
- - docReform object numbering (based on SiSU object citation numbering)
- - standard SiSU document object numbering
-
- - Homepages:
- [https://www.sisudoc.org]
-
+- Spine, Doc Reform (related to SiSU) uses standard:
+ - docReform markup syntax (based on SiSU markup)
+ - standard SiSU markup syntax with modified headers and minor
+ modifications
+ - docReform object numbering (based on SiSU object citation numbering)
+ - standard SiSU document object numbering
+
+- Homepages:
+ [https://www.sisudoc.org]
#+END_SRC
#+BEGIN_SRC txt
@@ -4682,7 +4862,6 @@ matches are found.
- Spine, Doc Reform (SiSU) markup samples
Individual document content Copyright (Author) [as stated in document header]
Individual document content License (Author) [as stated in document header]
-
#+END_SRC
*** dependencies
@@ -4710,6 +4889,9 @@ matches are found.
[https://github.com/dlang-community/d2sqlite3]
[https://code.dlang.org/packages/d2sqlite3]
+ - src/ext_depends/d2sqlite3
+ - sundry/spine_search_cgi/src/ext_depends_cgi/d2sqlite3
+
- Name: dyaml
- Description:
D:YAML is an open source YAML parser and emitter library for the D programming language.
@@ -4728,6 +4910,8 @@ matches are found.
[https://github.com/dlang-community/D-YAML]
[https://code.dlang.org/packages/dyaml]
+ - src/ext_depends/D-YAML
+
- Name: imageformats
- Description:
@@ -4745,6 +4929,8 @@ matches are found.
[https://github.com/lgvz/imageformats]
[https://code.dlang.org/packages/imageformats]
+ - src/ext_depends/imageformats
+
- Name: tinyendian (dyaml dependency)
- Description:
TinyEndian is a minimal endianness library for the D programming language.
@@ -4763,6 +4949,8 @@ matches are found.
[https://github.com/dlang-community/tinyendian]
[https://code.dlang.org/packages/tinyendian]
+ - src/ext_depends/tinyendian
+
- Name: cgi.d
- Description:
@@ -4771,7 +4959,7 @@ matches are found.
- Copyright: (C) 2008 - 2021 Adam D. Ruppe
- - code: cgi.d (copy in ./sundry/spine_search_cgi/src/ext_depends_cgi/arsd)
+ - code: cgi.d
aria2c https://raw.githubusercontent.com/adamdruppe/arsd/master/cgi.d
- License: BSL-1.0
@@ -4782,6 +4970,7 @@ matches are found.
- Homepages:
[https://github.com/adamdruppe/arsd]
+ - sundry/spine_search_cgi/src/ext_depends_cgi/arsd
- Name: dub2nix
- Description:
@@ -4796,7 +4985,6 @@ matches are found.
- Homepages:
[https://github.com/lionello/dub2nix]
-
#+END_SRC
* CHANGELOG :changelog:
diff --git a/org/util_cgi_d_sqlite_search.org b/org/util_cgi_d_sqlite_search.org
index 84d1b1e..88efe5b 100644
--- a/org/util_cgi_d_sqlite_search.org
+++ b/org/util_cgi_d_sqlite_search.org
@@ -35,26 +35,26 @@ void cgi_function_intro(Cgi cgi) {
<<cgi_sqlite_initialize_1>>
<<cgi_sqlite_initialize_2>>
<<cgi_sqlite_initialize_3>>
- <<cgi_sqlite_initialize_4>>
- <<cgi_sqlite_initialize_5>>
- <<cgi_sqlite_initialize_6>>
- <<cgi_sqlite_initialize_7>>
+ <<cgi_sqlite_initialize_4>>
+ <<cgi_sqlite_initialize_5>>
+ <<cgi_sqlite_initialize_6>>
+ <<cgi_sqlite_initialize_7>>
<<cgi_sqlite_initialize_8>>
<<cgi_sqlite_initialize_9>>
<<cgi_sqlite_initialize_10>>
<<cgi_sqlite_header>>
<<cgi_sqlite_table>>
-<<cgi_sqlite_form_0>>
-<<cgi_sqlite_form_1>>
+ <<cgi_sqlite_form_0>>
+ <<cgi_sqlite_form_1>>
<<cgi_sqlite_form_2>>
<<cgi_sqlite_form_3>>
-<<cgi_sqlite_form_4>>
-<<cgi_sqlite_form_5>>
+ <<cgi_sqlite_form_4>>
+ <<cgi_sqlite_form_5>>
<<cgi_sqlite_write>>
<<cgi_sqlite_set_db>>
<<cgi_sqlite_select_statement_0>>
<<cgi_sqlite_select_statement_1>>
-<<cgi_sqlite_select_statement_2>>
+ <<cgi_sqlite_select_statement_2>>
<<cgi_sqlite_db_close>>
<<cgi_sqlite_db_tail>>
}
@@ -231,79 +231,79 @@ auto text_fields() {
#+NAME: cgi_sqlite_initialize_4
#+BEGIN_SRC d
- static struct Rgx {
- // static canned_query = ctRegex!(`\A(?P<matched>.+)\Z`, "m");
- static search_text_area = ctRegex!(`\A(?P<matched>.+)\Z`, "m");
- // static fulltext = ctRegex!(`\A(?P<matched>.+)\Z`, "m");
- static line = ctRegex!(`^(?P<matched>.+?)(?: ~|$)`, "m");
- static text = ctRegex!(`(?:^|\s~\s*)text:\s+(?P<matched>.+?)(?: ~|$)`, "m");
- static author = ctRegex!(`(?:^|\s~\s*)author:\s+(?P<matched>.+)$`, "m");
- static title = ctRegex!(`(?:^|\s~\s*)title:\s+(?P<matched>.+)$`, "m");
- static uid = ctRegex!(`(?:^|\s~\s*)uid:\s+(?P<matched>.+)$`, "m");
- static fn = ctRegex!(`(?:^|\s~\s*)fn:\s+(?P<matched>.+)$`, "m");
- static keywords = ctRegex!(`(?:^|\s~\s*)keywords:\s+(?P<matched>.+)$`, "m");
- static topic_register = ctRegex!(`(?:^|\s~\s*)topic_register:\s+(?P<matched>.+)$`, "m");
- static subject = ctRegex!(`(?:^|\s~\s*)subject:\s+(?P<matched>.+)$`, "m");
- static description = ctRegex!(`(?:^|\s~\s*)description:\s+(?P<matched>.+)$`, "m");
- static publisher = ctRegex!(`(?:^|\s~\s*)publisher:\s+(?P<matched>.+)$`, "m");
- static editor = ctRegex!(`(?:^|\s~\s*)editor:\s+(?P<matched>.+)$`, "m");
- static contributor = ctRegex!(`(?:^|\s~\s*)contributor:\s+(?P<matched>.+)$`, "m");
- static date = ctRegex!(`(?:^|\s~\s*)date:\s+(?P<matched>.+)$`, "m");
- static results_type = ctRegex!(`(?:^|\s~\s*)type:\s+(?P<matched>.+)$`, "m");
- static format = ctRegex!(`(?:^|\s~\s*)format:\s+(?P<matched>.+)$`, "m");
- static identifier = ctRegex!(`(?:^|\s~\s*)identifier:\s+(?P<matched>.+)$`, "m");
- static source = ctRegex!(`(?:^|\s~\s*)source:\s+(?P<matched>.+)$`, "m");
- static language = ctRegex!(`(?:^|\s~\s*)language:\s+(?P<matched>.+)$`, "m");
- static relation = ctRegex!(`(?:^|\s~\s*)relation:\s+(?P<matched>.+)$`, "m");
- static coverage = ctRegex!(`(?:^|\s~\s*)coverage:\s+(?P<matched>.+)$`, "m");
- static rights = ctRegex!(`(?:^|\s~\s*)rights:\s+(?P<matched>.+)$`, "m");
- static comment = ctRegex!(`(?:^|\s~\s*)comment:\s+(?P<matched>.+)$`, "m");
- // static abstract_ = ctRegex!(`(?:^|\s~\s*)abstract:\s+(?P<matched>.+)$`, "m");
- static src_filename_base = ctRegex!(`^src_filename_base:\s+(?P<matched>.+)$`, "m");
- }
+static struct Rgx {
+ // static canned_query = ctRegex!(`\A(?P<matched>.+)\Z`, "m");
+ static search_text_area = ctRegex!(`\A(?P<matched>.+)\Z`, "m");
+ // static fulltext = ctRegex!(`\A(?P<matched>.+)\Z`, "m");
+ static line = ctRegex!(`^(?P<matched>.+?)(?: ~|$)`, "m");
+ static text = ctRegex!(`(?:^|\s~\s*)text:\s+(?P<matched>.+?)(?: ~|$)`, "m");
+ static author = ctRegex!(`(?:^|\s~\s*)author:\s+(?P<matched>.+)$`, "m");
+ static title = ctRegex!(`(?:^|\s~\s*)title:\s+(?P<matched>.+)$`, "m");
+ static uid = ctRegex!(`(?:^|\s~\s*)uid:\s+(?P<matched>.+)$`, "m");
+ static fn = ctRegex!(`(?:^|\s~\s*)fn:\s+(?P<matched>.+)$`, "m");
+ static keywords = ctRegex!(`(?:^|\s~\s*)keywords:\s+(?P<matched>.+)$`, "m");
+ static topic_register = ctRegex!(`(?:^|\s~\s*)topic_register:\s+(?P<matched>.+)$`, "m");
+ static subject = ctRegex!(`(?:^|\s~\s*)subject:\s+(?P<matched>.+)$`, "m");
+ static description = ctRegex!(`(?:^|\s~\s*)description:\s+(?P<matched>.+)$`, "m");
+ static publisher = ctRegex!(`(?:^|\s~\s*)publisher:\s+(?P<matched>.+)$`, "m");
+ static editor = ctRegex!(`(?:^|\s~\s*)editor:\s+(?P<matched>.+)$`, "m");
+ static contributor = ctRegex!(`(?:^|\s~\s*)contributor:\s+(?P<matched>.+)$`, "m");
+ static date = ctRegex!(`(?:^|\s~\s*)date:\s+(?P<matched>.+)$`, "m");
+ static results_type = ctRegex!(`(?:^|\s~\s*)type:\s+(?P<matched>.+)$`, "m");
+ static format = ctRegex!(`(?:^|\s~\s*)format:\s+(?P<matched>.+)$`, "m");
+ static identifier = ctRegex!(`(?:^|\s~\s*)identifier:\s+(?P<matched>.+)$`, "m");
+ static source = ctRegex!(`(?:^|\s~\s*)source:\s+(?P<matched>.+)$`, "m");
+ static language = ctRegex!(`(?:^|\s~\s*)language:\s+(?P<matched>.+)$`, "m");
+ static relation = ctRegex!(`(?:^|\s~\s*)relation:\s+(?P<matched>.+)$`, "m");
+ static coverage = ctRegex!(`(?:^|\s~\s*)coverage:\s+(?P<matched>.+)$`, "m");
+ static rights = ctRegex!(`(?:^|\s~\s*)rights:\s+(?P<matched>.+)$`, "m");
+ static comment = ctRegex!(`(?:^|\s~\s*)comment:\s+(?P<matched>.+)$`, "m");
+ // static abstract_ = ctRegex!(`(?:^|\s~\s*)abstract:\s+(?P<matched>.+)$`, "m");
+ static src_filename_base = ctRegex!(`^src_filename_base:\s+(?P<matched>.+)$`, "m");
+}
#+END_SRC
***** searchfields
#+NAME: cgi_sqlite_initialize_5
#+BEGIN_SRC d
- struct searchFields {
- string canned_query = ""; // GET canned_query == cq
- string search_text_area = ""; // POST search_text_area == tsa
- string text = ""; // text == txt
- string author = ""; // author == au
- string title = ""; // title == ti
- string uid = ""; // uid == uid
- string fn = ""; // fn == fn
- string keywords = ""; // keywords == kw
- string topic_register = ""; // topic_register == tr
- string subject = ""; // subject == su
- string description = ""; // description == de
- string publisher = ""; // publisher == pb
- string editor = ""; // editor == ed
- string contributor = ""; // contributor == ct
- string date = ""; // date == dt
- string format = ""; // format == fmt
- string identifier = ""; // identifier == id
- string source = ""; // source == src sfn
- string language = ""; // language == lng
- string relation = ""; // relation == rl
- string coverage = ""; // coverage == cv
- string rights = ""; // rights == rgt
- string comment = ""; // comment == cmt
- // string abstract = "";
- string src_filename_base = ""; // src_filename_base == bfn
- string results_type = ""; // results_type == rt radio
- string sql_match_limit = ""; // sql_match_limit == sml radio
- string sql_match_offset = ""; // sql_match_offset == smo
- string stats = ""; // stats == sts checked
- string echo = ""; // echo == ec checked
- string url = ""; // url == url checked
- string searched = ""; // searched == se checked
- string sql = ""; // sql == sql checked
- }
- auto rgx = Rgx();
- auto got = searchFields();
+struct searchFields {
+ string canned_query = ""; // GET canned_query == cq
+ string search_text_area = ""; // POST search_text_area == tsa
+ string text = ""; // text == txt
+ string author = ""; // author == au
+ string title = ""; // title == ti
+ string uid = ""; // uid == uid
+ string fn = ""; // fn == fn
+ string keywords = ""; // keywords == kw
+ string topic_register = ""; // topic_register == tr
+ string subject = ""; // subject == su
+ string description = ""; // description == de
+ string publisher = ""; // publisher == pb
+ string editor = ""; // editor == ed
+ string contributor = ""; // contributor == ct
+ string date = ""; // date == dt
+ string format = ""; // format == fmt
+ string identifier = ""; // identifier == id
+ string source = ""; // source == src sfn
+ string language = ""; // language == lng
+ string relation = ""; // relation == rl
+ string coverage = ""; // coverage == cv
+ string rights = ""; // rights == rgt
+ string comment = ""; // comment == cmt
+ // string abstract = "";
+ string src_filename_base = ""; // src_filename_base == bfn
+ string results_type = ""; // results_type == rt radio
+ string sql_match_limit = ""; // sql_match_limit == sml radio
+ string sql_match_offset = ""; // sql_match_offset == smo
+ string stats = ""; // stats == sts checked
+ string echo = ""; // echo == ec checked
+ string url = ""; // url == url checked
+ string searched = ""; // searched == se checked
+ string sql = ""; // sql == sql checked
+}
+auto rgx = Rgx();
+auto got = searchFields();
#+END_SRC
***** env
@@ -311,264 +311,264 @@ auto text_fields() {
#+NAME: cgi_sqlite_initialize_6
#+BEGIN_SRC d
- if (environment.get("REQUEST_METHOD", "POST") == "POST") {
- if ("sf" in cgi.post) {
- got.search_text_area = cgi.post["sf"];
- if (auto m = got.search_text_area.matchFirst(rgx.text)) {
+if (environment.get("REQUEST_METHOD", "POST") == "POST") {
+ if ("sf" in cgi.post) {
+ got.search_text_area = cgi.post["sf"];
+ if (auto m = got.search_text_area.matchFirst(rgx.text)) {
+ got.text = m["matched"];
+ got.canned_query ~= "sf=" ~ m["matched"];
+ } else if (auto m = got.search_text_area.matchFirst(rgx.line)) {
+ if (
+ !(m["matched"].matchFirst(rgx.author))
+ && !(m["matched"].matchFirst(rgx.title))
+ ) {
got.text = m["matched"];
got.canned_query ~= "sf=" ~ m["matched"];
- } else if (auto m = got.search_text_area.matchFirst(rgx.line)) {
- if (
- !(m["matched"].matchFirst(rgx.author))
- && !(m["matched"].matchFirst(rgx.title))
- ) {
- got.text = m["matched"];
- got.canned_query ~= "sf=" ~ m["matched"];
- }
- }
- if (auto m = got.search_text_area.matchFirst(rgx.author)) {
- got.author = m["matched"];
- got.canned_query ~= "&au=" ~ m["matched"];
- }
- if (auto m = got.search_text_area.matchFirst(rgx.title)) {
- got.title = m["matched"];
- got.canned_query ~= "&ti=" ~ m["matched"];
- }
- if (auto m = got.search_text_area.matchFirst(rgx.uid)) {
- got.uid = m["matched"];
- got.canned_query ~= "&uid=" ~ m["matched"];
- }
- if (auto m = got.search_text_area.matchFirst(rgx.fn)) {
- got.fn = m["matched"];
- got.canned_query ~= "&fn=" ~ m["matched"];
- }
- if (auto m = got.search_text_area.matchFirst(rgx.keywords)) {
- got.keywords = m["matched"];
- got.canned_query ~= "&kw=" ~ m["matched"];
- }
- if (auto m = got.search_text_area.matchFirst(rgx.topic_register)) {
- got.topic_register = m["matched"];
- got.canned_query ~= "&tr=" ~ m["matched"];
- }
- if (auto m = got.search_text_area.matchFirst(rgx.subject)) {
- got.subject = m["matched"];
- got.canned_query ~= "&su=" ~ m["matched"];
- }
- if (auto m = got.search_text_area.matchFirst(rgx.description)) {
- got.description = m["matched"];
- got.canned_query ~= "&de=" ~ m["matched"];
- }
- if (auto m = got.search_text_area.matchFirst(rgx.publisher)) {
- got.publisher = m["matched"];
- got.canned_query ~= "&pb=" ~ m["matched"];
- }
- if (auto m = got.search_text_area.matchFirst(rgx.editor)) {
- got.editor = m["matched"];
- got.canned_query ~= "&ed=" ~ m["matched"];
- }
- if (auto m = got.search_text_area.matchFirst(rgx.contributor)) {
- got.contributor = m["matched"];
- got.canned_query ~= "&ct=" ~ m["matched"];
- }
- if (auto m = got.search_text_area.matchFirst(rgx.date)) {
- got.date = m["matched"];
- got.canned_query ~= "&dt=" ~ m["matched"];
- }
- // if (auto m = got.search_text_area.matchFirst(rgx.results_type)) {
- // got.results_type = m["matched"];
- // got.canned_query ~= "&rt=" ~ m["matched"];
- // }
- if (auto m = got.search_text_area.matchFirst(rgx.format)) {
- got.format = m["matched"];
- got.canned_query ~= "&fmt=" ~ m["matched"];
- }
- if (auto m = got.search_text_area.matchFirst(rgx.identifier)) {
- got.identifier = m["matched"];
- got.canned_query ~= "&id=" ~ m["matched"];
- }
- if (auto m = got.search_text_area.matchFirst(rgx.source)) {
- got.source = m["matched"];
- got.canned_query ~= "&src=" ~ m["matched"];
- }
- if (auto m = got.search_text_area.matchFirst(rgx.language)) {
- got.language = m["matched"];
- got.canned_query ~= "&lng=" ~ m["matched"];
- }
- if (auto m = got.search_text_area.matchFirst(rgx.relation)) {
- got.relation = m["matched"];
- got.canned_query ~= "&rl=" ~ m["matched"];
- }
- if (auto m = got.search_text_area.matchFirst(rgx.coverage)) {
- got.coverage = m["matched"];
- got.canned_query ~= "&cv=" ~ m["matched"];
- }
- if (auto m = got.search_text_area.matchFirst(rgx.rights)) {
- got.rights = m["matched"];
- got.canned_query ~= "&rgt=" ~ m["matched"];
- }
- if (auto m = got.search_text_area.matchFirst(rgx.comment)) {
- got.comment = m["matched"];
- got.canned_query ~= "&cmt=" ~ m["matched"];
- }
- // if (auto m = search_text_area.matchFirst(rgx.abstract)) {
- // got.abstract = m["matched"];
- // }
- if (auto m = got.search_text_area.matchFirst(rgx.src_filename_base)) {
- got.src_filename_base = m["matched"];
- got.canned_query ~= "&bfn=" ~ m["matched"];
}
}
- if ("fn" in cgi.post) {
- got.fn = cgi.post["fn"];
- got.canned_query ~= "&fn=" ~ cgi.post["fn"];
+ if (auto m = got.search_text_area.matchFirst(rgx.author)) {
+ got.author = m["matched"];
+ got.canned_query ~= "&au=" ~ m["matched"];
}
- if ("rt" in cgi.post) {
- got.results_type = cgi.post["rt"];
- got.canned_query ~= "&rt=" ~ cgi.post["rt"];
+ if (auto m = got.search_text_area.matchFirst(rgx.title)) {
+ got.title = m["matched"];
+ got.canned_query ~= "&ti=" ~ m["matched"];
}
- if ("sts" in cgi.post) {
- got.stats = cgi.post["sts"];
- got.canned_query ~= "&sts=" ~ cgi.post["sts"];
+ if (auto m = got.search_text_area.matchFirst(rgx.uid)) {
+ got.uid = m["matched"];
+ got.canned_query ~= "&uid=" ~ m["matched"];
}
- if ("ec" in cgi.post) {
- got.echo = cgi.post["ec"];
- got.canned_query ~= "&ec=" ~ cgi.post["ec"];
+ if (auto m = got.search_text_area.matchFirst(rgx.fn)) {
+ got.fn = m["matched"];
+ got.canned_query ~= "&fn=" ~ m["matched"];
}
- if ("url" in cgi.post) {
- got.url = cgi.post["url"];
- got.canned_query ~= "&url=" ~ cgi.post["url"];
+ if (auto m = got.search_text_area.matchFirst(rgx.keywords)) {
+ got.keywords = m["matched"];
+ got.canned_query ~= "&kw=" ~ m["matched"];
}
- if ("se" in cgi.post) {
- got.searched = cgi.post["se"];
- got.canned_query ~= "&se=" ~ cgi.post["se"];
+ if (auto m = got.search_text_area.matchFirst(rgx.topic_register)) {
+ got.topic_register = m["matched"];
+ got.canned_query ~= "&tr=" ~ m["matched"];
}
- if ("sql" in cgi.post) {
- got.sql = cgi.post["sql"];
- got.canned_query ~= "&sql=" ~ cgi.post["sql"];
+ if (auto m = got.search_text_area.matchFirst(rgx.subject)) {
+ got.subject = m["matched"];
+ got.canned_query ~= "&su=" ~ m["matched"];
}
- if ("sml" in cgi.post) {
- got.sql_match_limit = cgi.post["sml"];
- got.canned_query ~= "&sml=" ~ cgi.post["sml"];
+ if (auto m = got.search_text_area.matchFirst(rgx.description)) {
+ got.description = m["matched"];
+ got.canned_query ~= "&de=" ~ m["matched"];
}
- if ("smo" in cgi.post) {
- got.sql_match_offset = "0"; // cgi.post["smo"];
- got.canned_query ~= "&smo=0"; // ~ cgi.post["smo"];
+ if (auto m = got.search_text_area.matchFirst(rgx.publisher)) {
+ got.publisher = m["matched"];
+ got.canned_query ~= "&pb=" ~ m["matched"];
}
- got.canned_query = got.canned_query.strip.split(" ").join("%20");
- conf.query_string = got.canned_query;
- // cgi.write("f.canned_query: " ~ got.canned_query ~ "<br>");
-#+END_SRC
-
-****** GET
-
-#+NAME: cgi_sqlite_initialize_7
-#+BEGIN_SRC d
- } else if (environment.get("REQUEST_METHOD", "POST") == "GET") {
- got.canned_query = environment.get("QUERY_STRING", "");
- // cgi.write("f.canned_query: " ~ got.canned_query ~ "<br>");
- got.search_text_area = "";
- if ("sf" in canned_query && !(canned_query["sf"]).empty) {
- got.text = canned_query["sf"].split("%20").join(" ");
- got.search_text_area ~= "text: " ~ got.text ~ "\n";
- }
- if ("au" in canned_query && !(canned_query["au"]).empty) {
- got.author = canned_query["au"].split("%20").join(" ");
- got.search_text_area ~= "author: " ~ got.author ~ "\n";
- }
- if ("ti" in canned_query && !(canned_query["ti"]).empty) {
- got.title = canned_query["ti"].split("%20").join(" ");
- got.search_text_area ~= "title: " ~ got.title ~ "\n";
- }
- if ("uid" in canned_query && !(canned_query["uid"]).empty) {
- got.uid = canned_query["uid"].split("%20").join(" ");
- got.search_text_area ~= "uid: " ~ got.uid ~ "\n";
- }
- if ("fn" in canned_query && !(canned_query["fn"]).empty) {
- got.fn = canned_query["fn"].split("%20").join(" ");
- got.search_text_area ~= "fn: " ~ got.fn ~ "\n";
- }
- if ("kw" in canned_query && !(canned_query["kw"]).empty) {
- got.keywords = canned_query["kw"].split("%20").join(" ");
- got.search_text_area ~= "keywords: " ~ got.keywords ~ "\n";
- }
- if ("tr" in canned_query && !(canned_query["tr"]).empty) {
- got.topic_register = canned_query["tr"].split("%20").join(" ");
- got.search_text_area ~= "topic_register: " ~ got.topic_register ~ "\n";
- }
- if ("su" in canned_query && !(canned_query["su"]).empty) {
- got.subject = canned_query["su"].split("%20").join(" ");
- got.search_text_area ~= "subject: " ~ got.subject ~ "\n";
- }
- if ("de" in canned_query && !(canned_query["de"]).empty) {
- got.description = canned_query["de"].split("%20").join(" ");
- got.search_text_area ~= "description: " ~ got.description ~ "\n";
+ if (auto m = got.search_text_area.matchFirst(rgx.editor)) {
+ got.editor = m["matched"];
+ got.canned_query ~= "&ed=" ~ m["matched"];
}
- if ("pb" in canned_query && !(canned_query["pb"]).empty) {
- got.publisher = canned_query["pb"].split("%20").join(" ");
- got.search_text_area ~= "publisher: " ~ got.publisher ~ "\n";
+ if (auto m = got.search_text_area.matchFirst(rgx.contributor)) {
+ got.contributor = m["matched"];
+ got.canned_query ~= "&ct=" ~ m["matched"];
}
- if ("ed" in canned_query && !(canned_query["ed"]).empty) {
- got.editor = canned_query["ed"].split("%20").join(" ");
- got.search_text_area ~= "editor: " ~ got.editor ~ "\n";
+ if (auto m = got.search_text_area.matchFirst(rgx.date)) {
+ got.date = m["matched"];
+ got.canned_query ~= "&dt=" ~ m["matched"];
}
- if ("ct" in canned_query && !(canned_query["ct"]).empty) {
- got.contributor = canned_query["ct"].split("%20").join(" ");
- got.search_text_area ~= "contributor: " ~ got.contributor ~ "\n";
- }
- if ("dt" in canned_query && !(canned_query["dt"]).empty) {
- got.date = canned_query["dt"].split("%20").join(" ");
- got.search_text_area ~= "date: " ~ got.date ~ "\n";
- }
- if ("rt" in canned_query && !(canned_query["rt"]).empty) {
- got.results_type = canned_query["rt"].split("%20").join(" ");
- // got.search_text_area ~= "results_type: " ~ got.results_type ~ "\n";
- }
- if ("fmt" in canned_query && !(canned_query["fmt"]).empty) {
- got.format = canned_query["fmt"].split("%20").join(" ");
- got.search_text_area ~= "format: " ~ got.format ~ "\n";
+ // if (auto m = got.search_text_area.matchFirst(rgx.results_type)) {
+ // got.results_type = m["matched"];
+ // got.canned_query ~= "&rt=" ~ m["matched"];
+ // }
+ if (auto m = got.search_text_area.matchFirst(rgx.format)) {
+ got.format = m["matched"];
+ got.canned_query ~= "&fmt=" ~ m["matched"];
}
- if ("id" in canned_query && !(canned_query["id"]).empty) {
- got.identifier = canned_query["id"].split("%20").join(" ");
- got.search_text_area ~= "identifier: " ~ got.identifier ~ "\n";
+ if (auto m = got.search_text_area.matchFirst(rgx.identifier)) {
+ got.identifier = m["matched"];
+ got.canned_query ~= "&id=" ~ m["matched"];
}
- if ("src" in canned_query && !(canned_query["src"]).empty) {
- got.source = canned_query["src"].split("%20").join(" ");
- got.search_text_area ~= "source: " ~ got.source ~ "\n";
+ if (auto m = got.search_text_area.matchFirst(rgx.source)) {
+ got.source = m["matched"];
+ got.canned_query ~= "&src=" ~ m["matched"];
}
- if ("lng" in canned_query && !(canned_query["lng"]).empty) {
- got.language = canned_query["lng"].split("%20").join(" ");
- got.search_text_area ~= "language: " ~ got.language ~ "\n";
+ if (auto m = got.search_text_area.matchFirst(rgx.language)) {
+ got.language = m["matched"];
+ got.canned_query ~= "&lng=" ~ m["matched"];
}
- if ("rl" in canned_query && !(canned_query["rl"]).empty) {
- got.relation = canned_query["rl"].split("%20").join(" ");
- got.search_text_area ~= "relation: " ~ got.relation ~ "\n";
+ if (auto m = got.search_text_area.matchFirst(rgx.relation)) {
+ got.relation = m["matched"];
+ got.canned_query ~= "&rl=" ~ m["matched"];
}
- if ("cv" in canned_query && !(canned_query["cv"]).empty) {
- got.coverage = canned_query["cv"].split("%20").join(" ");
- got.search_text_area ~= "coverage: " ~ got.coverage ~ "\n";
+ if (auto m = got.search_text_area.matchFirst(rgx.coverage)) {
+ got.coverage = m["matched"];
+ got.canned_query ~= "&cv=" ~ m["matched"];
}
- if ("rgt" in canned_query && !(canned_query["rgt"]).empty) {
- got.rights = canned_query["rgt"].split("%20").join(" ");
- got.search_text_area ~= "rights: " ~ got.rights ~ "\n";
+ if (auto m = got.search_text_area.matchFirst(rgx.rights)) {
+ got.rights = m["matched"];
+ got.canned_query ~= "&rgt=" ~ m["matched"];
}
- if ("cmt" in canned_query && !(canned_query["cmt"]).empty) {
- got.comment = canned_query["cmt"].split("%20").join(" ");
- got.search_text_area ~= "comment: " ~ got.comment ~ "\n";
+ if (auto m = got.search_text_area.matchFirst(rgx.comment)) {
+ got.comment = m["matched"];
+ got.canned_query ~= "&cmt=" ~ m["matched"];
}
- // if ("abstract" in canned_query && !(canned_query["abstract"]).empty) {
- // got.abstract = canned_query["abstract"];
+ // if (auto m = search_text_area.matchFirst(rgx.abstract)) {
+ // got.abstract = m["matched"];
// }
- if ("bfn" in canned_query && !(canned_query["bfn"]).empty) { // search_field
- got.src_filename_base = canned_query["bfn"].split("%20").join(" ");
- got.search_text_area ~= "src_filename_base: " ~ got.src_filename_base ~ "\n";
+ if (auto m = got.search_text_area.matchFirst(rgx.src_filename_base)) {
+ got.src_filename_base = m["matched"];
+ got.canned_query ~= "&bfn=" ~ m["matched"];
}
- if ("sml" in canned_query && !(canned_query["sml"]).empty) {
- got.sql_match_limit = canned_query["sml"].split("%20").join(" ");
- // got.search_text_area ~= "sql_match_limit: " ~ got.sql_match_limit ~ "\n";
- }
- // cgi.write("f.search_text_area: " ~ got.search_text_area ~ "<br>");
}
- return got;
+ if ("fn" in cgi.post) {
+ got.fn = cgi.post["fn"];
+ got.canned_query ~= "&fn=" ~ cgi.post["fn"];
+ }
+ if ("rt" in cgi.post) {
+ got.results_type = cgi.post["rt"];
+ got.canned_query ~= "&rt=" ~ cgi.post["rt"];
+ }
+ if ("sts" in cgi.post) {
+ got.stats = cgi.post["sts"];
+ got.canned_query ~= "&sts=" ~ cgi.post["sts"];
+ }
+ if ("ec" in cgi.post) {
+ got.echo = cgi.post["ec"];
+ got.canned_query ~= "&ec=" ~ cgi.post["ec"];
+ }
+ if ("url" in cgi.post) {
+ got.url = cgi.post["url"];
+ got.canned_query ~= "&url=" ~ cgi.post["url"];
+ }
+ if ("se" in cgi.post) {
+ got.searched = cgi.post["se"];
+ got.canned_query ~= "&se=" ~ cgi.post["se"];
+ }
+ if ("sql" in cgi.post) {
+ got.sql = cgi.post["sql"];
+ got.canned_query ~= "&sql=" ~ cgi.post["sql"];
+ }
+ if ("sml" in cgi.post) {
+ got.sql_match_limit = cgi.post["sml"];
+ got.canned_query ~= "&sml=" ~ cgi.post["sml"];
+ }
+ if ("smo" in cgi.post) {
+ got.sql_match_offset = "0"; // cgi.post["smo"];
+ got.canned_query ~= "&smo=0"; // ~ cgi.post["smo"];
+ }
+ got.canned_query = got.canned_query.strip.split(" ").join("%20");
+ conf.query_string = got.canned_query;
+ // cgi.write("f.canned_query: " ~ got.canned_query ~ "<br>");
+#+END_SRC
+
+****** GET
+
+#+NAME: cgi_sqlite_initialize_7
+#+BEGIN_SRC d
+} else if (environment.get("REQUEST_METHOD", "POST") == "GET") {
+ got.canned_query = environment.get("QUERY_STRING", "");
+ // cgi.write("f.canned_query: " ~ got.canned_query ~ "<br>");
+ got.search_text_area = "";
+ if ("sf" in canned_query && !(canned_query["sf"]).empty) {
+ got.text = canned_query["sf"].split("%20").join(" ");
+ got.search_text_area ~= "text: " ~ got.text ~ "\n";
+ }
+ if ("au" in canned_query && !(canned_query["au"]).empty) {
+ got.author = canned_query["au"].split("%20").join(" ");
+ got.search_text_area ~= "author: " ~ got.author ~ "\n";
+ }
+ if ("ti" in canned_query && !(canned_query["ti"]).empty) {
+ got.title = canned_query["ti"].split("%20").join(" ");
+ got.search_text_area ~= "title: " ~ got.title ~ "\n";
+ }
+ if ("uid" in canned_query && !(canned_query["uid"]).empty) {
+ got.uid = canned_query["uid"].split("%20").join(" ");
+ got.search_text_area ~= "uid: " ~ got.uid ~ "\n";
+ }
+ if ("fn" in canned_query && !(canned_query["fn"]).empty) {
+ got.fn = canned_query["fn"].split("%20").join(" ");
+ got.search_text_area ~= "fn: " ~ got.fn ~ "\n";
+ }
+ if ("kw" in canned_query && !(canned_query["kw"]).empty) {
+ got.keywords = canned_query["kw"].split("%20").join(" ");
+ got.search_text_area ~= "keywords: " ~ got.keywords ~ "\n";
+ }
+ if ("tr" in canned_query && !(canned_query["tr"]).empty) {
+ got.topic_register = canned_query["tr"].split("%20").join(" ");
+ got.search_text_area ~= "topic_register: " ~ got.topic_register ~ "\n";
+ }
+ if ("su" in canned_query && !(canned_query["su"]).empty) {
+ got.subject = canned_query["su"].split("%20").join(" ");
+ got.search_text_area ~= "subject: " ~ got.subject ~ "\n";
+ }
+ if ("de" in canned_query && !(canned_query["de"]).empty) {
+ got.description = canned_query["de"].split("%20").join(" ");
+ got.search_text_area ~= "description: " ~ got.description ~ "\n";
+ }
+ if ("pb" in canned_query && !(canned_query["pb"]).empty) {
+ got.publisher = canned_query["pb"].split("%20").join(" ");
+ got.search_text_area ~= "publisher: " ~ got.publisher ~ "\n";
+ }
+ if ("ed" in canned_query && !(canned_query["ed"]).empty) {
+ got.editor = canned_query["ed"].split("%20").join(" ");
+ got.search_text_area ~= "editor: " ~ got.editor ~ "\n";
+ }
+ if ("ct" in canned_query && !(canned_query["ct"]).empty) {
+ got.contributor = canned_query["ct"].split("%20").join(" ");
+ got.search_text_area ~= "contributor: " ~ got.contributor ~ "\n";
+ }
+ if ("dt" in canned_query && !(canned_query["dt"]).empty) {
+ got.date = canned_query["dt"].split("%20").join(" ");
+ got.search_text_area ~= "date: " ~ got.date ~ "\n";
+ }
+ if ("rt" in canned_query && !(canned_query["rt"]).empty) {
+ got.results_type = canned_query["rt"].split("%20").join(" ");
+ // got.search_text_area ~= "results_type: " ~ got.results_type ~ "\n";
+ }
+ if ("fmt" in canned_query && !(canned_query["fmt"]).empty) {
+ got.format = canned_query["fmt"].split("%20").join(" ");
+ got.search_text_area ~= "format: " ~ got.format ~ "\n";
+ }
+ if ("id" in canned_query && !(canned_query["id"]).empty) {
+ got.identifier = canned_query["id"].split("%20").join(" ");
+ got.search_text_area ~= "identifier: " ~ got.identifier ~ "\n";
+ }
+ if ("src" in canned_query && !(canned_query["src"]).empty) {
+ got.source = canned_query["src"].split("%20").join(" ");
+ got.search_text_area ~= "source: " ~ got.source ~ "\n";
+ }
+ if ("lng" in canned_query && !(canned_query["lng"]).empty) {
+ got.language = canned_query["lng"].split("%20").join(" ");
+ got.search_text_area ~= "language: " ~ got.language ~ "\n";
+ }
+ if ("rl" in canned_query && !(canned_query["rl"]).empty) {
+ got.relation = canned_query["rl"].split("%20").join(" ");
+ got.search_text_area ~= "relation: " ~ got.relation ~ "\n";
+ }
+ if ("cv" in canned_query && !(canned_query["cv"]).empty) {
+ got.coverage = canned_query["cv"].split("%20").join(" ");
+ got.search_text_area ~= "coverage: " ~ got.coverage ~ "\n";
+ }
+ if ("rgt" in canned_query && !(canned_query["rgt"]).empty) {
+ got.rights = canned_query["rgt"].split("%20").join(" ");
+ got.search_text_area ~= "rights: " ~ got.rights ~ "\n";
+ }
+ if ("cmt" in canned_query && !(canned_query["cmt"]).empty) {
+ got.comment = canned_query["cmt"].split("%20").join(" ");
+ got.search_text_area ~= "comment: " ~ got.comment ~ "\n";
+ }
+ // if ("abstract" in canned_query && !(canned_query["abstract"]).empty) {
+ // got.abstract = canned_query["abstract"];
+ // }
+ if ("bfn" in canned_query && !(canned_query["bfn"]).empty) { // search_field
+ got.src_filename_base = canned_query["bfn"].split("%20").join(" ");
+ got.search_text_area ~= "src_filename_base: " ~ got.src_filename_base ~ "\n";
+ }
+ if ("sml" in canned_query && !(canned_query["sml"]).empty) {
+ got.sql_match_limit = canned_query["sml"].split("%20").join(" ");
+ // got.search_text_area ~= "sql_match_limit: " ~ got.sql_match_limit ~ "\n";
+ }
+ // cgi.write("f.search_text_area: " ~ got.search_text_area ~ "<br>");
+}
+return got;
#+END_SRC
***** tail
@@ -738,24 +738,24 @@ string previous_next () {
#+BEGIN_SRC d
{
table = format(q"┃
- <table summary="band" border="0" cellpadding="2" cellspacing="0">
- <tr><td width="20%%">
- <table summary="home button / home information" border="0" cellpadding="2" cellspacing="0">
- <tr><td align="left">
- <br /><a href="https://sisudoc.org/" target="_top">
- <b>SiSU</b>
- </a>
- <br /><a href="https://git.sisudoc.org/" target="_top">
- git
- </a>
- </td></tr>
- </table>
- </td>
- <td>
- <label for="find"><b>SiSU spine (generated) search form</b></label>
+<table summary="band" border="0" cellpadding="2" cellspacing="0">
+<tr><td width="20%%">
+ <table summary="home button / home information" border="0" cellpadding="2" cellspacing="0">
+ <tr><td align="left">
+ <br /><a href="https://sisudoc.org/" target="_top">
+ <b>SiSU</b>
+ </a>
+ <br /><a href="https://git.sisudoc.org/" target="_top">
+ git
+ </a>
</td></tr>
</table>
- ┃");
+</td>
+<td>
+ <label for="find"><b>SiSU spine (generated) search form</b></label>
+</td></tr>
+</table>
+┃");
}
#+END_SRC
@@ -763,81 +763,81 @@ string previous_next () {
#+NAME: cgi_sqlite_form_0
#+BEGIN_SRC d
- {
- string post_value(string field_name, string type="box", string set="on") {
- string val = "";
- switch (type) {
- case "field":
- val = ((field_name in cgi.post && !(cgi.post[field_name]).empty)
- ? cgi.post[field_name]
- : (field_name in cgi.get)
- ? cgi.get[field_name]
- : "");
- val = tf.search_text_area;
- break;
- case "box": // generic for checkbox or radio; checkbox set == "on" radio set == "name set"
- val = ((field_name in cgi.post && !(cgi.post[field_name]).empty)
- ? (cgi.post[field_name] == set ? "checked" : "off")
- : (field_name in cgi.get)
- ? (cgi.get[field_name] == set ? "checked" : "off")
- : "off");
- break;
- case "radio": // used generic bo
- val = ((field_name in cgi.post && !(cgi.post[field_name]).empty)
- ? (cgi.post[field_name] == set ? "checked" : "off")
- : (field_name in cgi.get)
- ? (cgi.get[field_name] == set ? "checked" : "off")
- : "checked");
- break;
- case "checkbox": // used generic bo
- val = ((field_name in cgi.post && !(cgi.post[field_name]).empty)
- ? (cgi.post[field_name] == set ? "checked" : "off")
- : (field_name in cgi.get)
- ? (cgi.get[field_name] == set ? "checked" : "off")
- : "checked");
- break;
- default:
- }
- return val;
+{
+ string post_value(string field_name, string type="box", string set="on") {
+ string val = "";
+ switch (type) {
+ case "field":
+ val = ((field_name in cgi.post && !(cgi.post[field_name]).empty)
+ ? cgi.post[field_name]
+ : (field_name in cgi.get)
+ ? cgi.get[field_name]
+ : "");
+ val = tf.search_text_area;
+ break;
+ case "box": // generic for checkbox or radio; checkbox set == "on" radio set == "name set"
+ val = ((field_name in cgi.post && !(cgi.post[field_name]).empty)
+ ? (cgi.post[field_name] == set ? "checked" : "off")
+ : (field_name in cgi.get)
+ ? (cgi.get[field_name] == set ? "checked" : "off")
+ : "off");
+ break;
+ case "radio": // used generic bo
+ val = ((field_name in cgi.post && !(cgi.post[field_name]).empty)
+ ? (cgi.post[field_name] == set ? "checked" : "off")
+ : (field_name in cgi.get)
+ ? (cgi.get[field_name] == set ? "checked" : "off")
+ : "checked");
+ break;
+ case "checkbox": // used generic bo
+ val = ((field_name in cgi.post && !(cgi.post[field_name]).empty)
+ ? (cgi.post[field_name] == set ? "checked" : "off")
+ : (field_name in cgi.get)
+ ? (cgi.get[field_name] == set ? "checked" : "off")
+ : "checked");
+ break;
+ default:
}
+ return val;
+ }
#+END_SRC
**** canned search
#+NAME: cgi_sqlite_form_1
#+BEGIN_SRC d
- string the_can(string fv) {
- string show_the_can = post_value("url");
- string _the_can = "";
- if (show_the_can == "checked") {
- tf = text_fields;
- string method_get_url = conf.http_request_type ~ "://" ~ conf.http_host ~ conf.cgi_script ~ "?" ~ environment.get("QUERY_STRING", "");
- string method_post_url_construct = conf.http_request_type ~ "://" ~ conf.http_host ~ conf.cgi_script ~ "?" ~ tf.canned_query;
- // assert(method_get_url == environment.get("HTTP_REFERER", conf.http_request_type ~ "://" ~ conf.http_host ~ conf.cgi_script ~ "?" ~ conf.query_string));
- if (conf.request_method == "POST") {
- _the_can =
- "<font size=\"2\" color=\"#666666\">"
- ~ "POST:&nbsp;"
- ~ "<a href=\""
- ~ method_post_url_construct
- ~ "\">"
- ~ method_post_url_construct
- ~ "</a></font>"
- ~ "<br>";
- } else if (conf.request_method == "GET") {
- _the_can =
- "<font size=\"2\" color=\"#666666\">"
- ~ "GET:&nbsp;&nbsp;"
- ~ "<a href=\""
- ~ method_get_url
- ~ "\">"
- ~ method_get_url
- ~ "</a></font>";
- }
- conf.http_url = conf.http_request_type ~ "://" ~ conf.http_host ~ conf.cgi_script ~ tf.canned_query;
- }
- return _the_can;
+string the_can(string fv) {
+ string show_the_can = post_value("url");
+ string _the_can = "";
+ if (show_the_can == "checked") {
+ tf = text_fields;
+ string method_get_url = conf.http_request_type ~ "://" ~ conf.http_host ~ conf.cgi_script ~ "?" ~ environment.get("QUERY_STRING", "");
+ string method_post_url_construct = conf.http_request_type ~ "://" ~ conf.http_host ~ conf.cgi_script ~ "?" ~ tf.canned_query;
+ // assert(method_get_url == environment.get("HTTP_REFERER", conf.http_request_type ~ "://" ~ conf.http_host ~ conf.cgi_script ~ "?" ~ conf.query_string));
+ if (conf.request_method == "POST") {
+ _the_can =
+ "<font size=\"2\" color=\"#666666\">"
+ ~ "POST:&nbsp;"
+ ~ "<a href=\""
+ ~ method_post_url_construct
+ ~ "\">"
+ ~ method_post_url_construct
+ ~ "</a></font>"
+ ~ "<br>";
+ } else if (conf.request_method == "GET") {
+ _the_can =
+ "<font size=\"2\" color=\"#666666\">"
+ ~ "GET:&nbsp;&nbsp;"
+ ~ "<a href=\""
+ ~ method_get_url
+ ~ "\">"
+ ~ method_get_url
+ ~ "</a></font>";
}
+ conf.http_url = conf.http_request_type ~ "://" ~ conf.http_host ~ conf.cgi_script ~ tf.canned_query;
+ }
+ return _the_can;
+}
#+END_SRC
**** provide tip
@@ -926,65 +926,65 @@ string previous_next () {
#+NAME: cgi_sqlite_form_4
#+BEGIN_SRC d
- "spine-search",
- (post_value("ec") == "checked") ? post_value("sf", "field") : "",
- provide_tip,
- search_note,
- the_can(post_value("sf", "field")),
- cv.db_selected,
- cv.db_selected,
- post_value("rt", "box", "idx"),
- post_value("rt", "box", "txt"),
- post_value("sml", "box", "1000"),
- post_value("sml", "box", "2500"),
- post_value("ec"),
- post_value("sts"),
- post_value("url"),
- post_value("se"),
- post_value("tip"),
- post_value("sql"),
- );
+ "spine-search",
+ (post_value("ec") == "checked") ? post_value("sf", "field") : "",
+ provide_tip,
+ search_note,
+ the_can(post_value("sf", "field")),
+ cv.db_selected,
+ cv.db_selected,
+ post_value("rt", "box", "idx"),
+ post_value("rt", "box", "txt"),
+ post_value("sml", "box", "1000"),
+ post_value("sml", "box", "2500"),
+ post_value("ec"),
+ post_value("sts"),
+ post_value("url"),
+ post_value("se"),
+ post_value("tip"),
+ post_value("sql"),
+);
#+END_SRC
**** set value (debug)
#+NAME: cgi_sqlite_form_5
#+BEGIN_SRC d
- {
- string set_value(string field_name, string default_val) {
- string val;
- if (field_name in cgi.post) {
- val = cgi.post[field_name];
- } else if (field_name in cgi.get) {
- val = cgi.get[field_name];
- } else { val = default_val; }
- return val;
- }
- bool set_bool(string field_name) {
- bool val;
- if (field_name in cgi.post
- && cgi.post[field_name] == "on") {
- val = true;
- } else if (field_name in cgi.get
- && cgi.get[field_name] == "on") {
- val = true;
- } else { val = false; }
- return val;
- }
- cv.db_selected = set_value("selected_db", "spine.search.db"); // selected_db == db
- cv.sql_match_limit = set_value("sml", "1000");
- cv.sql_match_offset = set_value("smo", "0");
- cv.search_text = set_value("sf", "test"); // remove test
- cv.results_type = set_value("rt", "idx");
- cv.checked_echo = set_bool("ec");
- cv.checked_stats = set_bool("sts");
- cv.checked_url = set_bool("url");
- cv.checked_searched = set_bool("se");
- cv.checked_tip = set_bool("tip");
- cv.checked_sql = set_bool("sql");
- tf = text_fields;
+ {
+ string set_value(string field_name, string default_val) {
+ string val;
+ if (field_name in cgi.post) {
+ val = cgi.post[field_name];
+ } else if (field_name in cgi.get) {
+ val = cgi.get[field_name];
+ } else { val = default_val; }
+ return val;
+ }
+ bool set_bool(string field_name) {
+ bool val;
+ if (field_name in cgi.post
+ && cgi.post[field_name] == "on") {
+ val = true;
+ } else if (field_name in cgi.get
+ && cgi.get[field_name] == "on") {
+ val = true;
+ } else { val = false; }
+ return val;
}
+ cv.db_selected = set_value("selected_db", "spine.search.db"); // selected_db == db
+ cv.sql_match_limit = set_value("sml", "1000");
+ cv.sql_match_offset = set_value("smo", "0");
+ cv.search_text = set_value("sf", "test"); // remove test
+ cv.results_type = set_value("rt", "idx");
+ cv.checked_echo = set_bool("ec");
+ cv.checked_stats = set_bool("sts");
+ cv.checked_url = set_bool("url");
+ cv.checked_searched = set_bool("se");
+ cv.checked_tip = set_bool("tip");
+ cv.checked_sql = set_bool("sql");
+ tf = text_fields;
}
+}
#+END_SRC
*** cgi write
@@ -1122,68 +1122,66 @@ LIMIT %s OFFSET %s
#+NAME: cgi_sqlite_select_statement_2
#+BEGIN_SRC d
- (cv.checked_sql)
- ? cgi.write(previous_next ~ "<hr><font size=\"2\" color=\"#666666\">" ~ sql_select.the_body.split("\n ").join(" ").split("\n").join("<br>") ~ "</font>\n")
- : "";
- cgi.write(previous_next);
- auto select_query_results = db.execute(sql_select.the_body).cached;
- string _old_uid = "";
- if (!select_query_results.empty) {
- foreach (row; select_query_results) {
- if (row["uid"].as!string != _old_uid) {
- _old_uid = row["uid"].as!string;
- auto m = (row["date_published"].as!string).match(regex(r"^([0-9]{4})")); // breaks if row missing or no match?
- cgi.write(
- "<hr><a href=\""
- ~ "https://" ~ conf.http_host ~ "/"
- ~ row["language_document_char"].as!string ~ "/html/"
- ~ row["src_filename_base"].as!string ~ "/"
- ~ "toc.html"
- ~ "\">\""
- ~ row["title"].as!string ~ "\""
- ~ "</a> ("
- ~ m.hit
- ~ ") "
- ~ "["
- ~ row["language_document_char"].as!string
- ~ "] "
- ~ row["creator_author_last_first"].as!string
- ~ ":<br>\n"
- );
- }
- if (cv.results_type == "txt") {
- cgi.write(
- "<hr><a href=\""
- ~ "https://" ~ conf.http_host ~ "/"
- ~ row["language_document_char"].as!string ~ "/html/"
- ~ row["src_filename_base"].as!string ~ "/"
- ~ row["seg_name"].as!string ~ ".html#" ~ row["ocn"].as!string
- ~ "\">"
- ~ row["ocn"].as!string
- ~ "</a>"
- ~ "<br>"
- ~ row["body"].as!string
- );
- } else {
- cgi.write(
- "<a href=\""
- ~ "https://" ~ conf.http_host ~ "/"
- ~ row["language_document_char"].as!string ~ "/html/"
- ~ row["src_filename_base"].as!string ~ "/"
- ~ row["seg_name"].as!string ~ ".html#" ~ row["ocn"].as!string
- ~ "\">"
- ~ row["ocn"].as!string
- ~ "</a>, "
- );
- }
- }
- cgi.write( previous_next);
- } else { // offset_not_beyond_limit = false;
- cgi.write("select_query_results empty<p>\n");
+ (cv.checked_sql)
+ ? cgi.write(previous_next ~ "<hr><font size=\"2\" color=\"#666666\">" ~ sql_select.the_body.split("\n ").join(" ").split("\n").join("<br>") ~ "</font>\n")
+ : "";
+ cgi.write(previous_next);
+ auto select_query_results = db.execute(sql_select.the_body).cached;
+ string _old_uid = "";
+ if (!select_query_results.empty) {
+ foreach (row; select_query_results) {
+ if (row["uid"].as!string != _old_uid) {
+ _old_uid = row["uid"].as!string;
+ auto m = (row["date_published"].as!string).match(regex(r"^([0-9]{4})")); // breaks if row missing or no match?
+ cgi.write(
+ "<hr><a href=\""
+ ~ "https://" ~ conf.http_host ~ "/"
+ ~ row["language_document_char"].as!string ~ "/html/"
+ ~ row["src_filename_base"].as!string ~ "/"
+ ~ "toc.html"
+ ~ "\">\""
+ ~ row["title"].as!string ~ "\""
+ ~ "</a> ("
+ ~ m.hit
+ ~ ") "
+ ~ "["
+ ~ row["language_document_char"].as!string
+ ~ "] "
+ ~ row["creator_author_last_first"].as!string
+ ~ ":<br>\n"
+ );
+ }
+ if (cv.results_type == "txt") {
+ cgi.write(
+ "<hr><a href=\""
+ ~ "https://" ~ conf.http_host ~ "/"
+ ~ row["language_document_char"].as!string ~ "/html/"
+ ~ row["src_filename_base"].as!string ~ "/"
+ ~ row["seg_name"].as!string ~ ".html#" ~ row["ocn"].as!string
+ ~ "\">"
+ ~ row["ocn"].as!string
+ ~ "</a>"
+ ~ "<br>"
+ ~ row["body"].as!string
+ );
+ } else {
+ cgi.write(
+ "<a href=\""
+ ~ "https://" ~ conf.http_host ~ "/"
+ ~ row["language_document_char"].as!string ~ "/html/"
+ ~ row["src_filename_base"].as!string ~ "/"
+ ~ row["seg_name"].as!string ~ ".html#" ~ row["ocn"].as!string
+ ~ "\">"
+ ~ row["ocn"].as!string
+ ~ "</a>, "
+ );
}
}
- sql_search_query;
+ cgi.write( previous_next);
+ } else { // offset_not_beyond_limit = false;
+ cgi.write("select_query_results empty<p>\n");
}
+}
#+END_SRC
****** text found
@@ -1192,6 +1190,8 @@ LIMIT %s OFFSET %s
#+NAME: cgi_sqlite_db_close
#+BEGIN_SRC d
+ sql_search_query;
+}
{
db.close;
}
diff --git a/org/util_cgi_rb_fcgi_sqlite_search.org b/org/util_cgi_rb_fcgi_sqlite_search.org
index a11c9dc..7cb16f1 100644
--- a/org/util_cgi_rb_fcgi_sqlite_search.org
+++ b/org/util_cgi_rb_fcgi_sqlite_search.org
@@ -32,12 +32,36 @@ document home currently at /var/www/html (better placed at /var/www or srv/proje
#+END_SRC
*** sqlite cgi search TODO
-**** head
+**** tangle
-#+HEADER: :tangle "../sundry/util/rb/cgi/spine.search.cgi"
+#+HEADER: :tangle "../sundry/misc/util/rb/cgi/spine.search.cgi"
#+HEADER: :tangle-mode (identity #o755)
#+HEADER: :shebang #!/usr/bin/env ruby
#+BEGIN_SRC ruby
+<<license>>
+<<cgi_init>>
+<<form_init>>
+ <<form_submission>>
+end
+<<form_search_request_init>>
+ <<form_match_text>>
+end
+<<form_search_string>>
+<<form_search_statement>>
+ <<form_misc>>
+<<form_select_statement>>
+<<form_tail>>
+<<form_loop>>
+ <<form_search_canned>>
+ <<form_submit>>
+ <<form_contents_each_text>>
+<<form_contents_after>>
+#+END_SRC
+
+**** head
+
+#+NAME: license
+#+BEGIN_SRC ruby
=begin
* Name: SiSU information Structuring Universe
* Author: Ralph Amissah
@@ -95,7 +119,7 @@ document home currently at /var/www/html (better placed at /var/www or srv/proje
**** initialize
-#+HEADER: :tangle "../sundry/util/rb/cgi/spine.search.cgi"
+#+NAME: cgi_init
#+BEGIN_SRC ruby
begin
require 'cgi'
@@ -122,7 +146,7 @@ end
**** form
***** initialize form
-#+HEADER: :tangle "../sundry/util/rb/cgi/spine.search.cgi"
+#+NAME: form_init
#+BEGIN_SRC ruby
class Form
def initialize(base,search_field,selected_db,result_type,checked_sql_limit,checked_tip,checked_stats,checked_searched,checked_url,checked_case,checked_echo,checked_sql,checked_all,checked_none,checked_selected,checked_default,search_note,the_can='')
@@ -139,93 +163,92 @@ class Form
***** submission form
-#+HEADER: :tangle "../sundry/util/rb/cgi/spine.search.cgi"
+#+NAME: form_submission
#+BEGIN_SRC ruby
- def submission_form
- search_form =<<-WOK
- <!DOCTYPE html>
- <html>
- <head>
- <title>
- <meta charset="utf-8">
- <meta name="sourcefile" content="SiSU._sst" />
- SiSU search form (sample): SiSU information Structuring Universe
- </title>
- <link rel="generator" href="https://sisudoc.org/" />
- <link rel="shortcut icon" href="https://#{ENV['HTTP_HOST']}/_sisu/image_sys/rb7.ico" />
- <link href="../_sisu/css/html.css" rel="stylesheet">
- </head>
- <body lang="en" xml:lang="en">
- <table summary="band" border="0" cellpadding="3" cellspacing="0">
- <tr><td width="20%">
- <table summary="home button / home information" border="0" cellpadding="3" cellspacing="0">
- <tr><td align="left">
- <br /><a href="https://sisudoc.org/" target="_top">
- <b>SiSU</b>
- </a>
- <br /><a href="https://git.sisudoc.org/" target="_top">
- git
- </a>
- </td></tr>
- </table>
+def submission_form
+ search_form =<<-WOK
+ <!DOCTYPE html>
+ <html>
+ <head>
+ <title>
+ <meta charset="utf-8">
+ <meta name="sourcefile" content="SiSU._sst" />
+ SiSU search form (sample): SiSU information Structuring Universe
+ </title>
+ <link rel="generator" href="https://sisudoc.org/" />
+ <link rel="shortcut icon" href="https://#{ENV['HTTP_HOST']}/_sisu/image_sys/rb7.ico" />
+ <link href="../_sisu/css/html.css" rel="stylesheet">
+ </head>
+ <body lang="en" xml:lang="en">
+ <table summary="band" border="0" cellpadding="3" cellspacing="0">
+ <tr><td width="20%">
+ <table summary="home button / home information" border="0" cellpadding="3" cellspacing="0">
+ <tr><td align="left">
+ <br /><a href="https://sisudoc.org/" target="_top">
+ <b>SiSU</b>
+ </a>
+ <br /><a href="https://git.sisudoc.org/" target="_top">
+ git
+ </a>
+ </td></tr>
+ </table>
+ </td>
+ <td>
+ <label for="find"><b>SiSU (generated sample) search form (content organised by filetype)</b></label>
+ </td></tr>
+ </table>
+ <form action="#{@base}" id="Test Form" method="post">
+ <table cellpadding="2">
+ <tr><td valign=\"top\">
+ <textarea id="find" name="find" type="text" rows="6" cols="40" maxlength="256">#{@search_field}</textarea>
</td>
- <td>
- <label for="find"><b>SiSU (generated sample) search form (content organised by filetype)</b></label>
+ <td valign=\"top\">
+ #{@tip}
+ #{@search_note}
+ #{@the_can}
+ </td></tr></table>
+ <td valign=\"top\"><tr><td>
+ <!input type="text" id="find" name="find" value="#{@search_field}" />
+ <!input type="text" id="find" name="find" value="" />
+ <font size="2" color="#222222">
+ <b>to search:</b> select which database to search (drop-down menu below); enter your search query (in the form above); and <b>click on the search button</b> (below)
+ <br />
+ <select name="db" size="1">
+ #{@selected_db}
+ <option value="spine.sqlite">spine</option>
+ </select>
+ <input type="submit" value="SiSU search" />
+ <input type="radio" name="view" value="index" #{@result_type[:index]}> index
+ <input type="radio" name="view" value="text" #{@result_type[:text]}> text / grep
+ <br />
+ match limit:
+ <input type="radio" name="sql_match_limit" value="1000" #{@checked_sql_limit[:l1000]}> 1,000
+ <input type="radio" name="sql_match_limit" value="2500" #{@checked_sql_limit[:l2500]}> 2,500
+ <br />
+ <input type="checkbox" name="echo" #{@checked_echo}> echo query
+ <input type="checkbox" name="stats" #{@checked_stats}> result stats
+ <input type="checkbox" name="url" #{@checked_url}> search url
+ <input type="checkbox" name="searched" #{@checked_searched}> searched
+ <input type="checkbox" name="tip" #{@checked_tip}> available fields
+ <input type="checkbox" name="sql" #{@checked_sql}> sql statement
+ <br />
+ checks:
+ <input type="radio" name="checks" value="check_default" #{@checked_default}> default
+ <input type="radio" name="checks" value="check_selected" #{@checked_selected}> selected
+ <input type="radio" name="checks" value="check_all" #{@checked_all}> all
+ <input type="radio" name="checks" value="check_none" #{@checked_none}> none
+ </font>
</td></tr>
</table>
- <form action="#{@base}" id="Test Form" method="post">
- <table cellpadding="2">
- <tr><td valign=\"top\">
- <textarea id="find" name="find" type="text" rows="6" cols="40" maxlength="256">#{@search_field}</textarea>
- </td>
- <td valign=\"top\">
- #{@tip}
- #{@search_note}
- #{@the_can}
- </td></tr></table>
- <td valign=\"top\"><tr><td>
- <!input type="text" id="find" name="find" value="#{@search_field}" />
- <!input type="text" id="find" name="find" value="" />
- <font size="2" color="#222222">
- <b>to search:</b> select which database to search (drop-down menu below); enter your search query (in the form above); and <b>click on the search button</b> (below)
- <br />
- <select name="db" size="1">
- #{@selected_db}
- <option value="spine.sqlite">spine</option>
- </select>
- <input type="submit" value="SiSU search" />
- <input type="radio" name="view" value="index" #{@result_type[:index]}> index
- <input type="radio" name="view" value="text" #{@result_type[:text]}> text / grep
- <br />
- match limit:
- <input type="radio" name="sql_match_limit" value="1000" #{@checked_sql_limit[:l1000]}> 1,000
- <input type="radio" name="sql_match_limit" value="2500" #{@checked_sql_limit[:l2500]}> 2,500
- <br />
- <input type="checkbox" name="echo" #{@checked_echo}> echo query
- <input type="checkbox" name="stats" #{@checked_stats}> result stats
- <input type="checkbox" name="url" #{@checked_url}> search url
- <input type="checkbox" name="searched" #{@checked_searched}> searched
- <input type="checkbox" name="tip" #{@checked_tip}> available fields
- <input type="checkbox" name="sql" #{@checked_sql}> sql statement
- <br />
- checks:
- <input type="radio" name="checks" value="check_default" #{@checked_default}> default
- <input type="radio" name="checks" value="check_selected" #{@checked_selected}> selected
- <input type="radio" name="checks" value="check_all" #{@checked_all}> all
- <input type="radio" name="checks" value="check_none" #{@checked_none}> none
- </font>
- </td></tr>
- </table>
- </form>
- WOK
- end
+ </form>
+ WOK
end
#+END_SRC
**** search request
***** initialize request
-#+HEADER: :tangle "../sundry/util/rb/cgi/spine.search.cgi"
+#+NAME: form_search_request_init
#+BEGIN_SRC ruby
class SearchRequest #% search_for
attr_accessor :text1,:fulltext,:keywords,:title,:author,:topic_register,:subject,:description,:publisher,:editor,:contributor,:date,:type,:format,:identifier,:source,:language,:relation,:coverage,:rights,:comment,:abstract,:owner,:date_created,:date_issued,:date_modified,:date_available,:date_valid,:src_filename_base
@@ -301,33 +324,32 @@ class SearchRequest #% sea
***** text to match
-#+HEADER: :tangle "../sundry/util/rb/cgi/spine.search.cgi"
+#+NAME: form_match_text
#+BEGIN_SRC ruby
- def text_to_match(identifier='')
- m={
- string: /#{identifier}\s*(.+?)/,
- string: /#{identifier}\s*(.+?)(?:;|\n|\r|$)/,
- word: /#{identifier}[\s(]*(\S+)/
- }
- search_string=if @search_field =~m[:word]
- search_string=if @search_field =~m[:braces] then m[:braces].match(@search_field)[1]
- elsif @search_field =~m[:string] then m[:string].match(@search_field)[1]
- else
- str=m[:word].match(@search_field)[1]
- str=str.gsub(/[()]/,'')
- str
- end
- search_string=search_string.strip.gsub(/\s+/,'+')
- #else
- # "__"
+def text_to_match(identifier='')
+ m={
+ string: /#{identifier}\s*(.+?)/,
+ string: /#{identifier}\s*(.+?)(?:;|\n|\r|$)/,
+ word: /#{identifier}[\s(]*(\S+)/
+ }
+ search_string=if @search_field =~m[:word]
+ search_string=if @search_field =~m[:braces] then m[:braces].match(@search_field)[1]
+ elsif @search_field =~m[:string] then m[:string].match(@search_field)[1]
+ else
+ str=m[:word].match(@search_field)[1]
+ str=str.gsub(/[()]/,'')
+ str
end
+ search_string=search_string.strip.gsub(/\s+/,'+')
+ #else
+ # "__"
end
end
#+END_SRC
**** search string
-#+HEADER: :tangle "../sundry/util/rb/cgi/spine.search.cgi"
+#+NAME: form_search_string
#+BEGIN_SRC ruby
class DBI_SearchString
def initialize(l,t,q,cse=false)
@@ -356,7 +378,7 @@ end
**** search statement
***** init
-#+HEADER: :tangle "../sundry/util/rb/cgi/spine.search.cgi"
+#+NAME: form_search_statement
#+BEGIN_SRC ruby
class DBI_SearchStatement
attr_reader :text_search_flag,:sql_select_body_format,:sql_offset,:sql_limit
@@ -464,95 +486,95 @@ class DBI_SearchStatement
***** misc
-#+HEADER: :tangle "../sundry/util/rb/cgi/spine.search.cgi"
+#+NAME: form_misc
#+BEGIN_SRC ruby
- def sql_offset
- @@offset
+def sql_offset
+ @@offset
+end
+def sql_match_limit
+ @@limit
+end
+def sql_canned_search
+ @offset_next=sql_offset.to_i + sql_match_limit.to_i
+ @offset_previous=sql_offset.to_i - sql_match_limit.to_i
+ def current
+ @@canned_search_url.to_s + '&ltd=' + sql_match_limit.to_s + '&off=' + sql_offset.to_s
end
- def sql_match_limit
- @@limit
+ def next
+ @@canned_search_url.to_s + '&ltd=' + sql_match_limit.to_s + '&off=' + @offset_next.to_s
end
- def sql_canned_search
- @offset_next=sql_offset.to_i + sql_match_limit.to_i
- @offset_previous=sql_offset.to_i - sql_match_limit.to_i
- def current
- @@canned_search_url.to_s + '&ltd=' + sql_match_limit.to_s + '&off=' + sql_offset.to_s
- end
- def next
- @@canned_search_url.to_s + '&ltd=' + sql_match_limit.to_s + '&off=' + @offset_next.to_s
- end
- def previous
- @offset_previous >= 0 \
- ? (@@canned_search_url.to_s + '&ltd=' + sql_match_limit.to_s + '&off=' + @offset_previous.to_s)
- : ''
- end
- def start
- @@canned_search_url.to_s + '&ltd=' + sql_match_limit.to_s + '&off=' + 0.to_s
- end
- self
+ def previous
+ @offset_previous >= 0 \
+ ? (@@canned_search_url.to_s + '&ltd=' + sql_match_limit.to_s + '&off=' + @offset_previous.to_s)
+ : ''
end
- def pre_next(beyond_limit,img)
- can=sql_canned_search
- page=(sql_offset.to_i + sql_match_limit.to_i)/sql_match_limit.to_i
- if beyond_limit
- if page.to_s =~ /^1$/
- %{<br /><center>
- pg. #{page.to_s}
- <a href="#{can.next}">
- <img border="0" width="22" height="22" src="#{img}/arrow_next_red.png" alt="&nbsp;&gt;&gt;" />
- </a>
- </center>}
- elsif page.to_s =~ /^2$/
- %{<br /><center>
- <a href="#{can.previous}">
- <img border="0" width="22" height="22" src="#{img}/arrow_prev_red.png" alt="&lt;&lt;&nbsp;" />
- </a>
- pg. #{page.to_s}
- <a href="#{can.next}">
- <img border="0" width="22" height="22" src="#{img}/arrow_next_red.png" alt="&nbsp;&gt;&gt;" />
- </a>
- </center>}
- else
- %{<br /><center>
- <a href="#{can.start}">
- <img border="0" width="22" height="22" src="#{img}/arrow_prev_red.png" alt="|&lt;&nbsp;" />
- </a>
- <a href="#{can.previous}">
- <img border="0" width="22" height="22" src="#{img}/arrow_prev_red.png" alt="&lt;&lt;&nbsp;" />
- </a>
- pg. #{page.to_s}
- <a href="#{can.next}">
- <img border="0" width="22" height="22" src="#{img}/arrow_next_red.png" alt="&nbsp;&gt;&gt;" />
- </a>
- </center>}
- end
+ def start
+ @@canned_search_url.to_s + '&ltd=' + sql_match_limit.to_s + '&off=' + 0.to_s
+ end
+ self
+end
+def pre_next(beyond_limit,img)
+ can=sql_canned_search
+ page=(sql_offset.to_i + sql_match_limit.to_i)/sql_match_limit.to_i
+ if beyond_limit
+ if page.to_s =~ /^1$/
+ %{<br /><center>
+ pg. #{page.to_s}
+ <a href="#{can.next}">
+ <img border="0" width="22" height="22" src="#{img}/arrow_next_red.png" alt="&nbsp;&gt;&gt;" />
+ </a>
+ </center>}
+ elsif page.to_s =~ /^2$/
+ %{<br /><center>
+ <a href="#{can.previous}">
+ <img border="0" width="22" height="22" src="#{img}/arrow_prev_red.png" alt="&lt;&lt;&nbsp;" />
+ </a>
+ pg. #{page.to_s}
+ <a href="#{can.next}">
+ <img border="0" width="22" height="22" src="#{img}/arrow_next_red.png" alt="&nbsp;&gt;&gt;" />
+ </a>
+ </center>}
else
- if page.to_s =~ /^1$/ then ''
- elsif page.to_s =~ /^2$/
- %{<br /><center>
- <a href="#{can.previous}">
- <img border="0" width="22" height="22" src="#{img}/arrow_prev_red.png" alt="&lt;&lt;&nbsp;" />
- </a>
- pg. #{page.to_s}
- </center>}
- else
- %{<br /><center>
- <a href="#{can.start}">
- <img border="0" width="22" height="22" src="#{img}/arrow_prev_red.png" alt="|&lt;&nbsp;" />
- </a>
- <a href="#{can.previous}">
- <img border="0" width="22" height="22" src="#{img}/arrow_prev_red.png" alt="&lt;&lt;&nbsp;" />
- </a>
- pg. #{page.to_s}
- </center>}
- end
+ %{<br /><center>
+ <a href="#{can.start}">
+ <img border="0" width="22" height="22" src="#{img}/arrow_prev_red.png" alt="|&lt;&nbsp;" />
+ </a>
+ <a href="#{can.previous}">
+ <img border="0" width="22" height="22" src="#{img}/arrow_prev_red.png" alt="&lt;&lt;&nbsp;" />
+ </a>
+ pg. #{page.to_s}
+ <a href="#{can.next}">
+ <img border="0" width="22" height="22" src="#{img}/arrow_next_red.png" alt="&nbsp;&gt;&gt;" />
+ </a>
+ </center>}
+ end
+ else
+ if page.to_s =~ /^1$/ then ''
+ elsif page.to_s =~ /^2$/
+ %{<br /><center>
+ <a href="#{can.previous}">
+ <img border="0" width="22" height="22" src="#{img}/arrow_prev_red.png" alt="&lt;&lt;&nbsp;" />
+ </a>
+ pg. #{page.to_s}
+ </center>}
+ else
+ %{<br /><center>
+ <a href="#{can.start}">
+ <img border="0" width="22" height="22" src="#{img}/arrow_prev_red.png" alt="|&lt;&nbsp;" />
+ </a>
+ <a href="#{can.previous}">
+ <img border="0" width="22" height="22" src="#{img}/arrow_prev_red.png" alt="&lt;&lt;&nbsp;" />
+ </a>
+ pg. #{page.to_s}
+ </center>}
end
end
+end
#+END_SRC
***** select statement
-#+HEADER: :tangle "../sundry/util/rb/cgi/spine.search.cgi"
+#+NAME: form_select_statement
#+BEGIN_SRC ruby
def sql_select_body
limit ||= @@limit
@@ -578,7 +600,7 @@ end
**** tail
-#+HEADER: :tangle "../sundry/util/rb/cgi/spine.search.cgi"
+#+NAME: form_tail
#+BEGIN_SRC ruby
def tail
<<-'WOK'
@@ -683,7 +705,7 @@ end
**** fcgi each
***** init & start loop
-#+HEADER: :tangle "../sundry/util/rb/cgi/spine.search.cgi"
+#+NAME: form_loop
#+BEGIN_SRC ruby
@tail=tail
@counter_txt_doc,@counter_txt_ocn,@counter_endn_doc,@counter_endn_ocn=0,0,0,0
@@ -759,302 +781,302 @@ FCGI.each_cgi do |cgi|
***** canned search
-#+HEADER: :tangle "../sundry/util/rb/cgi/spine.search.cgi"
+#+NAME: form_search_canned
#+BEGIN_SRC ruby
- #Canned_search.new(@base,@search_for.text1,cgi)
- if @search_for.text1=~/\S+/ or @search_for.fulltext=~/\S+/ or @search_for.author=~/\S+/ or @search_for.topic_register=~/\S+/ #and search_field =~/\S/
- s1 = 's1=' + CGI.escape(@search_for.text1) if @search_for.text1 =~ /\S/
- ft = '&ft=' + CGI.escape(@search_for.fulltext) if @search_for.fulltext =~ /\S/
- key = 'key=' + CGI.escape(@search_for.keywords) if @search_for.keywords =~ /\S/
- ti = '&ti=' + CGI.escape(@search_for.title) if @search_for.title =~ /\S/
- au = '&au=' + CGI.escape(@search_for.author) if @search_for.author =~ /\S/
- tr = '&tr=' + CGI.escape(@search_for.topic_register) if @search_for.topic_register =~ /\S/
- sj = '&sj=' + CGI.escape(@search_for.subject) if @search_for.subject =~ /\S/
- dsc = '&dsc=' + CGI.escape(@search_for.description) if @search_for.description =~ /\S/
- pb = '&pb=' + CGI.escape(@search_for.publisher) if @search_for.publisher =~ /\S/
- edt = '&edt=' + CGI.escape(@search_for.editor) if @search_for.editor =~ /\S/
- cntr = '&cntr=' + CGI.escape(@search_for.contributor) if @search_for.contributor =~ /\S/
- dt = '&dt=' + CGI.escape(@search_for.date) if @search_for.date =~ /\S/
- ty = '&ty=' + CGI.escape(@search_for.type) if @search_for.type =~ /\S/
- id = '&id=' + CGI.escape(@search_for.identifier) if @search_for.identifier =~ /\S/
- src = '&src=' + CGI.escape(@search_for.source) if @search_for.source =~ /\S/
- lang = '&lang=' + CGI.escape(@search_for.language) if @search_for.language =~ /\S/
- rel = '&rel=' + CGI.escape(@search_for.relation) if @search_for.relation =~ /\S/
- cov = '&cov=' + CGI.escape(@search_for.coverage) if @search_for.coverage =~ /\S/
- cr = '&cr=' + CGI.escape(@search_for.rights) if @search_for.rights =~ /\S/
- co = '&co=' + CGI.escape(@search_for.comment) if @search_for.comment =~ /\S/
- ab = '&ab=' + CGI.escape(@search_for.abstract) if @search_for.abstract =~ /\S/
- dtc = '&dtc=' + CGI.escape(@search_for.date_created) if @search_for.date_created =~ /\S/
- dti = '&dti=' + CGI.escape(@search_for.date_issued) if @search_for.date_issued =~ /\S/
- dtm = '&dtm=' + CGI.escape(@search_for.date_modified) if @search_for.date_modified =~ /\S/
- dta = '&dta=' + CGI.escape(@search_for.date_available) if @search_for.date_available =~ /\S/
- dtv = '&dtv=' + CGI.escape(@search_for.date_valid) if @search_for.date_valid =~ /\S/
- fns = '&fns=' + CGI.escape(@search_for.src_filename_base) if @search_for.src_filename_base =~ /\S/
- @@canned_search_url=(checked_all =~/checked/) \
- ? "#{@base}?#{s1}#{ft}#{key}#{ti}#{au}#{tr}#{sj}#{dsc}#{pb}#{edt}#{cntr}#{dt}#{ty}#{id}#{src}#{lang}#{rel}#{cov}#{cr}#{co}#{ab}#{dtc}#{dti}#{dtm}#{dta}#{dtv}#{fns}&db=#{cgi['db']}&view=#{cgi['view']}&a=1"
- : "#{@base}?#{s1}#{ft}#{key}#{ti}#{au}#{tr}#{sj}#{dsc}#{pb}#{edt}#{cntr}#{dt}#{ty}#{id}#{src}#{lang}#{rel}#{cov}#{cr}#{co}#{ab}#{dtc}#{dti}#{dtm}#{dta}#{dtv}#{fns}&db=#{cgi['db']}&view=#{cgi['view']}"
- mod=ft=~/\S+/ ? (ft.gsub(/ft/,'s1')) : s1
- @canned_base_url="#{@base}?#{mod}&db=#{cgi['db']}"
- if checked_case=~/\S/
- @search[:text][1]=%{doc_objects.clean~'#{@search_for.text1}'} #s1
- else
- @search[:text][1]=%{doc_objects.clean~*'#{@search_for.text1}'} #s1
- end
- canned_note='search url:'
- else
- @@canned_search_url="#{@base}?db=#{@db}&view=index"
- canned_note='search url example:'
- end
- if search_field =~/\S+/
- analyze_format=search_field.gsub(/\s*\n/,'; ')
- elsif checked_all =~/checked/ or checked_url =~/checked/
- canned_search=@@canned_search_url.scan(/(?:s1|ft|au|ti|fns|tr)=[^&]+/)
- af=canned_search.join('; ')
- af=af.gsub(/s1=/,'text: ').
- gsub(/ft=/,'fulltxt: ').
- gsub(/au=/,'author: ').
- gsub(/ti=/,'title: ').
- gsub(/fns=/,'src_filename_base: ').
- gsub(/tr=/,'topic_register: ').
- gsub(/%2B/,' ')
- analyze_format=af
- st=af.split(/\s*;\s*/)
- search_field=st.join("\n")
- end
- green=%{<font size="2" color="#004000">}
- canned_search_url_txt=CGI.escapeHTML(@@canned_search_url)
- the_can=%{<font size="2" color="#666666">#{canned_note} <a href="#{@@canned_search_url}">#{canned_search_url_txt}</a></font><br />}
- p_text=p_fulltext=p_keywords=p_title=p_author=p_topic_register=p_subject=p_description=p_publisher=p_editor=p_contributor=p_date=p_type=p_format=p_identifier=p_source=p_language=p_relation=p_coverage=p_rights=p_comment=p_abstract=p_filename=''
- p_filename = %{src_filename_base: #{green}#{@search_for.src_filename_base}</font><br />} if @search_for.src_filename_base =~ /\S+/
- p_text = %{text: #{green}#{@search_for.text1}</font><br />} if @search_for.text1 =~ /\S+/
- p_fulltext = %{fulltxt: #{green}#{@search_for.fulltext}</font><br />} if @search_for.fulltext =~ /\S+/
- p_title = %{title: #{green}#{@search_for.title}</font><br />} if @search_for.title =~ /\S+/
- p_author = %{author: #{green}#{@search_for.author}</font><br />} if @search_for.author =~ /\S+/
- p_editor = %{editor: #{green}#{@search_for.editor}</font><br />} if @search_for.editor =~ /\S+/
- p_contributor = %{contributor: #{green}#{@search_for.contributor}</font><br />} if @search_for.contributor =~ /\S+/
- p_date = %{date: #{green}#{@search_for.date}</font><br />} if @search_for.date =~ /\S+/
- p_rights = %{rights: #{green}#{@search_for.rights}</font><br />} if @search_for.rights =~ /\S+/
- p_topic_register = %{topic_register: #{green}#{@search_for.topic_register}</font><br />} if @search_for.topic_register =~ /\S+/
- p_subject = %{subject: #{green}#{@search_for.subject}</font><br />} if @search_for.subject =~ /\S+/
- p_keywords = %{keywords: #{green}#{@search_for.keywords}</font><br />} if @search_for.keywords =~ /\S+/
- p_identifier = %{identifier: #{green}#{@search_for.identifier}</font><br />} if @search_for.identifier =~ /\S+/
- p_type = %{type: #{green}#{@search_for.type}</font><br />} if @search_for.type =~ /\S+/
- p_format = %{format: #{green}#{@search_for.format}</font><br />} if @search_for.format =~ /\S+/
- p_relation = %{relation: #{green}#{@search_for.relation}</font><br />} if @search_for.relation =~ /\S+/
- p_coverage = %{coverage: #{green}#{@search_for.coverage}</font><br />} if @search_for.coverage =~ /\S+/
- p_description = %{description: #{green}#{@search_for.description}</font><br />} if @search_for.description =~ /\S+/
- p_abstract = %{abstract: #{green}#{@search_for.abstract}</font><br />} if @search_for.abstract =~ /\S+/
- p_comment = %{comment: #{green}#{@search_for.comment}</font><br />} if @search_for.comment =~ /\S+/
- p_publisher = %{publisher: #{green}#{@search_for.publisher}</font><br />} if @search_for.publisher =~ /\S+/
- p_source = %{source: #{green}#{@search_for.source}</font><br />} if @search_for.source =~ /\S+/
- p_language = %{language: #{green}#{@search_for.language}</font><br />} if @search_for.language =~ /\S+/
- search_note=<<-WOK
- <font size="2" color="#666666">
- <b>database:</b> #{green}#{@db}</font>; <b>selected view:</b> #{green}#{cgi['view']}</font>
- <b>search string:</b> "#{green}#{analyze_format}</font>"<br />
- #{p_text} #{p_fulltext} #{p_keywords} #{p_title} #{p_author} #{p_topic_register} #{p_subject} #{p_description} #{p_publisher} #{p_editor} #{p_contributor} #{p_date} #{p_type} #{p_format} #{p_identifier} #{p_source} #{p_language} #{p_relation} #{p_coverage} #{p_rights} #{p_comment} #{p_abstract} #{p_filename}
- </font>
- WOK
- #eg = %{canned search e.g.:<br /> <a href="#{url}">#{url}</a><br />find: #{analyze}<br />database: #{database}}
- #% dbi_canning
+#Canned_search.new(@base,@search_for.text1,cgi)
+if @search_for.text1=~/\S+/ or @search_for.fulltext=~/\S+/ or @search_for.author=~/\S+/ or @search_for.topic_register=~/\S+/ #and search_field =~/\S/
+ s1 = 's1=' + CGI.escape(@search_for.text1) if @search_for.text1 =~ /\S/
+ ft = '&ft=' + CGI.escape(@search_for.fulltext) if @search_for.fulltext =~ /\S/
+ key = 'key=' + CGI.escape(@search_for.keywords) if @search_for.keywords =~ /\S/
+ ti = '&ti=' + CGI.escape(@search_for.title) if @search_for.title =~ /\S/
+ au = '&au=' + CGI.escape(@search_for.author) if @search_for.author =~ /\S/
+ tr = '&tr=' + CGI.escape(@search_for.topic_register) if @search_for.topic_register =~ /\S/
+ sj = '&sj=' + CGI.escape(@search_for.subject) if @search_for.subject =~ /\S/
+ dsc = '&dsc=' + CGI.escape(@search_for.description) if @search_for.description =~ /\S/
+ pb = '&pb=' + CGI.escape(@search_for.publisher) if @search_for.publisher =~ /\S/
+ edt = '&edt=' + CGI.escape(@search_for.editor) if @search_for.editor =~ /\S/
+ cntr = '&cntr=' + CGI.escape(@search_for.contributor) if @search_for.contributor =~ /\S/
+ dt = '&dt=' + CGI.escape(@search_for.date) if @search_for.date =~ /\S/
+ ty = '&ty=' + CGI.escape(@search_for.type) if @search_for.type =~ /\S/
+ id = '&id=' + CGI.escape(@search_for.identifier) if @search_for.identifier =~ /\S/
+ src = '&src=' + CGI.escape(@search_for.source) if @search_for.source =~ /\S/
+ lang = '&lang=' + CGI.escape(@search_for.language) if @search_for.language =~ /\S/
+ rel = '&rel=' + CGI.escape(@search_for.relation) if @search_for.relation =~ /\S/
+ cov = '&cov=' + CGI.escape(@search_for.coverage) if @search_for.coverage =~ /\S/
+ cr = '&cr=' + CGI.escape(@search_for.rights) if @search_for.rights =~ /\S/
+ co = '&co=' + CGI.escape(@search_for.comment) if @search_for.comment =~ /\S/
+ ab = '&ab=' + CGI.escape(@search_for.abstract) if @search_for.abstract =~ /\S/
+ dtc = '&dtc=' + CGI.escape(@search_for.date_created) if @search_for.date_created =~ /\S/
+ dti = '&dti=' + CGI.escape(@search_for.date_issued) if @search_for.date_issued =~ /\S/
+ dtm = '&dtm=' + CGI.escape(@search_for.date_modified) if @search_for.date_modified =~ /\S/
+ dta = '&dta=' + CGI.escape(@search_for.date_available) if @search_for.date_available =~ /\S/
+ dtv = '&dtv=' + CGI.escape(@search_for.date_valid) if @search_for.date_valid =~ /\S/
+ fns = '&fns=' + CGI.escape(@search_for.src_filename_base) if @search_for.src_filename_base =~ /\S/
+ @@canned_search_url=(checked_all =~/checked/) \
+ ? "#{@base}?#{s1}#{ft}#{key}#{ti}#{au}#{tr}#{sj}#{dsc}#{pb}#{edt}#{cntr}#{dt}#{ty}#{id}#{src}#{lang}#{rel}#{cov}#{cr}#{co}#{ab}#{dtc}#{dti}#{dtm}#{dta}#{dtv}#{fns}&db=#{cgi['db']}&view=#{cgi['view']}&a=1"
+ : "#{@base}?#{s1}#{ft}#{key}#{ti}#{au}#{tr}#{sj}#{dsc}#{pb}#{edt}#{cntr}#{dt}#{ty}#{id}#{src}#{lang}#{rel}#{cov}#{cr}#{co}#{ab}#{dtc}#{dti}#{dtm}#{dta}#{dtv}#{fns}&db=#{cgi['db']}&view=#{cgi['view']}"
+ mod=ft=~/\S+/ ? (ft.gsub(/ft/,'s1')) : s1
+ @canned_base_url="#{@base}?#{mod}&db=#{cgi['db']}"
+ if checked_case=~/\S/
+ @search[:text][1]=%{doc_objects.clean~'#{@search_for.text1}'} #s1
+ else
+ @search[:text][1]=%{doc_objects.clean~*'#{@search_for.text1}'} #s1
+ end
+ canned_note='search url:'
+else
+ @@canned_search_url="#{@base}?db=#{@db}&view=index"
+ canned_note='search url example:'
+end
+if search_field =~/\S+/
+ analyze_format=search_field.gsub(/\s*\n/,'; ')
+elsif checked_all =~/checked/ or checked_url =~/checked/
+ canned_search=@@canned_search_url.scan(/(?:s1|ft|au|ti|fns|tr)=[^&]+/)
+ af=canned_search.join('; ')
+ af=af.gsub(/s1=/,'text: ').
+ gsub(/ft=/,'fulltxt: ').
+ gsub(/au=/,'author: ').
+ gsub(/ti=/,'title: ').
+ gsub(/fns=/,'src_filename_base: ').
+ gsub(/tr=/,'topic_register: ').
+ gsub(/%2B/,' ')
+ analyze_format=af
+ st=af.split(/\s*;\s*/)
+ search_field=st.join("\n")
+end
+green=%{<font size="2" color="#004000">}
+canned_search_url_txt=CGI.escapeHTML(@@canned_search_url)
+the_can=%{<font size="2" color="#666666">#{canned_note} <a href="#{@@canned_search_url}">#{canned_search_url_txt}</a></font><br />}
+p_text=p_fulltext=p_keywords=p_title=p_author=p_topic_register=p_subject=p_description=p_publisher=p_editor=p_contributor=p_date=p_type=p_format=p_identifier=p_source=p_language=p_relation=p_coverage=p_rights=p_comment=p_abstract=p_filename=''
+p_filename = %{src_filename_base: #{green}#{@search_for.src_filename_base}</font><br />} if @search_for.src_filename_base =~ /\S+/
+p_text = %{text: #{green}#{@search_for.text1}</font><br />} if @search_for.text1 =~ /\S+/
+p_fulltext = %{fulltxt: #{green}#{@search_for.fulltext}</font><br />} if @search_for.fulltext =~ /\S+/
+p_title = %{title: #{green}#{@search_for.title}</font><br />} if @search_for.title =~ /\S+/
+p_author = %{author: #{green}#{@search_for.author}</font><br />} if @search_for.author =~ /\S+/
+p_editor = %{editor: #{green}#{@search_for.editor}</font><br />} if @search_for.editor =~ /\S+/
+p_contributor = %{contributor: #{green}#{@search_for.contributor}</font><br />} if @search_for.contributor =~ /\S+/
+p_date = %{date: #{green}#{@search_for.date}</font><br />} if @search_for.date =~ /\S+/
+p_rights = %{rights: #{green}#{@search_for.rights}</font><br />} if @search_for.rights =~ /\S+/
+p_topic_register = %{topic_register: #{green}#{@search_for.topic_register}</font><br />} if @search_for.topic_register =~ /\S+/
+p_subject = %{subject: #{green}#{@search_for.subject}</font><br />} if @search_for.subject =~ /\S+/
+p_keywords = %{keywords: #{green}#{@search_for.keywords}</font><br />} if @search_for.keywords =~ /\S+/
+p_identifier = %{identifier: #{green}#{@search_for.identifier}</font><br />} if @search_for.identifier =~ /\S+/
+p_type = %{type: #{green}#{@search_for.type}</font><br />} if @search_for.type =~ /\S+/
+p_format = %{format: #{green}#{@search_for.format}</font><br />} if @search_for.format =~ /\S+/
+p_relation = %{relation: #{green}#{@search_for.relation}</font><br />} if @search_for.relation =~ /\S+/
+p_coverage = %{coverage: #{green}#{@search_for.coverage}</font><br />} if @search_for.coverage =~ /\S+/
+p_description = %{description: #{green}#{@search_for.description}</font><br />} if @search_for.description =~ /\S+/
+p_abstract = %{abstract: #{green}#{@search_for.abstract}</font><br />} if @search_for.abstract =~ /\S+/
+p_comment = %{comment: #{green}#{@search_for.comment}</font><br />} if @search_for.comment =~ /\S+/
+p_publisher = %{publisher: #{green}#{@search_for.publisher}</font><br />} if @search_for.publisher =~ /\S+/
+p_source = %{source: #{green}#{@search_for.source}</font><br />} if @search_for.source =~ /\S+/
+p_language = %{language: #{green}#{@search_for.language}</font><br />} if @search_for.language =~ /\S+/
+search_note=<<-WOK
+ <font size="2" color="#666666">
+ <b>database:</b> #{green}#{@db}</font>; <b>selected view:</b> #{green}#{cgi['view']}</font>
+ <b>search string:</b> "#{green}#{analyze_format}</font>"<br />
+ #{p_text} #{p_fulltext} #{p_keywords} #{p_title} #{p_author} #{p_topic_register} #{p_subject} #{p_description} #{p_publisher} #{p_editor} #{p_contributor} #{p_date} #{p_type} #{p_format} #{p_identifier} #{p_source} #{p_language} #{p_relation} #{p_coverage} #{p_rights} #{p_comment} #{p_abstract} #{p_filename}
+ </font>
+WOK
+#eg = %{canned search e.g.:<br /> <a href="#{url}">#{url}</a><br />find: #{analyze}<br />database: #{database}}
+#% dbi_canning
#+END_SRC
***** submission form
-#+HEADER: :tangle "../sundry/util/rb/cgi/spine.search.cgi"
+#+NAME: form_submit
#+BEGIN_SRC ruby
- @header = Form.new(@base,search_field,selected_db,result_type,checked_sql_limit,checked_tip,checked_stats,checked_searched,checked_url,checked_case,checked_echo,checked_sql,checked_all,checked_none,checked_selected,checked_default,search_note,the_can).submission_form #% form
- unless q['s1'] =~/\S/ or q['au'] =~/\S/ or @search[:text][1] =~/\S/
- print "Content-type: text/html\n\n"
- puts (@header+@tail)
- else #% searches
- s1=(@search_for.text1 =~/\S/) \
- ? @search_for.text1
- : 'Unavailable'
- if checked_case=~/\S/
- @search[:text]<<%{doc_objects.clean~'#{CGI.unescape(s1)}'}
- else
- @search[:text]<<%{doc_objects.clean~*'#{CGI.unescape(s1)}'}
+@header = Form.new(@base,search_field,selected_db,result_type,checked_sql_limit,checked_tip,checked_stats,checked_searched,checked_url,checked_case,checked_echo,checked_sql,checked_all,checked_none,checked_selected,checked_default,search_note,the_can).submission_form #% form
+unless q['s1'] =~/\S/ or q['au'] =~/\S/ or @search[:text][1] =~/\S/
+ print "Content-type: text/html\n\n"
+ puts (@header+@tail)
+else #% searches
+ s1=(@search_for.text1 =~/\S/) \
+ ? @search_for.text1
+ : 'Unavailable'
+ if checked_case=~/\S/
+ @search[:text]<<%{doc_objects.clean~'#{CGI.unescape(s1)}'}
+ else
+ @search[:text]<<%{doc_objects.clean~*'#{CGI.unescape(s1)}'}
+ end
+ #% dbi_request
+ dbi_statement=DBI_SearchStatement.new(@conn,@search_for,q,checked_case)
+ @text_search_flag=false
+ @text_search_flag=dbi_statement.text_search_flag
+ s_contents=dbi_statement.contents
+ @body_main=''
+ @search_regx=nil
+ olduid=""
+ if @text_search_flag
+ if checked_sql =~/\S/
+ sql_select_body=dbi_statement.sql_select_body_format
+ else sql_select_body=''
end
- #% dbi_request
- dbi_statement=DBI_SearchStatement.new(@conn,@search_for,q,checked_case)
- @text_search_flag=false
- @text_search_flag=dbi_statement.text_search_flag
- s_contents=dbi_statement.contents
- @body_main=''
- @search_regx=nil
- olduid=""
- if @text_search_flag
- if checked_sql =~/\S/
- sql_select_body=dbi_statement.sql_select_body_format
- else sql_select_body=''
- end
- @body_main << sql_select_body
- #@body_main << '<p><hr><br /><b>Main Text:</b><br />' << sql_select_body
+ @body_main << sql_select_body
+ #@body_main << '<p><hr><br /><b>Main Text:</b><br />' << sql_select_body
+ else
+ end
+ @hostpath = "#{@hosturl_files}"
+ #@hostpath="#{@hosturl_files}/#{@stub}"
+ def path_manifest(fn,ln=nil)
+ case @output_dir_structure_by
+ when 'filename'
+ @lingual =='mono' \
+ ? "#{@hostpath}/#{fn}/sisu_manifest.html"
+ : "#{@hostpath}/#{fn}/sisu_manifest.#{ln}.html"
+ when 'filetype'
+ @lingual =='mono' \
+ ? "#{@hostpath}/manifest/#{fn}.html"
+ : "#{@hostpath}/manifest/#{fn}.#{ln}.html"
else
+ "#{@hostpath}/#{ln}/manifest/#{fn}.html"
end
- @hostpath = "#{@hosturl_files}"
- #@hostpath="#{@hosturl_files}/#{@stub}"
- def path_manifest(fn,ln=nil)
- case @output_dir_structure_by
- when 'filename'
- @lingual =='mono' \
- ? "#{@hostpath}/#{fn}/sisu_manifest.html"
- : "#{@hostpath}/#{fn}/sisu_manifest.#{ln}.html"
- when 'filetype'
- @lingual =='mono' \
- ? "#{@hostpath}/manifest/#{fn}.html"
- : "#{@hostpath}/manifest/#{fn}.#{ln}.html"
- else
- "#{@hostpath}/#{ln}/manifest/#{fn}.html"
- end
- end
- def path_html_seg(fn,ln=nil)
- case @output_dir_structure_by
- when 'filename'
- "#{@hostpath}/#{fn}"
- when 'filetype'
- "#{@hostpath}/html/#{fn}"
- else
- "#{@hostpath}/#{ln}/html/#{fn}"
- end
+ end
+ def path_html_seg(fn,ln=nil)
+ case @output_dir_structure_by
+ when 'filename'
+ "#{@hostpath}/#{fn}"
+ when 'filetype'
+ "#{@hostpath}/html/#{fn}"
+ else
+ "#{@hostpath}/#{ln}/html/#{fn}"
end
- def path_toc(fn,ln=nil)
- if @output_dir_structure_by =='filename' \
- or @output_dir_structure_by =='filetype'
- @lingual =='mono' \
- ? "#{path_html_seg(fn,ln)}/toc.html"
- : "#{path_html_seg(fn,ln)}/toc.#{ln}.html"
- else
- "#{path_html_seg(fn,ln)}/toc.html"
- end
+ end
+ def path_toc(fn,ln=nil)
+ if @output_dir_structure_by =='filename' \
+ or @output_dir_structure_by =='filetype'
+ @lingual =='mono' \
+ ? "#{path_html_seg(fn,ln)}/toc.html"
+ : "#{path_html_seg(fn,ln)}/toc.#{ln}.html"
+ else
+ "#{path_html_seg(fn,ln)}/toc.html"
end
- def path_filename(fn,seg_name,ln=nil)
- if @output_dir_structure_by =='filename' \
- or @output_dir_structure_by =='filetype'
- @lingual =='mono' \
- ? "#{path_html_seg(fn,ln)}/#{seg_name}.html"
- : "#{path_html_seg(fn,ln)}/#{seg_name}.#{ln}.html"
- else
- "#{path_html_seg(fn,ln)}/#{seg_name}.html"
- end
+ end
+ def path_filename(fn,seg_name,ln=nil)
+ if @output_dir_structure_by =='filename' \
+ or @output_dir_structure_by =='filetype'
+ @lingual =='mono' \
+ ? "#{path_html_seg(fn,ln)}/#{seg_name}.html"
+ : "#{path_html_seg(fn,ln)}/#{seg_name}.#{ln}.html"
+ else
+ "#{path_html_seg(fn,ln)}/#{seg_name}.html"
end
- def path_html_doc(fn,ln=nil)
- case @output_dir_structure_by
- when 'filename'
- @lingual =='mono' \
- ? "#{path_html_seg(fn,ln)}/scroll.html"
- : "#{path_html_seg(fn,ln)}/scroll.#{ln}.html"
- when 'filetype'
- @lingual =='mono' \
- ? "#{@hostpath}/html/#{fn}.html"
- : "#{@hostpath}/html/#{fn}.#{ln}.html"
- else
- "#{@hostpath}/#{ln}/html/#{fn}.html"
- end
+ end
+ def path_html_doc(fn,ln=nil)
+ case @output_dir_structure_by
+ when 'filename'
+ @lingual =='mono' \
+ ? "#{path_html_seg(fn,ln)}/scroll.html"
+ : "#{path_html_seg(fn,ln)}/scroll.#{ln}.html"
+ when 'filetype'
+ @lingual =='mono' \
+ ? "#{@hostpath}/html/#{fn}.html"
+ : "#{@hostpath}/html/#{fn}.#{ln}.html"
+ else
+ "#{@hostpath}/#{ln}/html/#{fn}.html"
end
+ end
#+END_SRC
***** contents each, text body
-#+HEADER: :tangle "../sundry/util/rb/cgi/spine.search.cgi"
+#+NAME: form_contents_each_text
#+BEGIN_SRC ruby
- #% text_objects_body
- s_contents.each do |c| #% text body
- location=c['src_filename_base'][/(.+?)\.(?:ssm\.sst|sst)$/,1]
- file_suffix=c['src_filename_base'][/.+?\.(ssm\.sst|sst)$/,1]
- lang=if location =~ /\S+?~(\S\S\S?)$/
- l=location[/\S+?~(\S\S\S?)$/,1]
- location=location.gsub(/(\S+?)~\S\S\S?/,'\1')
- l=".#{l}"
- else ''
- end
- #% metadata_found_body
- if c['uid'] != olduid
- ti=c['title']
- can_txt_srch=(cgi['view']=~/index/) \
- ? %{<a href="#{@canned_base_url}&fns=#{c['src_filename_base']}&lang=#{c['language_document_char']}&view=text"><img border="0" width="24" height="16" src="#{@image_src}/b_search.png" alt="search"></a>&nbsp;}
- : %{<a href="#{@canned_base_url}&fns=#{c['src_filename_base']}&lang=#{c['language_document_char']}&view=index"><img border="0" width="24" height="16" src="#{@image_src}/b_search.png" alt="search"></a>&nbsp;}
- title = %{<span style="background-color: #{@color_heading}"><a href="#{path_toc(location,c['language_document_char'])}"><img border="0" width="15" height="18" src="#{@image_src}/b_toc.png" alt="">&nbsp;#{ti}</a></span> [#{c['language_document_char']}] by #{c['creator_author']} <a href="#{path_manifest(location,c['language_document_char'])}"><img border="0" width="15" height="15" src="#{@image_src}/b_info.png" alt=""></a> #{can_txt_srch}<br />}
- title=@text_search_flag \
- ? '<br /><hr>'+title
- : '<br />'+title
- @counter_txt_doc+=1
- olduid=c['uid']
- else title=''
- end
- if @text_search_flag
- if cgi['view']=~/text/ \
- or (cgi['view']!~/index/ and cgi['search'] !~/search db/) #% txt body
- text=if c['suffix'] !~/1/ #seg
- if @search_for.text1 =~/\S+/ \
- or q['s1'] =~/\S+/ #% only this branch is working !!
- unescaped_search=if @search_for.text1 =~/\S+/
- CGI.unescape(@search_for.text1)
- elsif q['s1'] =~/\S+/
- CGI.unescape(q['s1'])
- else nil
- end
- @search_regx=if unescaped_search #check
- search_regex=[]
- build=unescaped_search.scan(/\S+/).each do |g|
- (g.to_s =~/(AND|OR)/) \
- ? (search_regex << '|')
- : (search_regex << %{#{g.to_s}})
- end
- search_regex=search_regex.join(' ')
- search_regex=search_regex.gsub(/\s*\|\s*/,'|')
- Regexp.new(search_regex, Regexp::IGNORECASE)
- else nil
- end
- else nil
- end
- matched_para=(@search_regx.to_s.class==String && @search_regx.to_s=~/\S\S+/) \
- ? (c['body'].gsub(/(<a\s+href="https?:\/\/[^><\s]+#{@search_regx}[^>]+?>|#{@search_regx})/mi,%{<span style="background-color: #{@color_match}">\\1</span>}))
- : c['body']
- %{<hr><p><font size="2">ocn <b><a href="#{path_filename(location,c['seg_name'],c['language_document_char'])}##{c['ocn']}">#{c['ocn']}</a></b>:</font></p>#{matched_para}}
- elsif c['suffix'] =~/1/ #doc
- %{#{title}<hr><p><font size="2">ocn #{c['ocn']}:#{c['body']}}
- end
- @counter_txt_ocn+=1
- output=title+text
- else #elsif cgi['view']=~/index/ #% idx body
- if c['suffix'] !~/1/ #seg
- index=%{<a href="#{path_filename(location,c['seg_name'],c['language_document_char'])}##{c['ocn']}">#{c['ocn']}</a>, } if @text_search_flag
- elsif c['suffix'] =~/1/ #doc #FIX
- index=%{<a href="#{path_html_doc(location,c['language_document_char'])}##{c['ocn']}">#{c['ocn']}</a>, }
+ #% text_objects_body
+s_contents.each do |c| #% text body
+ location=c['src_filename_base'][/(.+?)\.(?:ssm\.sst|sst)$/,1]
+ file_suffix=c['src_filename_base'][/.+?\.(ssm\.sst|sst)$/,1]
+ lang=if location =~ /\S+?~(\S\S\S?)$/
+ l=location[/\S+?~(\S\S\S?)$/,1]
+ location=location.gsub(/(\S+?)~\S\S\S?/,'\1')
+ l=".#{l}"
+ else ''
+ end
+#% metadata_found_body
+ if c['uid'] != olduid
+ ti=c['title']
+ can_txt_srch=(cgi['view']=~/index/) \
+ ? %{<a href="#{@canned_base_url}&fns=#{c['src_filename_base']}&lang=#{c['language_document_char']}&view=text"><img border="0" width="24" height="16" src="#{@image_src}/b_search.png" alt="search"></a>&nbsp;}
+ : %{<a href="#{@canned_base_url}&fns=#{c['src_filename_base']}&lang=#{c['language_document_char']}&view=index"><img border="0" width="24" height="16" src="#{@image_src}/b_search.png" alt="search"></a>&nbsp;}
+ title = %{<span style="background-color: #{@color_heading}"><a href="#{path_toc(location,c['language_document_char'])}"><img border="0" width="15" height="18" src="#{@image_src}/b_toc.png" alt="">&nbsp;#{ti}</a></span> [#{c['language_document_char']}] by #{c['creator_author']} <a href="#{path_manifest(location,c['language_document_char'])}"><img border="0" width="15" height="15" src="#{@image_src}/b_info.png" alt=""></a> #{can_txt_srch}<br />}
+ title=@text_search_flag \
+ ? '<br /><hr>'+title
+ : '<br />'+title
+ @counter_txt_doc+=1
+ olduid=c['uid']
+ else title=''
+ end
+ if @text_search_flag
+ if cgi['view']=~/text/ \
+ or (cgi['view']!~/index/ and cgi['search'] !~/search db/) #% txt body
+ text=if c['suffix'] !~/1/ #seg
+ if @search_for.text1 =~/\S+/ \
+ or q['s1'] =~/\S+/ #% only this branch is working !!
+ unescaped_search=if @search_for.text1 =~/\S+/
+ CGI.unescape(@search_for.text1)
+ elsif q['s1'] =~/\S+/
+ CGI.unescape(q['s1'])
+ else nil
end
- if c['seg_name'] =~/\S+/
- if @text_search_flag
- @counter_txt_ocn+=1
- output=title+index
+ @search_regx=if unescaped_search #check
+ search_regex=[]
+ build=unescaped_search.scan(/\S+/).each do |g|
+ (g.to_s =~/(AND|OR)/) \
+ ? (search_regex << '|')
+ : (search_regex << %{#{g.to_s}})
end
- else
- @counter_txt_ocn+=1
- output=c['suffix'] !~/1/ \
- ? title+index
- : %{#{title}#{c['ocn'].sort}, }
+ search_regex=search_regex.join(' ')
+ search_regex=search_regex.gsub(/\s*\|\s*/,'|')
+ Regexp.new(search_regex, Regexp::IGNORECASE)
+ else nil
end
+ else nil
end
- else output=title
+ matched_para=(@search_regx.to_s.class==String && @search_regx.to_s=~/\S\S+/) \
+ ? (c['body'].gsub(/(<a\s+href="https?:\/\/[^><\s]+#{@search_regx}[^>]+?>|#{@search_regx})/mi,%{<span style="background-color: #{@color_match}">\\1</span>}))
+ : c['body']
+ %{<hr><p><font size="2">ocn <b><a href="#{path_filename(location,c['seg_name'],c['language_document_char'])}##{c['ocn']}">#{c['ocn']}</a></b>:</font></p>#{matched_para}}
+ elsif c['suffix'] =~/1/ #doc
+ %{#{title}<hr><p><font size="2">ocn #{c['ocn']}:#{c['body']}}
end
- @counters_txt=if @counter_txt_doc > 0
- if checked_stats =~/\S/
- @@lt_t=(@counter_txt_ocn==dbi_statement.sql_match_limit.to_i) ? true : false
- start=(@@offset.to_i+1).to_s
- range=(@@offset.to_i+@counter_txt_ocn.to_i).to_s
- %{<hr /><font size="2" color="#666666">Found #{@counter_txt_ocn} times in the main body of #{@counter_txt_doc} documents [ matches #{start} to #{range} ]</font><br />}
- else ''
+ @counter_txt_ocn+=1
+ output=title+text
+ else #elsif cgi['view']=~/index/ #% idx body
+ if c['suffix'] !~/1/ #seg
+ index=%{<a href="#{path_filename(location,c['seg_name'],c['language_document_char'])}##{c['ocn']}">#{c['ocn']}</a>, } if @text_search_flag
+ elsif c['suffix'] =~/1/ #doc #FIX
+ index=%{<a href="#{path_html_doc(location,c['language_document_char'])}##{c['ocn']}">#{c['ocn']}</a>, }
+ end
+ if c['seg_name'] =~/\S+/
+ if @text_search_flag
+ @counter_txt_ocn+=1
+ output=title+index
end
- else ''
+ else
+ @counter_txt_ocn+=1
+ output=c['suffix'] !~/1/ \
+ ? title+index
+ : %{#{title}#{c['ocn'].sort}, }
end
- @body_main << output #+ details
end
+ else output=title
+ end
+ @counters_txt=if @counter_txt_doc > 0
+ if checked_stats =~/\S/
+ @@lt_t=(@counter_txt_ocn==dbi_statement.sql_match_limit.to_i) ? true : false
+ start=(@@offset.to_i+1).to_s
+ range=(@@offset.to_i+@counter_txt_ocn.to_i).to_s
+ %{<hr /><font size="2" color="#666666">Found #{@counter_txt_ocn} times in the main body of #{@counter_txt_doc} documents [ matches #{start} to #{range} ]</font><br />}
+ else ''
+ end
+ else ''
+ end
+ @body_main << output #+ details
+end
#+END_SRC
***** after
-#+HEADER: :tangle "../sundry/util/rb/cgi/spine.search.cgi"
+#+NAME: form_contents_after
#+BEGIN_SRC ruby
olduid = ""
offset=dbi_statement.sql_offset.to_s
diff --git a/org/util_spine_markup_conversion_from_sisu.org b/org/util_spine_markup_conversion_from_sisu.org
index 4b7a997..bc7fea2 100644
--- a/org/util_spine_markup_conversion_from_sisu.org
+++ b/org/util_spine_markup_conversion_from_sisu.org
@@ -20,14 +20,14 @@
** README
-#+HEADER: :tangle "../sundry/util/d/tools/markup_conversion/README"
+#+HEADER: :tangle "../sundry/misc/util/d/tools/markup_conversion/README"
#+BEGIN_SRC text
#+END_SRC
** endnotes, inline from binary
*** tangle
-#+HEADER: :tangle "../sundry/util/d/tools/markup_conversion/endnotes_inline_from_binary.d"
+#+HEADER: :tangle "../sundry/misc/util/d/tools/markup_conversion/endnotes_inline_from_binary.d"
#+HEADER: :tangle-mode (identity #o755)
#+HEADER: :shebang #!/usr/bin/env rdmd
#+BEGIN_SRC d
@@ -207,7 +207,7 @@ if (endnotes.length == endnote_ref_count) {
** conversion from sisu (sisu bespoke headers) any binary to inline notes TODO
*** tangle
-#+HEADER: :tangle "../sundry/util/d/tools/markup_conversion/markup_conversion_from_sisu_ruby_to_sisu_spine.d"
+#+HEADER: :tangle "../sundry/misc/util/d/tools/markup_conversion/markup_conversion_from_sisu_ruby_to_sisu_spine.d"
#+HEADER: :tangle-mode (identity #o755)
#+HEADER: :shebang #!/usr/bin/env rdmd
#+BEGIN_SRC d
@@ -668,7 +668,7 @@ foreach (paragraph; paragraphs) {
** conversion from sisu and multiple headers (sisu bespoke, sdlang, toml) incomplete
*** tangle
-#+HEADER: :tangle "../sundry/util/d/tools/markup_conversion/markup_changes_header_and_content.d"
+#+HEADER: :tangle "../sundry/misc/util/d/tools/markup_conversion/markup_changes_header_and_content.d"
#+HEADER: :tangle-mode (identity #o755)
#+HEADER: :shebang #!/usr/bin/env rdmd
#+BEGIN_SRC d
diff --git a/org/util_spine_syntax_highlighting_emacs.org b/org/util_spine_syntax_highlighting_emacs.org
index bce3fe2..50ad9b5 100644
--- a/org/util_spine_syntax_highlighting_emacs.org
+++ b/org/util_spine_syntax_highlighting_emacs.org
@@ -20,7 +20,7 @@
** README
-#+HEADER: :tangle "../sundry/editor-syntax-etc/emacs/README"
+#+HEADER: :tangle "../sundry/misc/editor-syntax-etc/emacs/README"
#+BEGIN_SRC elisp
; put this into your .emacs file, then use the mode file:
@@ -30,7 +30,7 @@
** autoload sisuspine-mode-autoloads.el
-#+HEADER: :tangle "../sundry/editor-syntax-etc/emacs/sisu-spine-mode-autoloads.el"
+#+HEADER: :tangle "../sundry/misc/editor-syntax-etc/emacs/sisu-spine-mode-autoloads.el"
#+BEGIN_SRC elisp
(add-to-list 'load-path (or (file-name-directory #$) (car load-path)))
(autoload 'sisu-spine-mode "sisu-spine-mode" "\
@@ -46,7 +46,7 @@ and search.
** mode sisu-spine-mode.el
-#+HEADER: :tangle "../sundry/editor-syntax-etc/emacs/sisu-spine-mode.el"
+#+HEADER: :tangle "../sundry/misc/editor-syntax-etc/emacs/sisu-spine-mode.el"
#+BEGIN_SRC elisp
;;; sisu-spine-mode.el --- Major mode for SiSU (spine parser) markup text
diff --git a/org/util_spine_syntax_highlighting_vim.org b/org/util_spine_syntax_highlighting_vim.org
index b8f2c14..7ccd42b 100644
--- a/org/util_spine_syntax_highlighting_vim.org
+++ b/org/util_spine_syntax_highlighting_vim.org
@@ -19,7 +19,7 @@
* Vim Syntax highlighting
** filetype
-#+HEADER: :tangle "../sundry/editor-syntax-etc/vim/filetype.vim"
+#+HEADER: :tangle "../sundry/misc/editor-syntax-etc/vim/filetype.vim"
#+BEGIN_SRC text
" SiSU filetype file
if exists("did_load_filetypes")
@@ -33,7 +33,7 @@ augroup END
** debian vim addon manager
-#+HEADER: :tangle "../sundry/editor-syntax-etc/vim/vim-sisu.yaml"
+#+HEADER: :tangle "../sundry/misc/editor-syntax-etc/vim/vim-sisu.yaml"
#+BEGIN_SRC text
#vim-addons: debian vim-addon-manager
addon: sisu
@@ -47,7 +47,7 @@ files:
** color files
*** def.vim
-#+HEADER: :tangle "../sundry/editor-syntax-etc/vim/colors/def.vim"
+#+HEADER: :tangle "../sundry/misc/editor-syntax-etc/vim/colors/def.vim"
#+BEGIN_SRC text
" Vim color file
" Name: def
@@ -276,7 +276,7 @@ endif
*** slate.vim
-#+HEADER: :tangle "../sundry/editor-syntax-etc/vim/colors/slate.vim"
+#+HEADER: :tangle "../sundry/misc/editor-syntax-etc/vim/colors/slate.vim"
#+BEGIN_SRC text
"%% SiSU Vim color file
" Name: Slate
@@ -357,7 +357,7 @@ endif
*** def-sisu.vim
-#+HEADER: :tangle "../sundry/editor-syntax-etc/vim/colors/def-sisu.vim"
+#+HEADER: :tangle "../sundry/misc/editor-syntax-etc/vim/colors/def-sisu.vim"
#+BEGIN_SRC text
" Vim color file
" Name: def-sisu
@@ -586,7 +586,7 @@ endif
*** frugal-cterm.vim
-#+HEADER: :tangle "../sundry/editor-syntax-etc/vim/colors/frugal-cterm-sisu.vim"
+#+HEADER: :tangle "../sundry/misc/editor-syntax-etc/vim/colors/frugal-cterm-sisu.vim"
#+BEGIN_SRC text
" Vim color file
" Name: frugal-cterm-sisu
@@ -658,7 +658,7 @@ endif
** ftplugin sisu.vim
-#+HEADER: :tangle "../sundry/editor-syntax-etc/vim/ftplugin/sisu.vim"
+#+HEADER: :tangle "../sundry/misc/editor-syntax-etc/vim/ftplugin/sisu.vim"
#+BEGIN_SRC text
"%% SiSU Vim ftplugin
" SiSU Maintainer: Ralph Amissah <ralph@amissah.com>
@@ -889,7 +889,7 @@ endif
** templates
*** sst.tpl
-#+HEADER: :tangle "../sundry/editor-syntax-etc/vim/templates/sst.tpl"
+#+HEADER: :tangle "../sundry/misc/editor-syntax-etc/vim/templates/sst.tpl"
#+BEGIN_SRC text
# SiSU 8.0
@@ -925,7 +925,7 @@ make:
*** ssm.tpl
-#+HEADER: :tangle "../sundry/editor-syntax-etc/vim/templates/ssm.tpl"
+#+HEADER: :tangle "../sundry/misc/editor-syntax-etc/vim/templates/ssm.tpl"
#+BEGIN_SRC text
# SiSU 8.0 master
@@ -961,7 +961,7 @@ make:
*** ssm.tpl
-#+HEADER: :tangle "../sundry/editor-syntax-etc/vim/templates/ssi.tpl"
+#+HEADER: :tangle "../sundry/misc/editor-syntax-etc/vim/templates/ssi.tpl"
#+BEGIN_SRC text
# SiSU 8.0 insert