From 7372f56054259457f77c64cbdb34e736531cfc0e Mon Sep 17 00:00:00 2001 From: Ralph Amissah Date: Sat, 4 Jul 2009 11:57:29 -0400 Subject: move lib to version 1 directory, (lib/sisu/v1) and make related changes --- lib/sisu/v0/author_format.rb | 122 - lib/sisu/v0/cgi.rb | 87 - lib/sisu/v0/cgi_pgsql.rb | 232 -- lib/sisu/v0/cgi_sql_common.rb | 971 ------- lib/sisu/v0/cgi_sqlite.rb | 218 -- lib/sisu/v0/character_encoding.rb | 382 --- lib/sisu/v0/composite.rb | 240 -- lib/sisu/v0/concordance.rb | 351 --- lib/sisu/v0/conf.rb | 269 -- lib/sisu/v0/constants.rb | 172 -- lib/sisu/v0/css.rb | 2007 -------------- lib/sisu/v0/dal.rb | 273 -- lib/sisu/v0/dal_character_check.rb | 109 - lib/sisu/v0/dal_doc_str.rb | 265 -- lib/sisu/v0/dal_doc_str_code.rb | 187 -- lib/sisu/v0/dal_doc_str_tables.rb | 198 -- lib/sisu/v0/dal_endnotes.rb | 129 - lib/sisu/v0/dal_expand_insertions.rb | 196 -- lib/sisu/v0/dal_hash_digest.rb | 173 -- lib/sisu/v0/dal_idx.rb | 323 --- lib/sisu/v0/dal_images.rb | 123 - lib/sisu/v0/dal_metadata.rb | 225 -- lib/sisu/v0/dal_numbering.rb | 368 --- lib/sisu/v0/dal_substitutions_and_insertions.rb | 129 - lib/sisu/v0/dal_syntax.rb | 427 --- lib/sisu/v0/db_columns.rb | 229 -- lib/sisu/v0/db_create.rb | 597 ----- lib/sisu/v0/db_dbi.rb | 93 - lib/sisu/v0/db_drop.rb | 150 -- lib/sisu/v0/db_import.rb | 886 ------ lib/sisu/v0/db_indexes.rb | 111 - lib/sisu/v0/db_load_tuple.rb | 155 -- lib/sisu/v0/db_remove.rb | 107 - lib/sisu/v0/db_select.rb | 193 -- lib/sisu/v0/db_tests.rb | 119 - lib/sisu/v0/dbi.rb | 149 -- lib/sisu/v0/defaults.rb | 2225 --------------- lib/sisu/v0/digests.rb | 377 --- lib/sisu/v0/embedded.rb | 139 - lib/sisu/v0/errors.rb | 82 - lib/sisu/v0/harvest.rb | 103 - lib/sisu/v0/harvest_authors.rb | 331 --- lib/sisu/v0/harvest_topics.rb | 571 ---- lib/sisu/v0/help.rb | 2036 -------------- lib/sisu/v0/html.rb | 703 ----- lib/sisu/v0/html_format.rb | 1425 ---------- lib/sisu/v0/html_minitoc.rb | 239 -- lib/sisu/v0/html_promo.rb | 442 --- lib/sisu/v0/html_scroll.rb | 193 -- lib/sisu/v0/html_segments.rb | 536 ---- lib/sisu/v0/html_table.rb | 152 -- lib/sisu/v0/html_tune.rb | 383 --- lib/sisu/v0/hub.rb | 590 ---- lib/sisu/v0/i18n.rb | 1605 ----------- lib/sisu/v0/manifest.rb | 644 ----- lib/sisu/v0/manpage.rb | 462 ---- lib/sisu/v0/manpage_format.rb | 119 - lib/sisu/v0/odf.rb | 738 ----- lib/sisu/v0/odf_format.rb | 263 -- lib/sisu/v0/options.rb | 191 -- lib/sisu/v0/param.rb | 969 ------- lib/sisu/v0/param_identify_markup.rb | 145 - lib/sisu/v0/particulars.rb | 130 - lib/sisu/v0/plaintext.rb | 448 ---- lib/sisu/v0/plaintext_format.rb | 120 - lib/sisu/v0/relaxng.rb | 1177 -------- lib/sisu/v0/remote.rb | 266 -- lib/sisu/v0/response.rb | 76 - lib/sisu/v0/rexml.rb | 127 - lib/sisu/v0/screen_text_color.rb | 414 --- lib/sisu/v0/share_src.rb | 97 - lib/sisu/v0/share_src_kdissert.rb | 91 - lib/sisu/v0/shared_html.rb | 65 - lib/sisu/v0/shared_html_lite.rb | 276 -- lib/sisu/v0/shared_sem.rb | 157 -- lib/sisu/v0/shared_structure.rb | 173 -- lib/sisu/v0/shared_txt.rb | 223 -- lib/sisu/v0/shared_xml.rb | 739 ----- lib/sisu/v0/sisupod_make.rb | 337 --- lib/sisu/v0/sitemaps.rb | 224 -- lib/sisu/v0/spell.rb | 102 - lib/sisu/v0/sst_convert_markup.rb | 318 --- lib/sisu/v0/sst_do_inline_footnotes.rb | 482 ---- lib/sisu/v0/sst_from_kdissert.rb | 194 -- lib/sisu/v0/sst_from_xml.rb | 170 -- lib/sisu/v0/sst_identify_markup.rb | 439 --- lib/sisu/v0/sst_to_s_xml_dom.rb | 590 ---- lib/sisu/v0/sst_to_s_xml_node.rb | 650 ----- lib/sisu/v0/sst_to_s_xml_sax.rb | 454 ---- lib/sisu/v0/sysenv.rb | 3275 ----------------------- lib/sisu/v0/termsheet.rb | 167 -- lib/sisu/v0/texinfo.rb | 438 --- lib/sisu/v0/texinfo_format.rb | 520 ---- lib/sisu/v0/texpdf.rb | 797 ------ lib/sisu/v0/texpdf_format.rb | 1556 ----------- lib/sisu/v0/update.rb | 131 - lib/sisu/v0/urls.rb | 284 -- lib/sisu/v0/webrick.rb | 174 -- lib/sisu/v0/wikispeak.rb | 407 --- lib/sisu/v0/xhtml.rb | 465 ---- lib/sisu/v0/xml.rb | 482 ---- lib/sisu/v0/xml_dom.rb | 561 ---- lib/sisu/v0/xml_fictionbook.rb | 313 --- lib/sisu/v0/xml_format.rb | 357 --- lib/sisu/v0/xml_md_oai_pmh_dc.rb | 211 -- lib/sisu/v0/xml_scaffold.rb | 206 -- lib/sisu/v0/xml_tables.rb | 213 -- lib/sisu/v0/zap.rb | 81 - lib/sisu/v1/author_format.rb | 122 + lib/sisu/v1/cgi.rb | 87 + lib/sisu/v1/cgi_pgsql.rb | 232 ++ lib/sisu/v1/cgi_sql_common.rb | 971 +++++++ lib/sisu/v1/cgi_sqlite.rb | 218 ++ lib/sisu/v1/character_encoding.rb | 382 +++ lib/sisu/v1/composite.rb | 240 ++ lib/sisu/v1/concordance.rb | 351 +++ lib/sisu/v1/conf.rb | 269 ++ lib/sisu/v1/constants.rb | 172 ++ lib/sisu/v1/css.rb | 2007 ++++++++++++++ lib/sisu/v1/dal.rb | 273 ++ lib/sisu/v1/dal_character_check.rb | 109 + lib/sisu/v1/dal_doc_str.rb | 265 ++ lib/sisu/v1/dal_doc_str_code.rb | 187 ++ lib/sisu/v1/dal_doc_str_tables.rb | 198 ++ lib/sisu/v1/dal_endnotes.rb | 129 + lib/sisu/v1/dal_expand_insertions.rb | 196 ++ lib/sisu/v1/dal_hash_digest.rb | 173 ++ lib/sisu/v1/dal_idx.rb | 323 +++ lib/sisu/v1/dal_images.rb | 123 + lib/sisu/v1/dal_metadata.rb | 225 ++ lib/sisu/v1/dal_numbering.rb | 368 +++ lib/sisu/v1/dal_substitutions_and_insertions.rb | 129 + lib/sisu/v1/dal_syntax.rb | 427 +++ lib/sisu/v1/db_columns.rb | 229 ++ lib/sisu/v1/db_create.rb | 597 +++++ lib/sisu/v1/db_dbi.rb | 93 + lib/sisu/v1/db_drop.rb | 150 ++ lib/sisu/v1/db_import.rb | 886 ++++++ lib/sisu/v1/db_indexes.rb | 111 + lib/sisu/v1/db_load_tuple.rb | 155 ++ lib/sisu/v1/db_remove.rb | 107 + lib/sisu/v1/db_select.rb | 193 ++ lib/sisu/v1/db_tests.rb | 119 + lib/sisu/v1/dbi.rb | 149 ++ lib/sisu/v1/defaults.rb | 2225 +++++++++++++++ lib/sisu/v1/digests.rb | 377 +++ lib/sisu/v1/embedded.rb | 139 + lib/sisu/v1/errors.rb | 82 + lib/sisu/v1/harvest.rb | 103 + lib/sisu/v1/harvest_authors.rb | 331 +++ lib/sisu/v1/harvest_topics.rb | 571 ++++ lib/sisu/v1/help.rb | 2036 ++++++++++++++ lib/sisu/v1/html.rb | 703 +++++ lib/sisu/v1/html_format.rb | 1425 ++++++++++ lib/sisu/v1/html_minitoc.rb | 239 ++ lib/sisu/v1/html_promo.rb | 442 +++ lib/sisu/v1/html_scroll.rb | 193 ++ lib/sisu/v1/html_segments.rb | 536 ++++ lib/sisu/v1/html_table.rb | 152 ++ lib/sisu/v1/html_tune.rb | 383 +++ lib/sisu/v1/hub.rb | 590 ++++ lib/sisu/v1/i18n.rb | 1605 +++++++++++ lib/sisu/v1/manifest.rb | 644 +++++ lib/sisu/v1/manpage.rb | 462 ++++ lib/sisu/v1/manpage_format.rb | 119 + lib/sisu/v1/odf.rb | 738 +++++ lib/sisu/v1/odf_format.rb | 263 ++ lib/sisu/v1/options.rb | 191 ++ lib/sisu/v1/param.rb | 969 +++++++ lib/sisu/v1/param_identify_markup.rb | 145 + lib/sisu/v1/particulars.rb | 130 + lib/sisu/v1/plaintext.rb | 448 ++++ lib/sisu/v1/plaintext_format.rb | 120 + lib/sisu/v1/relaxng.rb | 1177 ++++++++ lib/sisu/v1/remote.rb | 266 ++ lib/sisu/v1/response.rb | 76 + lib/sisu/v1/rexml.rb | 127 + lib/sisu/v1/screen_text_color.rb | 414 +++ lib/sisu/v1/share_src.rb | 97 + lib/sisu/v1/share_src_kdissert.rb | 91 + lib/sisu/v1/shared_html.rb | 65 + lib/sisu/v1/shared_html_lite.rb | 276 ++ lib/sisu/v1/shared_sem.rb | 157 ++ lib/sisu/v1/shared_structure.rb | 173 ++ lib/sisu/v1/shared_txt.rb | 223 ++ lib/sisu/v1/shared_xml.rb | 739 +++++ lib/sisu/v1/sisupod_make.rb | 337 +++ lib/sisu/v1/sitemaps.rb | 224 ++ lib/sisu/v1/spell.rb | 102 + lib/sisu/v1/sst_convert_markup.rb | 318 +++ lib/sisu/v1/sst_do_inline_footnotes.rb | 482 ++++ lib/sisu/v1/sst_from_kdissert.rb | 194 ++ lib/sisu/v1/sst_from_xml.rb | 170 ++ lib/sisu/v1/sst_identify_markup.rb | 439 +++ lib/sisu/v1/sst_to_s_xml_dom.rb | 590 ++++ lib/sisu/v1/sst_to_s_xml_node.rb | 650 +++++ lib/sisu/v1/sst_to_s_xml_sax.rb | 454 ++++ lib/sisu/v1/sysenv.rb | 3275 +++++++++++++++++++++++ lib/sisu/v1/termsheet.rb | 167 ++ lib/sisu/v1/texinfo.rb | 438 +++ lib/sisu/v1/texinfo_format.rb | 520 ++++ lib/sisu/v1/texpdf.rb | 797 ++++++ lib/sisu/v1/texpdf_format.rb | 1556 +++++++++++ lib/sisu/v1/update.rb | 131 + lib/sisu/v1/urls.rb | 284 ++ lib/sisu/v1/webrick.rb | 174 ++ lib/sisu/v1/wikispeak.rb | 407 +++ lib/sisu/v1/xhtml.rb | 465 ++++ lib/sisu/v1/xml.rb | 482 ++++ lib/sisu/v1/xml_dom.rb | 561 ++++ lib/sisu/v1/xml_fictionbook.rb | 313 +++ lib/sisu/v1/xml_format.rb | 357 +++ lib/sisu/v1/xml_md_oai_pmh_dc.rb | 211 ++ lib/sisu/v1/xml_scaffold.rb | 206 ++ lib/sisu/v1/xml_tables.rb | 213 ++ lib/sisu/v1/zap.rb | 81 + 216 files changed, 45805 insertions(+), 45805 deletions(-) delete mode 100644 lib/sisu/v0/author_format.rb delete mode 100644 lib/sisu/v0/cgi.rb delete mode 100644 lib/sisu/v0/cgi_pgsql.rb delete mode 100644 lib/sisu/v0/cgi_sql_common.rb delete mode 100644 lib/sisu/v0/cgi_sqlite.rb delete mode 100644 lib/sisu/v0/character_encoding.rb delete mode 100644 lib/sisu/v0/composite.rb delete mode 100644 lib/sisu/v0/concordance.rb delete mode 100644 lib/sisu/v0/conf.rb delete mode 100644 lib/sisu/v0/constants.rb delete mode 100644 lib/sisu/v0/css.rb delete mode 100644 lib/sisu/v0/dal.rb delete mode 100644 lib/sisu/v0/dal_character_check.rb delete mode 100644 lib/sisu/v0/dal_doc_str.rb delete mode 100644 lib/sisu/v0/dal_doc_str_code.rb delete mode 100644 lib/sisu/v0/dal_doc_str_tables.rb delete mode 100644 lib/sisu/v0/dal_endnotes.rb delete mode 100644 lib/sisu/v0/dal_expand_insertions.rb delete mode 100644 lib/sisu/v0/dal_hash_digest.rb delete mode 100644 lib/sisu/v0/dal_idx.rb delete mode 100644 lib/sisu/v0/dal_images.rb delete mode 100644 lib/sisu/v0/dal_metadata.rb delete mode 100644 lib/sisu/v0/dal_numbering.rb delete mode 100644 lib/sisu/v0/dal_substitutions_and_insertions.rb delete mode 100644 lib/sisu/v0/dal_syntax.rb delete mode 100644 lib/sisu/v0/db_columns.rb delete mode 100644 lib/sisu/v0/db_create.rb delete mode 100644 lib/sisu/v0/db_dbi.rb delete mode 100644 lib/sisu/v0/db_drop.rb delete mode 100644 lib/sisu/v0/db_import.rb delete mode 100644 lib/sisu/v0/db_indexes.rb delete mode 100644 lib/sisu/v0/db_load_tuple.rb delete mode 100644 lib/sisu/v0/db_remove.rb delete mode 100644 lib/sisu/v0/db_select.rb delete mode 100644 lib/sisu/v0/db_tests.rb delete mode 100644 lib/sisu/v0/dbi.rb delete mode 100644 lib/sisu/v0/defaults.rb delete mode 100644 lib/sisu/v0/digests.rb delete mode 100644 lib/sisu/v0/embedded.rb delete mode 100644 lib/sisu/v0/errors.rb delete mode 100644 lib/sisu/v0/harvest.rb delete mode 100644 lib/sisu/v0/harvest_authors.rb delete mode 100644 lib/sisu/v0/harvest_topics.rb delete mode 100644 lib/sisu/v0/help.rb delete mode 100644 lib/sisu/v0/html.rb delete mode 100644 lib/sisu/v0/html_format.rb delete mode 100644 lib/sisu/v0/html_minitoc.rb delete mode 100644 lib/sisu/v0/html_promo.rb delete mode 100644 lib/sisu/v0/html_scroll.rb delete mode 100644 lib/sisu/v0/html_segments.rb delete mode 100644 lib/sisu/v0/html_table.rb delete mode 100644 lib/sisu/v0/html_tune.rb delete mode 100644 lib/sisu/v0/hub.rb delete mode 100644 lib/sisu/v0/i18n.rb delete mode 100644 lib/sisu/v0/manifest.rb delete mode 100644 lib/sisu/v0/manpage.rb delete mode 100644 lib/sisu/v0/manpage_format.rb delete mode 100644 lib/sisu/v0/odf.rb delete mode 100644 lib/sisu/v0/odf_format.rb delete mode 100644 lib/sisu/v0/options.rb delete mode 100644 lib/sisu/v0/param.rb delete mode 100644 lib/sisu/v0/param_identify_markup.rb delete mode 100644 lib/sisu/v0/particulars.rb delete mode 100644 lib/sisu/v0/plaintext.rb delete mode 100644 lib/sisu/v0/plaintext_format.rb delete mode 100644 lib/sisu/v0/relaxng.rb delete mode 100644 lib/sisu/v0/remote.rb delete mode 100644 lib/sisu/v0/response.rb delete mode 100644 lib/sisu/v0/rexml.rb delete mode 100644 lib/sisu/v0/screen_text_color.rb delete mode 100644 lib/sisu/v0/share_src.rb delete mode 100644 lib/sisu/v0/share_src_kdissert.rb delete mode 100644 lib/sisu/v0/shared_html.rb delete mode 100644 lib/sisu/v0/shared_html_lite.rb delete mode 100644 lib/sisu/v0/shared_sem.rb delete mode 100644 lib/sisu/v0/shared_structure.rb delete mode 100644 lib/sisu/v0/shared_txt.rb delete mode 100644 lib/sisu/v0/shared_xml.rb delete mode 100644 lib/sisu/v0/sisupod_make.rb delete mode 100644 lib/sisu/v0/sitemaps.rb delete mode 100644 lib/sisu/v0/spell.rb delete mode 100644 lib/sisu/v0/sst_convert_markup.rb delete mode 100644 lib/sisu/v0/sst_do_inline_footnotes.rb delete mode 100644 lib/sisu/v0/sst_from_kdissert.rb delete mode 100644 lib/sisu/v0/sst_from_xml.rb delete mode 100644 lib/sisu/v0/sst_identify_markup.rb delete mode 100644 lib/sisu/v0/sst_to_s_xml_dom.rb delete mode 100644 lib/sisu/v0/sst_to_s_xml_node.rb delete mode 100644 lib/sisu/v0/sst_to_s_xml_sax.rb delete mode 100644 lib/sisu/v0/sysenv.rb delete mode 100644 lib/sisu/v0/termsheet.rb delete mode 100644 lib/sisu/v0/texinfo.rb delete mode 100644 lib/sisu/v0/texinfo_format.rb delete mode 100644 lib/sisu/v0/texpdf.rb delete mode 100644 lib/sisu/v0/texpdf_format.rb delete mode 100644 lib/sisu/v0/update.rb delete mode 100644 lib/sisu/v0/urls.rb delete mode 100644 lib/sisu/v0/webrick.rb delete mode 100644 lib/sisu/v0/wikispeak.rb delete mode 100644 lib/sisu/v0/xhtml.rb delete mode 100644 lib/sisu/v0/xml.rb delete mode 100644 lib/sisu/v0/xml_dom.rb delete mode 100644 lib/sisu/v0/xml_fictionbook.rb delete mode 100644 lib/sisu/v0/xml_format.rb delete mode 100644 lib/sisu/v0/xml_md_oai_pmh_dc.rb delete mode 100644 lib/sisu/v0/xml_scaffold.rb delete mode 100644 lib/sisu/v0/xml_tables.rb delete mode 100644 lib/sisu/v0/zap.rb create mode 100644 lib/sisu/v1/author_format.rb create mode 100644 lib/sisu/v1/cgi.rb create mode 100644 lib/sisu/v1/cgi_pgsql.rb create mode 100644 lib/sisu/v1/cgi_sql_common.rb create mode 100644 lib/sisu/v1/cgi_sqlite.rb create mode 100644 lib/sisu/v1/character_encoding.rb create mode 100644 lib/sisu/v1/composite.rb create mode 100644 lib/sisu/v1/concordance.rb create mode 100644 lib/sisu/v1/conf.rb create mode 100644 lib/sisu/v1/constants.rb create mode 100644 lib/sisu/v1/css.rb create mode 100644 lib/sisu/v1/dal.rb create mode 100644 lib/sisu/v1/dal_character_check.rb create mode 100644 lib/sisu/v1/dal_doc_str.rb create mode 100644 lib/sisu/v1/dal_doc_str_code.rb create mode 100644 lib/sisu/v1/dal_doc_str_tables.rb create mode 100644 lib/sisu/v1/dal_endnotes.rb create mode 100644 lib/sisu/v1/dal_expand_insertions.rb create mode 100644 lib/sisu/v1/dal_hash_digest.rb create mode 100644 lib/sisu/v1/dal_idx.rb create mode 100644 lib/sisu/v1/dal_images.rb create mode 100644 lib/sisu/v1/dal_metadata.rb create mode 100644 lib/sisu/v1/dal_numbering.rb create mode 100644 lib/sisu/v1/dal_substitutions_and_insertions.rb create mode 100644 lib/sisu/v1/dal_syntax.rb create mode 100644 lib/sisu/v1/db_columns.rb create mode 100644 lib/sisu/v1/db_create.rb create mode 100644 lib/sisu/v1/db_dbi.rb create mode 100644 lib/sisu/v1/db_drop.rb create mode 100644 lib/sisu/v1/db_import.rb create mode 100644 lib/sisu/v1/db_indexes.rb create mode 100644 lib/sisu/v1/db_load_tuple.rb create mode 100644 lib/sisu/v1/db_remove.rb create mode 100644 lib/sisu/v1/db_select.rb create mode 100644 lib/sisu/v1/db_tests.rb create mode 100644 lib/sisu/v1/dbi.rb create mode 100644 lib/sisu/v1/defaults.rb create mode 100644 lib/sisu/v1/digests.rb create mode 100644 lib/sisu/v1/embedded.rb create mode 100644 lib/sisu/v1/errors.rb create mode 100644 lib/sisu/v1/harvest.rb create mode 100644 lib/sisu/v1/harvest_authors.rb create mode 100644 lib/sisu/v1/harvest_topics.rb create mode 100644 lib/sisu/v1/help.rb create mode 100644 lib/sisu/v1/html.rb create mode 100644 lib/sisu/v1/html_format.rb create mode 100644 lib/sisu/v1/html_minitoc.rb create mode 100644 lib/sisu/v1/html_promo.rb create mode 100644 lib/sisu/v1/html_scroll.rb create mode 100644 lib/sisu/v1/html_segments.rb create mode 100644 lib/sisu/v1/html_table.rb create mode 100644 lib/sisu/v1/html_tune.rb create mode 100644 lib/sisu/v1/hub.rb create mode 100644 lib/sisu/v1/i18n.rb create mode 100644 lib/sisu/v1/manifest.rb create mode 100644 lib/sisu/v1/manpage.rb create mode 100644 lib/sisu/v1/manpage_format.rb create mode 100644 lib/sisu/v1/odf.rb create mode 100644 lib/sisu/v1/odf_format.rb create mode 100644 lib/sisu/v1/options.rb create mode 100644 lib/sisu/v1/param.rb create mode 100644 lib/sisu/v1/param_identify_markup.rb create mode 100644 lib/sisu/v1/particulars.rb create mode 100644 lib/sisu/v1/plaintext.rb create mode 100644 lib/sisu/v1/plaintext_format.rb create mode 100644 lib/sisu/v1/relaxng.rb create mode 100644 lib/sisu/v1/remote.rb create mode 100644 lib/sisu/v1/response.rb create mode 100644 lib/sisu/v1/rexml.rb create mode 100644 lib/sisu/v1/screen_text_color.rb create mode 100644 lib/sisu/v1/share_src.rb create mode 100644 lib/sisu/v1/share_src_kdissert.rb create mode 100644 lib/sisu/v1/shared_html.rb create mode 100644 lib/sisu/v1/shared_html_lite.rb create mode 100644 lib/sisu/v1/shared_sem.rb create mode 100644 lib/sisu/v1/shared_structure.rb create mode 100644 lib/sisu/v1/shared_txt.rb create mode 100644 lib/sisu/v1/shared_xml.rb create mode 100644 lib/sisu/v1/sisupod_make.rb create mode 100644 lib/sisu/v1/sitemaps.rb create mode 100644 lib/sisu/v1/spell.rb create mode 100644 lib/sisu/v1/sst_convert_markup.rb create mode 100644 lib/sisu/v1/sst_do_inline_footnotes.rb create mode 100644 lib/sisu/v1/sst_from_kdissert.rb create mode 100644 lib/sisu/v1/sst_from_xml.rb create mode 100644 lib/sisu/v1/sst_identify_markup.rb create mode 100644 lib/sisu/v1/sst_to_s_xml_dom.rb create mode 100644 lib/sisu/v1/sst_to_s_xml_node.rb create mode 100644 lib/sisu/v1/sst_to_s_xml_sax.rb create mode 100644 lib/sisu/v1/sysenv.rb create mode 100644 lib/sisu/v1/termsheet.rb create mode 100644 lib/sisu/v1/texinfo.rb create mode 100644 lib/sisu/v1/texinfo_format.rb create mode 100644 lib/sisu/v1/texpdf.rb create mode 100644 lib/sisu/v1/texpdf_format.rb create mode 100644 lib/sisu/v1/update.rb create mode 100644 lib/sisu/v1/urls.rb create mode 100644 lib/sisu/v1/webrick.rb create mode 100644 lib/sisu/v1/wikispeak.rb create mode 100644 lib/sisu/v1/xhtml.rb create mode 100644 lib/sisu/v1/xml.rb create mode 100644 lib/sisu/v1/xml_dom.rb create mode 100644 lib/sisu/v1/xml_fictionbook.rb create mode 100644 lib/sisu/v1/xml_format.rb create mode 100644 lib/sisu/v1/xml_md_oai_pmh_dc.rb create mode 100644 lib/sisu/v1/xml_scaffold.rb create mode 100644 lib/sisu/v1/xml_tables.rb create mode 100644 lib/sisu/v1/zap.rb (limited to 'lib') diff --git a/lib/sisu/v0/author_format.rb b/lib/sisu/v0/author_format.rb deleted file mode 100644 index a947df2b..00000000 --- a/lib/sisu/v0/author_format.rb +++ /dev/null @@ -1,122 +0,0 @@ -# coding: utf-8 -=begin - - * Name: SiSU - - * Description: a framework for document structuring, publishing and search - - * Author: Ralph Amissah - - * Copyright: (C) 1997 - 2009 Ralph Amissah All Rights Reserved. - - * License: GPL 3 or later: - - SiSU, a framework for document structuring, publishing and search - - Copyright (C) Ralph Amissah - - This program is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by the Free - Software Foundation, either version 3 of the License, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - more details. - - You should have received a copy of the GNU General Public License along with - this program. If not, see . - - If you have Internet connection, the latest version of the GPL should be - available at these locations: - - - - - - - - * SiSU uses: - * Standard SiSU markup syntax, - * Standard SiSU meta-markup syntax, and the - * Standard SiSU object citation numbering and system - - * Hompages: - - - - * Download: - - - * Ralph Amissah - - - - ** Description: system environment, resource control and configuration details - -=end -module FORMAT - class Author - def initialize(author_param) - @author_param=author_param - end - def author_details - @authors,@author_array=[],[] - authors=@author_param.scan(/[^;]+/) - authors.each do |a| - a.strip! - if a =~/"(.+?)"/ - @authors << { :the => $1 } - @author_array << $1.upcase - else #if a =~/,/ - x=a.scan(/[^,]+/) - x[0].strip! - x[1].strip! if x[1] - if x.length == 1 - @authors << { :the => x[0] } - @author_array << x[0].upcase - elsif x.length == 2 - @authors << { :the=> x[0], :others => x[1] } - @author_array << "#{x[0].upcase}, #{x[1]}" - else #p x.length - end - end - end - l = @authors.length - authors_string='' - @authors.each_with_index do |a,i| - authors_string += if a[:others] - if (l - i) > 1 - "#{a[:others]} #{a[:the]}, " - else - "#{a[:others]} #{a[:the]}" - end - else - if (l - i) > 2 - "#{a[:the]}, " - else - "#{a[:the]}" - end - end - #author_format += if a[:others] - # if (l - i) > 1 - # "#{a[:others]} #{a[:the]}, " - # else - # "#{a[:others]} #{a[:the]}" - # end - #else - # if (l - i) > 2 - # "#{a[:the]}, " - # else - # "#{a[:the]}" - # end - #end - end - {:last_first_a => authors, :last_first_format_a => @author_array, :authors_h => @authors, :authors_s => authors_string, :authors_param => @author_param} - #{:authors_array => authors, :authors_hash => @authors, :authors_string => authors_string, :authors_param => @author_param} - #{:authors_array => authors, :authors_hash => @authors, :authors_string => authors_string, :authors_format => author_format, :authors_param => @author_param} - end - end -end -__END__ diff --git a/lib/sisu/v0/cgi.rb b/lib/sisu/v0/cgi.rb deleted file mode 100644 index 504cd7f1..00000000 --- a/lib/sisu/v0/cgi.rb +++ /dev/null @@ -1,87 +0,0 @@ -# coding: utf-8 -=begin - - * Name: SiSU - - * Description: a framework for document structuring, publishing and search - - * Author: Ralph Amissah - - * Copyright: (C) 1997 - 2009 Ralph Amissah All Rights Reserved. - - * License: GPL 3 or later: - - SiSU, a framework for document structuring, publishing and search - - Copyright (C) Ralph Amissah - - This program is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by the Free - Software Foundation, either version 3 of the License, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - more details. - - You should have received a copy of the GNU General Public License along with - this program. If not, see . - - If you have Internet connection, the latest version of the GPL should be - available at these locations: - - - - - - - - * SiSU uses: - * Standard SiSU markup syntax, - * Standard SiSU meta-markup syntax, and the - * Standard SiSU object citation numbering and system - - * Hompages: - - - - * Download: - - - * Ralph Amissah - - - - ** Description: generates naive cgi search form for search of sisu database - (pgsql sqlite) - -=end -module SiSU_CGI #% database building documents - require "#{SiSU_lib}/sysenv" - require "#{SiSU_lib}/cgi_pgsql" - require "#{SiSU_lib}/cgi_sqlite" - include SiSU_CGI_pgsql - class SiSU_search - def initialize(opt) - @opt=opt - @webserv=@opt.files[0].to_s.strip #verify @opt.files[0].class - end - def search_info - a=%{ - For help on sisu search, type: - sisu --help search - For help on setting up hyperestraier for sisu, type: - sisu --help hyperestraier - } - tell=SiSU_Screen::Ansi.new(@opt.cmd,a) - tell.print_grey - end - def read - SiSU_CGI_sqlite::SiSU_search_sqlite.new(@opt,@webserv).sqlite - SiSU_CGI_pgsql::SiSU_search_pgsql.new(@opt,@webserv).pgsql - search_info unless @opt.cmd =~/q/ - end - end -end -__END__ diff --git a/lib/sisu/v0/cgi_pgsql.rb b/lib/sisu/v0/cgi_pgsql.rb deleted file mode 100644 index 4f201dfa..00000000 --- a/lib/sisu/v0/cgi_pgsql.rb +++ /dev/null @@ -1,232 +0,0 @@ -# coding: utf-8 -=begin - - * Name: SiSU - - * Description: a framework for document structuring, publishing and search - - * Author: Ralph Amissah - - * Copyright: (C) 1997 - 2009 Ralph Amissah All Rights Reserved. - - * License: GPL 3 or later: - - SiSU, a framework for document structuring, publishing and search - - Copyright (C) Ralph Amissah - - This program is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by the Free - Software Foundation, either version 3 of the License, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - more details. - - You should have received a copy of the GNU General Public License along with - this program. If not, see . - - If you have Internet connection, the latest version of the GPL should be - available at these locations: - - - - - - - - * SiSU uses: - * Standard SiSU markup syntax, - * Standard SiSU meta-markup syntax, and the - * Standard SiSU object citation numbering and system - - * Hompages: - - - - * Download: - - - * Ralph Amissah - - - - ** Description: generates naive cgi search form for search of sisu database (pgsql sqlite) - -=end -module SiSU_CGI_pgsql #% database building documents - require "#{SiSU_lib}/sysenv" - require "#{SiSU_lib}/cgi_sql_common" - include SiSU_CGI_sql - class SiSU_search_pgsql < SiSU_CGI_common - def initialize(opt,webserv) - @opt,@webserv=opt,webserv - @env=SiSU_Env::Info_env.new('',opt) - @sys=SiSU_Env::System_call.new - @image_src="#{@env.url.webserv_cgi}/_sisu/image_sys" - @common=SiSU_CGI_sql::SiSU_CGI_common.new(@webserv,@opt.cmd,@image_src,@env) - @db=SiSU_Env::Info_db.new - #p @db.port_psql - end - def pgsql - serve=[] - if @sys.psql - available_db_table=`psql --list` # system call requires psql - available_db=available_db_table.scan(/(SiSU_\S+)/) if not available_db_table.nil? - if available_db \ - and available_db.class == Array - available_db.flatten.each do |x| - serve << x.gsub(/SiSU_(\S+)/,'\1') - end - else put "WARNING: no postgresql database available, (have you created one?)" - end - serve.sort! - f1,f2,f3=[],[],[] - serve.each do |x| - f1 << %{ \n} unless x =~/apache|sisu\/image/ #check - end - f2 << %{ selected_db=case cgi['db']\n} - serve.each do |x| - f2 << %{ when /SiSU_#{x}/; ''\n} unless x =~/apache|sisu\/image/ #check - end - end - f2 << " end\n" - if FileTest.writable?('.') - output=File.open('sisu_pgsql.cgi','w') - output << header0 << header1 << header_desc << header2 << f1 << buttons1 << buttons1_pgsql << buttons2 << search_request << search_statement << search_statement_common << search_query1 << @common.pages << search_query2 << @common.tail << @common.main1 << f2 << dbi_connect << @common.main2 - a=%{ generated sisu_pgsql.cgi, - BASED ON ALREADY EXISTING directories that could potentially be used to populate postgresql db, (-D) - } - tell=SiSU_Screen::Ansi.new(@opt.cmd,a) - tell.print_grey - c=case @webserv - when /pwd/; '' - else "if necessary make the directory /usr/lib/cgi-bin : - sudo cp -vi #{Dir.pwd}/sisu_pgsql.cgi /usr/lib/cgi-bin/. - sudo chmod -v 755 /usr/lib/cgi-bin/sisu_pgsql.cgi - (copy sisu_pgsql.cgi to your cgi directory) and set file permissions to 755" - end - a=%{#{c} - #{@env.webserv_base_cgi}/cgi-bin/sisu_pgsql.cgi - } - tell=SiSU_Screen::Ansi.new(@opt.cmd,a) - tell.warn - a="postgresql db used for present directory: #{@db.psql.db}" - b="\n\t(to create and populate postgresql database see 'man sisu' and in particular the -D flag)\n\t[the database to be used for this directory (#{@db.psql.db}) will have to be created manually if it does not exist,\n\tsee 'sisu --help sql'\n\tif you have permission to create databases:\n\t'sisu -d --createdb'\n\tor using postgresql tools directly:\n\t'createdb #{@db.psql.db}'\n\tfor a list of existing databases try 'psql --list']" - tell=SiSU_Screen::Ansi.new(@opt.cmd,a,b) - tell.txt_cyan - else puts 'failed in attempt to write sisu_pgsql.cgi to present directory, is directory writable?' - end - end - def header0 - <<-WOK_SQL -#!/usr/bin/env ruby -=begin -#{about} - * Description: generates naive cgi search form for search of sisu database (pgsql) -#{gpl} -=end - require 'cgi' - require 'fcgi' - require 'dbi' - @version='sisu_pgsql' - @image_src="#{@env.url.webserv_cgi}/_sisu/image_sys" - @hosturl_db="#{@env.url.webserv_base_cgi}" - @hosturl_files="#{@env.url.webserv_files_from_db}" - @port="#{@db.psql.port}" - user='#{@env.user}' # check user name for access to pg database: '#{@env.user}' - WOK_SQL - end - def search_statement - <<-'WOK_SQL' - class Dbi_search_string - def initialize(l,t,q,cse=false) - @l,@t,@q,@c=l,t,q,cse - end - def string - search={ :search => [],:flag => false } - if @t =~/\S+/ or @q =~/\S+/ - if @t =~/\S+/; unescaped_search=CGI.unescape(@t) - elsif @q =~/\S+/; unescaped_search=CGI.unescape(@q) - end - search_construct=[] - if @c - unescaped_search.gsub!(/\s*(AND|OR)\s*/,"' \) \\1 #@l~\( '") - unescaped_search.gsub!(/(.+)/,"#@l~\( '\\1' \)") - else - unescaped_search.gsub!(/\s*(AND|OR)\s*/,"' \) \\1 #@l~*\( '") - unescaped_search.gsub!(/(.+)/,"#@l~*\( '\\1' \)") - end - search_construct << unescaped_search - search_construct=search_construct.join(' ') - search[:search] << search_construct - search[:flag]=true - search - end - search - end - end - WOK_SQL - end - def search_query1 - <<-'WOK_SQL' - @search_text,@search_endnotes=[],[] - #% - search[:text].each{|x| @search_text << "#{x} AND " } - @search_text=@search_text.join.gsub!(/AND\s+$/,'') #watch - @search_text.gsub!(/(documents\.clean~[*]?\(\s*'[^']+'\s*\)\s+(?:(?:AND|OR)\s+documents\.clean~[*]?\(\s*'[^']+'\s*\))+)/,'(\1)') - search[:endnotes].each{|x| @search_endnotes << "#{x} AND " } - @search_endnotes=@search_endnotes.join.gsub!(/AND\s+$/,'') #watch - @search_endnotes.gsub!(/(endnotes\.clean~\(\s*'[^']+'\s*\)\s+(?:(?:AND|OR)\s+endnotes\.clean~\(\s*'[^']+'\s*\))+)/,'(\1)') - end - WOK_SQL - end - def search_query2 - <<-'WOK_SQL' - def sql_select_body - limit ||=@@limit - offset ||=@@offset - @sql_statement[:body]=%{SELECT metadata.title, metadata.subtitle, metadata.creator, metadata.filename, metadata.suffix, documents.body, documents.seg, documents.ocn, metadata.tid FROM documents, metadata WHERE (#@search_text) AND documents.metadata_tid = metadata.tid ORDER BY metadata.title, metadata.filename, documents.ocn} - @sql_statement[:range]=%{LIMIT #{limit} OFFSET #{offset} ;} - select=@sql_statement[:body] + ' ' + @sql_statement[:range] - select - end - def sql_select_endnotes - limit ||=@@limit - offset ||=@@offset - @sql_statement[:endnotes]=%{SELECT metadata.title, metadata.subtitle, metadata.creator, metadata.filename, endnotes.body, endnotes.nr, endnotes.ocn, endnotes.metadata_tid FROM metadata, endnotes WHERE (#@search_endnotes) AND metadata.tid = endnotes.metadata_tid ORDER BY metadata.title, metadata.filename, endnotes.nr} - @sql_statement[:range]=%{LIMIT #{limit} OFFSET #{offset} ;} - select=@sql_statement[:endnotes] + ' ' + @sql_statement[:range] - select - end - def sql_select_body_format - %{#{sql_select_body}} - end - def sql_select_endnotes_format - %{#{sql_select_endnotes}} - end - def contents - @conn.select_all(sql_select_body) - end - def endnotes - @conn.select_all(sql_select_endnotes) - end - end - WOK_SQL - end - def buttons1_pgsql - <<-'WOK_SQL' - case sensitive - WOK_SQL - end - def dbi_connect - <<-'WOK_SQL' - dbi="dbi:Pg:database=#{@db};port=#{@port}" - @conn=DBI.connect(dbi,user) - WOK_SQL - end - end -end -__END__ diff --git a/lib/sisu/v0/cgi_sql_common.rb b/lib/sisu/v0/cgi_sql_common.rb deleted file mode 100644 index fea17a7a..00000000 --- a/lib/sisu/v0/cgi_sql_common.rb +++ /dev/null @@ -1,971 +0,0 @@ -# coding: utf-8 -=begin - - * Name: SiSU - - * Description: a framework for document structuring, publishing and search - - * Author: Ralph Amissah - - * Copyright: (C) 1997 - 2009 Ralph Amissah All Rights Reserved. - - * License: GPL 3 or later: - - SiSU, a framework for document structuring, publishing and search - - Copyright (C) Ralph Amissah - - This program is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by the Free - Software Foundation, either version 3 of the License, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - more details. - - You should have received a copy of the GNU General Public License along with - this program. If not, see . - - If you have Internet connection, the latest version of the GPL should be - available at these locations: - - - - - - - - * SiSU uses: - * Standard SiSU markup syntax, - * Standard SiSU meta-markup syntax, and the - * Standard SiSU object citation numbering and system - - * Hompages: - - - - * Download: - - - * Ralph Amissah - - - - ** Description: generates naive cgi search form for search of sisu database (pgsql sqlite) - -=end -module SiSU_CGI_sql - class SiSU_CGI_common - def initialize(webserv,cmd,image_src,dir) - @webserv,@cmd,@image_src,@env=webserv,cmd,image_src,dir - end - def about - <<-'WOK_SQL' - * Name: SiSU information Structuring Universe - * Author: Ralph Amissah - * http://www.jus.uio.no/sisu - * http://www.jus.uio.no/sisu/SiSU/download - WOK_SQL - end - def gpl - <<-'WOK_SQL' - * Name: SiSU generated sample cgi search form - - * Description: generated sample cgi search form for SiSU - (SiSU is a framework for document structuring, publishing and search) - - * Author: Ralph Amissah - - * Copyright: (C) 1997 - 2009 Ralph Amissah All Rights Reserved. - - * License: GPL 3 or later: - - SiSU, a framework for document structuring, publishing and search - - Copyright (C) Ralph Amissah - - This program is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by the Free - Software Foundation, either version 3 of the License, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - more details. - - You should have received a copy of the GNU General Public License along with - this program. If not, see . - - If you have Internet connection, the latest version of the GPL should be - available at these locations: - - - - - - - - * SiSU uses: - * Standard SiSU markup syntax, - * Standard SiSU meta-markup syntax, and the - * Standard SiSU object citation numbering and system - - * Hompages: - - - - * Download: - - - * Ralph Amissah - - - - ** Description: html generation, processing - WOK_SQL - end - def header1 - <<-'WOK_SQL' -#Common TOP - @@limit,@@offset=1000,0 - @base="#@hosturl_db/cgi-bin/#@version.cgi" - @@canned_search_url=@base - @color_heading='#DDFFAA' - @color_match='#ffff48' - class Form - def initialize(base,search_field,selected_db,checked_index,checked_text,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='') - search_note='' if checked_searched !~/\S/ - the_can='' if checked_url !~/\S/ - search_field='' if checked_echo !~/\S/ - @base,@search_field,@selected_db,@checked_index,@checked_text,@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=base,search_field,selected_db,checked_index,checked_text,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 - @tip=if checked_tip =~/\S/ - 'text:__; keywords:__; title:__; author:__; subject:__; description:__; publisher:__; contributor:__; date:__; type:__; format:__; identifier:__; source:__; language:__; relation:__; coverage:__; rights:__; comment:__; abstract:__; filename:__;
' - else '' - end - end - def submission_form - search_form=<<-WOK - WOK_SQL - end - def header_desc - <<-WOK_SQL - - - - - SiSU search form (sample): SiSU information Structuring Universe - - - - - - - - - - -
SiSU --> - - -
- WOK_SQL - end - def header2 - <<-'WOK_SQL' -
- - -
- - - #@tip - #@search_note - #@the_can -
- - - - - to search: select which database to search (drop-down menu below); enter your search query (in the form above); and click on the search button (below) -
- - - index - text / grep - WOK_SQL - end - def buttons2 - <<-'WOK_SQL' -
- echo query - result stats - search url - searched - available fields - sql statement -
- checks: - default - selected - all - none -
- - -
- WOK - end - end - WOK_SQL - end - def search_request - <<-'WOK_SQL' - class Search_request #% search_for - attr_accessor :text1,:keywords,:title,:author,:subject,:description,:publisher,:contributor,:date,:type,:format,:identifier,:source,:language,:relation,:coverage,:rights,:comment,:abstract,:owner,:date_created,:date_issued,:date_modified,:date_available,:date_valid,:filename - def initialize(search_field='',q='') - @search_field,@q=search_field,q - @text1=@keywords=@title=@author=@subject=@description=@publisher=@contributor=@date=@type=@format=@identifier=@source=@language=@relation=@coverage=@rights=@comment=@abstract=@owner=@date_created=@date_issued=@date_modified=@date_available=@date_valid=@filename='' - if @search_field=~/\S/ - @text1=text_to_match('text:') - @keywords=text_to_match('key(?:words?)?:') - @title=text_to_match('title:') # DublinCore 1 - title - @author=text_to_match('(?:author|creator)s?:') # DublinCore 2 - creator/author - @subject=text_to_match('subj(?:ect)?:') # DublinCore 3 - subject - @description=text_to_match('description:') # DublinCore 4 - description - @publisher=text_to_match('pub(?:lisher)?:') # DublinCore 5 - publisher - @contributor=text_to_match('contributor:') # DublinCore 6 - contributor - @date=text_to_match('date:') # DublinCore 7 - date dd-mm-yy - @type=text_to_match('type:') # DublinCore 8 - type - @format=text_to_match('format:') # DublinCore 9 - format - @identifier=text_to_match('identifier:') # DublinCore 10 - identifier - @source=text_to_match('source:') # DublinCore 11 - source - @language=text_to_match('language:') # DublinCore 12 - language - @relation=text_to_match('relation:') # DublinCore 13 - relation - @coverage=text_to_match('coverage:') # DublinCore 14 - coverage - @rights=text_to_match('rights:') # DublinCore 15 - rights - @comment=text_to_match('comment:') - @abstract=text_to_match('abs(?:tract)?:') - @owner=text_to_match('owner:') - @date_created=text_to_match('date_created:') - @date_issued=text_to_match('date_issued:') - @date_modified=text_to_match('date_modified:') - @date_available=text_to_match('date_available:') - @date_valid=text_to_match('date_valid:') - @filename=text_to_match('filename:') - @text1=text_to_match unless @keywords or @author or @title or @text1 or @comment or @abstract or @rights or @subject or @publisher or @date or @filename - else - @text1=q['s1'] if q['s1']=~/\S/ - @keywords=q['key'] if q['key']=~/\S/ - @title=q['ti'] if q['ti']=~/\S/ - @author=q['au'] if q['au']=~/\S/ - @subject=q['sj'] if q['sj']=~/\S/ - @description=q['dsc'] if q['dsc']=~/\S/ - @publisher=q['pb'] if q['pb']=~/\S/ - @contributor=q['cntr'] if q['cntr']=~/\S/ - @date=q['dt'] if q['dt']=~/\S/ - @type=q['ty'] if q['ty']=~/\S/ - @identifier=q['id'] if q['id']=~/\S/ - @source=q['src'] if q['src']=~/\S/ - @language=q['lang'] if q['lang']=~/\S/ - @relation=q['rel'] if q['rel']=~/\S/ - @coverage=q['cov'] if q['cov']=~/\S/ - @rights=q['cr'] if q['cr']=~/\S/ - @comment=q['co'] if q['co']=~/\S/ - @abstract=q['ab'] if q['ab']=~/\S/ - @date_created=q['dtc'] if q['dtc']=~/\S/ - @date_issued=q['dti'] if q['dti']=~/\S/ - @date_modified=q['dtm'] if q['dtm']=~/\S/ - @date_available=q['dta'] if q['dta']=~/\S/ - @date_valid=q['dtv'] if q['dtv']=~/\S/ - @filename=q['fns'] if q['fns']=~/\S/ - @@limit=q['ltd'] if q['ltd']=~/\d+/ # 1000 - @@offset=q['off'] if q['off']=~/\d+/ # 0 - end - end - 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]; m[:braces].match(@search_field)[1] - elsif @search_field =~m[:string]; m[:string].match(@search_field)[1] - else - str=m[:word].match(@search_field)[1] - str.gsub!(/[()]/,'') - str - end - search_string.strip! - search_string.gsub!(/\s+/,'+') - search_string - #else - # "__" - end - end - end - WOK_SQL - end - def search_statement_common - <<-'WOK_SQL' - class Dbi_search_statement - attr_reader :text_search_flag,:sql_select_body_format,:sql_select_endnotes_format,:sql_offset,:sql_limit - def initialize(conn,search_for,q,c) - @conn=conn - @text_search_flag=false - @sql_statement={ :body=>'',:endnotes=>'',:range=>'' } - #@offset||=@@offset - #@offset+=@@limit - search={ :text => [],:endnotes => [] } - cse=if c =~/\S/; true - else false - end - st=Dbi_search_string.new('documents.clean',search_for.text1,q['s1'],cse).string - se=Dbi_search_string.new('endnotes.clean',search_for.text1,q['s1'],cse).string - @text_search_flag=st[:flag] - if st[:flag] - search[:text] << st[:search] - search[:endnotes] << se[:search] - end - st=Dbi_search_string.new('metadata.keywords',search_for.keywords,q['key'],cse).string - if st[:flag] - search[:text] << st[:search] - search[:endnotes] << st[:search] - end - st=Dbi_search_string.new('metadata.title',search_for.title,q['ti'],cse).string - if st[:flag] - search[:text] << st[:search] - search[:endnotes] << st[:search] - end - st=Dbi_search_string.new('metadata.creator',search_for.author,q['au'],cse).string - if st[:flag] - search[:text] << st[:search] - search[:endnotes] << st[:search] - end - st=Dbi_search_string.new('metadata.subject',search_for.subject,q['sj'],cse).string - if st[:flag] - search[:text] << st[:search] - search[:endnotes] << st[:search] - end - st=Dbi_search_string.new('metadata.description',search_for.description,q['dsc'],cse).string - if st[:flag] - search[:text] << st[:search] - search[:endnotes] << st[:search] - end - st=Dbi_search_string.new('metadata.publisher',search_for.publisher,q['pb'],cse).string - if st[:flag] - search[:text] << st[:search] - search[:endnotes] << st[:search] - end - st=Dbi_search_string.new('metadata.contributor',search_for.contributor,q['cntr'],cse).string - if st[:flag] - search[:text] << st[:search] - search[:endnotes] << st[:search] - end - st=Dbi_search_string.new('metadata.date',search_for.date,q['dt'],cse).string - if st[:flag] - search[:text] << st[:search] - search[:endnotes] << st[:search] - end - st=Dbi_search_string.new('metadata.type',search_for.type,q['ty'],cse).string - if st[:flag] - search[:text] << st[:search] - search[:endnotes] << st[:search] - end - st=Dbi_search_string.new('metadata.identifier',search_for.identifier,q['id'],cse).string - if st[:flag] - search[:text] << st[:search] - search[:endnotes] << st[:search] - end - st=Dbi_search_string.new('metadata.source',search_for.source,q['src'],cse).string - if st[:flag] - search[:text] << st[:search] - search[:endnotes] << st[:search] - end - st=Dbi_search_string.new('metadata.language',search_for.language,q['lang'],cse).string - if st[:flag] - search[:text] << st[:search] - search[:endnotes] << st[:search] - end - st=Dbi_search_string.new('metadata.relation',search_for.relation,q['rel'],cse).string - if st[:flag] - search[:text] << st[:search] - search[:endnotes] << st[:search] - end - st=Dbi_search_string.new('metadata.coverage',search_for.coverage,q['cov'],cse).string - if st[:flag] - search[:text] << st[:search] - search[:endnotes] << st[:search] - end - st=Dbi_search_string.new('metadata.rights',search_for.rights,q['cr'],cse).string - if st[:flag] - search[:text] << st[:search] - search[:endnotes] << st[:search] - end - st=Dbi_search_string.new('metadata.comment',search_for.comment,q['co'],cse).string - if st[:flag] - search[:text] << st[:search] - search[:endnotes] << st[:search] - end - st=Dbi_search_string.new('metadata.abstract',search_for.abstract,q['ab'],cse).string - if st[:flag] - search[:text] << st[:search] - search[:endnotes] << st[:search] - end - st=Dbi_search_string.new('metadata.filename',search_for.filename,q['fns'],cse).string - if st[:flag] - search[:text] << st[:search] - search[:endnotes] << st[:search] - end - @@limit=q['ltd'] if q['ltd']=~/\d+/ # 1000 - @@offset=q['off'] if q['off']=~/\d+/ # 0 - WOK_SQL - end - def pages - <<-'WOK_SQL' - def sql_offset - @@offset - end - def sql_limit - @@limit - end - def sql_canned_search - @offset_next=sql_offset.to_i + sql_limit.to_i - @offset_previous=sql_offset.to_i - sql_limit.to_i - def current - @@canned_search_url.to_s + '<d=' + sql_limit.to_s + '&off=' + sql_offset.to_s - end - def next - @@canned_search_url.to_s + '<d=' + sql_limit.to_s + '&off=' + @offset_next.to_s - end - def previous - @offset_previous >= 0 ? (@@canned_search_url.to_s + '<d=' + sql_limit.to_s + '&off=' + @offset_previous.to_s) : '' - end - def start - @@canned_search_url.to_s + '<d=' + sql_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_limit.to_i)/sql_limit.to_i - if beyond_limit - if page.to_s =~ /^1$/ - %{

- pg. #{page.to_s} - -  >> - -
} - elsif page.to_s =~ /^2$/ - %{

- - <<  - - pg. #{page.to_s} - -  >> - -
} - else - %{

- - |<  - - - <<  - - pg. #{page.to_s} - -  >> - -
} - end - else - if page.to_s =~ /^1$/; '' - elsif page.to_s =~ /^2$/ - %{

- - <<  - - pg. #{page.to_s} -
} - else - %{

- - |<  - - - <<  - - pg. #{page.to_s} -
} - end - end - end - WOK_SQL - end - def tail - v=SiSU_Env::Info_version.instance.get_version - <<-WOK_SQL - def tail - <<-'WOK' -


- - - - - -
-

- - SiSU - -

-
- -

- Generated by - - #{v[:project]} #{v[:version]} #{v[:date]} (#{v[:date_stamp]}) -
- - #{v[:project]} © Ralph Amissah - 1993, current 2009. - All Rights Reserved. -
- - #{v[:project]} - is software for document structuring, publishing and search, -
- - www.jus.uio.no/sisu - - and - - www.sisudoc.org - -
- w3 since October 3 1993 - - ralph@amissah.com - -

-
-

- #{v[:project]} using: -
Standard SiSU markup syntax, -
Standard SiSU meta-markup syntax, and the -
Standard SiSU object citation numbering and system, (object/text positioning system) -
- © Ralph Amissah 1997, current 2009. - All Rights Reserved. -

-
-

- - GPLv3 - -

-
-

- SiSU is released under - GPL v3 - or later, - - http://www.gnu.org/licenses/gpl.html - -

-
-

- #{v[:project]}, developed using - - Ruby - - on - - Debian/Gnu/Linux - - software infrastructure, - with the usual GPL (or OSS) suspects. -
- Better - "performance, reliability, scalability, security & total cost of ownership" - [not to mention flexibility & choice] use of and adherence to open standards (where practical and fair) and it is software libré. -
- Get With the Future - - Way Better! - -

-
- - - WOK - end - WOK_SQL - end - def main1 - <<-'WOK_SQL' - @tail=tail - @counter_txt_doc,@counter_txt_ocn,@counter_endn_doc,@counter_endn_ocn=0,0,0,0 - @counters_txt,@counters_endn,@sql_select_body,@sql_select_endnotes='','','','' - FCGI.each_cgi do |cgi| - begin # all code goes in begin section - @search={ :text => [],:endnotes => [] } - q=CGI.new - @db=if cgi['db'] =~/\S+/; - @stub=/SiSU_(\S+)/.match(cgi['db'])[1] - cgi['db'] - else - @stub='sisu' - 'SiSU_sisu' - end - checked_url,checked_stats,checked_searched,checked_tip,checked_case,checked_echo,checked_sql,checked_all,checked_none,checked_selected,checked_default,selected_db='','','','','','','','','' - if cgi['view']=~/text/; checked_index,checked_text='','checked' - else checked_index,checked_text='checked','' - end - checked_echo='checked' if cgi['echo'] =~/\S/ - checked_stats='checked' if cgi['stats'] =~/\S/ - checked_url='checked' if cgi['url'] =~/\S/ or cgi['u'].to_i==1 - checked_searched='checked' if cgi['searched'] =~/\S/ - checked_tip='checked' if cgi['tip'] =~/\S/ - checked_case='checked' if cgi['casesense'] =~/\S/ - checked_sql='checked' if cgi['sql'] =~/\S/ - if cgi['checks'] =~/check_all/ or cgi['check_all'] =~/\S/ or cgi['a'].to_i==1 - checked_all='checked' - checked_echo=checked_stats=checked_url=checked_searched=checked_tip=checked_sql='checked' - checked_none='' - elsif cgi['checks'] =~/check_none/ - checked_none='checked' - checked_all=checked_url=checked_stats=checked_searched=checked_tip=checked_echo=checked_sql='' - elsif cgi['checks'] =~/check_selected/ - checked_selected='checked' - elsif cgi['checks'] =~/check_default/ - checked_default='checked' - checked_echo=checked_stats=checked_url='checked' - checked_searched=checked_tip=checked_case=checked_sql='' - else - checked_selected='checked' - checked_echo=checked_stats=checked_url='checked' - checked_searched=checked_tip=checked_case=checked_sql='' - end - WOK_SQL - end - def main2 - <<-'WOK_SQL' - search_field=cgi['find'] if cgi['find'] # =~/\S+/ - @search_for=Search_request.new(search_field,q) #.analyze #% search_for - #% searches - #Canned_search.new(@base,@search_for.text1,cgi) - if @search_for.text1=~/\S+/ or @search_for.author=~/\S+/ #and search_field =~/\S/ - s1='s1=' + CGI.escape(@search_for.text1) if @search_for.text1=~/\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/ - 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/ - 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.filename) if @search_for.filename=~/\S/ - @@canned_search_url=if checked_all =~/checked/ - "#@base?#{s1}#{key}#{ti}#{au}#{sj}#{dsc}#{pb}#{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" - else "#@base?#{s1}#{key}#{ti}#{au}#{sj}#{dsc}#{pb}#{cntr}#{dt}#{ty}#{id}#{src}#{lang}#{rel}#{cov}#{cr}#{co}#{ab}#{dtc}#{dti}#{dtm}#{dta}#{dtv}#{fns}&db=#{cgi['db']}&view=#{cgi['view']}" - end - @canned_base_url="#@base?#{s1}&db=#{cgi['db']}" - if checked_case=~/\S/ - @search[:text][1]=%{documents.clean~'#{@search_for.text1}'} #s1 - @search[:endnotes][1]=%{endnotes.clean~'#{@search_for.text1}'} #s1 - else - @search[:text][1]=%{documents.clean~*'#{@search_for.text1}'} #s1 - @search[:endnotes][1]=%{endnotes.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|au|ti|fns)=[^&]+/) - af=canned_search.join('; ') - af.gsub!(/s1=/,'text: ') - af.gsub!(/au=/,'author: ') - af.gsub!(/ti=/,'title: ') - af.gsub!(/fns=/,'filename: ') - af.gsub!(/%2B/,' ') - analyze_format=af - st=af.split(/\s*;\s*/) - search_field=st.join("\n") - end - green=%{} - canned_search_url_txt=CGI.escapeHTML(@@canned_search_url) - the_can=%{#{canned_note} #{canned_search_url_txt}
} - p_text=p_keywords=p_title=p_author=p_subject=p_description=p_publisher=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_subject=p_filename='' - p_text=%{text: #{green}#{@search_for.text1}

} if @search_for.text1 =~/\S+/ - p_keywords=%{keywords: #{green}#{@search_for.keywords}
} if @search_for.keywords =~/\S+/ - p_title=%{title: #{green}#{@search_for.title}
} if @search_for.title =~/\S+/ - p_author=%{author: #{green}#{@search_for.author}
} if @search_for.author =~/\S+/ - p_subject=%{subject: #{green}#{@search_for.subject}
} if @search_for.subject =~/\S+/ - p_description=%{description: #{green}#{@search_for.description}
} if @search_for.description =~/\S+/ - p_publisher=%{publisher: #{green}#{@search_for.publisher}
} if @search_for.publisher =~/\S+/ - p_contributor=%{contributor: #{green}#{@search_for.contributor}
} if @search_for.contributor =~/\S+/ - p_date=%{date: #{green}#{@search_for.date}
} if @search_for.date =~/\S+/ - p_type=%{type: #{green}#{@search_for.type}
} if @search_for.type =~/\S+/ - p_format=%{format: #{green}#{@search_for.format}
} if @search_for.format =~/\S+/ - p_identifier=%{identifier: #{green}#{@search_for.identifier}
} if @search_for.identifier =~/\S+/ - p_source=%{source: #{green}#{@search_for.source}
} if @search_for.source =~/\S+/ - p_language=%{language: #{green}#{@search_for.language}
} if @search_for.language =~/\S+/ - p_relation=%{relation: #{green}#{@search_for.relation}
} if @search_for.relation =~/\S+/ - p_coverage=%{coverage: #{green}#{@search_for.coverage}
} if @search_for.coverage =~/\S+/ - p_rights=%{rights: #{green}#{@search_for.rights}
} if @search_for.rights =~/\S+/ - p_comment=%{comment: #{green}#{@search_for.comment}
} if @search_for.comment =~/\S+/ - p_abstract=%{abstract: #{green}#{@search_for.abstract}
} if @search_for.abstract =~/\S+/ - p_filename=%{filename: #{green}#{@search_for.filename}
} if @search_for.filename =~/\S+/ - search_note=<<-WOK - - database: #{green}#@db; selected view: #{green}#{cgi['view']} - search string: "#{green}#{analyze_format}"
- #{p_text} #{p_keywords} #{p_title} #{p_author} #{p_subject} #{p_description} #{p_publisher} #{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} - - WOK - #eg = %{canned search e.g.:
#{url}
find: #{analyze}
database: #{database}} - #dbi_canning - @header=Form.new(@base,search_field,selected_db,checked_index,checked_text,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=if @search_for.text1 =~/\S/ - @search_for.text1 - else 'Unavailable' - end - if checked_case=~/\S/ - @search[:text]<<%{documents.clean~'#{CGI.unescape(s1)}'} - @search[:endnotes]<<%{endnotes.clean~'#{CGI.unescape(s1)}'} - else - @search[:text]<<%{documents.clean~*'#{CGI.unescape(s1)}'} - @search[:endnotes]<<%{endnotes.clean~*'#{CGI.unescape(s1)}'} - end - #dbi_request - dbi_statement=Dbi_search_statement.new(@conn,@search_for,q,checked_case) - @text_search_flag=false - @text_search_flag=dbi_statement.text_search_flag - s_contents=dbi_statement.contents - s_endnotes=dbi_statement.endnotes - @body_main,@endnotes=[],[] - @search_regx=nil - oldtid=0 - if @text_search_flag - if checked_sql =~/\S/ - sql_select_body=dbi_statement.sql_select_body_format - sql_select_endnotes=dbi_statement.sql_select_endnotes_format - else sql_select_body,sql_select_endnotes='','' - end - @body_main << '



Main Text:
' << sql_select_body - @endnotes << '



Endnotes:
' << sql_select_endnotes - else - end - #text_objects_body - s_contents.each do |c| #% text body - location=c['filename'][/(.+?)\.(?:ssm\.sst|sst)$/,1] - file_suffix=c['filename'][/.+?\.(_?sst|ssm)$/,1] - lang=if location =~ /\S+?~(\S\S\S?)$/ - l=location[/\S+?~(\S\S\S?)$/,1] - location.gsub!(/(\S+?)~\S\S\S?/,'\1') - l=".#{l}" - else '' - end - #metadata_found_body - if c['tid'].to_i != oldtid.to_i - ti=if c['subtitle'] =~/\S+/; "#{c['title']} - #{c['subtitle']}" - else c['title'] - end - can_txt_srch=if cgi['view']=~/index/; %{red bullet } - else %{red bullet } - end - title=%{toc html #{ti} by #{c['creator']} #{can_txt_srch}toc html pdf portrait pdf landscape odf manifest
} if file_suffix=~/s/ #hmm watch file_suffix - if @text_search_flag; title='

'+title - else title='
'+title - end - @counter_txt_doc+=1 - oldtid=c['tid'].to_i - else title='' - end - if @text_search_flag - if cgi['view']=~/text/ #% 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| - if g.to_s =~/(AND|OR)/ - search_regex << '|' - else search_regex << %{#{g.to_s}} - end - 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=if (@search_regx.to_s.class==String && @search_regx.to_s=~/\S\S+/) - matched=c['body'].gsub(/(<\s]+#{@search_regx}[^>]+?>|#@search_regx)/mi,%{\\1}) - else c['body'] - end - %{

ocn #{c['ocn']}:

#{matched_para}} - elsif c['suffix'] =~/1/ #doc - %{#{title}

ocn #{c['ocn']}:#{c['body']}} - end - @counter_txt_ocn+=1 - output=if c['seg'] =~/\S+/; title+text - else text - end - elsif cgi['view']=~/index/ #% idx body - if c['suffix'] !~/1/ #seg - index=%{#{c['ocn']}, } if @text_search_flag - elsif c['suffix'] =~/1/ #doc - index=%{#{c['ocn']}, } - end - if c['seg'] =~/\S+/ - if @text_search_flag - @counter_txt_ocn+=1 - output=title+index - end - else - @counter_txt_ocn+=1 - output=unless c['suffix'] =~/1/; title+index - else %{#{title}#{c['ocn'].sort}, } - end - end - end - else output=title - end - @counters_txt=if @counter_txt_doc > 0 - if checked_stats =~/\S/ - @@lt_t=if @counter_txt_ocn == dbi_statement.sql_limit.to_i - over='over' - true - else - over='' - false - end - %{


Found in the main body of #@counter_txt_doc documents, and at #{over} #@counter_txt_ocn locations within.
} - else '' - end - else '' - end - @body_main << output #+ details - end - #text_objects_endnote - oldtid = 0 - s_endnotes.each do |e| #% endnotes - location=e['filename'][/(.+?)\.(?:ssm\.sst|sst)$/,1] - file_suffix=e['filename'][/.+?\.(_?sst|ssm)$/,1] - lang=if location =~ /\S+?~(\S\S\S?)$/ - l=location[/\S+?~(\S\S\S?)$/,1] - location.gsub!(/(\S+?)~\S\S\S?/,'\1') - l=".#{l}" - else '' - end - #metadata_found_endnotes - if @text_search_flag - if e['metadata_tid'].to_i != oldtid.to_i - ti=if e['subtitle'] =~/\S+/; "#{e['title']} - #{e['subtitle']}" - else e['title'] - end - can_txt_srch=if cgi['view']=~/index/; %{red bullet } - else %{red bullet } - end - title=%{

toc html #{ti} by #{e['creator']} #{can_txt_srch}toc html pdf portrait pdf landscape odf manifest
} if file_suffix=~/s/ - @counter_endn_doc+=1 - oldtid=e['metadata_tid'].to_i - else title = '' - end - if cgi['view']=~/text/ #% txt endnotes - @counter_endn_ocn+=1 - matched_endnote=if (@search_regx.to_s.class==String && @search_regx.to_s=~/\S\S+/) - matched=e['body'].gsub(/(<\s]+#{@search_regx}[^>]+?>|#@search_regx)/mi,%{\\1}) - else e['body'] - end - output=%{#{title}
note #{e['nr']} referred to from ocn #{e['ocn']}: #{matched_endnote}} - elsif cgi['view']=~/index/ #% idx endnotes - @counter_endn_ocn+=1 - output=%{#{title}#{e['nr']}#{e['ocn']}], } - end - @counters_endn=if @counter_endn_doc > 0 - if checked_stats =~/\S/ - @@lt_e=if @counter_endn_ocn == dbi_statement.sql_limit.to_i - over='over' - true - else - over='' - false - end - %{Found in the endnotes of #@counter_endn_doc documents, and at #{over} #@counter_endn_ocn locations within.
} - else '' - end - end - @endnotes << output #+ details - else @endnotes=[] #does not take out yet - end - end - offset=dbi_statement.sql_offset.to_s - limit=dbi_statement.sql_limit.to_s - @@lt_t ||=false; @@lt_e ||=false - canned=if (@@lt_t or @@lt_e) - dbi_statement.pre_next(true,@image_src).to_s - else - dbi_statement.pre_next(false,@image_src).to_s - end - limit=dbi_statement.sql_limit.to_s - cgi.out{@header + @counters_txt + @counters_endn + @body_main.join + @endnotes.join + canned + @tail} #% print cgi_output_header+counters+body+endnotes - end - rescue Exception => e - s='
' + CGI::escapeHTML(e.backtrace.reverse.join("\n"))
-          s << CGI::escapeHTML(e.message) + '
' - cgi.out{s} - next - ensure # eg. disconnect from server - @conn.disconnect if @conn - end - end - WOK_SQL - end - end -end -__END__ diff --git a/lib/sisu/v0/cgi_sqlite.rb b/lib/sisu/v0/cgi_sqlite.rb deleted file mode 100644 index 34cb67dc..00000000 --- a/lib/sisu/v0/cgi_sqlite.rb +++ /dev/null @@ -1,218 +0,0 @@ -# coding: utf-8 -=begin - - * Name: SiSU - - * Description: a framework for document structuring, publishing and search - - * Author: Ralph Amissah - - * Copyright: (C) 1997 - 2009 Ralph Amissah All Rights Reserved. - - * License: GPL 3 or later: - - SiSU, a framework for document structuring, publishing and search - - Copyright (C) Ralph Amissah - - This program is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by the Free - Software Foundation, either version 3 of the License, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - more details. - - You should have received a copy of the GNU General Public License along with - this program. If not, see . - - If you have Internet connection, the latest version of the GPL should be - available at these locations: - - - - - - - - * SiSU uses: - * Standard SiSU markup syntax, - * Standard SiSU meta-markup syntax, and the - * Standard SiSU object citation numbering and system - - * Hompages: - - - - * Download: - - - * Ralph Amissah - - - - ** Description: generates naive cgi search form for search of sisu database (pgsql sqlite) - -=end -module SiSU_CGI_sqlite #% database building documents - require "#{SiSU_lib}/sysenv" - require "#{SiSU_lib}/cgi_sql_common" - include SiSU_CGI_sql - class SiSU_search_sqlite < SiSU_CGI_common - def initialize(opt,webserv) - @opt,@webserv=opt,webserv - @env=SiSU_Env::Info_env.new('',opt) - @image_src="#{@env.url.webserv_cgi}/_sisu/image_sys" - @common=SiSU_CGI_sql::SiSU_CGI_common.new(@webserv,@opt.cmd,@image_src,@env) - end - def sqlite - serve=[] - Dir.foreach(@env.path.webserv) do |x| - if x !~/^\./ \ - and FileTest.directory?("#{@env.path.webserv}/#{x}") - if FileTest.file?("#{@env.path.webserv}/#{x}/sisu_sqlite.db") - serve << x unless x =~/^_\S+/ - end - end - end - serve.sort! - f1,f2,f3=[],[],[] - serve.each do |x| - f1 << %{ \n} - end - f2 << %{ selected_db=case cgi['db']\n} - serve.each do |x| - f2 << %{ when /SiSU_#{x}/; ''\n} - end - f2 << " end\n" - #f3 - f3 << %{ db_name='sisu_sqlite.db'\n} - f3 << %{ db_sqlite=case cgi['db']\n} - serve.each do |x| - f3 << %{ when /SiSU_#{x}/; "#{@env.path.webserv}/#{x}/sisu_sqlite.db"\n} - end - f3 << %{ else '#{@env.path.webserv}/#{serve[0]}/sisu_sqlite.db'\n end\n} - if FileTest.writable?('.') - output=File.open('sisu_sqlite.cgi','w') - output << header0 << header1 << header_desc << header2 << f1 << buttons1 << buttons2 << search_request << search_statement << search_statement_common << search_query1 << @common.pages << search_query2 << @common.tail << @common.main1 << f2 << f3 << dbi_connect << @common.main2 - a=%{ generated sisu_sqlite.cgi, - BASED ON ALREADY CREATED sisu_sqlite.db OUTPUT, (-d) - } - tell=SiSU_Screen::Ansi.new(@opt.cmd,a) - tell.print_grey - c=case @webserv - when /pwd/; '' - else "if necessary make the directory /usr/lib/cgi-bin : - sudo cp -vi #{Dir.pwd}/sisu_sqlite.cgi /usr/lib/cgi-bin/. - sudo chmod -v 755 /usr/lib/cgi-bin/sisu_sqlite.cgi - (copy sisu_sqlite.cgi to your cgi directory) and set file permissions to 755" - end - a=%{#{c} - #{@env.webserv_base_cgi}/cgi-bin/sisu_sqlite.cgi - } - b='(to create and populate sisu sqlite database see "man sisu" and in particular the -d flag)' - tell=SiSU_Screen::Ansi.new(@opt.cmd,a,b) - tell.warn - else puts 'failed in attempt to write sisu_sqlite.cgi to present directory, is directory writable?' - end - end - def header0 - <<-WOK_SQL -#!/usr/bin/env ruby -=begin -#{about} - * Description: generates naive cgi search form for search of sisu database (sqlite) -#{gpl} -=end - require 'cgi' - require 'fcgi' - require 'dbi' - @version='sisu_sqlite' - @image_src="#{@env.url.webserv_cgi}/_sisu/image_sys" - @hosturl_db="#{@env.url.webserv_base_cgi}" - @hosturl_files="#{@env.url.webserv_files_from_db}" - WOK_SQL - end - def search_statement - <<-'WOK_SQL' - class Dbi_search_string - def initialize(l,t,q,cse=false) - @l,@t,@q=l,t,q - end - def string - search={ :search => [],:flag => false } - if @t =~/\S+/ or @q =~/\S+/ - if @t =~/\S+/; unescaped_search=CGI.unescape(@t) - elsif @q =~/\S+/; unescaped_search=CGI.unescape(@q) - end - search_construct=[] - unescaped_search.gsub!(/\s*(AND|OR)\s*/,"%' \) \\1 #@l LIKE \( '%") - unescaped_search.gsub!(/(.+)/,"#@l LIKE \( '%\\1%' \)") - search_construct << unescaped_search - search_construct=search_construct.join(' ') - search[:search] << search_construct - search[:flag]=true - search - end - search - end - end - WOK_SQL - end - def search_query1 - <<-'WOK_SQL' - @search_text,@search_endnotes=[],[] - #% - search[:text].each{|x| @search_text << "#{x} AND " } - @search_text=@search_text.join.gsub!(/AND\s+$/,'') - @search_text.gsub!(/(documents\.clean\s+LIKE\s+\(\s*'%[^']+%'\s*\)\s+(?:(?:AND|OR)\s+documents\.clean\s+LIKE\s+\(\s*'%[^']+%'\s*\))+)/,'(\1)') - search[:endnotes].each{|x| @search_endnotes << "#{x} AND " } - @search_endnotes=@search_endnotes.join.gsub!(/AND\s+$/,'') - @search_text.gsub!(/(endnotes\.clean\s+LIKE\s+\(\s*'%[^']+%'\s*\)\s+(?:(?:AND|OR)\s+endnotes\.clean\s+LIKE\s+\(\s*'%[^']+%'\s*\))+)/,'(\1)') - end - WOK_SQL - end - def search_query2 - <<-'WOK_SQL' - def sql_select_body - limit ||=@@limit - offset ||=@@offset - @sql_statement[:body]=%{SELECT metadata.title, metadata.subtitle, metadata.creator, metadata.filename, metadata.suffix, documents.body, documents.seg, documents.ocn, metadata.tid FROM documents, metadata WHERE #{@search_text} AND documents.metadata_tid = metadata.tid ORDER BY metadata.title, metadata.filename, documents.ocn} - @sql_statement[:range]=%{LIMIT #{limit} OFFSET #{offset} ;} - select=@sql_statement[:body] + ' ' + @sql_statement[:range] - select - end - def sql_select_endnotes - limit ||=@@limit - offset ||=@@offset - @sql_statement[:endnotes]= %{SELECT metadata.title, metadata.subtitle, metadata.creator, metadata.filename, endnotes.body, endnotes.nr, endnotes.ocn, endnotes.metadata_tid FROM metadata, endnotes WHERE #{@search_endnotes} AND metadata.tid = endnotes.metadata_tid ORDER BY metadata.title, metadata.filename, endnotes.nr} - @sql_statement[:range]=%{LIMIT #{limit} OFFSET #{offset} ;} - select=@sql_statement[:endnotes] + ' ' + @sql_statement[:range] - select - end - def sql_select_body_format - %{#{sql_select_body}} - end - def sql_select_endnotes_format - %{#{sql_select_endnotes}} - end - def contents - @conn.select_all(sql_select_body) - end - def endnotes - @conn.select_all(sql_select_endnotes) - end - end - WOK_SQL - end - def dbi_connect - <<-'WOK_SQL' - @dbi="DBI:SQLite3:#{db_sqlite}" #sqlite3 ? - @conn=DBI.connect(@dbi) - WOK_SQL - end - end -end -__END__ diff --git a/lib/sisu/v0/character_encoding.rb b/lib/sisu/v0/character_encoding.rb deleted file mode 100644 index 2bac8edc..00000000 --- a/lib/sisu/v0/character_encoding.rb +++ /dev/null @@ -1,382 +0,0 @@ -# coding: utf-8 -=begin - - * Name: SiSU - - * Description: a framework for document structuring, publishing and search - - * Author: Ralph Amissah - - * Copyright: (C) 1997 - 2009 Ralph Amissah All Rights Reserved. - - * License: GPL 3 or later: - - SiSU, a framework for document structuring, publishing and search - - Copyright (C) Ralph Amissah - - This program is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by the Free - Software Foundation, either version 3 of the License, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - more details. - - You should have received a copy of the GNU General Public License along with - this program. If not, see . - - If you have Internet connection, the latest version of the GPL should be - available at these locations: - - - - - - - - * SiSU uses: - * Standard SiSU markup syntax, - * Standard SiSU meta-markup syntax, and the - * Standard SiSU object citation numbering and system - - * Hompages: - - - - * Download: - - - * Ralph Amissah - - - - ** Description: modules related to locales, character encoding for different - output generators [requires kirbybase] - -=end -module SiSU_character_encode - require 'kirbybase' - require "#{SiSU_lib}/sysenv" - class Characters - attr_accessor(:character_encoding,:glyph,:dec,:hex,:rb,:html,:html_name,:tex,:tex_licr,:tex_alt,:name) - def initialize(&block) - instance_eval(&block) - end - end - class Create ', 62, '76', '\76', '>', '>', '', '', '', 'Greater than >' ], - ['?', 63, '77', '\77', '?', nil, '?', '?', '?', 'Punctuation Question mark ?' ], - ['@', 64, '100', '\100', '@', nil, '', '', '', 'Commercial at sign @' ], - ['A', 65, '101', '\101', 'A', nil, 'A', 'A', 'A', 'Captial A' ], - ['B', 66, '102', '\102', 'B', nil, 'B', 'B', 'B', 'Captial B' ], - ['C', 67, '103', '\103', 'C', nil, 'C', 'C', 'C', 'Captial C' ], - ['D', 68, '104', '\104', 'D', nil, 'D', 'D', 'D', 'Captial D' ], - ['E', 69, '105', '\105', 'E', nil, 'E', 'E', 'E', 'Captial E' ], - ['F', 70, '106', '\106', 'F', nil, 'F', 'F', 'F', 'Captial F' ], - ['G', 71, '107', '\107', 'G', nil, 'G', 'G', 'G', 'Captial G' ], - ['H', 72, '110', '\110', 'H', nil, 'H', 'H', 'H', 'Captial H' ], - ['I', 73, '111', '\111', 'I', nil, 'I', 'I', 'I', 'Captial I' ], - ['J', 74, '112', '\112', 'J', nil, 'J', 'J', 'J', 'Captial J' ], - ['K', 75, '113', '\113', 'K', nil, 'K', 'K', 'K', 'Captial K' ], - ['L', 76, '114', '\114', 'L', nil, 'L', 'L', 'L', 'Captial L' ], - ['M', 77, '115', '\115', 'M', nil, 'M', 'M', 'M', 'Captial M' ], - ['N', 78, '116', '\116', 'N', nil, 'N', 'N', 'N', 'Captial N' ], - ['O', 79, '117', '\117', 'O', nil, 'O', 'O', 'O', 'Captial O' ], - ['P', 80, '120', '\120', 'P', nil, 'P', 'P', 'P', 'Captial P' ], - ['Q', 81, '121', '\121', 'Q', nil, 'Q', 'Q', 'Q', 'Captial Q' ], - ['R', 82, '122', '\122', 'R', nil, 'R', 'R', 'R', 'Captial R' ], - ['S', 83, '123', '\123', 'S', nil, 'S', 'S', 'S', 'Captial S' ], - ['T', 84, '124', '\124', 'T', nil, 'T', 'T', 'T', 'Captial T' ], - ['U', 85, '125', '\125', 'U', nil, 'U', 'U', 'U', 'Captial U' ], - ['V', 86, '126', '\126', 'V', nil, 'V', 'V', 'V', 'Captial V' ], - ['W', 87, '127', '\127', 'W', nil, 'W', 'W', 'W', 'Captial W' ], - ['X', 88, '130', '\130', 'X', nil, 'X', 'X', 'X', 'Captial X' ], - ['Y', 89, '131', '\131', 'Y', nil, 'Y', 'Y', 'Y', 'Captial Y' ], - ['Z', 90, '132', '\132', 'Z', nil, 'Z', 'Z', 'Z', 'Captial Z' ], - ['[', 91, '133', '\133', '[', nil, '', '', '', 'Left square bracket [' ], - ['\\', 92, '134', '\134', '\', nil, '', '\textbackslash', '', 'Backslash \\'], - [']', 93, '135', '\135', ']', nil, '', '', '', 'Right square bracket ]' ], - ['^', 94, '136', '\136', '^', nil, '', '', '', 'Caret ^' ], - ['_', 95, '137', '\137', '_', nil, '{\_}', '\textunderscore', '', 'Underscore _' ], - ['`', 96, '140', '\140', '`', nil, '', '', '', 'Grave accent `' ], - ['a', 97, '141', '\141', 'a', nil, 'a', 'a', 'a', 'Small a' ], - ['b', 98, '142', '\142', 'b', nil, 'b', 'b', 'b', 'Small b' ], - ['c', 99, '143', '\143', 'c', nil, 'c', 'c', 'c', 'Small c' ], - ['d', 100, '144', '\144', 'd', nil, 'd', 'd', 'd', 'Small d' ], - ['e', 101, '145', '\145', 'e', nil, 'e', 'e', 'e', 'Small e' ], - ['f', 102, '146', '\146', 'f', nil, 'f', 'f', 'f', 'Small f' ], - ['g', 103, '147', '\147', 'g', nil, 'g', 'g', 'g', 'Small g' ], - ['h', 104, '150', '\150', 'h', nil, 'h', 'h', 'h', 'Small h' ], - ['i', 105, '151', '\151', 'i', nil, 'i', 'i', 'i', 'Small i' ], - ['j', 106, '152', '\152', 'j', nil, 'j', 'j', 'j', 'Small j' ], - ['k', 107, '153', '\153', 'k', nil, 'k', 'k', 'k', 'Small k' ], - ['l', 108, '154', '\154', 'l', nil, 'l', 'l', 'l', 'Small l' ], - ['m', 109, '155', '\155', 'm', nil, 'm', 'm', 'm', 'Small m' ], - ['n', 110, '156', '\156', 'n', nil, 'n', 'n', 'n', 'Small n' ], - ['o', 111, '157', '\157', 'o', nil, 'o', 'o', 'o', 'Small o' ], - ['p', 112, '160', '\160', 'p', nil, 'p', 'p', 'p', 'Small p' ], - ['q', 113, '161', '\161', 'q', nil, 'q', 'q', 'q', 'Small q' ], - ['r', 114, '162', '\162', 'r', nil, 'r', 'r', 'r', 'Small r' ], - ['s', 115, '163', '\163', 's', nil, 's', 's', 's', 'Small s' ], - ['t', 116, '164', '\164', 't', nil, 't', 't', 't', 'Small t' ], - ['u', 117, '165', '\165', 'u', nil, 'u', 'u', 'u', 'Small u' ], - ['v', 118, '166', '\166', 'v', nil, 'v', 'v', 'v', 'Small v' ], - ['w', 119, '167', '\167', 'w', nil, 'w', 'w', 'w', 'Small w' ], - ['x', 120, '170', '\170', 'x', nil, 'x', 'x', 'x', 'Small x' ], - ['y', 121, '171', '\171', 'y', nil, 'y', 'y', 'y', 'Small y' ], - ['z', 122, '172', '\172', 'z', nil, 'z', 'z', 'z', 'Small z' ], - ['{', 123, '173', '\173', '{', nil, '{\{}', '\{', '', 'Left curly brace {' ], - ['|', 124, '174', '\174', '|', nil, '', '', '', 'Vertical bar / pipe |' ], - ['}', 125, '175', '\175', '}', nil, '{\}}', '\}', '', 'Right curly brace }' ], - ['~', 126, '176', '\176', '~', nil, '', '', '', 'Tilde ~' ], - ['', 127, '177', '', '', nil, '', '', '', ' ' ], - ['', 128, '200', '', '€', nil, '', '', '', ' ' ], - ['', 129, '201', '', '', nil, '', '', '', ' ' ], - ['\'', 130, '202', '', '‚', nil, '', '', '', 'Low left single quote \''], - [' ', 131, '203', '', 'ƒ', nil, '', '', '', 'Florin ' ], - ['"', 132, '204', '', '„', nil, '', '', '', 'Low left double quote "' ], - ['…', 133, '205', '\342\200\246', '…', nil, '…', '\textellipsis', '', 'Ellipsis …' ], - ['†', 134, '206', '\342\200\240', '†', nil, '†', '\textdagger', '', 'Dagger †' ], - ['‡', 135, '207', '\342\200\241', '‡', nil, '‡', '\textdaggerbl', '', 'Double dagger ‡' ], - ['^', 136, '210', '', 'ˆ', nil, '', '', '', 'Circumflex ^' ], - ['', 137, '211', '', '‰', nil, '', '', '', 'Permil ' ], - ['', 138, '212', '', 'Š', nil, '', '', '', 'Capital S, caron ' ], - ['<', 139, '213', '', '‹', nil, '', '', '', 'Less than sign (see &060;) <' ], - ['', 140, '214', '', 'Œ', nil, '', '', '', 'Capital OE ligature ' ], - ['', 141, '215', '', '', nil, '', '', '', ' ' ], - ['', 142, '216', '', 'Ž', nil, '', '', '', 'Capital Z, caron ' ], - ['', 143, '217', '', '', nil, '', '', '', ' ' ], - ['', 144, '220', '', '', nil, '', '', '', ' ' ], - ['', 145, '221', '', '‘', nil, '', '', '', 'Left single quote ' ], - ['', 146, '222', '', '’', nil, '', '', '', 'Right single quote ' ], - ['', 147, '223', '', '“', nil, '', '', '', 'Left double quote ' ], - ['', 148, '224', '', '”', nil, '', '', '', 'Right double quote ' ], - ['', 149, '225', '', '•', nil, '', '', '', 'Bullet ' ], - ['-', 150, '226', '', '–', nil, '', '', '', 'En dash -' ], - ['', 151, '227', '', '—', nil, '', '', '', 'Em dash -' ], - ['~', 152, '230', '', '˜', nil, '', '', '', 'Tilde (see &126;) ~' ], - ['t', 153, '231', '', '™', nil, '', '', '', 'Trademark t' ], - ['', 154, '232', '', 'š', nil, '', '', '', 'small s, caron ' ], - ['', 155, '233', '', '›', nil, '', '', '', 'Greater than sign (see &062;) ' ], - ['', 156, '234', '', 'œ', nil, '', '', '', 'Small oe ligature ' ], - ['', 157, '235', '', '', nil, '', '', '', ' ' ], - ['', 158, '236', '', 'ž', nil, '', '', '', 'Small z, caron ' ], - ['', 159, '237', '', 'Ÿ', nil, '', '', '', 'Capital Y, umlaut ' ], - ['', 160, '240', '', ' ', ' ', '', '', '', 'Non-breaking space ' ], - ['¡', 161, '241', '\302\241', '¡', '¡', '¡', '', '', 'Inverted exclamation ' ], - ['¢', 162, '242', '\302\242', '¢', '¢', '¢', '', '', 'Cent sign ¢' ], - ['£', 163, '243', '\302\243', '£', '£', '£', '\textsterling', '', 'Pound sign £' ], - ['¤', 164, '244', '\302\244', '¤', '¤', '¤', '\textcurrency', '', 'General currency sign ' ], - ['¥', 165, '245', '\302\245', '¥', '¥', '¥', '', '', 'Yen sign ¥' ], - ['¦', 166, '246', '\302\246', '¦', '¦', '¦', '', '', 'Broken vertical bar ' ], - ['§', 167, '247', '\302\247', '§', '§', '§', '\textsection', '', 'Section sign §' ], - ['¨', 168, '250', '\302\250', '¨', '¨', '¨', '\"', '', 'Umlaut ' ], - ['©', 169, '251', '\302\251', '©', '©', '©', '\copyright', '\textcopyright', 'Copyright ©' ], - ['ª', 170, '252', '\302\252', 'ª', 'ª', 'ª', '', '', 'Feminine ordinal ª' ], - ['«', 171, '253', '\302\253', '«', '«', '«', '', '', 'Left angle quote «' ], - ['¬', 172, '254', '\302\254', '¬', '¬', '¬', '', '', 'Not sign ' ], - ['­', 173, '255', '\302\255', '­', '­', '­', '', '', 'Soft hyphen ' ], - ['®', 174, '256', '\302\256', '®', '®', '®', '', '', 'Registered trademark ®' ], - ['¯', 175, '257', '\302\257', '¯', '¯', '¯', '', '', 'Macron accent ' ], - ['°', 176, '260', '\302\260', '°', '°', '°', '', '', 'Degree sign °' ], - ['±', 177, '261', '\302\261', '±', '&plusmin;', '±', '', '', 'Plus or minus ±' ], - ['²', 178, '262', '\302\262', '²', '²', '²', '', '', 'Superscript 2 ²' ], - ['³', 179, '263', '\302\263', '³', '³', '³', '', '', 'Superscript 3 ³' ], - ['', 180, '264', '\302\264', '´', '´', ''', '', '', 'Acute accent ' ], - ['µ', 181, '265', '\302\265', 'µ', 'µ', 'µ', '', '', 'Micro sign (Greek mu) µ' ], - ['¶', 182, '266', '\302\266', '¶', '¶', '¶', '\textparagraph', '', 'Paragraph sign ¶' ], - ['·', 183, '267', '\302\267', '·', '·', %q{·}, '', %q{}, 'Middle dot ' ], - ['¸', 184, '270', '\302\270', '¸', '¸', '¸', '', '', 'Cedilla ' ], - ['¹', 185, '271', '\302\271', '¹', '¹', '¹', '', '', 'Superscript 1 ¹' ], - ['º', 186, '272', '\302\272', 'º', 'º', 'º', '', '', 'Masculine ordinal º' ], - ['»', 187, '273', '\302\273', '»', '»', '»', '', '', 'Right angle quote ' ], - ['¼', 188, '274', '\302\274', '¼', '¼', '¼', '', '', 'Fraction one quarter ¼' ], - ['½', 189, '275', '\302\275', '½', '½', '½', '', '', 'Fraction on half ½' ], - ['¾', 190, '276', '\302\276', '¾', '¾', '¾', '', '', 'Fraction three quarters ¾' ], - ['¿', 191, '277', '\302\277', '¿', '¿', '¿', '', '', 'Inverted question mark ¿' ], - ['À', 192, '300', '\303\200', 'À', 'À', 'À', '\`{A}', '', 'Capital A, grave accent À' ], - ['Á', 193, '301', '\303\201', 'Á', 'Á', 'Á', %q{\'{A}}, '', 'Capital A, acute accent Á' ], - ['Â', 194, '302', '\303\202', 'Â', 'Â', 'Â', '^{A}', '', 'Capital A, circumflex accent Â' ], - ['Ã', 195, '303', '\303\203', 'Ã', 'Ã', 'Ã', '~{A}', '', 'Capital A, tilde Ã' ], - ['Ä', 196, '304', '\303\204', 'Ä', 'Ä', 'Ä', '"{A}', '', 'Capital A, umlaut Ä' ], - ['Å', 197, '305', '\303\205', 'Å', 'Å', 'Å', 'r{A}', '', 'Capital A, ring Å' ], - ['Æ', 198, '306', '\303\206', 'Æ', 'Æ', 'Æ', 'AE', '', 'Capital AE ligature Æ' ], - ['Ç', 199, '307', '\303\207', 'Ç', 'Ç', 'Ç', '', '', 'Capital C, cedilla Ç' ], - ['È', 200, '310', '\303\210', 'È', 'È', 'È', '`{E}', '', 'Capital E, grave accent È' ], - ['É', 201, '311', '\303\211', 'É', 'É', 'É', ''{E}', '', 'Capital E, acute accent É' ], - ['Ê', 202, '312', '\303\212', 'Ê', 'Ê', 'Ê', '^{E}', '', 'Capital E, circumflex accent Ê' ], - ['Ë', 203, '313', '\303\213', 'Ë', 'Ë', 'Ë', '"{E}', '', 'Capital E, umlaut Ë' ], - ['Ì', 204, '314', '\303\214', 'Ì', 'Ì', 'Ì', '`{I}', '', 'Capital I, grave accent Ì' ], - ['Í', 205, '315', '\303\215', 'Í', 'Í', 'Í', ''{I}', '', 'Capital I, acute accent Í' ], - ['Î', 206, '316', '\303\216', 'Î', 'Î', 'Î', '^{I}', '', 'Capital I, circumflex accent Î' ], - ['Ï', 207, '317', '\303\217', 'Ï', 'Ï', 'Ï', '"{I}', '', 'Capital I, umlaut Ï' ], - ['Ð', 208, '320', '\303\220', 'Ð', 'Ð', 'Ð', '', '', 'Capital eth, Icelandic ' ], - ['Ñ', 209, '321', '\303\221', 'Ñ', 'Ñ', 'Ñ', '', '', 'Capital N, tilde Ñ' ], - ['Ò', 210, '322', '\303\222', 'Ò', 'Ò', 'Ò', '`{O}', '', 'Capital O, grave accent Ò' ], - ['Ó', 211, '323', '\303\223', 'Ó', 'Ó', 'Ó', ''{O}', '', 'Capital O, acute accent Ó' ], - ['Ô', 212, '324', '\303\224', 'Ô', 'Ô', 'Ô', '^{O}', '', 'Capital O, circumflex accent Ô' ], - ['Õ', 213, '325', '\303\225', 'Õ', 'Õ', 'Õ', '~{O}', '', 'Capital O, tilde Õ' ], - ['Ö', 214, '326', '\303\226', 'Ö', 'Ö', 'Ö', '"{O}', '', 'Capital O, umlaut Ö' ], - ['×', 215, '327', '\303\227', '×', '×', '×', '', '', 'Multiply sign ×' ], - ['Ø', 216, '330', '\303\230', 'Ø', 'Ø', 'Ø', 'O', '', 'Capital O, slash Ø' ], - ['Ù', 217, '331', '\303\231', 'Ù', 'Ù', 'Ù', '', '', 'Capital U, grave accent Ù' ], - ['Ú', 218, '332', '\303\232', 'Ú', 'Ú', 'Ú', '', '', 'Capital U, acute accent Ú' ], - ['Û', 219, '333', '\303\233', 'Û', 'Û', 'Û', '', '', 'Capital U, circumflex accent Û' ], - ['Ü', 220, '334', '\303\234', 'Ü', 'Ü', 'Ü', '', '', 'Capital U, umlaut Ü' ], - ['Ý', 221, '335', '\303\235', 'Ý', 'Ý', 'Ý', '', '', 'Capital Y, acute accent Ý' ], - ['Þ', 222, '336', '\303\236', 'Þ', 'Þ', 'Þ', '', '', 'Capital thorn, Icelandic Þ' ], - ['ß', 223, '337', '\303\237', 'ß', 'ß', 'ß', '', '', 'Small sz ligature, German ß' ], - ['à', 224, '340', '\303\240', 'à', 'à', 'à', '\`{a}', '', 'Small a, grave accent à' ], - ['á', 225, '341', '\303\241', 'á', 'á', 'á', %q{\'{a}}, '', 'Small a, acute accent á' ], - ['â', 226, '342', '\303\242', 'â', 'â', 'â', '\^{a}', '', 'Small a, circumflex accent â' ], - ['ã', 227, '343', '\303\243', 'ã', 'ã', 'ã', '\~{a}', '', 'Small a, tilde ã' ], - ['ä', 228, '344', '\303\244', 'ä', 'ä', 'ä', '\"{a}', '', 'Small a, umlaut ä' ], - ['å', 229, '345', '\303\245', 'å', 'å', 'å', '\r{a}', '', 'Small a, ring å' ], - ['æ', 230, '346', '\303\246', 'æ', 'æ', 'æ', '\ae', '', 'Small ae ligature æ' ], - ['ç', 231, '347', '\303\257', 'ç', 'ç', 'ç', '', '', 'Small c, cedilla ç' ], - ['è', 232, '350', '\303\250', 'è', 'è', 'è', '\`{e}', '', 'Small e, grave accent è' ], - ['é', 233, '351', '\303\251', 'é', 'é', 'é', %q{\'{e}}, '', 'Small e, acute accent é' ], - ['ê', 234, '352', '\303\252', 'ê', 'ê', 'ê', '\^{e}', '', 'Small e, circumflex accent ê' ], - ['ë', 235, '353', '\303\253', 'ë', 'ë', 'ë', '\"{e}', '', 'Small e, umlaut ë' ], - ['ì', 236, '354', '\303\254', 'ì', 'ì', 'ì', '\`{i}', '', 'Small i, grave accent ì' ], - ['í', 237, '355', '\303\255', 'í', 'í', 'í', '\'{i}', '', 'Small i, acute accent í' ], - ['î', 238, '356', '\303\256', 'î', 'î', 'î', '\^{i}', '', 'Small i, circumflex accent î' ], - ['ï', 239, '357', '\303\257', 'ï', 'ï', 'ï', '\"{i}', '', 'Small i, umlaut ï' ], - ['ð', 240, '360', '\303\260', 'ð', 'ð', 'ð', '', '', 'Small eth, Icelandic ð' ], - ['ñ', 241, '361', '\303\261', 'ñ', 'ñ', 'ñ', '', '', 'Small n, tilde ñ' ], - ['ò', 242, '362', '\303\262', 'ò', 'ò', 'ò', '\`{o}', '', 'Small o, grave accent ò' ], - ['ó', 243, '363', '\303\263', 'ó', 'ó', 'ó', %q{\'{o}}, '', 'Small o, acute accent ó' ], - ['ô', 244, '364', '\303\264', 'ô', 'ô', 'ô', '\^{o}', '', 'Small o, circumflex accent ô' ], - ['õ', 245, '365', '\303\265', 'õ', 'õ', 'õ', '\^{o}', '', 'Small o, tilde õ' ], - ['ö', 246, '366', '\303\266', 'ö', 'ö', 'ö', '\"{o}', '', 'Small o, umlaut ö' ], - ['÷', 247, '367', '\303\267', '÷', '÷', '÷', '', '', 'Divide sign ÷' ], - ['ø', 248, '370', '\303\270', 'ø', 'ø', 'ø', '', '', 'Small o, slash ø' ], - ['ù', 249, '371', '\303\271', 'ù', 'ù', 'ù', '\`{u}', '', 'Small u, grave accent ù' ], - ['ú', 250, '372', '\303\272', 'ú', 'ú', 'ú', %q{\'{u}}, '', 'Small u, acute accent ú' ], - ['û', 251, '373', '\303\273', 'û', 'û', 'û', '\^{u}', '', 'Small u, circumflex accent û' ], - ['ü', 252, '374', '\303\274', 'ü', 'ü', 'ü', '\"{u}', '', 'Small u, umlaut ü' ], - ['ý', 253, '375', '\303\275', 'ý', 'ý', 'ý', '', '', 'Small y, acute accent ý' ], - ['þ', 254, '376', '\303\276', 'þ', 'þ', 'þ', '', '', 'Small thorn, Icelandic þ' ], - ['ÿ', 255, '377', '\303\277', 'ÿ', 'ÿ', 'ÿ', '', '', 'Smally y, umlaut ÿ' ], - ['∝', , '', '', '∝', '∝', '∝', '', '', 'proportional to U+221D (8733) ∝' ], - ['∞', , '', '', '∞', '∞', '∞', '', '', 'infinity U+221E (8734) ∞' ], -] - end - end -end -__END__ diff --git a/lib/sisu/v0/composite.rb b/lib/sisu/v0/composite.rb deleted file mode 100644 index 9dc35eec..00000000 --- a/lib/sisu/v0/composite.rb +++ /dev/null @@ -1,240 +0,0 @@ -# coding: utf-8 -=begin - - * Name: SiSU - - * Description: a framework for document structuring, publishing and search - - * Author: Ralph Amissah - - * Copyright: (C) 1997 - 2009 Ralph Amissah All Rights Reserved. - - * License: GPL 3 or later: - - SiSU, a framework for document structuring, publishing and search - - Copyright (C) Ralph Amissah - - This program is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by the Free - Software Foundation, either version 3 of the License, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - more details. - - You should have received a copy of the GNU General Public License along with - this program. If not, see . - - If you have Internet connection, the latest version of the GPL should be - available at these locations: - - - - - - - - * SiSU uses: - * Standard SiSU markup syntax, - * Standard SiSU meta-markup syntax, and the - * Standard SiSU object citation numbering and system - - * Hompages: - - - - * Download: - - - * Ralph Amissah - - - - ** Description: composite documents, assemble/build documents from other - documents or parts of marked up text - -=end -module SiSU_Assemble - require 'fileutils' - require "#{SiSU_lib}/sysenv" - class Remote_image - include FileUtils - def initialize - @env=SiSU_Env::Info_env.new - end - def image(dir) - images=[] - images[0]=dir - images - end - def download_images(download_from,images_array) - path="#{@env.path.processing}/external_document/image" - mkdir_p(path) unless FileTest.directory?(path) - images_array.each do |i| - image="#{path}/#{i}" - imagefile=File.new(image,'w+') - open("#{download_from}/#{i}") do |g| - imagefile << g.read - end - imagefile.close - end - output_path="#{@env.path.webserv}/#{@env.path.stub_pwd}/_sisu/image_external" - mkdir_p(output_path) unless FileTest.directory?(output_path) - SiSU_Env::System_call.new("#{path}/*",output_path,'q').rsync - end - def download_doc_skin(doc_skin) #first element in array is source url - path="#{@env.path.processing}/external_document/skin/doc" - mkdir_p(path) unless FileTest.directory?(path) - download_from=doc_skin.shift - doc_skin.each do |i| - skin="#{path}/#{i}.rb" - unless FileTest.exists?(skin) - skinfile=File.new(skin,'w+') - open("#{download_from}/#{i}.rb") do |g| - skinfile << g.read - end - skinfile.close - end - end - end - end - class Composite - @@imager={} - def initialize(opt) - @opt=opt - @env=SiSU_Env::Info_env.new - end - def read - begin - @fns_array=IO.readlines(@opt.fns,'') - assembled=insertions? - write(assembled) - rescue; SiSU_Errors::Info_error.new($!,$@,@opt.cmd,@opt.fns).error - ensure - end - end - def write(assembled) - assembled_file=File.new("#{@env.path.composite_file}/#{@opt.fnb}.ssm.sst",'w+') - assembled.each{|a| assembled_file << a } - assembled_file.close - end - def download_images(download_from,images_array) - path="#{@env.path.processing}/external_document/image" - mkdir_p(path) unless FileTest.directory?(path) - images_array.each do |i| - image="#{path}/#{i}" - unless FileTest.exists?(image) - imagefile=File.new(image,'w+') - open("#{download_from}/#{i}") do |g| - imagefile << g.read - end - imagefile.close - end - end - end - def download_doc_skin(doc_skin) #first element in array is source url - path="#{@env.path.processing}/external_document/skin/doc" - mkdir_p(path) unless FileTest.directory?(path) - download_from=doc_skin.shift - doc_skin.each do |i| - skin="#{path}/#{i}.rb" - unless FileTest.exists?(skin) - skinfile=File.new(skin,'w+') - open("#{download_from}/#{i}.rb") do |g| - skinfile << g.read - end - skinfile.close - end - end - end - def insertion(fni,insert_array) - file={ :prepared=>[],:images=>[] } - rgx_image=/(?:^|[^_\\])\{\s*(\S+?\.(?:png|jpg|gif))/ - #rgx_image=/([a-zA-Z0-9._-]+?\.(?:png|jpg|gif))/ - file[:prepared] << "\n% |#{fni}|@|^|>>ok\n" - @code_flag=false - insert_array.each do |i| - @code_flag=if i =~/^code\{/; true - elsif i =~/^\}code/; false - else @code_flag - end - if not @code_flag \ - and i !~/^%+\s/ - i.gsub!(/^([123]|:?[ABC])~\? /,'% [conditional heading:] \1~ ') #off conditional heading (consider syntax) - if i =~/^0~|^@\S+?:/ - i.gsub!(/\n/m,"\n% ") - i.gsub!(/\n%\s+$/m,'') - i.gsub!(/^0~|^@\S+?:/m,"\n% [imported header:] ") #off imported headers - end - end - file[:prepared] << i - if i !~/^%+\s/ \ - and i =~rgx_image - file[:images] << i.scan(rgx_image).uniq - end - end - file[:prepared] << "\n% end import" << "\n\n" - if file[:images].length > 0 - file[:images].flatten! - file[:images].uniq! - file[:images].delete_if {|x| x =~/http:\/\// } - end - file - end - def insertions? - data=@fns_array - tuned_file,imagedir=[],[] - tell=SiSU_Screen::Ansi.new(@opt.cmd,'Composite Document',@opt.fns) - tell.grey_title_hi unless @opt.cmd =~/q/ - para=data.each do |para| - if para =~/^<<\s+(\S+?\.ss[it])$/ \ - or para =~/^<<\{(\S+?\.ss[it])\}$/ \ - or para =~/^(?:<<\s*)\|(\S+?)\|@\|.+?\|(?:req(?:quire)?\b|\s*\})?/ \ - or para =~/^r\{(.+?)\}/ #depreciated - loadfile=$1.strip - tell=SiSU_Screen::Ansi.new(@opt.cmd,'loading:',loadfile) - tell.txt_grey if @opt.cmd =~/[MVv]/ - tuned_file << if loadfile =~ /(?:https?|file):\/\/\S+?\.ss[ti]$/ # and NetTest - imagedir = /((?:https?|file):\/\/\S+?)\/[^\/]+?\.ss[ti]$/.match(loadfile).captures.join + '/_sisu/image' #watch - require 'uri' - image_uri=URI.parse(imagedir) - require 'open-uri' - require 'pp' - insert=open(loadfile) - insert_array=insert.dup - insert.close - file=insertion(loadfile,insert_array) - @@imager[image_uri] ||=[] - @@imager[image_uri] << file[:images] - file[:prepared] - elsif loadfile =~ /\.ss[ti]$/ \ - and FileTest.file?(loadfile) - insert_array=IO.readlines(loadfile,'') - file=insertion(loadfile,insert_array) - file[:prepared] - else - cX=SiSU_Screen::Ansi.new(@opt.cmd).cX - puts "\t #{cX.fuschia}ERROR#{cX.off} #{cX.brown}#{@opt.fns}#{cX.off} #{cX.fuschia}requires invalid or non-existent file:#{cX.off} #{cX.brown}#{loadfile}#{cX.off}" - para - end - else tuned_file << para - end - tuned_file.flatten! - tuned_file.compact! - end - if @@imager.length >0 - @@imager.each do |d,i| - i.flatten! - i.uniq! - download_images(d,i) - end - end - tuned_file - end - end -end -__END__ - diff --git a/lib/sisu/v0/concordance.rb b/lib/sisu/v0/concordance.rb deleted file mode 100644 index 3c2b8326..00000000 --- a/lib/sisu/v0/concordance.rb +++ /dev/null @@ -1,351 +0,0 @@ -# coding: utf-8 -=begin - - * Name: SiSU - - * Description: a framework for document structuring, publishing and search - - * Author: Ralph Amissah - - * Copyright: (C) 1997 - 2009 Ralph Amissah All Rights Reserved. - - * License: GPL 3 or later: - - SiSU, a framework for document structuring, publishing and search - - Copyright (C) Ralph Amissah - - This program is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by the Free - Software Foundation, either version 3 of the License, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - more details. - - You should have received a copy of the GNU General Public License along with - this program. If not, see . - - If you have Internet connection, the latest version of the GPL should be - available at these locations: - - - - - - - - * SiSU uses: - * Standard SiSU markup syntax, - * Standard SiSU meta-markup syntax, and the - * Standard SiSU object citation numbering and system - - * Hompages: - - - - * Download: - - - * Ralph Amissah - - - - ** Description: concordance file (html concordance, wordmap, linked index of - words in document) - -=end -module SiSU_Concordance - require "#{SiSU_lib}/particulars" - include SiSU_Particulars - require "#{SiSU_lib}/sysenv" - include SiSU_Env - require "#{SiSU_lib}/defaults" - include SiSU_Viz - require "#{SiSU_lib}/html_format" - include SiSU_HTML_Format - require "#{SiSU_lib}/html_minitoc" - class Source - def initialize(opt) - @opt=opt - @particulars=SiSU_Particulars::Combined_singleton.instance.get_all(opt) - end - def read - begin - @env,@md=@particulars.env,@particulars.md - loc=@env.url.output_tell - tool=if @md.cmd =~/[MVv]/; "#{@env.program.web_browser} #{loc}/#{@md.fnb}/#{@md.fn[:concordance]}" - else '' - end - tell=SiSU_Screen::Ansi.new(@md.cmd,"Concordance",tool) - tell.grey_title_hi unless @md.cmd =~/q/ - wordmax=@env.concord_max - unless @md.wc_words.nil? - if @md.wc_words < wordmax - SiSU_Concordance::Source::Words.new(@particulars).songsheet - else - tell=SiSU_Screen::Ansi.new(@md.cmd,"concordance skipped, large document has over #{wordmax} words (#{@md.wc_words})") - tell.warn unless @md.cmd =~/q/ - end - else - tell=SiSU_Screen::Ansi.new(@md.cmd,"wc (word count) is off, concordance will be processed for all files including those over the max set size of: #{wordmax} words") - tell.warn unless @md.cmd =~/q/ - SiSU_Concordance::Source::Words.new(@particulars).songsheet - end - rescue; SiSU_Errors::Info_error.new($!,$@,@md.cmd,@md.fns).error - ensure - end - end - private - class Doc_title - include SiSU_Viz - #revisit, both requires (html & shared_xml) needed for stand alone operation (sisu -w [filename]) - require "#{SiSU_lib}/shared_xml" - require "#{SiSU_lib}/html" - def initialize(particulars) - @particulars,@md=particulars,particulars.md - @data=SiSU_HTML::Source::Html_environment.new(particulars).tuned_file_instructions - @vz=SiSU_Env::Get_init.instance.skin - txt_path=%{#{@md.dir_out}} - SiSU_Env::Info_skin.new(@md).select - @fnb=@md.fnb - @lex_button=%{SiSU home -->} - @doc_details =< 

#{@md.full_title}

#{@md.author}

-WOK - end - def create - head_banner=SiSU_HTML_Format::Head_toc.new(@md) - minitoc=SiSU_HTML_minitoc::Toc_mini.new(@md,@data).songsheet.join("\n") - toc='
' + minitoc + '
' - < - - - - SiSU created Concordance (WordIndex) for: #{@md.full_title} - - - - - - - - - #{@vz.js_head} - - - #{@vz.js_top} - #{head_banner.concordance_navigation_band('pdf')} - #{toc} -
- #@doc_details -

Word index links are to html versions of the text the segmented version followed by the scroll (single document) version.
[For segmented text references [T1], [T2] or [T3] appearing without a link, indicates that the word appears in a title (or subtitle) of the text (that is identifiable by the appended object citation number).]

-

(The word listing/index is Case sensitive: Capitalized words appear before lower case)

-

- word (number of occurences)
linked references to word within document
- [if number of occurences exceed number of references - word occurs more than once in at least one reference. Footnote/endnotes are either assigned to the paragraph from which they are referenced or ignored, so it is relevant to check the footnotes referenced from within a paragraph as well.] -

-

- (After the page is fully loaded) you can jump directly to a word by appending a hash (#) and the word to the url for this text, (do not forget that words are case sensitive, and may be listed twice (starting with and without an upper case letter)), #your_word # [ http://[web host]/#{@fnb}/concordance.html#your_word ] -

-WOK - end - end - class Word - @@word_previous='' - def initialize(word,freq) - @word,@freq=word,freq - end - def html - w=if @word.capitalize==@@word_previous - %{\n

#@word

(#@freq)

\n\t

} - else n=@word.strip.gsub(/\s+/,'_') #also need to convert extended character set to html - %{\n

#@word

(#@freq)

\n\t

} - end - @@word_previous=@word.capitalize - w - end - end - class Words - require "#{SiSU_lib}/defaults" - include SiSU_Viz - require "#{SiSU_lib}/html_format" - include SiSU_HTML_Format - require "#{SiSU_lib}/sysenv" - include SiSU_Screen - @@dp=nil - def initialize(particulars) - @particulars=particulars - begin - @vz=SiSU_Env::Get_init.instance.skin - @env,@md,@dal_array=particulars.env,particulars.md,particulars.dal_array - @path="#{@env.path.output}/#{@md.fnb}" - @freq=Hash.new(0) - @dp=@@dp ||=SiSU_Env::Info_env.new.digest.pattern - @rxp_to=Regexp.new("#{Mx[:id_o]}~(\\d+);(?:[oh]|[0-6]:)\\d+;\\w\\d+#{Mx[:id_c]}#{Mx[:id_o]}#@dp:#@dp#{Mx[:id_c]}|#{Mx[:id_o]}\S+?#{Mx[:id_c]}$") - @rxp_lv1=/^#{Mx[:lv_o]}1:/ - @rxp_lv2=/^#{Mx[:lv_o]}2:/ - @rxp_lv3=/^#{Mx[:lv_o]}3:/ - @rxp_seg=/^#{Mx[:lv_o]}4:(\S+?)#{Mx[:lv_c]}/ - @rxp_title=Regexp.new("^#{Mx[:meta_o]}title#{Mx[:meta_c]}\s*(.+?)\s*$") - @rxp_t1=Regexp.new('^T1') - @rxp_t2=Regexp.new('^T2') - @rxp_t3=Regexp.new('^T3') - @rxp_excluded1=/(?:https?|file|ftp):\/\/\S+/ - @rxp_excluded0=/^(?:#{Mx[:fa_bold_o]}|#{Mx[:fa_italics_o]})?(?:to\d+|\d+| |#{Mx[:br_endnotes]}|EOF|#{Mx[:br_eof]}|thumb_\S+|snap_\S+|_+|-+|[(]?(?:ii+|iv|vi+|ix|xi+|xiv|xv|xvi+|xix|xx)[).]?|\S+?_\S+|[\d_]+\w\S+|[\w\d]{1,2}|\d{1,3}\w?|#@dp|[0-9a-f]{16,64}|\d{2,3}x\d{2,3}|\S{0,2}sha\d|\S{0,3}\d{4}w\d\d|\b\w\d+|\d_all\b|e\.?g\.?)(?:#{Mx[:fa_bold_c]}|#{Mx[:fa_italics_c]})?$/mi #this regex causes and cures a stack dump in ruby 1.9 !!! - @rgx_splitlist=%r{[—.,;:-]|#{Mx[:id_o]}\S+?#{Mx[:id_c]}}mi - @rgx_scanlist=%r{#{Mx[:fa_italics_o]}[a-zA-Z0-9"\s]{2,12}#{Mx[:fa_italics_c]}|#{Mx[:fa_bold_o]}[a-zA-Z0-9"\s]{2,12}#{Mx[:fa_bold_c]}|(?:https?|file)://\S+|#{Mx[:gr_o]}code#{Mx[:gr_o]}.+?#{Mx[:gr_o]}code-end#{Mx[:gr_o]}|<\S+?>|\w+|[a-zA-Z]+}mi - rescue; SiSU_Errors::Info_error.new($!,$@,@md.cmd,@md.fns).error - end - end - def songsheet - begin - mkdir_p(@path) unless FileTest.directory?(@path) - @file_concordance=File.open("#@path/#{@md.fn[:concordance]}",'w') - map_para - rescue; SiSU_Errors::Info_error.new($!,$@,@md.cmd,@md.fns).error - ensure - @file_concordance.close - end - end - protected - def location_scroll(wordlocation,show) - @wordlocation=wordlocation - %{#@wordlocation; } - end - def location_seg(wordlocation,show) - @wordlocation,@show=wordlocation,show - @sfx='.html' #used for hardlinks, previous setting @sfx='', web server takes care of suffix - @word_location_seg=wordlocation.gsub(/(.+?)\#(\d+)/,"#{@md.fnl[:pre]}\\1#{@md.fnl[:mid]}#@sfx#{@md.fnl[:post]}#\\2") unless wordlocation.nil? - case @wordlocation - when @rxp_t1 - %{[H]#@show, } - when @rxp_t2 - %{[H]#@show, } - when @rxp_t3 - %{[H]#@show, } - else %{#@show, } - end - end - def map_para - @seg,toy=nil,nil - @word_map={} - @dal_array.each do |line| - if line !~/#{Mx[:id_o]}~(\d+);[um]\d+;\w\d+#{Mx[:id_c]}#{Mx[:id_o]}#@dp:#@dp#{Mx[:id_c]}$/ #lines to ignore: # are added but not part of authors substantive text; 0 are mostly machine generated - if line =~@rxp_seg; @seg=line[@rxp_seg,1] - end - if line =~@rxp_to; toy=line[@rxp_to,1] - end - if toy =~/\d+/ \ - and toy !~/^0$/ - line=line.split(@rgx_splitlist).join(' ') #%take in word or other match - for word in line.scan(@rgx_scanlist) #%take in word or other match - #word.gsub!(@rxp_clean,'') - word.gsub!(/#{Mx[:lnk_o]}|#{Mx[:lnk_c]}(?:http)?/,'') - word.gsub!(/#{Mx[:fa_o]}\S+?#{Mx[:fa_o_c]}/,'') - word.gsub!(/#{Mx[:fa_c_o]}\S+?#{Mx[:fa_c]}/,'') - word.gsub!(/#{Mx[:gl_o]}#[a-z]+#{Mx[:gl_c]}/,'') - word.gsub!(/#{Mx[:gl_o]}#[0-9]+#{Mx[:gl_c]}/,'') - word.gsub!(/^\S$/,'') - word=nil if word.empty? - word=nil if word =~@rxp_excluded0 #watch - word=nil if word =~@rxp_excluded1 #watch - word=nil if word =~/^\S$/ - if word - word.gsub!(/#{Mx[:br_nl]}|#{Mx[:br_line]}/,' ') - word.gsub!(/#{Mx[:lv_o]}\d:\S*?#{Mx[:lv_c]}/,'') - word.gsub!(/#{Mx[:pa_o]}:i\d#{Mx[:pa_c]}/,'') - word.gsub!(/#{Mx[:id_o]}~\d+;\S+?#{Mx[:id_c]}/,'') - word.gsub!(/#{Mx[:fa_o]}[a-z]{1,7}#{Mx[:fa_o_c]}|#{Mx[:fa_c_o]}[a-z]{1,7}#{Mx[:fa_c]}/,'') - word.gsub!(/#{Mx[:mk_o]}(?:[0-9a-f]{32}:[0-9a-f]{32}|[0-9a-f]{64}:[0-9a-f]{64})#{Mx[:mk_c]}/,'') - word.gsub!(/#{Mx[:mk_o]}(?:[0-9a-f]{32}|[0-9a-f]{64})#{Mx[:mk_c]}/,'') - word.gsub!(/#{Mx[:en_a_o]}(?:\d|[*+])*|#{Mx[:en_b_o]}(?:\d|[*+])*|#{Mx[:en_a_c]}|#{Mx[:en_b_c]}/mi,'') - word.gsub!(/#{Mx[:fa_o]}\S+?#{Mx[:fa_o_c]}/,''); word.gsub!(/#{Mx[:fa_c_o]}\S+?#{Mx[:fa_c]}/,'') - #word.gsub!(/#{Mx[:fa_o]}\S+?#{Mx[:fa_c]}/,'') #watch - word.gsub!(/<\/?\S+?>/,'') - word.gsub!(/^\@+/,'') - word.strip! - word.gsub!(/#{Mx[:tc_p]}.+/,'') - word.gsub!(/[\.,;:"]$/,'') - word.gsub!(/["]/,'') - word.gsub!(/^\s*[\(]/,'') - word.gsub!(/[\(]\s*$/,'') - word.gsub!(/^(?:See|e\.?g\.?).+/,'') - word.gsub!(/^\s*[.,;:]\s*/,'') - word.strip! - word.gsub!(/^\(?[a-zA-Z]\)$/,'') - word.gsub!(/^\d+(st|nd|rd|th)$/,'') - word.gsub!(/^(\d+\.?)+$/, '') - word.gsub!(/#{Mx[:mk_o]}|#{Mx[:mk_c]}/,'') - word.gsub!(/:name#\S+/,'') - word.gsub!(/^\S$/,'') - word=nil if word =~/^\S$/ - word=nil if word =~/^\s*$/ #watch - if word - unless word =~/[A-Z][A-Z]/ \ - or word =~/\w+\s\w+/ - word.capitalize! - end - #word.downcase! if word =~lesser - #word.capitalize! if word =~greater - @freq[word] +=1 - @word_map[word] ||= [] - if line !~@rxp_lv1 \ - and line !~@rxp_lv2 \ - and line !~@rxp_lv3 - @word_map[word] << location_seg("#@seg\##{toy}",toy) - else - @word_map[word] << case line - when @rxp_lv1; location_seg('T1',toy) - when @rxp_lv2; location_seg('T2',toy) - when @rxp_lv3; location_seg('T3',toy) - end - end - end - end - end - end - end - end - scr='Full Text scroll: doc#  ' - seg='' - @file_concordance << SiSU_Concordance::Source::Doc_title.new(@particulars).create - alph=%W[A B C D E F G H I J K L M N O P Q R S T U V W X Y Z] - @file_concordance << '

' - alph.each {|x| @file_concordance << %{#{x}, }} - @file_concordance << '

' - letter=alph.shift - @file_concordance << %{\n

A

} - for word in @freq.keys.sort! {|a,b| a.downcase<=>b.downcase} - f=/^(\S)/.match(word)[1] - if letter < f.upcase - while letter < f.upcase - if alph.length > 0 - letter=alph.shift - @file_concordance << %{\n

#{letter}

} - else break - end - end - end - keyword=SiSU_Concordance::Source::Word.new(word,@freq[word]).html - if keyword !~ @rxp_excluded0 - if @word_map[word][0] =~ /\d+/ - wm=[] - @file_concordance << %{#{keyword}#{seg}#{@word_map[word].uniq.compact.join}} - end - @file_concordance << '

' - end - # special cases endnotes and header levels 1 - 3 - end - credits=@vz.credits_sisu - @file_concordance << %{
#{credits}
\n} # footer - tell=SiSU_Screen::Ansi.new(@md.cmd,@md.fns,"#{@env.path.output_tell}/#{@md.fn[:concordance]}") - tell.flow if @md.cmd =~/[MV]/ - end - end - end -end -__END__ diff --git a/lib/sisu/v0/conf.rb b/lib/sisu/v0/conf.rb deleted file mode 100644 index 9e2b7efd..00000000 --- a/lib/sisu/v0/conf.rb +++ /dev/null @@ -1,269 +0,0 @@ -# coding: utf-8 -=begin - - * Name: SiSU - - * Description: a framework for document structuring, publishing and search - - * Author: Ralph Amissah - - * Copyright: (C) 1997 - 2009 Ralph Amissah All Rights Reserved. - - * License: GPL 3 or later: - - SiSU, a framework for document structuring, publishing and search - - Copyright (C) Ralph Amissah - - This program is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by the Free - Software Foundation, either version 3 of the License, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - more details. - - You should have received a copy of the GNU General Public License along with - this program. If not, see . - - If you have Internet connection, the latest version of the GPL should be - available at these locations: - - - - - - - - * SiSU uses: - * Standard SiSU markup syntax, - * Standard SiSU meta-markup syntax, and the - * Standard SiSU object citation numbering and system - - * Hompages: - - - - * Download: - - - * Ralph Amissah - - - - ** Description: configuration - -=end -module SiSU_Initialize - require "#{SiSU_lib}/sysenv" - include SiSU_Env - include SiSU_Screen - require "#{SiSU_lib}/relaxng" - include SiSU_relaxng - require "#{SiSU_lib}/css" - include SiSU_Style - #require "#{SiSU_lib}/remote" - #include SiSU_Remote - class Source - def initialize(opt) - @opt=opt - end - def read - SiSU_Config.new(@opt).make_homepage - SiSU_Config.new(@opt).css - SiSU_Config.new(@opt).dtd - SiSU_Config.new(@opt).cp_local_images - SiSU_Config.new(@opt).cp_external_images - SiSU_Config.new(@opt).cp_webserver_images #if @opt.mod.inspect =~/--init(?:ialize)?=site/ - #if @opt.cmd =~/R/ - # SiSU_Config.new(@opt).cp_remote_dirs - #end - end - end - class SiSU_Config #config files such as css are not updated if they already exist unless forced using the --init=site modifier - require 'fileutils' - require "#{SiSU_lib}/sysenv" - include FileUtils #::Verbose - def initialize(opt) - @opt=opt - @env=SiSU_Env::Info_env.new(@opt.fns) - @suffix,@path={},{} - @suffix[:rnc]='rnc' - @suffix[:rng]='rng' - @suffix[:xsd]='xsd' - @path[:xml]= @env.path.output + '/_sisu/xml' - @path[:xsd]= @env.path.output + '/_sisu/xml/xsd' - @path[:rnc]= @env.path.output + '/_sisu/xml/rnc' - @path[:rng]= @env.path.output + '/_sisu/xml/rng' - #@path_dtd= @env.path.output + '/_sisu/dtd' - @pwd,@home=Dir.pwd,@env.path.home - end - def make_homepage - tell=SiSU_Screen::Ansi.new(@opt.cmd,'invert','Make homepage','') - tell.colorize unless @opt.cmd =~/q/ - SiSU_Env::Create_site.new(@opt.cmd).homepage - end - def cp_local_images - tell=SiSU_Screen::Ansi.new(@opt.cmd,'invert','Copy images','') - tell.colorize unless @opt.cmd =~/q/ - SiSU_Env::Create_site.new(@opt.cmd).cp_local_images - SiSU_Env::Create_site.new(@opt.cmd).cp_webserver_images_local #this should not have been necessary - SiSU_Env::Create_site.new(@opt.cmd).cp_base_images #base images (nav etc.) used by all html - end - def cp_external_images - tell=SiSU_Screen::Ansi.new(@opt.cmd,'invert','Copy external images','') - tell.colorize if @opt.cmd =~/V/ - SiSU_Env::Create_site.new(@opt.cmd).cp_external_images - end - def cp_webserver_images - tell=SiSU_Screen::Ansi.new(@opt.cmd,'invert','Copy webserver/output file images','') - tell.colorize unless @opt.cmd =~/q/ - SiSU_Env::Create_site.new(@opt.cmd).cp_webserver_images - SiSU_Env::Create_system_link.new.images - end - #def cp_remote_dirs - # if @opt.cmd =~/R/ - # tell=SiSU_Screen::Ansi.new(@opt.cmd,'invert','Copy webserver/output file images to remote server','') - # tell.colorize unless @opt.cmd =~/q/ - # SiSU_Remote::Put.new(@opt).rsync_base - # end - #end - def css - tell=SiSU_Screen::Ansi.new(@opt.cmd,'invert','Configuring CSSs','') - tell.colorize unless @opt.cmd =~/q/ - SiSU_Env::Create_site.new(@opt.cmd).cp_css - end - def dtd - tell=SiSU_Screen::Ansi.new(@opt.cmd,'invert','Configuring DTDs','') - tell.colorize unless @opt.cmd =~/q/ - @rxng=SiSU_relaxng::RelaxNG.new - @path.each { |d| mkdir_p(d[1]) unless FileTest.directory?(d[1]) } - #ugly code, sort later - if @rxng.methods.join =~/[^_]dtd_sax\b/ - if @rxng.dtd_sax.length > 200 - dtd=File.new("#{@env.path.output}/#{@env.path.style}/#{@rxng.rng_name.output_sax}",'w') - dtd << @rxng.dtd_sax - dtd.close - else trang_rnc_model_output_sax - end - else trang_rnc_model_output_sax - end - if @rxng.methods.join =~/[^_]dtd_dom\b/ - if @rxng.dtd_dom.length > 200 - dtd=File.new("#{@env.path.output}/#{@env.path.style}/#{@rxng.rng_name.output_dom}",'w') - dtd << @rxng.dtd_dom - dtd.close - else trang_rnc_model_output_dom - end - else trang_rnc_model_output_dom - end - if @rxng.methods.join =~/[^_]dtd_node\b/ - if @rxng.dtd_node.length > 200 - dtd=File.new("#{@env.path.output}/#{@env.path.style}/#{@rxng.rng_name.input_node}",'w') - dtd << @rxng.dtd_node - dtd.close - else trang_rnc_model_input_node - end - else trang_rnc_model_input_node - end - if @rxng.methods.join =~/[^_]dtd_xhtml\b/ - if @rxng.dtd_xhtml.length > 200 - #use dtd - dtd=File.new("#{@env.path.output}/#{@env.path.style}/#{@rxng.rng_name.output_xhtml}",'w') - dtd << @rxng.dtd_xhtml - dtd.close - else trang_rnc_model_output_xhtml - end - else trang_rnc_model_output_xhtml - end - end - def trang_rnc_model_output_sax - s=@suffix - rnc_src=@env.path.dal + '/sax.' + s[:rnc] - rnc_file=@path[:rnc] + '/' + @rxng.rnc_name.output_sax - rng_file=@path[:rng] + '/' + @rxng.rng_name.output_sax - xsd_file=@path[:xsd] + '/' + @rxng.xsd_name.output_sax - rnc=File.new(rnc_src,'w') - rnc << @rxng.rnc_model_output_sax - rnc.close - #xsd - schema=SiSU_Env::System_call.new(rnc_src,xsd_file) - schema.relaxng(@opt.cmd) - #rng - schema=SiSU_Env::System_call.new(rnc_src,rng_file) - schema.relaxng(@opt.cmd) - #rnc - cp(rnc_src,rnc_file) - chmod(0644,rnc_file) - end - def trang_rnc_model_output_dom - s=@suffix - rnc_src=@env.path.dal + '/dom.' + s[:rnc] - rnc_file=@path[:rnc] + '/' + @rxng.rnc_name.output_dom - rng_file=@path[:rng] + '/' + @rxng.rng_name.output_dom - xsd_file=@path[:xsd] + '/' + @rxng.xsd_name.output_dom - rnc=File.new(rnc_src,'w') - rnc << @rxng.rnc_model_output_dom - rnc.close - #xsd - schema=SiSU_Env::System_call.new(rnc_src,xsd_file) - schema.relaxng(@opt.cmd) - #rng - schema=SiSU_Env::System_call.new(rnc_src,rng_file) - schema.relaxng(@opt.cmd) - #rnc - cp(rnc_src,rnc_file) - chmod(0644,rnc_file) - end - def trang_rnc_model_output_xhtml - s=@suffix - rnc_src=@env.path.dal + '/xhtml.' + s[:rnc] - rnc_file=@path[:rnc] + '/' + @rxng.rnc_name.output_xhtml - rng_file=@path[:rng] + '/' + @rxng.rng_name.output_xhtml - xsd_file=@path[:xsd] + '/' + @rxng.xsd_name.output_xhtml - rnc=File.new(rnc_src,'w') - rnc << @rxng.rnc_model_output_xhtml - rnc.close - #xsd - schema=SiSU_Env::System_call.new(rnc_src,xsd_file) - schema.relaxng(@opt.cmd) - #rng - schema=SiSU_Env::System_call.new(rnc_src,rng_file) - schema.relaxng(@opt.cmd) - #rnc - cp(rnc_src,rnc_file) - chmod(0644,rnc_file) - end - def trang_rnc_model_input_sax - rnc_file=@env.path.dal + '/sax.rnc' - dtd_file=@path[:xsd] + '/' + @rxng.rng_name.input_sax - rnc=File.new(rnc_file,'w') - rnc << @rxng.rnc_model_output_sax - rnc.close - schema=SiSU_Env::System_call.new(rnc_file,dtd_file) - schema.relaxng(@opt.cmd) - end - def trang_rnc_model_input_dom - rnc_file=@env.path.dal + '/dom.rnc' - dtd_file=@path[:xsd] + '/' + @rxng.rng_name.input_dom - rnc=File.new(rnc_file,'w') - rnc << @rxng.rnc_model_output_dom - rnc.close - schema=SiSU_Env::System_call.new(rnc_file,dtd_file) - schema.relaxng(@opt.cmd) - end - def trang_rnc_model_input_node - rnc_file=@env.path.dal + '/node.rnc' - rng_file=@env.path.dal + '/node.rng' - dtd_file=@path[:xsd] + '/' + @rxng.rng_name.input_node - rnc=File.new(rnc_file,'w') - rnc << @rxng.rnc_model_input_node - rnc.close - schema=SiSU_Env::System_call.new(rnc_file,dtd_file) - schema.relaxng(@opt.cmd) - end - end -end -__END__ diff --git a/lib/sisu/v0/constants.rb b/lib/sisu/v0/constants.rb deleted file mode 100644 index 5c93d543..00000000 --- a/lib/sisu/v0/constants.rb +++ /dev/null @@ -1,172 +0,0 @@ -# coding:utf-8 -=begin - - * Name: SiSU - - * Description: a framework for document structuring, publishing and search - constants - - * Author: Ralph Amissah - - * Copyright: (C) 1997 - 2009 Ralph Amissah All Rights Reserved. - - * License: GPL 3 or later: - - SiSU, a framework for document structuring, publishing and search - - Copyright (C) Ralph Amissah - - This program is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by the Free - Software Foundation, either version 3 of the License, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - more details. - - You should have received a copy of the GNU General Public License along with - this program. If not, see . - - If you have Internet connection, the latest version of the GPL should be - available at these locations: - - - - - - - - * SiSU uses: - * Standard SiSU markup syntax, - * Standard SiSU meta-markup syntax, and the - * Standard SiSU object citation numbering and system - - * Hompages: - - - - * Download: - - - * Ralph Amissah - - - - ** Description: system environment, resource control and configuration details - -=end -Sfx={:txt=>'.txt',:html=>'.html',:xhtml=>'.xhtml',:xml=>'.xml',:epub=>'.epub',:epub_xhtml=>'.xhtml',:odt=>'.odt',:pdf=>'.pdf'} -Mx,Rx={},{} -Mx[:meta_o],Mx[:meta_c]='〔@','〕' -Mx[:lv_o_1],Mx[:lv_o_2],Mx[:lv_o_3],Mx[:lv_o_4],Mx[:lv_o_5],Mx[:lv_o_6],Mx[:lv_o_7],Mx[:lv_o_8],Mx[:lv_o_9]= - '〔1:','〔2:','〔3:','〔4:','〔5:','〔6:','〔7:','〔8:','〔9:'; -Mx[:lv_o],Mx[:lv_c]='〔','〕' -# '1~','2~','3~','4~','5~','6~','7~','8~','9~'; Mx[:lv_c]='' -Mx[:en_a_o]='【'; Mx[:en_a_c]='】' #Mx[:en_a_o]='~{'; Mx[:en_a_c]='}~' -Mx[:en_b_o]='〖'; Mx[:en_b_c]='〗' #Mx[:en_b_o]='~['; Mx[:en_b_c]=']~' -Mx[:br_line]="#{Mx[:mk_o]}br#{Mx[:mk_c]}" -Mx[:gr_o]='〔'; Mx[:gr_c]='〕' #group text mark -Mx[:id_o]='〔'; Mx[:id_c]='〕' #object id mark -Mx[:tc_o]='『'; Mx[:tc_c]='』' #table column mark -Mx[:tc_p]='┆' #table row/misc mark -Mx[:pa_o]='〔'; Mx[:pa_c]='〕' #affects paragraph mark -Mx[:mk_o]='〔'; Mx[:mk_c]='〕' #generic mark -Mx[:gl_o]='〔'; Mx[:gl_c]='〕' #glyph -Mx[:fa_o]='〔'; Mx[:fa_o_c]='¤'; Mx[:fa_c_o]='¤'; Mx[:fa_c]='〕' -Mx[:fa_bold_o]= "#{Mx[:fa_o]}b#{Mx[:fa_o_c]}"; Mx[:fa_bold_c]= "#{Mx[:fa_c_o]}b#{Mx[:fa_c]}" -Mx[:fa_italics_o]= "#{Mx[:fa_o]}i#{Mx[:fa_o_c]}"; Mx[:fa_italics_c]= "#{Mx[:fa_c_o]}i#{Mx[:fa_c]}" -Mx[:fa_underscore_o]= "#{Mx[:fa_o]}u#{Mx[:fa_o_c]}"; Mx[:fa_underscore_c]= "#{Mx[:fa_c_o]}u#{Mx[:fa_c]}" -Mx[:fa_cite_o]= "#{Mx[:fa_o]}cite#{Mx[:fa_o_c]}"; Mx[:fa_cite_c]= "#{Mx[:fa_c_o]}cite#{Mx[:fa_c]}" -Mx[:fa_insert_o]= "#{Mx[:fa_o]}ins#{Mx[:fa_o_c]}"; Mx[:fa_insert_c]= "#{Mx[:fa_c_o]}ins#{Mx[:fa_c]}" -Mx[:fa_strike_o]= "#{Mx[:fa_o]}del#{Mx[:fa_o_c]}"; Mx[:fa_strike_c]= "#{Mx[:fa_c_o]}del#{Mx[:fa_c]}" -Mx[:fa_superscript_o]="#{Mx[:fa_o]}sup#{Mx[:fa_o_c]}"; Mx[:fa_superscript_c]="#{Mx[:fa_c_o]}sup#{Mx[:fa_c]}" -Mx[:fa_subscript_o]= "#{Mx[:fa_o]}sub#{Mx[:fa_o_c]}"; Mx[:fa_subscript_c]= "#{Mx[:fa_c_o]}sub#{Mx[:fa_c]}" -Mx[:fa_hilite_o]= "#{Mx[:fa_o]}hi#{Mx[:fa_o_c]}"; Mx[:fa_hilite_c]= "#{Mx[:fa_c_o]}hi#{Mx[:fa_c]}" -Mx[:gl_bullet]= "#{Mx[:gl_o]}●#{Mx[:gl_c]}" -#non substantive text sort: <-#> <~#> - Mx[:pa_non_object_dummy_heading]="#{Mx[:pa_o]}-##{Mx[:pa_c]}" #unnumbered paragraph, delete when not required [used in dummy headings, eg. for segmented html] (place marker at end of paragraph) - Mx[:pa_non_object_no_heading]="#{Mx[:pa_o]}~##{Mx[:pa_c]}" #unnumbered paragraph (place marker at end of paragraph) -Mx[:idx_o]='▢ '; Mx[:idx_c]='▢ ' # -Mx[:nbsp]= '░' #'▭ ' -Mx[:br_line]= "#{Mx[:mk_o]}br#{Mx[:mk_c]}" -Mx[:br_paragraph]= "#{Mx[:mk_o]}br#{Mx[:mk_c]}" -Mx[:br_nl]= "#{Mx[:mk_o]}nl#{Mx[:mk_c]}" -Mx[:br_page]= "#{Mx[:mk_o]}pb#{Mx[:mk_c]}" -Mx[:br_page_new]= "#{Mx[:mk_o]}pn#{Mx[:mk_c]}" -Mx[:br_endnotes]= "#{Mx[:mk_o]}ENDNOTES#{Mx[:mk_c]}" -Mx[:br_eof]= "#{Mx[:mk_o]}EOF#{Mx[:mk_c]}" -Mx[:lnk_o]='◁'; Mx[:lnk_c]='▷' - #‹ › -Mx[:sm_set_o]='《'; Mx[:sm_set_c]='》' -Mx[:sm_subset_o]='《 '; Mx[:sm_subset_c]='》' -#Mx[:sm_set_o]='∈ '; Mx[:sm_set_c]='∋ ' -#Mx[:sm_subset_o]='∈ '; Mx[:sm_subset_c]='∋ ' -Rx[:mx_fa_clean]= /#{Mx[:fa_o]}.+?#{Mx[:fa_c]}|#{Mx[:pa_o]}.+?#{Mx[:pa_c]}|#{Mx[:mk_o]}.+?#{Mx[:mk_c]}/ -Rx[:lv],Rx[:lv_1],Rx[:lv_2],Rx[:lv_3],Rx[:lv_4],Rx[:lv_5],Rx[:lv_6],Rx[:lv_7],Rx[:lv_8],Rx[:lv_9]= - /〔([1-9]):(\S*?)〕/,/#{Mx[:lv_o_1]}(\S*?)#{Mx[:lv_c]}/,/#{Mx[:lv_o_2]}(\S*?)#{Mx[:lv_c]}/,/#{Mx[:lv_o_3]}(\S*?)#{Mx[:lv_c]}/,/#{Mx[:lv_o_4]}(\S*?)#{Mx[:lv_c]}/,/#{Mx[:lv_o_5]}(\S*?)#{Mx[:lv_c]}/,/#{Mx[:lv_o_6]}(\S*?)#{Mx[:lv_c]}/,/#{Mx[:lv_o_7]}(\S*?)#{Mx[:lv_c]}/,/#{Mx[:lv_o_8]}(\S*?)#{Mx[:lv_c]}/,/#{Mx[:lv_o_9]}(\S*?)#{Mx[:lv_c]}/ -Rx[:meta]=/#{Mx[:meta_o]}(\S+?)#{Mx[:meta_c]}/ -unless RUBY_VERSION < '1.9' - Mx[:meta_o].force_encoding('utf-8'); Mx[:meta_c].force_encoding('utf-8') - Mx[:lv_o_1].force_encoding('utf-8'); Mx[:lv_o_2].force_encoding('utf-8'); Mx[:lv_o_3].force_encoding('utf-8'); Mx[:lv_o_4].force_encoding('utf-8'); Mx[:lv_o_5].force_encoding('utf-8'); Mx[:lv_o_6].force_encoding('utf-8'); Mx[:lv_o_7].force_encoding('utf-8'); Mx[:lv_o_8].force_encoding('utf-8'); Mx[:lv_o_9].force_encoding('utf-8') - Mx[:lv_o].force_encoding('utf-8'); Mx[:lv_c].force_encoding('utf-8') - Mx[:gr_o].force_encoding('utf-8'); Mx[:gr_c].force_encoding('utf-8') - Mx[:id_o].force_encoding('utf-8'); Mx[:id_c].force_encoding('utf-8') - Mx[:tc_p].force_encoding('utf-8') - Mx[:tc_o].force_encoding('utf-8'); Mx[:tc_c].force_encoding('utf-8') - Mx[:pa_o].force_encoding('utf-8'); Mx[:pa_c].force_encoding('utf-8') - Mx[:mk_o].force_encoding('utf-8'); Mx[:mk_c].force_encoding('utf-8') - Mx[:gl_o].force_encoding('utf-8'); Mx[:gl_c].force_encoding('utf-8') - Mx[:fa_o].force_encoding('utf-8'); Mx[:fa_c].force_encoding('utf-8') - Mx[:fa_o_c].force_encoding('utf-8'); Mx[:fa_c_o].force_encoding('utf-8') - Mx[:fa_bold_o].force_encoding('utf-8'); Mx[:fa_bold_c].force_encoding('utf-8') - Mx[:fa_italics_o].force_encoding('utf-8'); Mx[:fa_italics_c].force_encoding('utf-8') - Mx[:fa_underscore_o].force_encoding('utf-8'); Mx[:fa_underscore_c].force_encoding('utf-8') - Mx[:fa_cite_o].force_encoding('utf-8'); Mx[:fa_cite_c].force_encoding('utf-8') - Mx[:fa_insert_o].force_encoding('utf-8'); Mx[:fa_insert_c].force_encoding('utf-8') - Mx[:fa_strike_o].force_encoding('utf-8'); Mx[:fa_strike_c].force_encoding('utf-8') - Mx[:fa_superscript_o].force_encoding('utf-8'); Mx[:fa_superscript_c].force_encoding('utf-8') - Mx[:fa_subscript_o].force_encoding('utf-8'); Mx[:fa_subscript_c].force_encoding('utf-8') - Mx[:fa_hilite_o].force_encoding('utf-8'); Mx[:fa_hilite_c].force_encoding('utf-8') - Mx[:gl_bullet].force_encoding('utf-8') - Mx[:pa_non_object_dummy_heading].force_encoding('utf-8'); Mx[:pa_non_object_no_heading].force_encoding('utf-8') - Mx[:br_line].force_encoding('utf-8'); Mx[:br_nl].force_encoding('utf-8') - Mx[:br_paragraph].force_encoding('utf-8') - Mx[:br_page].force_encoding('utf-8'); Mx[:br_page_new].force_encoding('utf-8') - Mx[:br_endnotes].force_encoding('utf-8') - Mx[:br_eof].force_encoding('utf-8') - Mx[:lnk_o].force_encoding('utf-8'); Mx[:lnk_c].force_encoding('utf-8') - Mx[:sm_set_o].force_encoding('utf-8'); Mx[:sm_set_c].force_encoding('utf-8') - Mx[:sm_subset_o].force_encoding('utf-8'); Mx[:sm_subset_c].force_encoding('utf-8') -# - #Rx[:mx_fa_clean].force_encoding('utf-8') - #Rx[:lv].force_encoding('utf-8');Rx[:lv_1].force_encoding('utf-8');Rx[:lv_2].force_encoding('utf-8');Rx[:lv_3].force_encoding('utf-8');Rx[:lv_4].force_encoding('utf-8');Rx[:lv_5].force_encoding('utf-8');Rx[:lv_6].force_encoding('utf-8');Rx[:lv_7].force_encoding('utf-8');Rx[:lv_8].force_encoding('utf-8');Rx[:lv_9].force_encoding('utf-8') - #Rx[:meta].force_encoding('utf-8') -end -__END__ -consider: - 〔comment〕 - 〔links?????〕 - import document? -check: - bold line - -┆┆⋮┇┊┋ -『』 -「」 -〔〕 -【】 - -· -¤ - #˝ " λ Ω β α π Ѫ Ж Я Ѳ ѳ Ф ㈣ - Ѳ ѳ Ф - ♩ ♭  ✠  ▭ ▬ ▪ -【】〖〗《》「」 - ‹ › ∗  -'〔lv1〕','〔lv2〕','〔lv3〕','〔lv4〕','〔lv5〕','〔lv6〕','〔lv7〕','〔lv8〕','〔lv9〕' -'〔 Ѳ1〕','〔 Ѳ2〕','〔 Ѳ3〕','〔 Ѳ4〕','〔 Ѳ5〕','〔Ѳ6〕','〔Ѳ7〕','〔Ѳ8〕','〔Ѳ9〕' -◁▷ - -◀this is text or an image▶ http:// diff --git a/lib/sisu/v0/css.rb b/lib/sisu/v0/css.rb deleted file mode 100644 index 3f2733b1..00000000 --- a/lib/sisu/v0/css.rb +++ /dev/null @@ -1,2007 +0,0 @@ -# coding: utf-8 -=begin - - * Name: SiSU - - * Description: a framework for document structuring, publishing and search - - * Author: Ralph Amissah - - * Copyright: (C) 1997 - 2009 Ralph Amissah All Rights Reserved. - - * License: GPL 3 or later: - - SiSU, a framework for document structuring, publishing and search - - Copyright (C) Ralph Amissah - - This program is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by the Free - Software Foundation, either version 3 of the License, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - more details. - - You should have received a copy of the GNU General Public License along with - this program. If not, see . - - If you have Internet connection, the latest version of the GPL should be - available at these locations: - - - - - - - - * SiSU uses: - * Standard SiSU markup syntax, - * Standard SiSU meta-markup syntax, and the - * Standard SiSU object citation numbering and system - - * Hompages: - - - - * Download: - - - * Ralph Amissah - - - - ** Description: css stylesheets - -=end -module SiSU_Style - require "#{SiSU_lib}/sysenv" - require "#{SiSU_lib}/defaults" - class CSS - def initialize - @vz=SiSU_Env::Get_init.instance.skin - #@vz=SiSU_Viz::Skin.new - end - def fonts - @vz.font_fonts - end - def html_tables #stylesheet for css table_pages -<. - - If you have Internet connection, the latest version of the GPL should be - available at these locations: - - - - - - - - * SiSU uses: - * Standard SiSU markup syntax, - * Standard SiSU meta-markup syntax, and the - * Standard SiSU object citation numbering and system - - * Hompages: - - - - * Download: - - - * Ralph Amissah - - - - ** Description: preprocessing, (document abstraction), data abstraction used - in subsequent processing - -=end -module SiSU_DAL - require "#{SiSU_lib}/defaults" # defaults.rb - require "#{SiSU_lib}/sysenv" # sysenv.rb - require "#{SiSU_lib}/param" # param.rb - require "#{SiSU_lib}/dal_syntax" # dal_syntax.rb - require "#{SiSU_lib}/dal_doc_str" # dal_doc_str.rb - require "#{SiSU_lib}/dal_idx" # dal_idx.rb - require "#{SiSU_lib}/dal_numbering" # dal_numbering.rb - require "#{SiSU_lib}/dal_hash_digest" # dal_hash_digest.rb - require "#{SiSU_lib}/dal_endnotes" # dal_endnotes.rb - require "#{SiSU_lib}/dal_images" # dal_images.rb - require "#{SiSU_lib}/dal_metadata" # dal_metadata.rb - require "#{SiSU_lib}/dal_character_check" # dal_character_check.rb - require "#{SiSU_lib}/dal_substitutions_and_insertions" # dal_substitutions_and_insertions.rb - require "#{SiSU_lib}/dal_expand_insertions" # dal_expand_insertions.rb - require "#{SiSU_lib}/i18n" # i18n.rb - require "#{SiSU_lib}/shared_sem" # shared_sem.rb - include SiSU_Env - include SiSU_Param - include SiSU_Viz - include SiSU_Syntax - class Instantiate < SiSU_Param::Parameters::Instructions - def initialize - @@flag_vocab=0 - @@line_mode='' - end - end - class Source #{@my_make_fns.meta}") if @md.cmd =~/M/ - tell.txt_grey unless @md.cmd =~/q/ - dal.each{|s| dal_array << "#{s.strip}\n\n" unless s.strip.empty?} - dal_array - end - def read_fnm - dal=[] - dal=if FileTest.file?(@fnm) - if RUBY_VERSION < '1.9' - File.open(@fnm){ |f| dal=Marshal.load(f)} - else File.open(@fnm,'r:utf-8'){ |f| dal=Marshal.load(f)} - end - else SiSU_DAL::Source.new(@opt).create_dal - end - end - def read_fnm_idx_html - dal=[] - dal=if FileTest.file?(@fnm_idx_html) - if RUBY_VERSION < '1.9' - File.open(@fnm_idx_html){ |f| dal=Marshal.load(f)} - else File.open(@fnm_idx_html,'r:utf-8'){ |f| dal=Marshal.load(f)} - end - else nil - #SiSU_DAL::Source.new(@opt).create_dal - end -#p dal; dal - end - end - class Output - def initialize(md,data) - @md,@data=md,data - @my_make=SiSU_Env::Create_file.new(@md.cmd,@md.fns) - @dir=SiSU_Env::Info_env.new(@md.fns) - end - def hard_output - if @md.cmd =~/M/ - filename_meta=@my_make.file_meta - @data.each {|s| filename_meta.puts s.strip + "\n\n" unless s.strip.empty?} - else - hard="#{@dir.path.dal}/#{@md.fns}.meta" - File.unlink(hard) if FileTest.file?(hard) - end - end - def marshal - marshal_meta=@my_make.marshal_meta - File.open(marshal_meta,'w'){|f| Marshal.dump(@data.to_a,f)} - end - def idx_html_hard_output - if @md.book_idx and @md.cmd =~/M/ - filename_meta=@my_make.file_meta_idx_html - @data.each {|s| filename_meta.puts s.strip + "\n" unless s.strip.empty?} - else - hard_idx_html="#{@dir.path.dal}/#{@md.fns}.idx.html" - File.unlink(hard_idx_html) if FileTest.file?(hard_idx_html) - end - end - def idx_html_marshal - marshal_meta=@my_make.marshal_meta_idx_html - File.open(marshal_meta,'w'){|f| Marshal.dump(@data.to_a,f)} - end - end - class Make - @@dp=nil - def initialize(md,data) - @md,@data=md,data - @env=SiSU_Env::Info_env.new(@md.fns) - @dp=@@dp ||=SiSU_Env::Info_env.new.digest.pattern - end - def reset - @@flag_vocab=0 - @@line_mode='' - end - def song - reset - data=@data - @metafile="#{@env.path.dal}/#{@md.fns}.meta" - my_make_source_file=SiSU_Env::Create_file.new(@md.cmd,@md.fns) - data=data.join.split("\n\n") - data=SiSU_insertions::Insertions.new(data).expand_insertions? - data=SiSU_document_structure::Code.new(@md,data).code - data=SiSU_substitute_and_insert::SI.new(@md,data).substitutions_and_insertions? - data_new=[] - data.each do |x| - data_new << if x =~ /\n\n/m; x.split(/\n\n+/) - else x - end - end - data=data_new.flatten - data=SiSU_Syntax::Markup.new(@md,data).songsheet - data,endnote_array=SiSU_character_check::Check.new(data).character_check_and_oldstyle_endnote_array - data=SiSU_images::Images.new(@md,data).images - data=SiSU_document_structure::Tables.new(@md,data).tables - data=SiSU_numbering::Numbering.new(@md,data).numbering_song - data,book_index,html_idx=SiSU_book_index::Book_index.new(@md,data,@env).indexing_song if @md.book_idx - data=SiSU_endnotes::Endnotes.new(@md,data,endnote_array).endnotes - data=SiSU_hash::Object_digest.new(@md,data,@env).object_digest - meta=SiSU_metadata::Metadata.new(@md,data).metadata - #meta=metadata(data) - outputdata=data + meta - if @md.cmd =~/[mM]/ - SiSU_DAL::Output.new(@md,outputdata).hard_output - SiSU_DAL::Output.new(@md,outputdata).marshal - SiSU_DAL::Output.new(@md,html_idx).idx_html_hard_output - SiSU_DAL::Output.new(@md,html_idx).idx_html_marshal - end - reset - outputdata - end - protected - end -end -__END__ -dal output, rules to simplify parsing -nodes === objects === paragraphs === text blocks separated by \n\n - -dal output: -:verse :group and :code have -end -:table is not used diff --git a/lib/sisu/v0/dal_character_check.rb b/lib/sisu/v0/dal_character_check.rb deleted file mode 100644 index 99ee25cd..00000000 --- a/lib/sisu/v0/dal_character_check.rb +++ /dev/null @@ -1,109 +0,0 @@ -# coding: utf-8 -=begin - - * Name: SiSU - - * Description: a framework for document structuring, publishing and search - - * Author: Ralph Amissah - - * Copyright: (C) 1997 - 2009 Ralph Amissah All Rights Reserved. - - * License: GPL 3 or later: - - SiSU, a framework for document structuring, publishing and search - - Copyright (C) Ralph Amissah - - This program is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by the Free - Software Foundation, either version 3 of the License, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - more details. - - You should have received a copy of the GNU General Public License along with - this program. If not, see . - - If you have Internet connection, the latest version of the GPL should be - available at these locations: - - - - - - - - * SiSU uses: - * Standard SiSU markup syntax, - * Standard SiSU meta-markup syntax, and the - * Standard SiSU object citation numbering and system - - * Hompages: - - - - * Download: - - - * Ralph Amissah - - - - ** Description: system environment, resource control and configuration details - -=end - -module SiSU_character_check - class Check - def initialize(data) - @data=data - @comment='%' - @endnote_array=[] - end - def character_check_and_oldstyle_endnote_array - require 'iconv' - data=@data - #reset - @tuned_file,@endnote_array=[],[] - endnote_no=1 - data.each do |para| - para.strip! - para.gsub!(/^([12])~\?\s+/,'\1~ ') #conditional header for incorporated document 2004w12 - para.gsub!(/^[{~}]\s*$/,'') - para.gsub!(/^#{@comment}.*/,'') #remove comment and divider #% - para.gsub!(/<~#>|~#\s*/,"#{Mx[:fa_o]}~##{Mx[:fa_c]}") - para.gsub!(/-#\s*/,"#{Mx[:fa_o]}-##{Mx[:fa_c]}#{Mx[:fa_o]}~##{Mx[:fa_c]}") - #para.gsub!(/(#\{{3} arch-tag:|0\{{3}~cvs)\s+/, "0{{~rcs ") #KEEP ... ENABLE WIDER USE OF REVISION CONTROL - para.gsub!(/(#{Mx[:en_a_o]})\s*\s+/,'\1 '); para.gsub!(/(~\{\s*)\s+/,'\1 ') - para.gsub!(/ \/\//,"#{Mx[:br_line]}") #added 2004w29 - para.gsub!(/
/,"#{Mx[:br_line]}") #needed by xml, xhtml etc. - para.gsub!(/\t/,' ') - para.gsub!(/\342\200\231/u,"'") #if para =~/’/ #Avoid #‘ ’ #“ ” - para.gsub!(/�/u,' ') #watch, replace with char code - para.gsub!(/·/u,'*') - para.gsub!(/\\copy(?:right)?\b/,'©') - para.gsub!(/\\trademark\b|\\tm\b/,'®') - #non_utf8(para) - para=para + "\n" - unless para =~/^#{Mx[:gr_o]}code#{Mx[:gr_c]}/ - case para - when /\^~/ # endnotes - #% Note must do this first (earlier loop) and then enter gathered data into ~^\d+ - sub_para=para.dup - @endnote_array << sub_para.gsub!(/\n/,'').gsub!(/\^~\s+(.+)\s*/,%{#{Mx[:en_a_o]}#{endnote_no} \\1 #{Mx[:en_a_c]}}).strip - endnote_no+=1 - para=nil if para =~/\^~ .+/ #removes 'binary' endnote now in endnote array for later insertion - end - end - @tuned_file << para unless para.nil? - end - @tuned_file=@tuned_file.flatten - [@tuned_file,@endnote_array] - end - end -end -__END__ diff --git a/lib/sisu/v0/dal_doc_str.rb b/lib/sisu/v0/dal_doc_str.rb deleted file mode 100644 index 2e135243..00000000 --- a/lib/sisu/v0/dal_doc_str.rb +++ /dev/null @@ -1,265 +0,0 @@ -# coding: utf-8 -=begin - - * Name: SiSU - - * Description: a framework for document structuring, publishing and search - - * Author: Ralph Amissah - - * Copyright: (C) 1997 - 2009 Ralph Amissah All Rights Reserved. - - * License: GPL 3 or later: - - SiSU, a framework for document structuring, publishing and search - - Copyright (C) Ralph Amissah - - This program is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by the Free - Software Foundation, either version 3 of the License, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - more details. - - You should have received a copy of the GNU General Public License along with - this program. If not, see . - - If you have Internet connection, the latest version of the GPL should be - available at these locations: - - - - - - - - * SiSU uses: - * Standard SiSU markup syntax, - * Standard SiSU meta-markup syntax, and the - * Standard SiSU object citation numbering and system - - * Hompages: - - - - * Download: - - - * Ralph Amissah - - - - ** Description: document abstraction - -=end -module SiSU_document_structure - require "#{SiSU_lib}/dal_doc_str_tables" # dal_doc_str_tables.rb - require "#{SiSU_lib}/dal_doc_str_code" # dal_doc_str_code.rb - class Structure - def initialize(md,para) - @md,@para=md,para - end - def structure - structure_markup_normalize - structure_markup - @para - end - def structure_markup - @para=unless @para =~/#{Mx[:lv_o]}[1-9]:\S*?#{Mx[:lv_c]}/ - @para=case @para - when /^\s*#{@md.lv1}/; @para.sub!(/(?:<[:!]1!?>\s*)?(.+)/,"#{Mx[:lv_o]}1:#{Mx[:lv_c]} \\1") if @para !~/^#{Mx[:lv_o]}1:\S*?#{Mx[:lv_c]}/ - when /^\s*#{@md.lv2}/; @para.sub!(/(?:<[:!]2!?>\s*)?(.+)/,"#{Mx[:lv_o]}2:#{Mx[:lv_c]} \\1") if @para !~/^#{Mx[:lv_o]}2:\S*?#{Mx[:lv_c]}/ - when /^\s*#{@md.lv3}/; @para.sub!(/(?:<[:!]3!?>\s*)?(.+)/,"#{Mx[:lv_o]}3:#{Mx[:lv_c]} \\1") if @para !~/^#{Mx[:lv_o]}3:\S*?#{Mx[:lv_c]}/ - when /^\s*#{@md.lv4}/; @para.sub!(/(?:<[:!]4!?>\s*)?(.+)/,"#{Mx[:lv_o]}4:#{Mx[:lv_c]} \\1") if @para !~/^#{Mx[:lv_o]}4:\S*?#{Mx[:lv_c]}/ - when /^\s*#{@md.lv5}/; @para.sub!(/(?:<[:!]5!?>\s*)?(.+)/,"#{Mx[:lv_o]}5:#{Mx[:lv_c]} \\1") if @para !~/^#{Mx[:lv_o]}5:\S*?#{Mx[:lv_c]}/ - when /^\s*#{@md.lv6}/; @para.sub!(/(?:<[:!]6!?>\s*)?(.+)/,"#{Mx[:lv_o]}6:#{Mx[:lv_c]} \\1") if @para !~/^#{Mx[:lv_o]}6:\S*?#{Mx[:lv_c]}/ - else @para - end - else @para - end - end - def structure_markup_normalize - para=if @md.markup_version.to_f >= 0.38 #%convert internal representation, consider making 0.38 structure default ([A-C1-6] instead of [1-9]), requires downstream changes - #keep and implement, requires downstream changes: - #@para.gsub!(/^6~/,'9~') - #@para.gsub!(/^5~/,'8~') - #@para.gsub!(/^4~/,'7~') - @para.gsub!(/^[456]~/,'!_') - @para.gsub!(/^3~(\S+)/,"#{Mx[:lv_o]}6:\\1#{Mx[:lv_c]}") - @para.gsub!(/^3~\s+/,"#{Mx[:lv_o]}6:#{Mx[:lv_c]}") - @para.gsub!(/^2~(\S+)/,"#{Mx[:lv_o]}5:\\1#{Mx[:lv_c]}") - @para.gsub!(/^2~\s+/,"#{Mx[:lv_o]}5:#{Mx[:lv_c]}") - @para.gsub!(/^1~(\S+)/,"#{Mx[:lv_o]}4:\\1#{Mx[:lv_c]}") - @para.gsub!(/^1~\s+/,"#{Mx[:lv_o]}4:#{Mx[:lv_c]}") - @para.gsub!(/^:?C~(\S+)/,"#{Mx[:lv_o]}3:\\1#{Mx[:lv_c]}") - @para.gsub!(/^:?C~\s+/,"#{Mx[:lv_o]}3:#{Mx[:lv_c]}") - @para.gsub!(/^:?B~(\S+)/,"#{Mx[:lv_o]}2:\\1#{Mx[:lv_c]}") - @para.gsub!(/^:?B~\s+/,"#{Mx[:lv_o]}2:#{Mx[:lv_c]}") - @para.gsub!(/^:?A~(\S+)/,"#{Mx[:lv_o]}1:\\1#{Mx[:lv_c]}") - @para.gsub!(/^:?A~\s+/,"#{Mx[:lv_o]}1:#{Mx[:lv_c]}") - @para=if @para =~/^@(?:level|markup):\s/ - @para.gsub!(/3/,'6') - @para.gsub!(/2/,'5') - @para.gsub!(/1/,'4') - @para.gsub!(/:?C/,'3') - @para.gsub!(/:?B/,'2') - @para.gsub!(/:?A/,'1') - @para - else @para - end - else @para - end - end - def structure_marks - para=if @md.markup_version.to_f < 0.38 - @para.gsub!(/^1~(\S+)/,"#{Mx[:lv_o]}1:\\1#{Mx[:lv_c]}") - @para.gsub!(/^1~\s+/,"#{Mx[:lv_o]}1:#{Mx[:lv_c]}") - @para.gsub!(/^2~(\S+)/,"#{Mx[:lv_o]}2:\\1#{Mx[:lv_c]}") - @para.gsub!(/^2~\s+/,"#{Mx[:lv_o]}2:#{Mx[:lv_c]}") - @para.gsub!(/^3~(\S+)/,"#{Mx[:lv_o]}3:\\1#{Mx[:lv_c]}") - @para.gsub!(/^3~\s+/,"#{Mx[:lv_o]}3:#{Mx[:lv_c]}") - @para.gsub!(/^4~(\S+)/,"#{Mx[:lv_o]}4:\\1#{Mx[:lv_c]}") - @para.gsub!(/^4~\s+/,"#{Mx[:lv_o]}4:#{Mx[:lv_c]}") - @para.gsub!(/^5~(\S+)/,"#{Mx[:lv_o]}5:\\1#{Mx[:lv_c]}") - @para.gsub!(/^5~\s+/,"#{Mx[:lv_o]}5:#{Mx[:lv_c]}") - @para.gsub!(/^6~(\S+)/,"#{Mx[:lv_o]}6:\\1#{Mx[:lv_c]}") - @para.gsub!(/^6~\s+/,"#{Mx[:lv_o]}6:#{Mx[:lv_c]}") - @para.gsub!(/^[789]~/,'!_') - @para - else @para - end - end - end - class Struct - def initialize(o) - @o=o - end - def structure - def txt - @o[:txt] - end - def node - @o[:node] - end - def ocn - @o[:ocn] - end - def lv - @o[:lv] - end - def type - @o[:type] - end - self - end - end - class OCN - def initialize(md,data) - @md,@data=md,data - end - def ocn #and auto segment numbering increment - data=@data - @o_array=[] - node=ocn=ocn_dv=ocn_sp=ocnh=ocnh1=ocnh2=ocnh3=ocnh4=ocnh5=ocnh6=ocno=ocnp=ocnt=ocnc=ocng=ocni=ocnm=ocnu=ocnk=0 # h heading, o other, t table, g group, i image - node_count_flag=false - headings='' #where headings omitted an alternative form of ocn heading numbering is required for html and other linking... - #headings=if @md.ocn.inspect =~/skip=headings/; '^(?:[A-C]|[1-9])~\S* |' - #else '' - #end - regex_exclude_ocn_and_node = /#{headings}^%{1,4}\s|#{Rx[:meta]}|^@\S+?:\s|^0~|^4~endnotes|^#{Mx[:lv_o]}4:endnotes#{Mx[:lv_c]}|^<\/center>|<:ee>|<:e[:_]>|^\^~ |<:e[:_]\d+?>|^#{Mx[:fa_o]}p[bn]#{Mx[:fa_c]}|^<:\#|<:- |<[:!]!4|||||<\/tr>|
|\[endnotes\]|<:zz>|<:isbn-|<:journal-|<:conference-|#{Mx[:br_endnotes]}/i #ocn here #  added with Tune.code #¡ - regex_exclude_ocn = /^(?:alt|code|group|poem|table)\{|^\}(?:alt|code|group|poem|table)|^\}table$/ #ocn here #  added with Tune.code #¡ - data.each do |para| - o={} - if para =~/\w|\S|<|\(/ - if para !~ regex_exclude_ocn_and_node - if node_count_flag \ - or para=~/^#{Mx[:lv_o]}1:/ - node_count_flag=true - end - node+=1 if node_count_flag - if para !~ regex_exclude_ocn # regex_exclude_large previously excluded - unless para=~/<:#>|~#|-#/ # |^\s*\*\s*\*\s*\*\s*$ <-consider leaving un-numbered - ocn+=1 - if para=~/^#{Mx[:lv_o]}[1-9]:\S*?#{Mx[:lv_c]}/ \ - or para =~@md.lv1 \ - or para =~@md.lv2 \ - or para =~@md.lv3 \ - or para =~@md.lv4 \ - or para =~@md.lv5 \ - or para =~@md.lv6 - ocnh+=1 - if para=~/^#{Mx[:lv_o]}1:(\S*?)#{Mx[:lv_c]}/ \ - or para =~@md.lv1 - ocnh1+=1 #heading - ocn_dv,ocn_sp="1:#{ocnh1}","h#{ocnh}" - elsif para=~/^#{Mx[:lv_o]}2:(\S*?)#{Mx[:lv_c]}/ \ - or para =~@md.lv2; ocnh2+=1 - ocn_dv,ocn_sp="2:#{ocnh2}","h#{ocnh}" - elsif para=~/^#{Mx[:lv_o]}3:(\S*?)#{Mx[:lv_c]}/ \ - or para =~@md.lv3; ocnh3+=1 - ocn_dv,ocn_sp="3:#{ocnh3}","h#{ocnh}" - elsif para=~/^#{Mx[:lv_o]}4:(\S*?)#{Mx[:lv_c]}/ \ - or para =~@md.lv4; ocnh4+=1 - ocn_dv,ocn_sp="4:#{ocnh4}","h#{ocnh}" - elsif para=~/^#{Mx[:lv_o]}5:(\S*?)#{Mx[:lv_c]}/ \ - or para =~@md.lv5; ocnh5+=1 - ocn_dv,ocn_sp="5:#{ocnh5}","h#{ocnh}" - elsif para=~/^#{Mx[:lv_o]}6:(\S*?)#{Mx[:lv_c]}/ \ - or para =~@md.lv6; ocnh6+=1 - ocn_dv,ocn_sp="6:#{ocnh6}","h#{ocnh}" - end - else - ocno+=1 - if para=~/#{Mx[:gr_o]}TZ#{Mx[:gr_c]}/; ocnt+=1 #table - ocn_dv,ocn_sp="o#{ocno}","t#{ocnt}" - elsif para=~/^#{Mx[:gr_o]}code#{Mx[:gr_c]}/; ocnc+=1 #code block - ocn_dv,ocn_sp="o#{ocno}","c#{ocnc}" - elsif para=~/^#{Mx[:gr_o]}(?:group|alt|verse)#{Mx[:gr_c]}/; ocng+=1 #group, poem - ocn_dv,ocn_sp="o#{ocno}","g#{ocng}" - elsif para=~/#{Mx[:lnk_o]}\S+?\.(?:png|jpg|gif)\s+/m; ocni+=1 #image - ocn_dv,ocn_sp="o#{ocno}","i#{ocni}" - else ocnp+=1 #paragraph - ocn_dv,ocn_sp="o#{ocno}","p#{ocnp}" - end - end - o[:txt],o[:node],o[:ocn],o[:lv],o[:type]=para,node,ocn,ocn_dv,ocn_sp - else ocnu+=1 - #if para=~/-#/ #if implemented would remove need to keep <-#> - # ocnk+=1 - # ocn_dv,ocn_sp="k#{ocnk}","u#{ocnu}" - #else - # ocn_dv,ocn_sp="u#{ocnu}","u#{ocnu}" - #end - #para.gsub!(/<~#>|<-#>/,'') if para #get rid of need - para.gsub!(/#{Mx[:fa_o]}~##{Mx[:fa_c]}/,'') if para - ocn_dv,ocn_sp="u#{ocnu}","u#{ocnu}" - o[:txt],o[:node],o[:ocn],o[:lv],o[:type]=para,node,0,ocn_dv,ocn_sp - end - else o[:txt],o[:node],o[:ocn],o[:lv],o[:type]=para,node,nil,nil,nil - end - else - para=if para !~/^%{1,4}\s/ - o[:txt],o[:node],o[:ocn],o[:lv],o[:type]=para,node,nil,nil,nil - else '' - end - end - end - para.gsub!(/\n\n/,"\n") if para =~/#{Mx[:gr_o]}(?:code|verse|alt|group)#{Mx[:gr_c]}/ #newlines taken out - para.gsub!(/(#{Mx[:gr_o]}(?:code-end)#{Mx[:gr_c]})/,"\n\\1") if para =~/#{Mx[:gr_o]}(?:code-end)#{Mx[:gr_c]}/ #newlines added check - if para =~/#{Mx[:gr_o]}Th?#{Mx[:tc_p]}/u; para.gsub!(/(#{Mx[:gr_o]}Th?#{Mx[:tc_p]}.+?)#{Mx[:gr_c]}/u,"\\1#{Mx[:tc_p]}~#{o[:ocn]};#{o[:lv]};#{o[:type]}#{Mx[:gr_c]}") - end - @o_array << Struct.new(o).structure if o - end - @o_array - end - end - class Code < SiSU_document_structure_code::Code - end - class Tables < SiSU_document_structure_tables::Tables - end -end -__END__ diff --git a/lib/sisu/v0/dal_doc_str_code.rb b/lib/sisu/v0/dal_doc_str_code.rb deleted file mode 100644 index 02643fa3..00000000 --- a/lib/sisu/v0/dal_doc_str_code.rb +++ /dev/null @@ -1,187 +0,0 @@ -# coding: utf-8 -=begin - - * Name: SiSU - - * Description: a framework for document structuring, publishing and search - - * Author: Ralph Amissah - - * Copyright: (C) 1997 - 2009 Ralph Amissah All Rights Reserved. - - * License: GPL 3 or later: - - SiSU, a framework for document structuring, publishing and search - - Copyright (C) Ralph Amissah - - This program is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by the Free - Software Foundation, either version 3 of the License, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - more details. - - You should have received a copy of the GNU General Public License along with - this program. If not, see . - - If you have Internet connection, the latest version of the GPL should be - available at these locations: - - - - - - - - * SiSU uses: - * Standard SiSU markup syntax, - * Standard SiSU meta-markup syntax, and the - * Standard SiSU object citation numbering and system - - * Hompages: - - - - * Download: - - - * Ralph Amissah - - - - ** Description: document abstraction - -=end -module SiSU_document_structure_code - class Instantiate < SiSU_Param::Parameters::Instructions - @@flag={} #Beware!! - def initialize - @@flag['table_to']=false - @@counter=@@column=@@columns=0 - @@line_mode='' - end - end - class Code - @@flag={} #Beware!! - def initialize(md,data) - @md,@data=md,data - Instantiate.new - end - def code - data=@data - tuned_file=[] - @tuned_group=[] - @@counter=0 - @verse_count=0 - data.each do |para| - para.gsub!(/(#{Mx[:gr_o]}(?:code|verse|alt|group)#{Mx[:gr_c]})\s/,'\1') #double check - para.gsub!(/(?:\n\s*\n)+/m,"\n") unless @@flag['code'] - if para =~/^code\{/ and not @@flag['code'] - @@flag['code']=true - @@counter=1 - para.gsub!(/^code\{.*/,"#{Mx[:gr_o]}code#{Mx[:gr_c]}") - elsif para =~/^(?:poem)\{/ \ - and not @@flag['code'] - @@flag['poem']=true - para.gsub!(/^(poem)\{.*/,"#{Mx[:gr_o]}verse#{Mx[:gr_c]}") - elsif para =~/^(?:alt|group)\{/ \ - and not @@flag['code'] #group not tested, stub 2005 - @@flag['group']=true - para.gsub!(/^(alt|group)\{.*/,"#{Mx[:gr_o]}\\1#{Mx[:gr_c]}") - end - if @@flag['code'] - if @@flag['code'] \ - and para =~/^\}code/ - para.gsub!(/^\}code.*/,"#{Mx[:gr_o]}code-end#{Mx[:gr_c]}") - @@flag['code']=false - end - if @@flag['code'] \ - or para =~/#{Mx[:gr_o]}code-end#{Mx[:gr_c]}/ #and para =~/\S/ - sub_array=if para !~/#{Mx[:gr_o]}code(?:-end)?#{Mx[:gr_c]}/; para.dup + "#{Mx[:br_nl]}" - else para.dup - end - @line_mode=sub_array.scan(/.+/) - #@line_mode=[] - #sub_array.scan(/.+/) {|w| @line_mode << w + '<:br>' if w =~/[\Ss]+/} - SiSU_document_structure_code::Code.new(@md,@line_mode).code_lines('code') - para=@line_mode.join - end - elsif ( @@flag['poem'] \ - or @@flag['group'] ) \ - and not @@flag['code'] - if @@flag['poem'] \ - and para =~/^\}(?:poem)/ - para.gsub!(/^\}(poem).*/,"\n#{Mx[:gr_o]}verse-end#{Mx[:gr_c]}") - @@flag['poem']=false - elsif ( @@flag['group'] \ - and para =~/^\}(?:alt|group)/ ) \ - and not @@flag['code'] - para.gsub!(/^\}(alt|group).*/,"#{Mx[:gr_o]}\\1-end#{Mx[:gr_c]}") - @@flag['group']=false - end - if @@flag['poem'] \ - or @@flag['group'] \ - and para =~/\S/ \ - and para !~/#{Mx[:gr_o]}(verse|code|alt|group)(-end)?#{Mx[:gr_c]}/ \ - and not @@flag['code'] - sub_array=para.dup - @line_mode=sub_array.scan(/.+/) - type=if @@flag['poem']; 'poem' - else 'group' - end - SiSU_document_structure_code::Code.new(@md,@line_mode).code_lines(type) - div=if @@flag['poem'] \ - and @verse_count > 0 - "\n" + "#{Mx[:gr_o]}verse-end#{Mx[:gr_c]}" + "\n\n" + "#{Mx[:gr_o]}verse#{Mx[:gr_c]}" - else '' - end - @verse_count+=1 if @@flag['poem'] - para = div + @line_mode.join - else para - end - end - if @@flag['code'] \ - or @@flag['poem'] \ - or @@flag['group'] - @tuned_group << para if para =~/\S+/ - elsif para =~/#{Mx[:gr_o]}(?:code|alt|group|verse)-end#{Mx[:gr_c]}/ - @verse_count=0 - @tuned_group << para - tuned_file <<= if para =~/#{Mx[:gr_o]}group-end#{Mx[:gr_c]}/ - @tuned_group.join("\n") - else @tuned_group=@tuned_group.join - @tuned_group.gsub!(/#{Mx[:br_nl]}#{Mx[:br_nl]}(#{Mx[:gr_o]}code-end#{Mx[:gr_c]})/,'\1') - @tuned_group - end - @tuned_group=[] - else tuned_file << para - end - end - tuned_file - end - def code_lines(type='') - data=@data - data.each do |line| - if line =~/\S/ \ - and line !~/^code\{|^\}code|#{Mx[:gr_o]}code.+/ - line.gsub!(/\s\s/,"#{Mx[:nbsp]}#{Mx[:nbsp]}") - line.gsub!(/^/,"#{Mx[:gr_o]}codeline#{Mx[:gr_c]}") if type=='code' # try sort for texpdf special case - if line =~/(?:https?|file|ftp):\/\/\S+$/ - line.gsub!(/$/," #{Mx[:br_nl]}") - else line.gsub!(/$/,"#{Mx[:br_nl]}") #unless type=='code' - end - if @@flag['code']; @@counter+=1 - else - end - elsif line =~/^\s*$/ - line.gsub!(/$/,"#{Mx[:br_nl]}") - end - end - end - end -end -__END__ diff --git a/lib/sisu/v0/dal_doc_str_tables.rb b/lib/sisu/v0/dal_doc_str_tables.rb deleted file mode 100644 index ff29706b..00000000 --- a/lib/sisu/v0/dal_doc_str_tables.rb +++ /dev/null @@ -1,198 +0,0 @@ -# coding: utf-8 -=begin - - * Name: SiSU - - * Description: a framework for document structuring, publishing and search - - * Author: Ralph Amissah - - * Copyright: (C) 1997 - 2009 Ralph Amissah All Rights Reserved. - - * License: GPL 3 or later: - - SiSU, a framework for document structuring, publishing and search - - Copyright (C) Ralph Amissah - - This program is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by the Free - Software Foundation, either version 3 of the License, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - more details. - - You should have received a copy of the GNU General Public License along with - this program. If not, see . - - If you have Internet connection, the latest version of the GPL should be - available at these locations: - - - - - - - - * SiSU uses: - * Standard SiSU markup syntax, - * Standard SiSU meta-markup syntax, and the - * Standard SiSU object citation numbering and system - - * Hompages: - - - - * Download: - - - * Ralph Amissah - - - - ** Description: document abstraction tables - -=end -module SiSU_document_structure_tables - class Instantiate < SiSU_Param::Parameters::Instructions - @@flag={} - def initialize - @@flag['table_to']=false - @@counter=@@column=@@columns=0 - @@line_mode='' - end - end - class Tables - @@flag={} - def initialize(md,data) - @md,@data=md,data - Instantiate.new - end - def table_visual(para) - count=0 - @row=[] - table=[] - @rows=para.split(/;;/) - @rows.compact! #(c\d+?;.+?) - @rows.each do |row| - count +=1 - @row[count]=row.split(/\|/) - end - @row.compact! - widths=if @row[0].join =~/^\{(?:t|table)(?:~h)?\s+\d+;/ - col_width=@row[0].join.scan(/\d+/) - rem=(100 - col_width[0].to_i) - col_w=rem/(@row[1].length - 1) - "#{col_width[0].to_s};" + ("#{col_w};" * (@row[1].length-1)) - else - col_w=100/@row[1].length - "#{col_w};" * @row[1].length - end - @row.delete_if {|r| r[0] =~/\{(?:table|t)(?:~h)?(?:\s+c\d+;)?[\d; ]*\}/} - w=widths.split(/;/) - tuned_file=[] - tuned_file << if para =~/\{(?:t|table)~h(?:\sc\d+;)?[\d; ]*\}/ - "#{Mx[:gr_o]}Th#{Mx[:tc_p]} c#{@row[2].length}; #{widths}#{Mx[:gr_c]}" - elsif para =~/\{(?:t|table)(?:\sc\d+;)?[\d; ]*\}/ - "#{Mx[:gr_o]}T#{Mx[:tc_p]} c#{@row[2].length}; #{widths}#{Mx[:gr_c]}" - end - @row.each do |l| - l << '' if l.length == (@row[1].length - 1) - table=[] - if l.length == @row[1].length - table << Mx[:tc_o] #'' - n= -1 - l.each do |c| - n +=1 #'' + c + '' - table << if c =~/\A(?:\n)?\s*\Z/ - "#{Mx[:tc_p]}#{Mx[:tc_p]}#{w[n]}#{Mx[:tc_p]}" + ' ' - else - "#{Mx[:tc_p]}#{Mx[:tc_p]}#{w[n]}#{Mx[:tc_p]}" + c.strip - end - end - table << Mx[:tc_c] - tuned_file << table.join - end - end - tuned_file << "#{Mx[:gr_o]}TZ#{Mx[:gr_c]}" #'' - tuned_file=tuned_file.compact.join("\n") - end - def tables - data=@data - count=0 - @row,@tuned_file,@tuned_table=[],[],[] - data.each do |para| - para.gsub!(/\n\s+\n/,"\n") - para.gsub!(/\s+\n/,"\n") - para.gsub!(/<:hi>/,'') # bright yellow rgb(255,255,0) pale yellow rgb(255,255,200) - para.gsub!(/<:\/hi>/,%{}) - table=[] - if para =~/^\{(?:t|table)(?:~h)?(?:\sc\d+;)?[\d; ]*\}/ - @tuned_file << table_visual(para) - @tuned_file=@tuned_file.flatten - elsif @@flag['table_to'] \ - or para[/^table\{(?:~h)?/] - if para[/table\{(?:~h)?\s+c(\d+;.+)/] - instructions=$1 - @@column=instructions.split(/;\s*/) - @@columns=@@column[0] - para.gsub!(/^table\{~h\s+(c\d+?;.+?)$/,"#{Mx[:gr_o]}Th#{Mx[:tc_p]} \\1#{Mx[:gr_c]}") - para.gsub!(/^table\{\s+(c\d+?;.+?)$/,"#{Mx[:gr_o]}T#{Mx[:tc_p]} \\1#{Mx[:gr_c]}") - @@flag['table_to']=true - end - if @@flag['table_to'] \ - and para =~/\}table/ - para.gsub!(/^\}table\s*$/,"#{Mx[:gr_o]}TZ#{Mx[:gr_c]}\n") - para.gsub!(/\n/,' ') #newlines taken out - para.strip! - @tuned_table << para - @tuned_table.delete('') - @tuned_file << @tuned_table.compact.join("\n") #@tuned_table.compact.join =~/\S+/ #would be preferable - para='' - @tuned_table=[] - @@flag['table_to']=false - end - if @@flag['table_to'] \ - and para =~/\S/ - @@counter=1 - sub_array=para.dup - @@line_mode=sub_array.scan(/.+/u) - Tables.new(@md,@@line_mode).tr_td - para=@@line_mode.join - para.gsub!(/(.*\S+.*)\Z/m,"#{Mx[:tc_o]}\\1#{Mx[:tc_c]}") unless para =~/#{Mx[:gr_o]}Th?#{Mx[:tc_p]}/u - end - para.gsub!(/\n/,' ') - para.strip! - @tuned_table << para - else - para.gsub!(/\n/,' ') unless para =~/#{Mx[:gr_o]}(?:code|verse|alt|group)#{Mx[:gr_c]}/ - para.strip! - @tuned_file << para - end - @tuned_file - end - @tuned_file - end - def tr_td - data=@data - data.each do |line| - if @@counter <= @@columns.to_i \ - and line !~/(\}T\s*$|#{Mx[:gr_o]}:table[-_](close|end)#{Mx[:gr_c]}|#{Mx[:gr_o]}TZ#{Mx[:gr_c]})/ - #if line.encoding.inspect =~/Encoding:ASCII-8BIT/ - # line=line.force_encoding('utf-8') - #end - line.gsub!(/(.+)/,"#{Mx[:tc_p]}#{Mx[:tc_p]}#{@@column[@@counter]}#{Mx[:tc_p]}\\1") unless line =~/#{Mx[:gr_o]}Th?#{Mx[:tc_p]}/u - @@counter+=1 - end - end - data - end - end -end -__END__ -#p line.encoding -@data.each {|x| p x.encoding } -p para if para.encoding.inspect =~/Encoding:ASCII-8BIT/ diff --git a/lib/sisu/v0/dal_endnotes.rb b/lib/sisu/v0/dal_endnotes.rb deleted file mode 100644 index 77909443..00000000 --- a/lib/sisu/v0/dal_endnotes.rb +++ /dev/null @@ -1,129 +0,0 @@ -# coding: utf-8 -=begin - - * Name: SiSU - - * Description: a framework for document structuring, publishing and search - - * Author: Ralph Amissah - - * Copyright: (C) 1997 - 2009 Ralph Amissah All Rights Reserved. - - * License: GPL 3 or later: - - SiSU, a framework for document structuring, publishing and search - - Copyright (C) Ralph Amissah - - This program is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by the Free - Software Foundation, either version 3 of the License, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - more details. - - You should have received a copy of the GNU General Public License along with - this program. If not, see . - - If you have Internet connection, the latest version of the GPL should be - available at these locations: - - - - - - - - * SiSU uses: - * Standard SiSU markup syntax, - * Standard SiSU meta-markup syntax, and the - * Standard SiSU object citation numbering and system - - * Hompages: - - - - * Download: - - - * Ralph Amissah - - - - ** Description: system environment, resource control and configuration details - -=end -module SiSU_endnotes - class Endnotes - def initialize(md,data,endnote_array=nil) - @md,@data,@endnote_array=md,data,endnote_array - @endnote_counter,@endnote_counter_asterisk,@endnote_counter_dag=1,1,1 - end - def endnotes - data=@data - @tuned_file=[] - endnote_no,endnote_ref=1,1 - #% endnote work zone - data.each do |para| - # manually numbered endnotes --> - if @md.mod.inspect =~/--no-asterisk|--no-annotate/ - para.gsub!(/#{Mx[:en_b_o]}\s.+?#{Mx[:en_b_c]}/,'') - end - if @md.mod.inspect =~/--no-dagger|--no-annotate/ - para.gsub!(/#{Mx[:en_b_o]}[+]\s.+?#{Mx[:en_b_c]}/,'') - end - unless para =~/^#{Mx[:gr_o]}code#{Mx[:gr_c]}/ - case para - # auto-numbered endnotes --> - when /#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}|#{Mx[:en_b_o]}[*+]\s+.+?#{Mx[:en_b_c]}/ - para.gsub!(/\s*(#{Mx[:en_a_c]}|#{Mx[:en_b_c]})/,' \1') # required 2003w31 - word_mode=para.scan(/#{Mx[:gr_o]}group#{Mx[:gr_c]}\n|\n#{Mx[:gr_o]}group-end#{Mx[:gr_c]}|\S+/m) - word_mode=endnote_call_number(word_mode) - para=word_mode.join(' ') - endnote_ref+=1 - when /~\^(?:\s|$)|<:e>/ - #%Note inserts endnotes previously gathered from /^(|[-~]\{{3})/ (in earlier loop) - word_mode=para.scan(/#{Mx[:gr_o]}group#{Mx[:gr_c]}\n|\n#{Mx[:gr_o]}group-end#{Mx[:gr_c]}|\S+/m) - word_mode=endnote_call_number(word_mode) - para=word_mode.join(' ') - endnote_ref+=1 - end - end - @tuned_file << para - end - @endnote_counter,@endnote_counter_asterisk,@endnote_counter_dag=1,1,1 - @tuned_file=@tuned_file.flatten - end - def endnote_call_number(data) - data.each do |word| - unless data =~/^#{Mx[:gr_o]}code#{Mx[:gr_c]}/ - case word - when /#{Mx[:en_a_o]}/ - unless word =~/#{Mx[:en_a_o]}[*+]+/ - word.gsub!(/#{Mx[:en_a_o]}/,"#{Mx[:en_a_o]}#{@endnote_counter} ") - @endnote_counter+=1 - end - when /#{Mx[:en_b_o]}/ - if word =~/#{Mx[:en_b_o]}[+]/ - word.gsub!(/#{Mx[:en_b_o]}[+]/,"#{Mx[:en_b_o]}\+#{@endnote_counter_dag} ") - @endnote_counter_dag+=1 - else - word.gsub!(/#{Mx[:en_b_o]}[*]?/,"#{Mx[:en_b_o]}\*#{@endnote_counter_asterisk} ") - @endnote_counter_asterisk+=1 - end - when /~\^|<:e>/ - if @endnote_array - word.gsub!(/~\^|<:e>/,"#{@endnote_array[@endnote_counter-1]}") - @endnote_counter+=1 - end - end - end - end - end - end -end -__END__ - diff --git a/lib/sisu/v0/dal_expand_insertions.rb b/lib/sisu/v0/dal_expand_insertions.rb deleted file mode 100644 index 90102c7d..00000000 --- a/lib/sisu/v0/dal_expand_insertions.rb +++ /dev/null @@ -1,196 +0,0 @@ -# coding: utf-8 -=begin - - * Name: SiSU - - * Description: a framework for document structuring, publishing and search - - * Author: Ralph Amissah - - * Copyright: (C) 1997 - 2009 Ralph Amissah All Rights Reserved. - - * License: GPL 3 or later: - - SiSU, a framework for document structuring, publishing and search - - Copyright (C) Ralph Amissah - - This program is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by the Free - Software Foundation, either version 3 of the License, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - more details. - - You should have received a copy of the GNU General Public License along with - this program. If not, see . - - If you have Internet connection, the latest version of the GPL should be - available at these locations: - - - - - - - - * SiSU uses: - * Standard SiSU markup syntax, - * Standard SiSU meta-markup syntax, and the - * Standard SiSU object citation numbering and system - - * Hompages: - - - - * Download: - - - * Ralph Amissah - - - - ** Description: system environment, resource control and configuration details - -=end -module SiSU_insertions - class Insertions - def initialize(data) - @data=data - end - def output_filetypes_in_cmd(cmd_shortcut,source=nil) - #make list of file types in shortcut command (as configured), e.g. when sisu -3 is used - cf_defaults=SiSU_Env::Info_processing_flag.new - cmd_list=case cmd_shortcut.inspect - when /0/; cf_defaults.cf_0 - when /1/; cf_defaults.cf_1 - when /2/; cf_defaults.cf_2 - when /3/; cf_defaults.cf_3 - when /4/; cf_defaults.cf_4 - when /5/; cf_defaults.cf_5 - end - file_type_names={} - file_type_names[:gen],file_type_names[:src]=[],[] - file_type_names[:gen] <<= if cmd_list =~ /y/; 'sisu_manifest.html' - end - file_type_names[:gen] <<= if cmd_list =~ /h/; ['toc.html', 'doc.html'] - end - file_type_names[:gen] <<= if cmd_list =~ /p/; ['landscape.pdf', 'portrait.pdf'] - end - #file_type_names[:gen] <<= if cmd_list =~ /i/; 'manpage.1' - #end - file_type_names[:gen] <<= if cmd_list =~ /o/; 'opendocument.odt' - end - file_type_names[:gen] <<= if cmd_list =~ /b/; 'scroll.xhtml' - end - file_type_names[:gen] <<= if cmd_list =~ /x/; 'sax.xml' - end - file_type_names[:gen] <<= if cmd_list =~ /X/; 'dom.xml' - end - file_type_names[:gen] <<= if cmd_list =~ /a/; 'plain.txt' - end - file_type_names[:gen] <<= if cmd_list =~ /g/; 'wiki.txt' - end - file_type_names[:gen] <<= if cmd_list =~ /w/; 'concordance.html' - end - file_type_names[:gen] <<= if cmd_list =~ /N/; 'digest.txt' - end - file_type_names[:src] <<= if source and cmd_shortcut =~ /s/; source - end - file_type_names[:src] <<= if cmd_shortcut =~ /S/; "#{source}.zip" - end - file_type_names[:gen]=file_type_names[:gen].flatten - file_type_names[:src]=file_type_names[:src].flatten - file_type_names - end - def expand_insertions? - data=@data - tuned_file,tuned_file_tmp=[],[] - data.each do |para| - if para !~/^%+\s/ \ - and para =~/\{(?:~\^\s+)?(.+?)\s\[(?:\d(?:[sS]*))\]\}(?:\.\.\/\S+?\/|\S+?\.ss[tm]\b)/ - txt,cmd,source,url_dir,note,manifest=nil,nil,nil,nil,nil,nil - @u=SiSU_Env::Info_env.new.url - if defined? @u.remote - if para =~/(.+?)\{(.+?)\s\[(\d[sS]*)\]\}((\S+?)\.ss[tm]\b)(.*)/m - pre,txt,cmd,source,url_dir,note="#{$1.strip} ",$2,$3,$4,$5,$6 - elsif para =~/\{(.+?)\s\[(\d[sS]*)\]\}((\S+?)\.ss[tm]\b)(.*)/ - pre,txt,cmd,source,url_dir,note='',$1,$2,$3,$4,$5 - end - manifest="#{pre}{#{txt} }#{@u.remote}/#{url_dir}/toc.html#{note}\n\n" - else - puts "error, does currently support relative paths (reltive paths were removed, as had problems for citation, and was not suited to all output types should possibly reconsider) #{__FILE__} #{__LINE__}" - if para =~/\{(?:~\^\s+)?(.+?)\s\[(\d[sS]*)\]\}\.\.\/(\S+?)\/(\s+#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]})?/ - txt,cmd,url_dir,note=$1,$2,$3,$4 - manifest="{ #{txt} }../#{url_dir}/toc.html#{note}\n\n" - end - end - tuned_file_tmp << manifest - output_filetypes=output_filetypes_in_cmd(cmd,source) - output_filetypes[:gen].each do |o_f| - describe = case o_f - when /sisu_manifest.html/; '~^ document manifest' - when /toc.html/; ' html, segmented text' - when /doc.html/; ' html, scroll, document in one' - when /landscape.pdf/; ' pdf, landscape' - when /portrait.pdf/; ' pdf, portrait' - when /opendocument.odt/; ' odf:odt, open document text' - when /scroll.xhtml/; ' xhtml scroll' - when /sax.xml/; ' xml, sax' - when /dom.xml/; ' xml, dom' - when /plain.txt/; ' plain text utf-8' - #when /manpage.1/; ' man, 1' - when /wiki.txt/; ' wiki text' - when /concordance.html/; ' concordance' - when /digest.txt/; ' dcc, document content certificate (digests)' - else nil - end - if describe - tuned_file_tmp << if @u.remote #to double space <:br> at beginning of entry - if describe =~/^~\^ / - "#{Mx[:nbsp]*4} {#{describe} }#{@u.remote}/#{url_dir}/#{o_f} " - else - "#{Mx[:nbsp]*4} { #{describe} }#{@u.remote}/#{url_dir}/#{o_f} " - end - else - if describe =~/^~\^ / - "#{Mx[:nbsp]*4} {#{describe} }../#{url_dir}/#{o_f} " - else "#{Mx[:nbsp]*4} { #{describe} }../#{url_dir}/#{o_f} " - end - end - end - end - output_filetypes[:src].each do |o_f| - describe=case o_f - when /#{source}\.zip/; ' markup source (zipped) pod' - when /#{source}/; ' markup source text' - else nil - end - if describe - tuned_file_tmp << if @u.remote - x=if describe =~/zip/ - "#{Mx[:nbsp]*4} {#{describe} }#{@u.src_pod}/#{o_f} " - else "#{Mx[:nbsp]*4} {#{describe} }#{@u.src_txt}/#{o_f} " - end - else - x=if describe =~/zip/ - "#{Mx[:nbsp]*4} { #{describe} }../pod/#{o_f} " - else "#{Mx[:nbsp]*4} { #{describe} }../zip/#{o_f} " - end - end - end - end - tuned_file << 'group{' << tuned_file_tmp.join("\n") << '}group' - #tuned_file << 'group{' << tuned_file_tmp.join("\n").strip << '}group' - tuned_file_tmp=[] - else tuned_file << para - end - end - tuned_file - end - end -end -__END__ diff --git a/lib/sisu/v0/dal_hash_digest.rb b/lib/sisu/v0/dal_hash_digest.rb deleted file mode 100644 index 2b7370ca..00000000 --- a/lib/sisu/v0/dal_hash_digest.rb +++ /dev/null @@ -1,173 +0,0 @@ -# coding: utf-8 -=begin - - * Name: SiSU - - * Description: a framework for document structuring, publishing and search - - * Author: Ralph Amissah - - * Copyright: (C) 1997 - 2009 Ralph Amissah All Rights Reserved. - - * License: GPL 3 or later: - - SiSU, a framework for document structuring, publishing and search - - Copyright (C) Ralph Amissah - - This program is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by the Free - Software Foundation, either version 3 of the License, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - more details. - - You should have received a copy of the GNU General Public License along with - this program. If not, see . - - If you have Internet connection, the latest version of the GPL should be - available at these locations: - - - - - - - - * SiSU uses: - * Standard SiSU markup syntax, - * Standard SiSU meta-markup syntax, and the - * Standard SiSU object citation numbering and system - - * Hompages: - - - - * Download: - - - * Ralph Amissah - - - - ** Description: system environment, resource control and configuration details - -=end - -module SiSU_hash - class Object_digest - def initialize(md,data,env=nil) - @md,@data,@env=md,data,env - @env ||=SiSU_Env::Info_env.new(@md.fns) - end - def object_digest - # 1. clean/stripped text without any markup, paragraph, headings etc. without endnotes - # 2. endnotes clean/stripped text digest only (there may be several endnotes within a paragraph) - # 3. whole object, text with markup and any endnotes, (question: with or without the endnote digests??? presumption better without, [however may be easier to check with?]) - # [digests should not include other digests] - # vim==/<[0-9a-f]\{#{@@dl}\}\(:[0-9a-f]\{#{@@dl}\}\)\?>/ - require 'digest/md5' - require 'digest/sha2' - data=@data - @tuned_file=[] - data.compact! - data.each do |para| - para.strip! - if para=~/#{Mx[:id_o]}~\d+;(?:\w|[0-6]:)\d+;\w\d+#{Mx[:id_c]}/ \ - and para !~/#{Rx[:meta]}/ #test should not be necessary remove - if @env.digest.type =~/sha256/ - for hash_class in [ Digest::SHA256 ] - @tuned_file << stamped(para,hash_class) - end - else - for hash_class in [ Digest::MD5 ] - @tuned_file << stamped(para,hash_class) - end - end - else @tuned_file << para unless para.nil? - end - end - @tuned_file=@tuned_file.flatten - #use md5 or to create hash of each dal object including ocn, & add into to each dal object - end - def endnote_digest(data) - para_bit=[] - data.each do |en_plus| - para_bit <<= case en_plus - when /#{Mx[:en_a_o]}|#{Mx[:en_b_o]}/ - if en_plus =~/#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}|#{Mx[:en_b_o]}.+?#{Mx[:en_b_c]}/ - para_txt,en_open,en_txt,en_close=/(.*?)(#{Mx[:en_a_o]}|#{Mx[:en_b_o]})(.+?)(#{Mx[:en_a_c]}|#{Mx[:en_b_c]})/m.match(en_plus)[1..4] - stripped_en=strip_clean_of_markup(en_txt) - digest_en_strip=if @env.digest.type =~/sha256/ - Digest::SHA256.hexdigest(stripped_en) - else - Digest::MD5.hexdigest(stripped_en) - end - para_txt + en_open + en_txt + Mx[:id_o] + digest_en_strip + Mx[:id_c] + en_close - else puts "Error Exception - problem encountered with:\n#{en_plus}" #arbitrary exception, tidy up - end - else en_plus - end - end - para_bit.join - end - def stamped(para,hash_class) - @tuned=[] - para=strip_clean_extra_spaces(para) - digest_all=hash_class.hexdigest(para) # print "#{hash_class.name}: "; puts digest_all #length==32 or 64 - stripped=strip_clean_of_markup(para) - digest_strip=hash_class.hexdigest(stripped) - unless para =~/#{Mx[:fa_o]}code#{Mx[:fa_c]}/ - case para - when /#{Mx[:en_a_o]}[\d*+]+\s+.+?#{Mx[:en_a_c]}|#{Mx[:en_b_o]}[*+]\d+\s+.+?#{Mx[:en_b_c]}/m - en_and_para,en_and_para_digest=[],[] - para.gsub!(/\s*(#{Mx[:en_a_c]}|#{Mx[:en_b_c]})/m,' \1') #watch - para_plus_en=para.scan(/.*?#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}|.*?#{Mx[:en_b_o]}.+?#{Mx[:en_b_c]}/m) - para_tail=if para =~/(?:.*?#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}|.*?#{Mx[:en_b_o]}.+?#{Mx[:en_b_c]})+([\s\S]+)/m - /(?:.*?#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}|.*?#{Mx[:en_b_o]}.+?#{Mx[:en_b_c]})+(.*?#{Mx[:id_o]}~\d+;(?:\w|[0-6]:)\d+;\w\d+#{Mx[:id_c]})/m.match(para)[1] - #/(?:.*?#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}|.*?#{Mx[:en_b_o]}.+?#{Mx[:en_b_c]})+(.+?#{Mx[:id_o]}~\d+;(?:\w|[0-6]:)\d+;\w\d+#{Mx[:id_c]})/m.match(para)[1] - else '' - end - para_plus_en << para_tail - en_and_para_digest << endnote_digest(para_plus_en) - para_new=en_and_para_digest.join(' ') - @tuned << para_new + Mx[:id_o] + digest_strip + ':' + digest_all + Mx[:id_c] unless para.nil? - else @tuned << para + Mx[:id_o] + digest_strip + ':' + digest_all + Mx[:id_c] unless para.nil? - end - else @tuned << para + Mx[:id_o] + digest_strip + ':' + digest_all + Mx[:id_c] unless para.nil? - end - @tuned.join - end - def strip_clean_extra_spaces(s) # dal output tuned - s=s.dup - s=s.gsub(/[ ]+([,.;:?](?:$|\s))/,'\1') unless s =~/#{Mx[:en_a_o]}|#{Mx[:en_b_o]}/ - s=s.gsub(/ [ ]+/,' ') - s=s.gsub(/^ [ ]+/,'') - s=s.gsub(/ [ ]+$/,'') - s=s.gsub(/((?:#{Mx[:fa_bold_c]}|#{Mx[:fa_italics_c]})')[ ]+(s )/,'\1\2') - s=s.gsub(/((?:#{Mx[:fa_bold_c]}|#{Mx[:fa_italics_c]})')[ ]+(s )/,'\1\2') - end - def strip_clean_of_markup(s) # used for digest, define rules, make same as in db clean - #consider: <\/?[ib]>|<(?:\/ )?br>|(.+?)<\/del> - s=s.dup - s=s.gsub(/(?:<\/?[ib]>|#{Mx[:id_o]}~\d+;(?:\w|[0-6]:)\d+;\w\d+#{Mx[:id_c]}|#{Mx[:id_o]}#@dp:#@dp#{Mx[:id_c]}|^#{Mx[:lv_o]}[1-6]:\S+?#{Mx[:lv_c]}|#{Mx[:en_a_o]}\d+\s.+?#{Mx[:en_a_c]})/m,'') # markup and endnotes removed - #% same as db clean --> - s=s.gsub(/(.+?)<\/del>/,'DELETED(\1)') # deletions - s=s.gsub(/(\d+)<\/sup>/,'[\1]') - s=s.gsub(/(?:#{Mx[:nbsp]})+/,' ') - #s=s.gsub(//,"[TABLE]\n") # tables - #s=s.gsub(//,'\1') # tables - #s=s.gsub(/¡¡\d+¡/,' ') # tables - #s=s.gsub(/¡/,' ') # tables tidy later - #s=s.gsub(/<.+?>/,'') - s=s.gsub(/#{Mx[:lnk_o]}.+?\.(?:png|jpg|gif).+?#{Mx[:lnk_c]}(?:https?|file|ftp)\\\:\S+ /,' [image] ') # else image names found in search - s=s.gsub(/\s\s+/,' ') - s=s.strip - end - end -end -__END__ - diff --git a/lib/sisu/v0/dal_idx.rb b/lib/sisu/v0/dal_idx.rb deleted file mode 100644 index fec0e1ed..00000000 --- a/lib/sisu/v0/dal_idx.rb +++ /dev/null @@ -1,323 +0,0 @@ -# coding: utf-8 -=begin - - * Name: SiSU - - * Description: a framework for document structuring, publishing and search - - * Author: Ralph Amissah - - * Copyright: (C) 1997 - 2009 Ralph Amissah All Rights Reserved. - - * License: GPL 3 or later: - - SiSU, a framework for document structuring, publishing and search - - Copyright (C) Ralph Amissah - - This program is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by the Free - Software Foundation, either version 3 of the License, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - more details. - - You should have received a copy of the GNU General Public License along with - this program. If not, see . - - If you have Internet connection, the latest version of the GPL should be - available at these locations: - - - - - - - - * SiSU uses: - * Standard SiSU markup syntax, - * Standard SiSU meta-markup syntax, and the - * Standard SiSU object citation numbering and system - - * Hompages: - - - - * Download: - - - * Ralph Amissah - - - - ** Description: system environment, resource control and configuration details - -=end -module SiSU_book_index - class Book_index - def initialize(md,data,env=nil) - @md,@data,@env=md,data,env - @rgx_idx=/#{Mx[:idx_o]}(?:.+?)#{Mx[:idx_c]}\s*/ - #@rgx_idx=/\s*#{Mx[:idx_o]}(?:.+?)#{Mx[:idx_c]}\s*/ - @rgx_idx_ocn_init=/#{Mx[:idx_o]}(.+?)#{Mx[:idx_c]}\s*#{Mx[:id_o]}~(\d+)\S+?#{Mx[:id_c]}/ - @rgx_idx_ocn_seg=/(.+?)~(\d+)~(\S+)/ - @rgx_idx_ocn=/(.+?)~(\d+)/ - @rxp_lv1=/^#{Mx[:lv_o]}1:/ - @rxp_lv2=/^#{Mx[:lv_o]}2:/ - @rxp_lv3=/^#{Mx[:lv_o]}3:/ - @rxp_seg=/^#{Mx[:lv_o]}4:(\S+?)#{Mx[:lv_c]}/ - @rxp_to=Regexp.new("#{Mx[:id_o]}~(\\d+);(?:[oh]|[0-6]:)\\d+;\\w\\d+#{Mx[:id_c]}#{Mx[:id_o]}#@dp:#@dp#{Mx[:id_c]}|#{Mx[:id_o]}\S+?#{Mx[:id_c]}$") - @env ||=SiSU_Env::Info_env.new(@md.fns) - end - def indexing_song - data=@data - data,sisu_markup_idx,html_idx=extract_book_index(data) - data=clean_and_insert_index(data,sisu_markup_idx) - [data,sisu_markup_idx,html_idx] - end - def extract_book_index(data) - tuned_file=[] - idx_array=[] - data.each do |para| - if para =~@rxp_seg; @seg=para[@rxp_seg,1] - end - idx_array << @rgx_idx_ocn_init.match(para)[0].gsub(@rgx_idx_ocn_init,"\\1~\\2~#{@seg}") if para =~ @rgx_idx_ocn_init - tuned_file << para if para - end - idx_array=construct_idx_array(idx_array) if idx_array.length > 0 - if idx_array.length > 0 - the_idx=construct_book_index(idx_array) - #screen_print(the_idx) if @md.cmd.inspect =~/V/ - sisu_markup_idx,html_idx=nil,nil - if @md.book_idx - idx=index(the_idx) - output_html_idx(idx[:html]) - html_idx=idx[:html] - sisu_markup_idx=idx[:sst] - end - end - [tuned_file,sisu_markup_idx,html_idx] - end - def construct_idx_array(idx_array) - idx_lst=[] - idx_array.each do |idx| - idx_list,ocn,seg=@rgx_idx_ocn_seg.match(idx)[1..3] - idx_lst <<=if idx_list =~/;/ - g=idx_list.scan(/[^;]+/) - idxl=[] - g.each do |i| - i.strip! - idxl << { :rough_idx => i, :ocn => ocn, :seg => seg } - end - idxl - else { :rough_idx => idx_list, :ocn => ocn, :seg => seg } - end - end - idx_lst.flatten! - idx_lst - end - def construct_book_index(idx_array) - @the_idx={} - idx_array.each do |idx| - idx_lst=idx[:rough_idx].scan(/[^|:]+/) - idx_lst[0].strip! - if idx_lst[0] =~/.+?\+\d+/ - use,plus=/(.+?)\+(\d+)/.match(idx_lst[0])[1,2] - else use=idx_lst[0] - end - use=use[0].chr.capitalize + use[1,use.length] - @the_idx[use]={} unless @the_idx[use] and defined? @the_idx[use] - idx_lst.each do |i| - i.strip! - i,r=/(.+?)\+(\d+)/.match(i)[1,2] if i =~/.+?\+\d+/ - x=if idx_lst.length == 1 or idx_lst[0].gsub(/\+\d+/,'') == i - @the_idx[use]['term_node_lev1']=[] unless @the_idx[use]['term_node_lev1'] and defined? @the_idx[use]['term_node_lev1'] - x=if r - @the_idx[use]['term_node_lev1'] << { :ocn => idx[:ocn], :range => "#{idx[:ocn]}-#{idx[:ocn].to_i+r.to_i}", :seg => idx[:seg] } - "#{i} #{idx[:ocn]}-#{idx[:ocn].to_i+r.to_i}" - else - @the_idx[use]['term_node_lev1'] << { :ocn => idx[:ocn], :seg => idx[:seg] } - "#{i} #{idx[:ocn]}" - end - else - @the_idx[use]['term_node_lev2']={} unless @the_idx[use]['term_node_lev2'] and defined? @the_idx[use]['term_node_lev2'] - @the_idx[use]['term_node_lev2'][i]=[] unless @the_idx[use]['term_node_lev2'][i] and defined? @the_idx[use]['term_node_lev2'][i] - x=if r - @the_idx[use]['term_node_lev2'][i] << { :ocn => idx[:ocn], :range => "#{idx[:ocn]}-#{idx[:ocn].to_i+r.to_i}", :seg => idx[:seg] } - "#{idx_lst[0]}:#{i} #{idx[:ocn]}-#{idx[:ocn].to_i+r.to_i}" - else - @the_idx[use]['term_node_lev2'][i] << { :ocn => idx[:ocn], :seg => idx[:seg] } - "#{idx_lst[0]}:#{i} #{idx[:ocn]}" - end - end - end - end - the_idx=@the_idx.sort - #p the_idx; p '-----' - the_idx - end - def index(the_idx) - @x=1 - @idx={} - @idx[:sst],@idx[:html]=[],[] - @idx[:sst] << "\n\n#{Mx[:br_page_new]}" - @idx[:sst] << "\n\n#{Mx[:lv_o]}2:#{Mx[:lv_c]}Index #{Mx[:id_o]}~0;0:0;x0#{Mx[:id_c]}" - @idx[:sst] << "\n\n#{Mx[:lv_o]}4:idx#{Mx[:lv_c]} [Index] #{Mx[:pa_non_object_dummy_heading]} #{Mx[:id_o]}~0;0:0;x0#{Mx[:id_c]}" - alph=%W[9 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z] - @idx[:html] << '

' - alph.each do |x| - @idx[:html] << if x =~/[0-9]/; '' - else - %{#{x}, } - end - end - @idx[:html] << '

' - letter=alph.shift - @idx[:html] << %{\n

} - the_idx.each do |i| - i.each do |x| - if x.class == String - f=/^(\S)/.match(x)[1] - if letter < f - while letter < f - if alph.length > 0 - letter=alph.shift - @idx[:html] << %{\n

#{letter}

} - else break - end - end - end - @idx[:sst] << %{\n\n#{Mx[:fa_bold_o]}#{x},#{Mx[:fa_bold_c]} } - aname=x.gsub(/\s+/,'_') - @idx[:html] << %{\n

#{x}, } - @o=@idx[:sst].index(@idx[:sst].last) #@o=@idx[:sst].length - 1 - @q=@idx[:html].index(@idx[:html].last) #@o=@idx[:html].length - 1 - print "\n" + x + ', ' if @md.cmd =~/V/ - elsif x.class == Array - p 'array error? -->' - print x - elsif x.class == Hash - if x['term_node_lev1'].class == Array - x['term_node_lev1'].each do |a| - if a[:range] - @idx[:sst][@o]=@idx[:sst][@o] + %{#{Mx[:lnk_o]}#{a[:range]}#{Mx[:lnk_c]}#{@env.url.root}/#{@md.fnb}/#{a[:seg]}.html##{a[:ocn]}, } - @idx[:html][@q]=@idx[:html][@q] + %{#{a[:range]}, } - print a[:range] + ', ' if @md.cmd =~/V/ - elsif a[:ocn] - @idx[:sst][@o]=@idx[:sst][@o] + %{#{Mx[:lnk_o]}#{a[:ocn]}#{Mx[:lnk_c]}#{@env.url.root}/#{@md.fnb}/#{a[:seg]}.html##{a[:ocn]}, } - @idx[:html][@q]=@idx[:html][@q] + %{#{a[:ocn]}, } - print a[:ocn] + ', ' if @md.cmd =~/V/ - else p 'error' - end - end - @idx[:html][@q]=@idx[:html][@q] + '

' - end - if x['term_node_lev2'] - m=x['term_node_lev2'] - m=m.sort - m.each do |k,y| - if k !~/term_node_lev1/ - @idx[:sst][@o]=@idx[:sst][@o] + %{#{k}, } - @idx[:html][@q]=@idx[:html][@q] + %{\n

#{k}, } - print "\n\t" + k + ', ' if @md.cmd =~/V/ - y.each do |z| - if z[:range] - @idx[:sst][@o]=@idx[:sst][@o] + %{#{Mx[:lnk_o]}#{z[:range]}#{Mx[:lnk_c]}#{@env.url.root}/#{@md.fnb}/#{z[:seg]}.html##{z[:ocn]}, } - @idx[:html][@q]=@idx[:html][@q] + %{#{z[:range]}, } - print z[:range] + ', ' if @md.cmd =~/V/ - elsif z[:ocn] - @idx[:sst][@o]=@idx[:sst][@o] + %{#{Mx[:lnk_o]}#{z[:ocn]}#{Mx[:lnk_c]}#{@env.url.root}/#{@md.fnb}/#{z[:seg]}.html##{z[:ocn]}, } - @idx[:html][@q]=@idx[:html][@q] + %{#{z[:ocn]}, } - print z[:ocn] + ', ' if @md.cmd =~/V/ - else p 'error' - end - end - @idx[:html][@q]=@idx[:html][@q] + '

' - end - end - end - @idx[:sst][@o]=@idx[:sst][@o] + " #{Mx[:id_o]}~0;0:0;x#{@x}#{Mx[:id_c]}" - @x +=1 - end - end - end - print "\n" if @md.cmd =~/V/ - @idx - end - def screen_print(the_idx) - the_idx.each do |i| - i.each do |x| - if x.class == String - print "\n" + x + ', ' - elsif x.class == Array - p 'array error? -->' - print x - elsif x.class == Hash - if x['term_node_lev1'].class == Array - x['term_node_lev1'].each do |a| - if a[:range] - print a[:range] + ', ' - elsif a[:ocn] - print a[:ocn] + ', ' - else p 'error' - end - end - end - if x['term_node_lev2'] - m=x['term_node_lev2'] - m=m.sort - m.each do |k,y| - if k !~/term_node_lev1/ - print "\n\t" + k + ', ' - #p y - y.each do |z| - if z[:range] - print z[:range] + ', ' - elsif z[:ocn] - print z[:ocn] + ', ' - else p 'error' - end - end - end - end - end - end - end - end - end - def output_html_idx(html_idx) - if @md.book_idx - path="#{@env.path.output}/#{@md.fnb}" - Dir.mkdir(path) unless FileTest.directory?(path) - html_index_file=File.new("#{path}/#{@md.fn[:book_idx_html]}",'w') - html_idx.each {|x| html_index_file << x } - html_index_file.close - end - end - def clean_and_insert_index(data,sisu_markup_idx) - tuned_file=[] - data.each do |para| - para.gsub!(/\n*#{@rgx_idx}/m,'') - tuned_file << para - if para =~/#{Mx[:br_endnotes]}/ and sisu_markup_idx - sisu_markup_idx.each do |idx| - tuned_file << idx - end - end - end - tuned_file - end - def clean_index(data) - tuned_file=[] - data.each do |para| - para.gsub!(/\n*#{@rgx_idx}/m,'') - tuned_file << para - end - tuned_file - end - end -end -__END__ diff --git a/lib/sisu/v0/dal_images.rb b/lib/sisu/v0/dal_images.rb deleted file mode 100644 index 621ac986..00000000 --- a/lib/sisu/v0/dal_images.rb +++ /dev/null @@ -1,123 +0,0 @@ -# coding: utf-8 -=begin - - * Name: SiSU - - * Description: a framework for document structuring, publishing and search - - * Author: Ralph Amissah - - * Copyright: (C) 1997 - 2009 Ralph Amissah All Rights Reserved. - - * License: GPL 3 or later: - - SiSU, a framework for document structuring, publishing and search - - Copyright (C) Ralph Amissah - - This program is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by the Free - Software Foundation, either version 3 of the License, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - more details. - - You should have received a copy of the GNU General Public License along with - this program. If not, see . - - If you have Internet connection, the latest version of the GPL should be - available at these locations: - - - - - - - - * SiSU uses: - * Standard SiSU markup syntax, - * Standard SiSU meta-markup syntax, and the - * Standard SiSU object citation numbering and system - - * Hompages: - - - - * Download: - - - * Ralph Amissah - - - - ** Description: system environment, resource control and configuration details - -=end -module SiSU_images - class Images - def initialize(md,data) - @md,@data=md,data - end - def images - data=@data - tuned_file=[] - @rmgk=false - if SiSU_Env::Info_settings.new.program?('rmagick'); @rmgk=SiSU_Env::Load.new('RMagick').prog - else tell=SiSU_Screen::Ansi.new(@md.cmd,'use of RMagick is not enabled in sisurc.yml') - tell.warn if @md.cmd =~/[vVM]/ - end - data.each do |para| - para.strip! - if para =~/#{Mx[:lnk_o]}\s*\S+\.(?:png|jpg|gif)(?:\s*|\s+.+)?#{Mx[:lnk_c]}(?:(?:https?|file|ftp):\S+|image)/ - if para !~/#{Mx[:lnk_o]}\s*\S+\.(?:png|jpg|gif)\s+\d+x\d+\s+/ - m=/#{Mx[:lnk_o]}\s*(\S+\.(?:png|jpg|gif))/ - if @rmgk - imgs=para.scan(m).flatten - images=imgs.each do |image| - dir=SiSU_Env::Info_env.new(@md.fns) - path_image=[dir.path.image_source_local_tex,dir.path.image_source_remote_tex,dir.path.image_source_tex] - image_path=nil - path_image.each do |image_path| - break if FileTest.exist?("#{image_path}/#{image}") - end - if FileTest.exist?("#{image_path}/#{image}") - img=Magick::ImageList.new("#{image_path}/#{image}") - img_col,img_row=img.columns,img.rows - if img_col > img_row #landscape - if img_col> 640 #480 - img_col=640 #480 - img_row=((1.00*img_col/img.columns)*img.rows).round - end - else #portrait - if img_col> 640 #480 - img_col=640 #480 - img_row=((1.00*img_col/img.columns)*img.rows).round - end - if img_row > 640 - img_row=640 - img_col=((1.00*img_row/img.rows)*img.columns).round - end - end - para.gsub!(/(#{image})/,"#{image} #{img_col}x#{img_row}") - else para.gsub!(/#{Mx[:lnk_o]}\s*(\S+)\.(png|jpg|gif).+?#{Mx[:lnk_c]}((?:https?|file|ftp):\S+|image)/,'[ \1 (\2 missing) ]') - end - end - else - images=para.scan(m) do |image| - tell=SiSU_Screen::Ansi.new(@md.cmd,'where image dimensions have not been provided RMagick is required',image) - tell.warn #unless @opt.cmd =~/q/ - end - end - end - end - para.gsub!(/(#{Mx[:lnk_o]})\s*(\S+\.(?:png|jpg|gif))\s+/i,'\1\2 ') if para =~/#{Mx[:lnk_o]}\s*\S+\.(?:png|jpg|gif).+?#{Mx[:lnk_c]}(?:(?:https?|file|ftp):\S+|image)/ - tuned_file << para unless para.nil? - end - tuned_file - end - end -end -__END__ diff --git a/lib/sisu/v0/dal_metadata.rb b/lib/sisu/v0/dal_metadata.rb deleted file mode 100644 index bdf0dace..00000000 --- a/lib/sisu/v0/dal_metadata.rb +++ /dev/null @@ -1,225 +0,0 @@ -# coding: utf-8 -=begin - - * Name: SiSU - - * Description: a framework for document structuring, publishing and search - - * Author: Ralph Amissah - - * Copyright: (C) 1997 - 2009 Ralph Amissah All Rights Reserved. - - * License: GPL 3 or later: - - SiSU, a framework for document structuring, publishing and search - - Copyright (C) Ralph Amissah - - This program is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by the Free - Software Foundation, either version 3 of the License, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - more details. - - You should have received a copy of the GNU General Public License along with - this program. If not, see . - - If you have Internet connection, the latest version of the GPL should be - available at these locations: - - - - - - - - * SiSU uses: - * Standard SiSU markup syntax, - * Standard SiSU meta-markup syntax, and the - * Standard SiSU object citation numbering and system - - * Hompages: - - - - * Download: - - - * Ralph Amissah - - - - ** Description: system environment, resource control and configuration details - -=end -module SiSU_metadata - class Metadata - def initialize(md,data) - @md,@data=md,data - l=SiSU_Env::Standardise_language.new.file_to_language(md.fns) - language=l[:l] - @tr=SiSU_Translate::Source.new(md,language) - end - def metadata - data=@data - meta,@dc,@rc,@cvs,dctitle,add=Array.new(6){[]} - dir=SiSU_Env::Info_env.new(@md.fns) - base_html="#{dir.url.root}/#{@md.fnb}" - ocnm=ocnd=ocnv=0 - ocnm+=1 - header1="\n#{Mx[:lv_o_1]}meta#{Mx[:lv_c]}Document Information (metadata) #{Mx[:id_o]}~0;0:0;m#{ocnm}#{Mx[:id_c]}" - ocnm+=1 - header4="\n#{Mx[:lv_o_4]}metadata#{Mx[:lv_c]}Metadata #{Mx[:id_o]}~0;m#{ocnm};m#{ocnm}#{Mx[:id_c]}" - ocnm+=1; ocnd+=1 - head_no_dc="#{Mx[:id_o]}~0;m#{ocnm};d#{ocnd}#{Mx[:id_c]}" - ocnm+=1; ocnd+=1 - head_no_dc_tag="#{Mx[:id_o]}~0;m#{ocnm};d#{ocnd}#{Mx[:id_c]}" - data.each do |para| - case para - when /^#{Mx[:meta_o]}(title|creator|author|translator|translated_by|illustrator|illustrated_by|prepared_by|digitized_by|description|publisher|contributor|date\.created|date\.issued|date\.available|date\.valid|date\.modified|date|type|format|rights|identifier|source|language)#{Mx[:meta_c]}/i - m=$1 - ocnm+=1; ocnd+=1 - @dc << case para - when /^#{Mx[:meta_o]}title#{Mx[:meta_c]}/ - "\n#{@tr.full_title}: #{Mx[:fa_underscore_o]}#{@md.full_title}#{Mx[:fa_underscore_c]} #{Mx[:id_o]}~0;m#{ocnm};d#{ocnd}#{Mx[:id_c]}" - when /^#{Mx[:meta_o]}(?:creator|author)#{Mx[:meta_c]}/ - "\n#{@tr.author}: #{Mx[:fa_underscore_o]}#{@md.author}#{Mx[:fa_underscore_c]} #{Mx[:id_o]}~0;m#{ocnm};d#{ocnd}#{Mx[:id_c]}" - when /#{Mx[:meta_o]}(?:translator|translated_by)#{Mx[:meta_c]}/ - "\n#{@tr.translator}: #{Mx[:fa_underscore_o]}#{@md.translator}#{Mx[:fa_underscore_c]} #{Mx[:id_o]}~0;m#{ocnm};d#{ocnd}#{Mx[:id_c]}" - when /^#{Mx[:meta_o]}(?:illustrator|illustrated_by)#{Mx[:meta_c]}/ - "\n#{@tr.illustrator}: #{Mx[:fa_underscore_o]}#{@md.illustrator}#{Mx[:fa_underscore_c]} #{Mx[:id_o]}~0;m#{ocnm};d#{ocnd}#{Mx[:id_c]}" - when /^#{Mx[:meta_o]}prepared_by#{Mx[:meta_c]}/ - "\n#{@tr.prepared_by}: #{Mx[:fa_underscore_o]}#{@md.prepared_by}#{Mx[:fa_underscore_c]} #{Mx[:id_o]}~0;m#{ocnm};d#{ocnd}#{Mx[:id_c]}" - when /^#{Mx[:meta_o]}digitized_by#{Mx[:meta_c]}/ - "\n#{@tr.digitized_by}: #{Mx[:fa_underscore_o]}#{@md.digitized_by}#{Mx[:fa_underscore_c]} #{Mx[:id_o]}~0;m#{ocnm};d#{ocnd}#{Mx[:id_c]}" - when /^#{Mx[:meta_o]}description#{Mx[:meta_c]}/ - "\n#{@tr.description}: #{Mx[:fa_underscore_o]}#{@md.description}#{Mx[:fa_underscore_c]} #{Mx[:id_o]}~0;m#{ocnm};d#{ocnd}#{Mx[:id_c]}" - when /^#{Mx[:meta_o]}subject#{Mx[:meta_c]}/ - "\n#{@tr.subject}: #{Mx[:fa_underscore_o]}#{@md.subject}#{Mx[:fa_underscore_c]} #{Mx[:id_o]}~0;m#{ocnm};d#{ocnd}#{Mx[:id_c]}" - when /^#{Mx[:meta_o]}abstract#{Mx[:meta_c]}/ - "\n#{@tr.abstract}: #{Mx[:fa_underscore_o]}#{@md.abstract}#{Mx[:fa_underscore_c]} #{Mx[:id_o]}~0;m#{ocnm};d#{ocnd}#{Mx[:id_c]}" - when /^#{Mx[:meta_o]}publisher#{Mx[:meta_c]}/ - "\n#{@tr.publisher}: #{Mx[:fa_underscore_o]}#{@md.publisher}#{Mx[:fa_underscore_c]} #{Mx[:id_o]}~0;m#{ocnm};d#{ocnd}#{Mx[:id_c]}" - when /^#{Mx[:meta_o]}contributor#{Mx[:meta_c]}/ - "\n#{@tr.contributor}: #{Mx[:fa_underscore_o]}#{@md.contributor}#{Mx[:fa_underscore_c]} #{Mx[:id_o]}~0;m#{ocnm};d#{ocnd}#{Mx[:id_c]}" - when /^#{Mx[:meta_o]}date.created#{Mx[:meta_c]}/ - "\n#{@tr.date_created}: #{Mx[:fa_underscore_o]}#{@md.date_created}#{Mx[:fa_underscore_c]} #{Mx[:id_o]}~0;m#{ocnm};d#{ocnd}#{Mx[:id_c]}" - when /^#{Mx[:meta_o]}date.issued#{Mx[:meta_c]}/ - "\n#{@tr.date_issued}: #{Mx[:fa_underscore_o]}#{@md.date_issued}#{Mx[:fa_underscore_c]} #{Mx[:id_o]}~0;m#{ocnm};d#{ocnd}#{Mx[:id_c]}" - when /^#{Mx[:meta_o]}date.available#{Mx[:meta_c]}/ - "\n#{@tr.date_available}: #{Mx[:fa_underscore_o]}#{@md.date_available}#{Mx[:fa_underscore_c]} #{Mx[:id_o]}~0;m#{ocnm};d#{ocnd}#{Mx[:id_c]}" - when /^#{Mx[:meta_o]}date.modified#{Mx[:meta_c]}/ - "\n#{@tr.date_modified}: #{Mx[:fa_underscore_o]}#{@md.date_modified}#{Mx[:fa_underscore_c]} #{Mx[:id_o]}~0;m#{ocnm};d#{ocnd}#{Mx[:id_c]}" - when /^#{Mx[:meta_o]}date.valid#{Mx[:meta_c]}/ - "\n#{@tr.date_valid}: #{Mx[:fa_underscore_o]}#{@md.date_valid}#{Mx[:fa_underscore_c]} #{Mx[:id_o]}~0;m#{ocnm};d#{ocnd}#{Mx[:id_c]}" - when /^#{Mx[:meta_o]}date#{Mx[:meta_c]}/ - "\n#{@tr.date}: #{Mx[:fa_underscore_o]}#{@md.date}#{Mx[:fa_underscore_c]} #{Mx[:id_o]}~0;m#{ocnm};d#{ocnd}#{Mx[:id_c]}" - when /^#{Mx[:meta_o]}type#{Mx[:meta_c]}/ - "\n#{@tr.type}: #{Mx[:fa_underscore_o]}#{@md.type}#{Mx[:fa_underscore_c]} #{Mx[:id_o]}~0;m#{ocnm};d#{ocnd}#{Mx[:id_c]}" - when /^#{Mx[:meta_o]}format#{Mx[:meta_c]}/ - "\n#{@tr.format}: #{Mx[:fa_underscore_o]}#{@md.format}#{Mx[:fa_underscore_c]} #{Mx[:id_o]}~0;m#{ocnm};d#{ocnd}#{Mx[:id_c]}" - when /^#{Mx[:meta_o]}rights#{Mx[:meta_c]}/ - "\n#{@tr.rights}: #{Mx[:fa_underscore_o]}#{@md.rights}#{Mx[:fa_underscore_c]} #{Mx[:id_o]}~0;m#{ocnm};d#{ocnd}#{Mx[:id_c]}" - when /^#{Mx[:meta_o]}identifier#{Mx[:meta_c]}/ - "\n#{@tr.identifier}: #{Mx[:fa_underscore_o]}#{@md.identifier}#{Mx[:fa_underscore_c]} #{Mx[:id_o]}~0;m#{ocnm};d#{ocnd}#{Mx[:id_c]}" - when /^#{Mx[:meta_o]}source#{Mx[:meta_c]}/ - "\n#{@tr.source}: #{Mx[:fa_underscore_o]}#{@md.source}#{Mx[:fa_underscore_c]} #{Mx[:id_o]}~0;m#{ocnm};d#{ocnd}#{Mx[:id_c]}" - when /^#{Mx[:meta_o]}language#{Mx[:meta_c]}/ - "\n#{@tr.language}: #{Mx[:fa_underscore_o]}#{@md.language}#{Mx[:fa_underscore_c]} #{Mx[:id_o]}~0;m#{ocnm};d#{ocnd}#{Mx[:id_c]}" - when /^#{Mx[:meta_o]}language.original#{Mx[:meta_c]}/ - "\n#{@tr.language_original}: #{Mx[:fa_underscore_o]}#{@md.language_original}#{Mx[:fa_underscore_c]} #{Mx[:id_o]}~0;m#{ocnm};d#{ocnd}#{Mx[:id_c]}" - when /^#{Mx[:meta_o]}relation#{Mx[:meta_c]}/ - "\n#{@tr.relation}: #{Mx[:fa_underscore_o]}#{@md.relation}#{Mx[:fa_underscore_c]} #{Mx[:id_o]}~0;m#{ocnm};d#{ocnd}#{Mx[:id_c]}" - when /^#{Mx[:meta_o]}coverage#{Mx[:meta_c]}/ - "\n#{@tr.coverage}: #{Mx[:fa_underscore_o]}#{@md.coverage}#{Mx[:fa_underscore_c]} #{Mx[:id_o]}~0;m#{ocnm};d#{ocnd}#{Mx[:id_c]}" - when /^#{Mx[:meta_o]}keywords#{Mx[:meta_c]}/ - "\n#{@tr.keywords}: #{Mx[:fa_underscore_o]}#{@md.keywords}#{Mx[:fa_underscore_c]} #{Mx[:id_o]}~0;m#{ocnm};d#{ocnd}#{Mx[:id_c]}" - when /^#{Mx[:meta_o]}comments#{Mx[:meta_c]}/ - "\n#{@tr.comments}: #{Mx[:fa_underscore_o]}#{@md.comments}#{Mx[:fa_underscore_c]} #{Mx[:id_o]}~0;m#{ocnm};d#{ocnd}#{Mx[:id_c]}" - when /^#{Mx[:meta_o]}cls_loc#{Mx[:meta_c]}/ - "\n#{@cls_dewey}: #{Mx[:fa_underscore_o]}#{@md.cls_dewey}#{Mx[:fa_underscore_c]} #{Mx[:id_o]}~0;m#{ocnm};d#{ocnd}#{Mx[:id_c]}" - when /^#{Mx[:meta_o]}cls_loc#{Mx[:meta_c]}/ - "\n#{@tr.cls_dewey}: #{Mx[:fa_underscore_o]}#{@md.cls_dewey}#{Mx[:fa_underscore_c]} #{Mx[:id_o]}~0;m#{ocnm};d#{ocnd}#{Mx[:id_c]}" - when /^#{Mx[:meta_o]}(?:cls_gutenberg|cls_pg)#{Mx[:meta_c]}/ - "\n#{@tr.cls_gutenberg}: #{Mx[:fa_underscore_o]}#{@md.cls_gutenberg}#{Mx[:fa_underscore_c]} #{Mx[:id_o]}~0;m#{ocnm};d#{ocnd}#{Mx[:id_c]}" - #"\n#{@tr.cls_gutenberg}: #{@md.cls_pg} #{Mx[:id_o]}~0;m#{ocnm};d#{ocnd}#{Mx[:id_c]}" - when /^#{Mx[:meta_o]}cls_isbn#{Mx[:meta_c]}/ - "\n#{@tr.cls_isbn}: #{Mx[:fa_underscore_o]}#{@md.cls_isbn}#{Mx[:fa_underscore_c]} #{Mx[:id_o]}~0;m#{ocnm};d#{ocnd}#{Mx[:id_c]}" - when /^#{Mx[:meta_o]}prefix(?:_a)?#{Mx[:meta_c]}/ - "\n#{@tr.prefix_a}: #{Mx[:fa_underscore_o]}#{@md.prefix_a}#{Mx[:fa_underscore_c]} #{Mx[:id_o]}~0;m#{ocnm};d#{ocnd}#{Mx[:id_c]}" - when /^#{Mx[:meta_o]}prefix_b#{Mx[:meta_c]}/ - "\n#{@tr.prefix_b}: #{Mx[:fa_underscore_o]}#{@md.prefix_b}#{Mx[:fa_underscore_c]} #{Mx[:id_o]}~0;m#{ocnm};d#{ocnd}#{Mx[:id_c]}" - else para.gsub(/^#{Mx[:meta_o]}(#{m})\s+(.+)/m,"\n#{m.capitalize}: #{Mx[:fa_underscore_o]}\\2#{Mx[:fa_underscore_c]} #{Mx[:id_o]}~0;m#{ocnm};d#{ocnd}#{Mx[:id_c]}") - end - end - end - ocnm+=1; ocnv+=1 - head_no_rc="#{Mx[:id_o]}~0;m#{ocnm};v#{ocnv}#{Mx[:id_c]}" - ocnm+=1; ocnv+=1 - head_no_rc_tag="#{Mx[:id_o]}~0;m#{ocnm};v#{ocnv}#{Mx[:id_c]}" - data.each do |para| - case para - when /^0~(?:cvs|rcs)\+\s+/ #note the + sign to turn on use of cvs id - ocnm+=1; ocnv+=1 - @cvs << "#{@tr.sc_number}: #{Mx[:fa_underscore_o]}#{@md.sc_number}#{Mx[:fa_underscore_c]} #{Mx[:id_o]}~0;m#{ocnm};v#{ocnv}#{Mx[:id_c]}" - ocnm+=1; ocnv+=1 - @cvs << "#{@tr.sc_date}: #{Mx[:fa_underscore_o]}#{@md.sc_date}#{Mx[:fa_underscore_c]} #{Mx[:id_o]}~0;m#{ocnm};v#{ocnv}#{Mx[:id_c]}" - ocnm+=1; ocnv+=1 - @cvs << "CVS/RCS time: #{Mx[:fa_underscore_o]}#{@md.sc_time}#{Mx[:fa_underscore_c]} #{Mx[:id_o]}~0;m#{ocnm};v#{ocnv}#{Mx[:id_c]}" - ocnm+=1; ocnv+=1 - when /^0~cvs[+\s]/ #enable pattern above instead if you wish the default to be to include cvs tags from all documents KEEP - when /^0~cvs\s+/ #enable pattern above instead if you wish the default to be to include cvs tags from all documents KEEP - end - end - if true #default version information - ocnm+=1; ocnv+=1 - if @md.sc_filename \ - and @md.sc_filename.length > 3 - @rc << "#{@tr.sourcefile}: #{Mx[:fa_underscore_o]}#{@md.sc_filename}#{Mx[:fa_underscore_c]} #{Mx[:id_o]}~0;m#{ocnm};v#{ocnv}#{Mx[:id_c]}" - else @rc << "#{@tr.sourcefile}: #{Mx[:fa_underscore_o]}#{@md.fns}#{Mx[:fa_underscore_c]} #{Mx[:id_o]}~0;m#{ocnm};v#{ocnv}#{Mx[:id_c]}" - end - ocnm+=1; ocnv+=1 - if @md.file_encoding \ - and @md.file_encoding.length > 3 #translate - @rc << "Filetype: #{Mx[:fa_underscore_o]}#{@md.file_encoding}#{Mx[:fa_underscore_c]} #{Mx[:id_o]}~0;m#{ocnm};v#{ocnv}#{Mx[:id_c]}" - end - ocnm+=1; ocnv+=1 - if @md.dgst #change. enable by default - @rc << "#{@tr.sourcefile_digest}, #{@md.dgst[0]} #{Mx[:fa_underscore_o]}#{@md.dgst[1]}#{Mx[:fa_underscore_c]} #{Mx[:id_o]}~0;m#{ocnm};v#{ocnv}#{Mx[:id_c]}" - ocnm+=1; ocnv+=1 - end - if @md.dgst_skin #change. enable by default - @rc << "Skin_Digest: #{@md.dgst_skin[0]} #{Mx[:fa_underscore_o]}#{@md.dgst_skin[1]}#{Mx[:fa_underscore_c]} #{Mx[:id_o]}~0;m#{ocnm};v#{ocnv}#{Mx[:id_c]}" - ocnm+=1; ocnv+=1 - end - @rc << "#{Mx[:fa_bold_o]}Generated#{Mx[:fa_bold_c]} #{head_no_rc}" if @rc.length > 0 - @rc << "#{@tr.last_generated}: #{Mx[:fa_underscore_o]}#{Time.now}#{Mx[:fa_underscore_c]} #{Mx[:id_o]}~0;m#{ocnm};v#{ocnv}#{Mx[:id_c]}" - ocnm+=1; ocnv+=1 - if @md.sisu_version[:version] - @rc << "#{@tr.sisu_version}: #{Mx[:fa_underscore_o]}#{@md.sisu_version[:project]}#{Mx[:fa_underscore_c]} #{Mx[:fa_underscore_o]}#{@md.sisu_version[:version]}#{Mx[:fa_underscore_c]} of #{@md.sisu_version[:date_stamp]} (#{@md.sisu_version[:date]}) #{Mx[:id_o]}~0;m#{ocnm};v#{ocnv}#{Mx[:id_c]}" - ocnm+=1; ocnv+=1 - end - @rc << "#{@tr.ruby_version}: #{Mx[:fa_underscore_o]} #{@md.ruby_version}#{Mx[:fa_underscore_c]} #{Mx[:id_o]}~0;m#{ocnm};v#{ocnv}#{Mx[:id_c]}" - end - meta << Mx[:br_page_new] << header1 << header4 - meta << "Document Manifest @\n #{base_html}/#{@md.fn[:manifest]} #{Mx[:id_o]}~0;m#{ocnm};m#{ocnm}#{Mx[:id_c]}" - meta << "#{Mx[:fa_bold_o]}Dublin Core#{Mx[:fa_bold_c]} (DC) #{head_no_dc}" if @dc.length > 0 - meta << "#{Mx[:fa_italics_o]}DC tags included with this document are provided here.#{Mx[:fa_italics_c]} #{head_no_dc_tag}" if @dc.length > 0 - @dc.each { |x| meta << x } - meta << "#{Mx[:fa_bold_o]}Version Information#{Mx[:fa_bold_c]} #{head_no_rc}" if @rc.length > 0 - if @cvs.length > 0 - meta << "#{Mx[:fa_italics_o]}Note the version information provided here, is specific to the host site.#{Mx[:fa_italics_c]} #{head_no_rc_tag}" - @cvs.each { |x| meta << x } - end - @rc.each { |x| meta << x } - ## ENDNOTE RELATED endnote related - meta << "\n#{Mx[:br_eof]}" - meta=SiSU_hash::Object_digest.new(@md,meta,@env).object_digest - end - end -end -__END__ diff --git a/lib/sisu/v0/dal_numbering.rb b/lib/sisu/v0/dal_numbering.rb deleted file mode 100644 index 05123bbc..00000000 --- a/lib/sisu/v0/dal_numbering.rb +++ /dev/null @@ -1,368 +0,0 @@ -# coding: utf-8 -=begin - - * Name: SiSU - - * Description: a framework for document structuring, publishing and search - - * Author: Ralph Amissah - - * Copyright: (C) 1997 - 2009 Ralph Amissah All Rights Reserved. - - * License: GPL 3 or later: - - SiSU, a framework for document structuring, publishing and search - - Copyright (C) Ralph Amissah - - This program is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by the Free - Software Foundation, either version 3 of the License, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - more details. - - You should have received a copy of the GNU General Public License along with - this program. If not, see . - - If you have Internet connection, the latest version of the GPL should be - available at these locations: - - - - - - - - * SiSU uses: - * Standard SiSU markup syntax, - * Standard SiSU meta-markup syntax, and the - * Standard SiSU object citation numbering and system - - * Hompages: - - - - * Download: - - - * Ralph Amissah - - - - ** Description: system environment, resource control and configuration details - -=end -module SiSU_numbering - class Numbering - def initialize(md,data) - @md,@data=md,data - end - def numbering_song - data=@data - data=number_plaintext_para(data) - data=name_endnote_seg(data) #tr issue - data=auto_number_heading_ie_title(data) #tr issue - data=ocn(data) #watch - data=minor_numbering(data) - data=name_para_seg_filename(data) - data=set_heading_seg(data) unless @md.set_heading_seg - data=set_heading_top(data) unless @md.set_heading_top - data=set_header_title(data) unless @md.set_header_title - data - end - def number_plaintext_para(data) - @tuned_file=[] - data.each do |para| - if para !~/#{Mx[:gr_o]}(?:code|group|alt|poem|verse)#{Mx[:gr_c]}|#{Mx[:gr_o]}Th|#{Mx[:tc_o]}#{Mx[:tc_p]}#{Mx[:tc_p]}/ - para.gsub!(/(.+)\n/,'\1 ') #messy, but idea is that tables should retain breaks - end - para.gsub!(/^/,"\n") unless para =~/#{Mx[:tc_p]}/u - para.gsub!(/^\s+|\s$/,"\n") - @tuned_file << para - end - @tuned_file=@tuned_file.flatten - end - def name_endnote_seg(data) - tuned_file=data - if @md.flag_auto_endnotes \ - and @md.flag_separate_endnotes_make - tuned_file << "\n#{Mx[:lv_o]}4:endnotes#{Mx[:lv_c]}Endnotes #{Mx[:gl_o]}-##{Mx[:gl_c]} #{Mx[:id_o]}~0;0:0;u0#{Mx[:id_c]}" - end - tuned_file << "\n#{Mx[:br_endnotes]}" #DECIDE ON - tuned_file=tuned_file.flatten - end - def owner_details_seg - data << "#{Mx[:lv_o]}4:owner.details#{Mx[:lv_c]}Owner Details" - end - def number_sub_heading(para,num,title_no) - case para - when /#{Mx[:lv_o]}#{num}:-#{Mx[:lv_c]}/; para.gsub!(/#{Mx[:lv_o]}#{num}:-#{Mx[:lv_c]}/,"#{title_no} ") - when /^#{Mx[:lv_o]}#{num}:##{Mx[:lv_c]}/; para.gsub!(/^#{Mx[:lv_o]}#{num}:##{Mx[:lv_c]}/,"#{title_no} ") - when /^#{Mx[:lv_o]}#{num}:[a-z_\.]+#{Mx[:lv_c]}/ - para.gsub!(/^#{Mx[:lv_o]}#{num}:([a-z_\.]+)#{Mx[:lv_c]}\s*(.+)/i,%{#{Mx[:lv_o]}#{num}:\\1#{Mx[:lv_c]} #{title_no} \\2 #{Mx[:fa_o]}:name##{title_no}#{Mx[:fa_c]}}) - when /^#{Mx[:lv_o]}#{num}:#{Mx[:lv_c]}\s*#{title_no}/ - para.gsub!(/^#{Mx[:lv_o]}#{num}:#{Mx[:lv_c]}/,"#{Mx[:lv_o]}#{num}:#{title_no}#{Mx[:lv_c]}") #where title contains title number - else para.gsub!(/^#{Mx[:lv_o]}#{num}:#{Mx[:lv_c]}/,"#{Mx[:lv_o]}#{num}:#{title_no}#{Mx[:lv_c]} #{title_no} ") #main, where title number is to be provided - end - if @md.toc_lev_limit \ - and @md.toc_lev_limit < num - para.gsub!(/^#{Mx[:lv_o]}[5-9]:\S*?#{Mx[:lv_c]}/,'!_ ') #bold line, watch - end - para - end - def auto_number_heading_ie_title(data) #also does some segment naming - @tuned_file=[] - if @md.markup =~/num_top/ \ - or @md.num_top # watch, 2003w23 - input="#{@md.markup}"[/num_top\=([1-6])/,1] if @md.markup - input||=@md.num_top if @md.num_top !~/^$/ - end - num_top=input.to_i - t_no1=t_no2=t_no3=t_no4=0 - no1=num_top; no2=(num_top + 1); no3=(num_top + 2); no4=(num_top + 3) - t_not=0 - data.each do |para| #@md.seg_names << [additions to segment names] - if (@md.markup =~/num_top/ \ - or (@md.num_top \ - and @md.num_top !~/^$/)) \ - and para !~/^#{Rx[:meta]}/ - if (para =~/^(?:#{no1}|^#{no2}|^#{no3}#{no4})~#/ \ - and para !~/^#{Mx[:lv_o]}4:endnotes#{Mx[:lv_c]}/) - t_not+=1 #; t_no2=0; t_no3=0 - para.gsub!(/^(#{Mx[:lv_o]}(?:#{no1}|#{no2}|#{no3}|#{no4})):#(#{Mx[:lv_c]})/,"\\1:ps#{t_not}\\2") - end - if para =~/#{Mx[:lv_o]}#{no1}:/ - @subnumber=1 - @subnumber=0 if para =~/#{Mx[:lv_o]}#{no1}:/ - end - if para =~/^#{Mx[:lv_o]}[1-6]:[\w-]*#{Mx[:lv_c]}/ \ - and para !~ /(?:#{Mx[:lv_o]}[1-6]:[\w-]+-#{Mx[:lv_c]}|#{Mx[:lv_o]}4:endnotes#{Mx[:lv_c]}|^#{Mx[:lv_o]}[1-6]:[a-z_\.]+#{Mx[:lv_c]}\s*[\d.]+)\s/ \ - and para !~/#{Mx[:fa_o]}(?:~#|-#)#{Mx[:fa_c]}/ - if para =~/^#{Mx[:lv_o]}#{no1}:/ - t_no1+=1; t_no2=0; t_no3=0 - title_no="#{t_no1}" - if not @md.seg_names.nil? \ - and not @md.seg_names.include?(title_no) - para.gsub!(/^#{Mx[:lv_o]}#{no1}:#{Mx[:lv_c]}\s*(\S+)#/,"#{Mx[:lv_o]}#{no1}:#{title_no}#{Mx[:lv_c]} \\1 #{title_no} ") #shift placement of auto-number to after first word, e.g. Article # not # Article, added on occasion of ABF (20040329) - para.gsub!(/^#{no1}\{\s+(Article|Clause|Section)\s+#/i,%{#{no1}~#{title_no} \\1 #{title_no}. }) - unless para =~/^#{Mx[:lv_o]}#{no1}:#{Mx[:lv_c]}\s*[\d.]+\s/ #fix -> if the title starts with a numbering scheme, do not auto-number, review - para.gsub!(/^#{Mx[:lv_o]}#{no1}:#{Mx[:lv_c]}/,"#{Mx[:lv_o]}#{no1}:#{title_no}#{Mx[:lv_c]}#{title_no}. ") - end - @md.seg_names << title_no - #else puts "warning segment name #{title_no} already exists" - end - unless para =~/^#{Mx[:lv_o]}#{no1}:([a-z_\.]+)#{Mx[:lv_c]}\s*[A-Z]\.?\s/ #bug -> tmp fix, excludes A. B. C. lettering, but not roman numerals, is arbitrary, review required - para.gsub!(/^#{Mx[:lv_o]}#{no1}:([a-z_\.]+)#{Mx[:lv_c]}\s*(.+)/i, - %{#{Mx[:lv_o]}#{no1}:\\1#{Mx[:lv_c]}#{title_no}. \\2 #{Mx[:fa_o]}:name##{title_no}#{Mx[:fa_c]}}) - end - para.gsub!(/^#{Mx[:lv_o]}#{no1}:##{Mx[:lv_c]}/,"#{title_no}. ") #watch - para.gsub!(/^#{no1}~#\s*/,"#{title_no}. ") - end - if para =~/^#{Mx[:lv_o]}#{no2}:\S*?#{Mx[:lv_c]}/ - t_no2+=1; t_no3=0 - title_no="#{t_no1}.#{t_no2}" - para=number_sub_heading(para,no2,title_no) - end - if para =~/^#{Mx[:lv_o]}#{no3}:\S*?#{Mx[:lv_c]}/ - t_no3+=1 - title_no="#{t_no1}.#{t_no2}.#{t_no3}" - para=number_sub_heading(para,no3,title_no) - end - elsif para =~/^#{Mx[:lv_o]}[1-6]:[\w-]+-#{Mx[:lv_c]}/ # endnotes, watch2005 - para.gsub!(/^#{Mx[:lv_o]}#{no1}:([a-z_\.]+)-#{Mx[:lv_c]}/,"#{Mx[:lv_o]}#{no1}:\\1#{Mx[:lv_c]}") #"#{no1}~\\1 ") - para.gsub!(/^#{Mx[:lv_o]}#{no2}:([a-z_\.]+)-#{Mx[:lv_c]}/,"#{Mx[:lv_o]}#{no2}:\\1#{Mx[:lv_c]}") - para.gsub!(/^#{Mx[:lv_o]}#{no3}:([a-z_\.]+)-#{Mx[:lv_c]}/,"#{Mx[:lv_o]}#{no3}:\\1#{Mx[:lv_c]}") - end - elsif @md.markup =~/num_extract/ #AS DANGEROUS force enable with document, note already does this type of numbering for cisg, locate and coordinate logic, is currently misplaced in code, chengwei inspired 2004w23/4 - if para =~/^#{Mx[:lv_o]}[1-9]:#{Mx[:lv_c]}([\d\.]+)/ #risky (must be unique) consider output to 4~~\d instead of 4~\d - name_num=$1 - para.gsub!(/^#{Mx[:lv_o]}([1-9]:)#{Mx[:lv_c]}/,"#{Mx[:lv_o]}\\1#{name_num}#{Mx[:lv_c]}") - end - if @md.toc_lev_limit - end - end - @tuned_file << para - end - @tuned_file=@tuned_file.flatten - end - def ocn(data) #and auto segment numbering increment - @tuned_file=[] - object_array=SiSU_document_structure::OCN.new(@md,data).ocn - object_array.each do |o| - @tuned_file <<= if o.ocn; "#{o.txt} #{Mx[:id_o]}~#{o.ocn};#{o.lv};#{o.type}#{Mx[:id_c]}" #main ocn descriptor - else o.txt - end - end - @tuned_file=@tuned_file.flatten - end - def minor_numbering(data) #and auto segment numbering increment - @tuned_file=[] - number_small,letter_small=0,0 - letter=%w( a b c d e f g h i j k l m n o p q r s t u v w x y z ) - data.each do |para| - if para =~/\w|\S|<|\(/ - if para !~/^%% |#{Rx[:meta]}|^0~|^#{Mx[:lv_o]}endnotes:|^4~endnotes|^<\/center>|<:ee>|<:e[:_]>|^\^~ |<:e[:_]\d+?>|^#{Mx[:fa_o]}:p[bn]#{Mx[:fa_c]}|^<:\#|<:- |<[:!]!4|#{Mx[:gr_o]}(?:alt|code|group|poem|table)#{Mx[:gr_c]}|^(?:alt|code|group|poem|table)\{|^\}(?:alt|code|group|poem|table)|^\}table$|||||<\/tr>|
|\[endnotes\]|<:zz>|<:isbn-|<:journal-|<:conference-|#{Mx[:br_endnotes]}/i #ocn here #  added with Tune.code #¡ - if para=~/^#{Mx[:lv_o]}[1-9]:\S*?#{Mx[:lv_c]}/; number_small,letter_small=0,0 #% sub-number system, (baby numbering) reset with any change of major number (more obviously should be placed in number titles, but that is conditionally executed, check and move later) - end - if para =~/^#[ 1]/ - letter_small=0 - number_small=0 if para =~ /^#1/ - number_small+=1 - para.gsub!(/^#[ 1]/,"#{number_small}. ") #change 2004 - end - if para =~/^_# / - para.gsub!(/^_# /,"#{Mx[:fa_o]}:i1#{Mx[:fa_c]} #{letter[letter_small]}. ") #change 2004 - letter_small+=1 - end - end - end - @tuned_file << para - end - @tuned_file=@tuned_file.flatten - end - def name_para_seg_filename(data) - # paragraph name/numbering rules - # manual naming overrides, manual naming may be - # alpha-numeric characters mixed, - # numeric only (a number), if - # all segments have been named, - # the numbers used are over 1000 or - # it is not minded that auto-numbering uses a funny scheme for naming segments (not yet implemented) - # [for now a warning is printed for such documents on use of maintenance or very-verbose flag] - # auto-naming takes the form of giving numbers to segments - # the rules for which are as follows - # if the title/heading text starts with a numeric, then that is used (1 3.1 3rd etc.) - # otherwise the level 4 segment number from the embedded document structure info is used - # if there is none a sequential number is designated, preceded by an underscore - @tuned_file=[] - art_filename_auto=1 - @counter=1 - @unique_auto_name=[] - if not @md.seg_autoname_safe and @md.cmd =~/[MV]/ - puts 'manual segment names, numbers used as names, risk warning (segmented html)' - end - data.each do |para| - para=SiSU_document_structure::Structure.new(@md,para).structure_markup - if para =~/^#{Mx[:lv_o]}[456]:#{Mx[:lv_c]}/ - if para=~/^#{Mx[:lv_o]}[4]:#{Mx[:lv_c]}/ \ - and not @md.set_heading_seg - @md.set_heading_seg=true - end - if para =~/^#{Mx[:lv_o]}[456]:#{Mx[:lv_c]}(?:\s*\S+)?\s+([\d.,:-]+)/m #heading starts with a recognised numeric or word followed by a recognised numerical construct, use that as name - pattern=$1 - pattern.gsub!(/(?:[:,-]|\W)/,'.') - pattern.gsub!(/\.$/,'') - if not @md.seg_names.nil? \ - and not @md.seg_names.include?(pattern) - para.gsub!(/^#{Mx[:lv_o]}([456]):#{Mx[:lv_c]}/,"#{Mx[:lv_o]}\\1:#{pattern}#{Mx[:lv_c]}") - @md.seg_names << pattern - else puts 'warn, there may be a conflicting numbering scheme' if @md.cmd =~/[VM]/ - end - end - if para =~/^#{Mx[:lv_o]}4:#{Mx[:lv_c]}.+?;4:(\d+);/m #extract segment name from embedded document structure info - pattern=$1 - pattern.gsub!(/(?:[:,-]|\W)/,'.') - pattern.gsub!(/\.$/,'') - if not @md.seg_names.nil? \ - and not @md.seg_names.include?(pattern) - para.gsub!(/^#{Mx[:lv_o]}(4:)#{Mx[:lv_c]}/,"#{Mx[:lv_o]}\\1#{pattern}#{Mx[:lv_c]}") - @md.seg_names << pattern - else - para.gsub!(/^#{Mx[:lv_o]}(4:)#{Mx[:lv_c]}/,"#{Mx[:lv_o]}\\1~#{pattern}#{Mx[:lv_c]}") - @md.seg_names << "~#{pattern}" - end - end - if para =~/^#{Mx[:lv_o]}4:#{Mx[:lv_c]}/ #if still not segment name, provide a numerical one - if not @md.seg_names.nil? \ - and not @md.seg_names.include?(art_filename_auto) - para.gsub!(/^#{Mx[:lv_o]}(4:)#{Mx[:lv_c]}/,%{#{Mx[:lv_o]}\\1~#{art_filename_auto}#{Mx[:lv_c]}}) - @md.seg_names << art_filename_auto - else puts 'segment name (numbering) error' - end - art_filename_auto+=1 - end - end - @tuned_file << if para =~/^#{Mx[:lv_o]}([1-6]):\S*?#{Mx[:lv_c]}/m \ - and (@md.pagenew or @md.pagebreak) - m=$1 #watch ref~ - para_tmp=[] - if @md.pagenew.inspect =~/#{m}/; para_tmp << "#{Mx[:br_page_new]}\n" << para - elsif @md.pagebreak.inspect =~/#{m}/; para_tmp << "#{Mx[:br_page]}\n" << para - end - para_result=unless para_tmp.length > 0; para - else para_tmp - end - else para - end - end - if @md.seg_names.length > 0 - @md.set_heading_seg=true - end - @tuned_file=@tuned_file.flatten - end - def set_heading_top(data) #% make sure no false positives - unless @md.set_heading_top - puts "\tdocument contains no top level heading, (will have to manufacture one)" if @md.cmd =~/[MV]/ - @tuned_file=[] - data.each do |para| - unless @md.set_heading_top - if para !~/^(?:#{Rx[:meta]}|@\S+:|0~\S+)\s/m \ - and para !~/\A\s*\Z/m - @md.set_heading_top=true - head=if @md.title ; "#{Mx[:lv_o]}1:#{Mx[:lv_c]} #{@md.title}" - else "#{Mx[:lv_o]}1:#{Mx[:lv_c]} [no title provided]" - end - @tuned_file << head - end - end - @tuned_file << para - end - @tuned_file=@tuned_file.flatten - end - end - def set_heading_seg(data) #% make sure no false positives - unless @md.set_heading_seg - puts "\tdocument contains no segment level, (will have to manufacture one)" if @md.cmd =~/[MV]/ - @tuned_file=[] - data.each do |para| - unless @md.set_heading_seg - if para !~/^(?:#{Rx[:meta]}|#{Mx[:lv_o]}[123]:\S*?#{Mx[:lv_c]})/m \ - and para !~/\A\s*\Z/m \ - and para !~/#{Mx[:br_page]}|#{Mx[:br_page_new]}/ - @md.set_heading_seg=true - head=if @md.title ; "#{Mx[:lv_o]}4:seg#{Mx[:lv_c]} [#{@md.title}]" - else "#{Mx[:lv_o]}4:seg#{Mx[:lv_c]} [segment]" - end - @tuned_file << head - end - end - @tuned_file << para - end - @tuned_file=@tuned_file.flatten - end - end - def set_header_title(data) #% make sure no false positives - unless @md.set_header_title - puts "\t no document title provided, (will have to manufacture one)" if @md.cmd =~/[MV]/ - @tuned_file=[] - data.each do |para| - unless @md.set_header_title - if para !~/^%{1,2}\s/m \ - and para !~/\A\s*\Z/m - @tuned_file << "#{Mx[:meta_o]}title#{Mx[:meta_c]} #{@md.heading_seg_first}" - @md.title=@md.heading_seg_first - @md.set_header_title=true - end - end - @tuned_file << para - end - @tuned_file=@tuned_file.flatten - end - end - end -end -__END__ diff --git a/lib/sisu/v0/dal_substitutions_and_insertions.rb b/lib/sisu/v0/dal_substitutions_and_insertions.rb deleted file mode 100644 index cadae8a7..00000000 --- a/lib/sisu/v0/dal_substitutions_and_insertions.rb +++ /dev/null @@ -1,129 +0,0 @@ -# coding: utf-8 -=begin - - * Name: SiSU - - * Description: a framework for document structuring, publishing and search - - * Author: Ralph Amissah - - * Copyright: (C) 1997 - 2009 Ralph Amissah All Rights Reserved. - - * License: GPL 3 or later: - - SiSU, a framework for document structuring, publishing and search - - Copyright (C) Ralph Amissah - - This program is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by the Free - Software Foundation, either version 3 of the License, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - more details. - - You should have received a copy of the GNU General Public License along with - this program. If not, see . - - If you have Internet connection, the latest version of the GPL should be - available at these locations: - - - - - - - - * SiSU uses: - * Standard SiSU markup syntax, - * Standard SiSU meta-markup syntax, and the - * Standard SiSU object citation numbering and system - - * Hompages: - - - - * Download: - - - * Ralph Amissah - - - - ** Description: system environment, resource control and configuration details - -=end -module SiSU_substitute_and_insert - class SI - def initialize(md,data) - @md,@data=md,data - @skin=SiSU_Env::Info_skin.new(@md) - end - def substitutions_and_insertions? - data=@data - data_expand=[] - if data[0] =~ /^#!\s*(?:\/usr\/bin\/env sisu|\/usr\/bin\/sisu)/ # remove bang from top #! (however file is stripped, so will be removed provided no content precedes it) - data[0].gsub!(/^#!\s*\/usr\/bin\/sisu/,'') - data[0].gsub!(/^#!\s*\/usr\/bin\/env sisu/,'') - end - if data[0] =~ /^(SiSU\s+[\d.]*|sisu-[\d.]+)$/ # SiSU identifier - data[0].gsub!(/^(SiSU\s*[\d.]*)$/,'% \1') - data[0].gsub!(/^(sisu-[\d.]+)$/,'% \1') - end - data.each do |para| - if para =~/<:insert\d+!?>/ \ - and para !~/^%\s+/ - @skin.select - ins=SiSU_Viz::Inserts.new - case para - when /^\s*<:insert1>\s*$/ - para=[] - ins.insert1.split(/\n\n/).each{|x| para << x } - when /^\s*<:insert2>\s*$/ - para=[] - ins.insert2.split(/\n\n/).each{|x| para << x } - when /^\s*<:insert3>\s*$/ - para=[] - ins.insert3.split(/\n\n/).each{|x| para << x << "\n"} - para=ins.insert3 - when /^\s*<:insert4>\s*$/ - para=[] - ins.insert4.split(/\n\n/).each{|x| para << x << "\n"} - para=ins.insert4 - when /^\s*<:insert5>\s*$/ - para=[] - ins.insert5.split(/\n\n/).each{|x| para << x << "\n"} - when /^\s*<:insert6>\s*$/ - para=[] - ins.insert6.split(/\n\n/).each{|x| para << x << "\n"} - when /^\s*<:insert7>\s*$/ - para=[] - ins.insert7.split(/\n\n/).each{|x| para << x << "\n"} - end - para.each{|x| data_expand << x } - else data_expand << para - end - data_expand.flatten! - data_expand.compact! - end - data_expand.each do |para| - para=if @md.markup_version.to_f >= 0.38 - SiSU_document_structure::Structure.new(@md,para).structure_markup_normalize - else - SiSU_document_structure::Structure.new(@md,para).structure_marks - end - #para.gsub!(//,'\1') #consider, would permit use of text hyperlinks if desired, dal_syntax more appropriate? - para.gsub!(/^((?:[1-9]|:?[A-C])~\S*)\s*$/,'\1~ [Note: heading marker::required title missing]~#') #conditional header for incorporated document 2004w12 - if para =~/^@\S+?:/ - para.gsub!(/^@(\S+?):\s+/,"#{Mx[:meta_o]}\\1#{Mx[:meta_c]}") - para.gsub!(/^@(\S+?):([+-])\s+/,"#{Mx[:meta_o]}\\1\\2#{Mx[:meta_c]}") - end - end - end - end -end -__END__ - diff --git a/lib/sisu/v0/dal_syntax.rb b/lib/sisu/v0/dal_syntax.rb deleted file mode 100644 index e917621a..00000000 --- a/lib/sisu/v0/dal_syntax.rb +++ /dev/null @@ -1,427 +0,0 @@ -# coding: utf-8 -=begin - - * Name: SiSU - - * Description: a framework for document structuring, publishing and search - - * Author: Ralph Amissah - - * Copyright: (C) 1997 - 2009 Ralph Amissah All Rights Reserved. - - * License: GPL 3 or later: - - SiSU, a framework for document structuring, publishing and search - - Copyright (C) Ralph Amissah - - This program is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by the Free - Software Foundation, either version 3 of the License, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - more details. - - You should have received a copy of the GNU General Public License along with - this program. If not, see . - - If you have Internet connection, the latest version of the GPL should be - available at these locations: - - - - - - - - * SiSU uses: - * Standard SiSU markup syntax, - * Standard SiSU meta-markup syntax, and the - * Standard SiSU object citation numbering and system - - * Hompages: - - - - * Download: - - - * Ralph Amissah - - - - ** Description: Syntax for markup, input markup syntaxes, determined here - -=end -module SiSU_Syntax - class Words - def initialize(line,md,mkp) - @line,@md,@mkp=line,md,mkp - end - end - class Markup - def initialize(md='',data='') - @data,@md=data,md - @vz=SiSU_Env::Get_init.instance.skin - @data_new=[] - url_and_stub=SiSU_Env::Info_env.new.url - @output_url="#{url_and_stub.remote}" - @http_m=%r{\{.+?\}(?:https?|file)://\S+|(?:https?|file):\S+|\.\.\/\S+|\S+?\.png\b|[*]~\S+|^#{Mx[:meta_o]}.+|#{Mx[:gr_o]}(?:code|group|alt|verse)(?:-end)?#{Mx[:gr_c]}|#{Mx[:fa_o]}:br#{Mx[:fa_c]}} - @manmkp_ital='[i/]\\{.+?\\}[i/]' - tail_m_ital=%q{(?:\s|[.,;:?!'")]|~\^|~\\\{\s|$)} - tail_m_bold=%{(?:(?:#{Mx[:fa_italics_c]})?(?:\s|[.,;:?!'")]|~\^|~\\\{\s|$))?} - bold_line=%{^!_\s.+?(?:#{Mx[:br_line]}|\n|$)} - ital_line=%{^/_\s.+?(?:#{Mx[:br_line]}|\n|$)} - @line_scan_ital=if defined? @md.make_italic[:str] \ - and defined? @vz.markup_make_italic[:str] - /#@http_m|#{bold_line}|#@manmkp_ital#{tail_m_ital}|(?:#{@md.make_italic[:str]}|#{@vz.markup_make_italic[:str]})#{tail_m_ital}|\S+|\n/ - elsif defined? @md.make_italic[:str] - /#@http_m|#{bold_line}|#@manmkp_ital#{tail_m_ital}|#{@md.make_italic[:str]}#{tail_m_ital}|\S+|\n/ - elsif defined? @vz.markup_make_italic[:str] - /#@http_m|#{bold_line}|#@manmkp_ital#{tail_m_ital}|#{@vz.markup_make_italic[:str]}#{tail_m_ital}|\S+|\n/ - end - @manmkp_bold='^!_\s.+?(?:\n|$)|[*!b]\\{.+?\\}[*!b]|[*!][a-zA-Z0-9\-_]+[*!]' - @line_scan_bold=if (defined? @md.make_bold[:str] \ - and @md.make_bold[:str]) \ - and (defined? @vz.markup_make_bold[:str] \ - and @vz.markup_make_bold[:str]) - /#@http_m|#{bold_line}|(?:#@manmkp_bold|#{@md.make_bold[:str]}|#{@vz.markup_make_bold[:str]})#{tail_m_bold}|\S+|\n/ - elsif defined? @md.make_bold[:str] \ - and @md.make_bold[:str] - /#@http_m|#{bold_line}|(?:#@manmkp_bold|#{@md.make_bold[:str]})#{tail_m_bold}|\S+|\n/ - elsif defined? @vz.markup_make_bold[:str] \ - and @vz.markup_make_bold[:str] - /#@http_m|#{bold_line}|(?:#@manmkp_bold|#{@vz.markup_make_bold[:str]})#{tail_m_bold}|\S+|\n/ - end - end - def songsheet - @data.each do |line| - line=if @md.sem_tag then sem(line) else line end - line=pre(line) - line=wordlist_italics(line) - line=wordlist_bold(line) - line=bodymarkup(line) - @data_new << line - end - @data_new - end - def sem(line) - line=SiSU_sem::Tags.new(line,@md).rm.all - end - def pre(line) - line=line.dup - line.gsub!(/^0~(\S+)/,"#{Mx[:lv_o]}@\\1#{Mx[:lv_c]}") - line.gsub!(/^@(\S+?):/,"#{Mx[:lv_o]}@\\1#{Mx[:lv_c]}") - if line =~/\{(?:t|table)(?:~h)?\s*c?[\d; ]*\}/; line.gsub!(/(\n)/,';;\1') #markup for alternative tables - end - line - end - def wordlist_italics(line) - line=line.dup - if (defined? @md.make_italic[:str] \ - and @md.make_italic[:str]) \ - or (defined? @vz.markup_make_italic[:str] \ - and @vz.markup_make_italic[:str]) - line= if line !~/^(?:#{Rx[:meta]}|#{Mx[:gr_o]}code)/ #!~/^(?:[0-6]~|!_|%+\s)/ - word=line.scan(@line_scan_ital) - word.flatten! - word.compact! #reinstated - line_array=[] - word.each do |w| - unless /#@manmkp_ital|#@http_m/.match(w) - if defined? @md.make_italic[:regx] \ - and @md.make_italic[:regx] - w.gsub!(@md.make_italic[:regx],"#{Mx[:fa_italics_o]}\\1#{Mx[:fa_italics_c]}") - elsif defined? @vz.markup_make_italic \ - and @vz.markup_make_italic - w.gsub!(@vz.markup_make_italic,"#{Mx[:fa_italics_o]}\\1#{Mx[:fa_italics_c]}") - end - end - line_array << w - end - line_array.join(' ') - else line - end - end - line - end - def embolden(given) - given.gsub!(/^!_\s+((?:\{|#{Mx[:lnk_o]})(?:~^ )?.+?(?:\}|#{Mx[:lnk_o]})http:\/\/\S+.*?)(
)/,"#{Mx[:fa_bold_o]} \\1 #{Mx[:fa_bold_c]}\\2") - given.gsub!(/^!_\s+((?:\{|#{Mx[:lnk_o]})(?:~^ )?.+?(?:\}|#{Mx[:lnk_o]})http:\/\/\S+.*)/,"#{Mx[:fa_bold_o]} \\1 #{Mx[:fa_bold_c]}") - given.gsub!(/(?:^!_|^#{Mx[:lv_o]}[7-9]:\S*?#{Mx[:lv_c]})\s*(.+?)(
)/,"#{Mx[:fa_bold_o]}\\1#{Mx[:fa_bold_c]}\\2") - given.gsub!(/(?:^!_|^#{Mx[:lv_o]}[7-9]:\S*?#{Mx[:lv_c]})\s*(.+?)\s+((?:[*]~\S+\s*)+)/,"#{Mx[:fa_bold_o]}\\1#{Mx[:fa_bold_c]}\\2") - given.gsub!(/(?:^!_|^#{Mx[:lv_o]}[7-9]:\S*?#{Mx[:lv_c]})\s*(.+?)\s*([~-]#)$/,"#{Mx[:fa_bold_o]}\\1#{Mx[:fa_bold_c]}\\2") - given.gsub!(/(?:^!_\s+|^#{Mx[:lv_o]}[7-9]:\S*?#{Mx[:lv_c]}\s*)(.*)?\s*$/,"#{Mx[:fa_bold_o]}\\1#{Mx[:fa_bold_c]}") - end - def italicise(given) - given.gsub!(/^\/_\s*(.+?)(
)/,"#{Mx[:fa_italics_o]}\\1#{Mx[:fa_italics_c]}\\2") - given.gsub!(/^\/_\s*(.+?)\s+((?:[*]~\S+\s*)+)/,"#{Mx[:fa_italics_o]}\\1#{Mx[:fa_italics_c]}\\2") - given.gsub!(/^\/_\s*(.+?)\s*([~-]#)$/,"#{Mx[:fa_italics_o]}\\1#{Mx[:fa_italics_c]}\\2") - given.gsub!(/^\/_\s+(.*)?\s*$/,"#{Mx[:fa_italics_o]}\\1#{Mx[:fa_italics_c]}") - end - def wordlist_bold(line) - line=line.dup - if (defined? @md.make_bold[:str] \ - and @md.make_bold[:str]) \ - or (defined? @vz.markup_make_bold[:str] \ - and @vz.markup_make_bold[:str]) - line=if line !~/^(?:#{Rx[:meta]}|#{Mx[:lv_o]}[1-9]:\S*?#{Mx[:lv_c]}|%+\s|#{Mx[:gr_o]}code)/ - line_array=[] - word=line.scan(@line_scan_bold) - word.flatten! - word.compact! - word.each do |w| - unless /#@manmkp_bold|#@http_m/.match(w) - if defined? @md.make_bold[:regx] \ - and @md.make_bold[:regx] #document header: 0~bold [bold word list] - w.gsub!(@md.make_bold[:regx],"#{Mx[:fa_bold_o]}\\1#{Mx[:fa_bold_c]}") - elsif defined? @vz.markup_make_bold \ - and @vz.markup_make_bold #defaults and skin adjusted bold word list - w.gsub!(@vz.markup_make_bold,"#{Mx[:fa_bold_o]}\\1#{Mx[:fa_bold_c]}") - end - else - if w =~ /(?:^!_|^#{Mx[:lv_o]}[7-9]:\S*?#{Mx[:lv_c]})\s+/; embolden(w) #bold paragraph/emphasize #may wish to remove think about 7{ 8{ conversion not satisfactory, as information is lost! - elsif w =~/^\/_\s+/; italicise(w) - end - end - line_array << w - end - line_array.join(' ') - else line - end - else - if line !~/^(?:#{Mx[:lv_o]}[0-9]:\S*?#{Mx[:lv_c]}|%+\s)/ \ - and line =~ /(?:^!_|^#{Mx[:lv_o]}[7-9]:\S*?#{Mx[:lv_c]})\s+/ - embolden(line) - end - if line =~ /\/_\s+/ - italicise(line) - end - end - line - end - def bodymarkup(line) - # << http://www.jus.uio.no/sisu/sisu_markup_table/markup >> - # See: data/sisu/sample/document_samples_sisu_markup/ - # !{emphasis}! e{emphasis}e emphasis - # *{bold text}* b{bold}b bold text - # _{underline}_ u{underline}u underline - # /{italics}/ i{italics}i italics - # "{citation}" c{citation}c citation #blockquote? - # ^{superscript}^ superscript - # ,{subscript}, subscript - # +{inserted text}+ inserted text - # -{deleted text}- deleted text - # {url address}:url - # {image.png}imageurl - # {image.png}png - # ~{endnote}~ - # !_ #bold/emphasise paragraph - # _" #blockquote paragraph - # _1 <:i1> #indent paragraph 1 step - # _2 <:i2> #indent paragraph 2 steps - # _3 <:i3> #indent paragraph 3 steps - # _4 <:i4> #indent paragraph 4 steps - # _* #bullet (list) ● - # _1* #bullet (list) indented - # _1* #bullet (list) indented - # # #numbered (list) level 1 - # _# #numbered (list) level 2 - line=line.dup - if line !~/^#{Mx[:meta_o]}|#{Mx[:gr_o]}codeline#{Mx[:gr_c]}|#{Mx[:gr_o]}code-end#{Mx[:gr_c]}/ - #special characters: ~ { } < > - _ / also used : ^ ! # - line_array=[] - line.gsub!(/^%{1,4} .+/mi,'') #remove comments - word=line.scan(/\S+|\n/) unless line =~/^(?:#{Mx[:meta_o]}|%+\s)/ #visit - if word - word.each do |w| # _ - / # | : ! ^ ~ - unless w =~/^#{Mx[:lv_o]}[0-9]:\S*?#{Mx[:lv_c]}|~\{|\}~|~\[|\]~|^\^~|~\^|\*~\S+|~#|\{t?~|\{table|http:\/\/\S+/ - w.gsub!(/\\?~/,"#{Mx[:gl_o]}#126#{Mx[:gl_c]}") #escaped special character - #w.gsub!(/~/,"#{Mx[:gl_o]}#126#{Mx[:gl_c]}") - end - w.gsub!(/^\<$/,"#{Mx[:gl_o]}#lt#{Mx[:gl_c]}") #escaped special character - w.gsub!(/^\>$/,"#{Mx[:gl_o]}#gt#{Mx[:gl_c]}") #escaped special character - line_array << w - end - line=line_array.join(' ') - line=line.strip - end - line.gsub!(/~\{(.+?)\}~/m,Mx[:en_a_o] + '\1' + Mx[:en_a_c]) - line.gsub!(/~\[([^*+].+?)\]~/m,Mx[:en_b_o] + '* \1' + Mx[:en_b_c]) #default if markup does not specify - line.gsub!(/~\[(.+?)\]~/m,Mx[:en_b_o] + '\1' + Mx[:en_b_c]) - if @md.subtitle and not @md.subtitle.empty? - if line =~/(?:by\s+)?(?:@creator|@author)/ - line.gsub!(/^(#{Mx[:lv_o]}1:\??#{Mx[:lv_c]})\s*@title\s+(?:(by\s+)?(?:@creator|@author))\s*$/,"\\1#{@md.title} - #{@md.subtitle},
\\2#{@md.author}") - else - line.gsub!(/^(#{Mx[:lv_o]}1:\??#{Mx[:lv_c]})\s*@title\s*$/,"\\1 #{@md.title} - #{@md.subtitle}") - end - else - if line =~/(?:by\s+)?(?:@creator|@author)/ - line.gsub!(/^(#{Mx[:lv_o]}1:\??#{Mx[:lv_c]})\s*@title\s+(?:(by\s+)?(?:@creator|@author))\s*$/,"\\1#{@md.title},
\\2#{@md.author}") - else - line.gsub!(/^(#{Mx[:lv_o]}1:\??#{Mx[:lv_c]})\s*@title\s*$/,"\\1 #{@md.title}") - end - end - line.gsub!(/^(1~\??) @title\s*$/,"\\1 #{@md.title} - #{@md.subtitle}") # - line.gsub!(/^(#{Mx[:lv_o]}[23]:\??#{Mx[:lv_c]}) (?:(by\s+)?(?:@creator|@author))\s*$/,"\\1 \\2#{@md.author}") # - line.gsub!(/<((?:https?|file):\/\/\S+?)>/,'< \1 >') #catch problem markup - line.gsub!(/\}\.\.\/(\S+)/,"\}#@output_url/\\1") #means you are not supporting relative links (only relevant in html), converted to static here - line.gsub!(/<:=(\S+?)>/,'{ c_\1.png 14x14 }http://www.jus.uio.no/sisu') #adjustment 2005w30 - line.gsub!(//,'<:\1>') #escaped special character - line.gsub!(/ /,"#{Mx[:nbsp]}") #escaped special character - line.gsub!(/\\~/,"#{Mx[:gl_o]}#126#{Mx[:gl_c]}") #escaped special character - line.gsub!(/\\\{/,"#{Mx[:gl_o]}#123#{Mx[:gl_c]}") #escaped special character - line.gsub!(/\\\}/,"#{Mx[:gl_o]}#125#{Mx[:gl_c]}") #escaped special character - line.gsub!(/\\\<>/,"#{Mx[:gl_o]}#gt#{Mx[:gl_c]}#{Mx[:gl_o]}#gt#{Mx[:gl_c]}") #escaped special character - line.gsub!(/\\\/,"#{Mx[:gl_o]}#gt#{Mx[:gl_c]}") #escaped special character - line.gsub!(/\\\_/,"#{Mx[:gl_o]}#095#{Mx[:gl_c]}") #escaped special character - line.gsub!(/\\\-/,"#{Mx[:gl_o]}#045#{Mx[:gl_c]}") #escaped special character - line.gsub!(/\\\+/,"#{Mx[:gl_o]}#043#{Mx[:gl_c]}") #escaped special character - line.gsub!(/\\\//,"#{Mx[:gl_o]}#047#{Mx[:gl_c]}") #escaped special character - line.gsub!(/\\\#/,"#{Mx[:gl_o]}#035#{Mx[:gl_c]}") #escaped special character - line.gsub!(/\\\&/,"#{Mx[:gl_o]}#038#{Mx[:gl_c]}") #& #escaped special character - line.gsub!(/\\\|/,"#{Mx[:gl_o]}#124#{Mx[:gl_c]}") #not really a sisu special character but made available as possibility - line.gsub!(/\\\:/,"#{Mx[:gl_o]}#058#{Mx[:gl_c]}") #not really a sisu special character but made available as possibility - line.gsub!(/\\\!/,"#{Mx[:gl_o]}#033#{Mx[:gl_c]}") #not really a sisu special character but made available as possibility - line.gsub!(/\\\^/,"#{Mx[:gl_o]}#094#{Mx[:gl_c]}") #not really a sisu special character but made available as possibility - line.gsub!(/\\\,/,"#{Mx[:gl_o]}#044#{Mx[:gl_c]}") #not really a sisu special character but made available as possibility - #ADD --> - line.gsub!(/\\\\/,"#{Mx[:gl_o]}#092#{Mx[:gl_c]}") #escaped special character - line.gsub!(/\\\*/,"#{Mx[:gl_o]}#042#{Mx[:gl_c]}") #escaped special character - line.gsub!(/\\\!/,"#{Mx[:gl_o]}#033#{Mx[:gl_c]}") #escaped special character - line.gsub!(/(?:^| )\*~([a-z0-9._-]+)/i," #{Mx[:mk_o]}:name#\\1#{Mx[:mk_c]}") #html name marker - line.gsub!(/^(#{Mx[:lv_o]}[56]:(\S+?)#{Mx[:lv_c]})\s*(.+)/,"\\1 \\3 #{Mx[:mk_o]}:name#\\2#{Mx[:mk_c]}") #html name marker , however at present takes you to correct position within sub-toc, will nneed to clean from sub-toc leaving in main body only - line.gsub!(/(?:<:?br>|
)/,"#{Mx[:br_line]}") #indent used in endnotes, not implemented, replace when ready with: line.gsub!(/(?:
|
)\s*_([12])\s+/,'
<:i\1> ') - if line=~/(^|#{Mx[:gl_c]}| )\{~\^ (.+?)\s*\}((?:https?|file|ftp):\S+)\s*#{Mx[:en_a_o]}(.+?)#{Mx[:en_a_c]}/m - line.gsub!(/(^|#{Mx[:gl_c]}| )\{~\^ ([^}]+?)\s*\}((?:https?|file|ftp):\S+)\s*#{Mx[:en_a_o]}(.+?)#{Mx[:en_a_c]}/m, - "\\1#{Mx[:lnk_o]}\\2#{Mx[:lnk_c]}\\3 #{Mx[:en_a_o]}\\3 \\4#{Mx[:en_a_c]}") # watch - end - if line=~/(^|#{Mx[:gl_c]}| )\{~\^ (.+?)\s*\}((?:https?|file|ftp):\S+?)([;,.]?(?=\s|$))/m - line.gsub!(/(^|#{Mx[:gl_c]}| )\{~\^ (.+?)\s*\}((?:https?|file|ftp):\S+?)([;,.]?(?=\s|$))/m, - "\\1#{Mx[:lnk_o]}\\2#{Mx[:lnk_c]}\\3\\4 #{Mx[:en_a_o]}\\3#{Mx[:en_a_c]} ") - #text url endnote url shortcut {~^ [text] }http://url is { [text] }http://url #{Mx[:en_a_o]} http://url #{Mx[:en_a_c]} [plus adjustment for commas] - #means for this class, non-object, un-numbered ~# will not work # shortcut should not be used in conjunction with rebgular matches #reversed order, and addition of no-tilde.. - end - #line.gsub!(/(^| )\{~\^ (.+?)\s*\}((?:https?|file|ftp):\S+)\s+~\{(.+?)\}~/,'\1{ \2 }\3 ~{ \3 \4 }~') # watch - line.gsub!(/<:?p([nb])>/,"#{Mx[:fa_o]}p\\1#{Mx[:fa_c]}") #indent used in endnotes, not implemented, replace when ready with: line.gsub!(/(?:
|
)\s*_([12])\s+/,'
<:i\1> ') - # depreciated -->#{Mx[:fa_c]} - line.gsub!(/(^|#{Mx[:gl_c]}|\s+|['"]|#{Mx[:nbsp]}|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|#{Mx[:lnk_o]}|[\(\[\{]|\>)e\{(.+?)\}e/,"\\1#{Mx[:fa_bold_o]}\\2#{Mx[:fa_bold_c]}") #emphasis - line.gsub!(/(^|#{Mx[:gl_c]}|\s+|['"]|#{Mx[:nbsp]}|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|#{Mx[:lnk_o]}|[\(\[\{]|\>)b\{(.+?)\}b/,"\\1#{Mx[:fa_bold_o]}\\2#{Mx[:fa_bold_c]}") #bold - line.gsub!(/(^|#{Mx[:gl_c]}|\s+|['"]|#{Mx[:nbsp]}|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|#{Mx[:lnk_o]}|[\(\[\{]|\>)u\{(.+?)\}u/,"\\1#{Mx[:fa_underscore_o]}\\2#{Mx[:fa_underscore_c]}") #underscore - line.gsub!(/(^|#{Mx[:gl_c]}|\s+|['"]|#{Mx[:nbsp]}|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|#{Mx[:lnk_o]}|[\(\[\{]|\>)c\{(.+?)\}c/,"\\1#{Mx[:fa_cite_o]}\\2#{Mx[:fa_c_o]}cite#{Mx[:fa_c]}") #cite /blockquote? - line.gsub!(/(^|#{Mx[:gl_c]}|\s+|['"]|#{Mx[:nbsp]}|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|#{Mx[:lnk_o]}|[\(\[\{]|\>)i\{(.+?)\}i/,"\\1#{Mx[:fa_italics_o]}\\2#{Mx[:fa_italics_c]}") #italics - # depreciated ^ - line.gsub!(/(^|#{Mx[:gl_c]}|\s+|['"]|#{Mx[:nbsp]}|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|#{Mx[:lnk_o]}|[\(\[\{]|\>)!\{(.+?)\}!/,"\\1#{Mx[:fa_bold_o]}\\2#{Mx[:fa_bold_c]}") #emphasis - line.gsub!(/(^|#{Mx[:gl_c]}|\s+|['"]|#{Mx[:nbsp]}|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|#{Mx[:lnk_o]}|[\(\[\{]|\>)\*\{(.+?)\}\*/,"\\1#{Mx[:fa_bold_o]}\\2#{Mx[:fa_bold_c]}") #bold - line.gsub!(/(^|#{Mx[:gl_c]}|\s+|['"]|#{Mx[:nbsp]}|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|#{Mx[:lnk_o]}|[\(\[\{]|\>)_\{(.+?)\}_/,"\\1#{Mx[:fa_underscore_o]}\\2#{Mx[:fa_underscore_c]}") #underscore - line.gsub!(/(^|#{Mx[:gl_c]}|\s+|['"]|#{Mx[:nbsp]}|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|#{Mx[:lnk_o]}|[\(\[]|\(|\>)\/\{(.+?)\}\//,"\\1#{Mx[:fa_italics_o]}\\2#{Mx[:fa_italics_c]}") #italics - line.gsub!(/(^|#{Mx[:gl_c]}|\s+|['"]|#{Mx[:nbsp]}|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|\(|\>)\"\{(.+?)\}\"/,"\\1#{Mx[:fa_cite_o]}\\2#{Mx[:fa_c_o]}cite#{Mx[:fa_c]}") #cite /blockquote? - line.gsub!(/(^|[^\\])\^\{(.+?)\}\^/,"\\1#{Mx[:fa_superscript_o]}\\2#{Mx[:fa_superscript_c]}") #superscript - line.gsub!(/(^|#{Mx[:gl_c]}|\s+|['"]|#{Mx[:nbsp]}|\(|\>|\S)9\{(.+?)\}9/,"\\1#{Mx[:fa_superscript_o]}\\2#{Mx[:fa_superscript_c]}") #superscript - line.gsub!(/(^|[^\\]),\{(.+?)\},/,"\\1#{Mx[:fa_subscript_o]}\\2#{Mx[:fa_subscript_c]}") #subscript - line.gsub!(/(^|#{Mx[:gl_c]}|\s+|['"]|#{Mx[:nbsp]}|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|\(|\>)6\{(.+?)\}6/,"\\1#{Mx[:fa_subscript_o]}\\2#{Mx[:fa_subscript_c]}") #subscript - line.gsub!(/(^|#{Mx[:gl_c]}|\s+|['"]|#{Mx[:nbsp]}|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|\(|\>)\+\{(.+?)\}\+/,"\\1#{Mx[:fa_insert_o]}\\2#{Mx[:fa_insert_c]}") #inserted text - line.gsub!(/(^|#{Mx[:gl_c]}|\s+|['"]|#{Mx[:nbsp]}|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|\(|\>)v\{(.+?)\}v/,"\\1#{Mx[:fa_insert_o]}\\2#{Mx[:fa_insert_c]}") #inserted text - line.gsub!(/(^|#{Mx[:gl_c]}|\s+|['"]|#{Mx[:nbsp]}|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|\(|\>)-\{(.+?)\}-/,"\\1#{Mx[:fa_strike_o]}\\2#{Mx[:fa_strike_c]}") #strikethrough - deleted text - line.gsub!(/(^|#{Mx[:gl_c]}|\s+|['"]|#{Mx[:nbsp]}|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|\(|\>)x\{(.+?)\}x/,"\\1#{Mx[:fa_strike_o]}\\2#{Mx[:fa_strike_c]}") #deleted text - line.gsub!(/(^|#{Mx[:gl_c]}|\s+|['"]|#{Mx[:nbsp]}|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|\(|\>)\*(\S+?)\*/,"\\1#{Mx[:fa_bold_o]}\\2#{Mx[:fa_bold_c]}") #bold single word, watch - line.gsub!(/(^|#{Mx[:gl_c]}|\s+|['"]|#{Mx[:nbsp]}|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|\(|\>)\!(\S+?)\!/,"\\1#{Mx[:fa_bold_o]}\\2#{Mx[:fa_bold_c]}") #bold single word, watch - line.gsub!(/(^|#{Mx[:gl_c]}|\s+|['"]|#{Mx[:nbsp]}|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|\(|\>)\/([\(\)a-zA-Z0-9']+?)\/([^a-zA-Z0-9]|[ ,.;:'"~$]|$)/,"\\1#{Mx[:fa_italics_o]}\\2#{Mx[:fa_italics_c]}\\3") #italics single word, watch - line.gsub!(/(^|#{Mx[:gl_c]}|\s+|['"]|#{Mx[:nbsp]}|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|\(|\>)_(\S+?)_([.,!'")]?(?:\s|$))/,"\\1#{Mx[:fa_underscore_o]}\\2#{Mx[:fa_underscore_c]}\\3") #underscore single word, watch (made more complicated by url decoration escape tag (_url)) - line.gsub!(/(^|#{Mx[:gl_c]}|\s+)-([^{]\S+?)-( |$)/,"\\1#{Mx[:fa_strike_o]}\\2#{Mx[:fa_strike_c]}\\3") #underscore single word, watch - line.gsub!(/(^|#{Mx[:gl_c]}|\s+|['"]|#{Mx[:nbsp]}|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|\(|\>|\d+)\^(\S+?)\^/,"\\1#{Mx[:fa_superscript_o]}\\2#{Mx[:fa_superscript_c]}") #superscript single word, watch digit added - line.gsub!(/<[:e]\s+(.+?)!?>/,"#{Mx[:en_a_o]}\\1#{Mx[:en_a_c]}") #not tested - line.gsub!(/^\s*_\*\s*/,"#{Mx[:gl_bullet]}") #bullets, shortcut - line.gsub!(/=\{(.+?)\}/,"#{Mx[:idx_o]}\\1#{Mx[:idx_c]}") # - line.gsub!(/^\s*_([1-9])\*\s*/,"#{Mx[:pa_o]}:i\\1#{Mx[:pa_c]}#{Mx[:gl_bullet]}") #bullets, shortcut - #line.gsub!(/^\s*_([1-9])(\*+)\s*/,"#{Mx[:fa_o]}:i\\1#{Mx[:fa_c]}#{Mx[:fa_o]}\\2#{Mx[:fa_c_o]}") #bullets, shortcut - line.gsub!(/^\s*_([1-9])\s+/,"#{Mx[:pa_o]}:i\\1#{Mx[:pa_c]}") #indent - line.gsub!(/(?:<:?br>|
)/,"#{Mx[:br_line]}") #indent used in endnotes, not implemented, replace when ready with: line.gsub!(/(?:
|
)\s*_([12])\s+/,'
<:i\1> ') - ##added - #line.gsub!(/(?:^!_\s+|^[7-9]~\s+|<:b>)(.*)?([~-]#)$/i,'\1 \2') #bold paragraph/emphasize #may wish to remove think about 7{ 8{ conversion not satisfactory, as information is lost! - #line.gsub!(/(?:^!_\s+|^[7-9]~\s+|<:b>)(.*)?\s*$/i,'\1') #bold paragraph/emphasize #may wish to remove think about 7{ 8{ conversion not satisfactory, as information is lost! - #line.gsub!(/(?:(?:^| )!_ |^[7-9]~ |<:b>)(.*)\n/mi,'\1 ') #bold paragraph/emphasize #may wish to remove think about 7{ 8{ conversion not satisfactory, as information is lost! - #line.gsub!(/^_" (.*)\n/i,'
\1
') #blockquotes #introduce KEEP - line.gsub!(/<:hi>/,"#{Mx[:fa_hilite_o]}") #'') # bright yellow rgb(255,255,0) pale yellow rgb(255,255,200) - line.gsub!(/<:\/hi>/,"#{Mx[:fa_hilite_c]}") #'') - #line.gsub!(/<:hi>/, - #line.gsub!(/<:\/hi>/,'') - line.gsub!(/(#{Mx[:gr_o]}verse#{Mx[:gr_c]}.+)/m,"\\1\n") - line.gsub!(/[ ]+($)/,'\1') - line.gsub!(/\{\s*(.+?)\s*\}(https?:\S+)/,"#{Mx[:lnk_o]}\\1#{Mx[:lnk_c]}\\2") #linked (text or image) - line.gsub!(/\{\s*(.+?)\s*\}(image)/,"#{Mx[:lnk_o]}\\1#{Mx[:lnk_c]}\\2") #linked image - #line.gsub!(/(#{Mx[:lnk_c]})\s*((?:https?|file|ftp):\S+?)/m,'\1\2') - ##semantic - #line.gsub!(/([a-z](?:[a-z_:.]+?[a-z])?)+(?::\{(.+?)\}:\1)/m,"\\1#{Mx[:sm_set_o]}\\2#{Mx[:sm_set_c]}\\1") - #line.gsub!(/;\{\s*(.+?)\s*\};([a-z]+(?:[_:.][a-z]+)*)/,"#{Mx[:sm_subset_o]}\\1#{Mx[:sm_subset_c]}\\2") - if line =~/(#{Mx[:gr_o]}(?:verse|group)#{Mx[:gr_c]})/; line.gsub!(/(#{Mx[:gr_o]}(?:verse|group)#{Mx[:gr_c]})/i,"\\1\n") #cosmetic - else line.gsub!(/
/i,"#{Mx[:br_line]}\n") - end - elsif line =~/^#{Mx[:gr_o]}code(?:-end)?#{Mx[:gr_c]}|#{Mx[:gr_o]}codeline#{Mx[:gr_c]}/ # /^<:code>/ #should be enough # underscore used as escape for angle brackets - line.gsub!(/([<>])/,'_\1') - line.gsub!(/_<:(\S+?)_>/,'<:\1>') #convert <:\S+> back, clumsy - line.gsub!(/_<(br(?: \/)?)_>/,'<\1>') #convert

back, clumsy - line.gsub!(/(^|#{Mx[:gl_c]}|\s)<(br(?: \/)?)>([\s,.]|$)/,'\1<\2>\3') #convert

back, clumsy - line.gsub!(/#{Mx[:gr_o]}codeline#{Mx[:gr_c]}/,"\n#{Mx[:nbsp]}#{Mx[:nbsp]}") #temporary fix, prefer: #line.gsub!(/<:codeline>/,"\n") - line - else # 0~ - end - line - end - def tech #script markup planned to be more strict for technical documents - # !{emphasis}! e{emphasis}e emphasis - # *{bold text}* b{bold}b bold text - # _{underline}_ u{underline}u underline - # /{italics}/ i{italics}i italics - # "{citation}" c{citation}c citation - # ^{superscript}^ superscript - # ,{subscript}, subscript - # +{inserted text}+ inserted text - # -{deleted text}- deleted text - # {url address}:url - # {image.png}imageurl - # {image.png}png - # ~{endnote}~ - # +1 - # +2 - puts 'tech' - @data.each do |line| - line.gsub!(/(^|\s+|['"]|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|[\(\[]|\>)e\{(.+?)\}e/,"\\1#{Mx[:fa_bold_o]}\\2#{Mx[:fa_bold_c]}") #emphasis - line.gsub!(/(^|\s+|['"]|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|[\(\[]|\>)b\{(.+?)\}b/,"\\1#{Mx[:fa_bold_o]}\\2#{Mx[:fa_bold_c]}") #bold - line.gsub!(/(^|\s+|['"]|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|[\(\[]|\>)u\{(.+?)\}u/,"\\1#{Mx[:fa_underscore_o]}\\2#{Mx[:fa_underscore_c]}") #underscore - line.gsub!(/(^|\s+|['"]|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|[\(\[]|\>)c\{(.+?)\}c/,"\\1#{Mx[:fa_cite_o]}\\2#{Mx[:fa_c_o]}cite#{Mx[:fa_c]}") #cite - line.gsub!(/(^|\s+|['"]|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|[\(\[]|\>)i\{(.+?)\}i/,"\\1#{Mx[:fa_italics_o]}\\2#{Mx[:fa_italics_c]}") #italics - line.gsub!(/(^|\s+|['"]|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|[\(\[]|\>)!\{(.+?)\}!/,"\\1#{Mx[:fa_bold_o]}\\2#{Mx[:fa_bold_c]}") #emphasis - line.gsub!(/(^|\s+|['"]|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|[\(\[]|\>)\*\{(.+?)\}\*/,"\\1#{Mx[:fa_bold_o]}\\2#{Mx[:fa_bold_c]}") #bold - line.gsub!(/(^|\s+|['"]|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|[\(\[]|\>)_\{(.+?)\}_/,"\\1#{Mx[:fa_underscore_o]}\\2#{Mx[:fa_underscore_c]}") #underscore - line.gsub!(/(^|\s+|['"]|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|[\(\[]|\(|\>)\/\{(.+?)\}\//,"\\1#{Mx[:fa_italics_o]}\\2#{Mx[:fa_italics_c]}") #italics - line.gsub!(/(^|\s+|['"]|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|\(|\>)\"\{(.+?)\}\"/,"\\1#{Mx[:fa_cite_o]}\\2#{Mx[:fa_c_o]}cite#{Mx[:fa_c]}") - line.gsub!(/(^|\s+|['"]|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|\(|\>)\^\{(.+?)\}\^/,"\\1#{Mx[:fa_superscript_o]}\\2#{Mx[:fa_superscript_c]}") - line.gsub!(/(^|\s+|['"]|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|\(|\>)9\{(.+?)\}9/,"\\1#{Mx[:fa_superscript_o]}\\2#{Mx[:fa_superscript_c]}") - line.gsub!(/(^|\s+|['"]|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|\(|\>),\{(.+?)\},/,"\\1#{Mx[:fa_subscript_o]}\\2#{Mx[:fa_subscript_c]}") - line.gsub!(/(^|\s+|['"]|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|\(|\>)6\{(.+?)\}6/,"\\1#{Mx[:fa_subscript_o]}\\2#{Mx[:fa_subscript_c]}") - line.gsub!(/(^|\s+|['"]|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|\(|\>)\+\{(.+?)\}\+/,"\\1#{Mx[:fa_insert_o]}\\2#{Mx[:fa_insert_c]}") - line.gsub!(/(^|\s+|['"]|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|\(|\>)v\{(.+?)\}v/,"\\1#{Mx[:fa_insert_o]}\\2#{Mx[:fa_insert_c]}") - line.gsub!(/(^|\s+|['"]|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|\(|\>)-\{(.+?)\}-/,"\\1#{Mx[:fa_strike_o]}\\2#{Mx[:fa_strike_c]}") - line.gsub!(/(^|\s+|['"]|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|\(|\>)x\{(.+?)\}x/,"\\1#{Mx[:fa_strike_o]}\\2#{Mx[:fa_strike_c]}") - line.gsub!(/(^|\s+|['"]|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|\(|\>)\*(\S+?)\*/,"\\1#{Mx[:fa_bold_o]}\\2#{Mx[:fa_bold_c]}") #bold single word, watch - line.gsub!(/(^|\s+|['"]|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|\(|\>)\!(\S+?)\!/,"\\1#{Mx[:fa_bold_o]}\\2#{Mx[:fa_bold_c]}") #bold single word, watch - line.gsub!(/(^|\s+|['"]|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|\(|\>)\/([\(\)a-zA-Z0-9']+?)\/([ ,.;:'"~$]|[^a-zA-Z0-9])/,"\\1#{Mx[:fa_italics_o]}\\2#{Mx[:fa_italics_c]}\\3") #italics single word, watch - line.gsub!(/(^|\s+|['"]|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|\(|\>)_(\S+?)_/,"\\1#{Mx[:fa_underscore_o]}\\2#{Mx[:fa_underscore_c]}") #underscore single word, watch - line.gsub!(/(^|\s+|['"]|#{Mx[:fa_o_c]}|#{Mx[:fa_c]}|\(|\>)\^(\S+?)\^/,"\\1#{Mx[:fa_superscript_o]}\\2#{Mx[:fa_superscript_c]}") #check #superscript single word, watch digit added - line.gsub!(/^\s*_\([1-9]\)\(\*\+\)\s*/,"#{Mx[:pa_o]}:i\\1#{Mx[:pa_c]}#{Mx[:fa_o]}\\2#{Mx[:fa_c_o]}") # bullets, shortcut - line.gsub!(/^\s*_\([1-9]\)\s+/,"#{Mx[:pa_o]}:i\\1#{Mx[:pa_c]}") - line.gsub!(/(?:<:?br>|
)\s*_[12]\s+/,"#{Mx[:br_line]} ") #indent used in endnotes, not implemented, replace when ready with: line.gsub!(/(?:
|
)\s*_([12])\s+/,'
<:i\1> ') - end - @data - end - end -end -__END__ -NOTE: -downstream code blocks are not currently/yet honoured, e.g. stuff within angle brackets are removed diff --git a/lib/sisu/v0/db_columns.rb b/lib/sisu/v0/db_columns.rb deleted file mode 100644 index 2dc88a9d..00000000 --- a/lib/sisu/v0/db_columns.rb +++ /dev/null @@ -1,229 +0,0 @@ -# coding: utf-8 -=begin - - * Name: SiSU - - * Description: a framework for document structuring, publishing and search - - * Author: Ralph Amissah - - * Copyright: (C) 1997 - 2009 Ralph Amissah All Rights Reserved. - - * License: GPL 3 or later: - - SiSU, a framework for document structuring, publishing and search - - Copyright (C) Ralph Amissah - - This program is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by the Free - Software Foundation, either version 3 of the License, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - more details. - - You should have received a copy of the GNU General Public License along with - this program. If not, see . - - If you have Internet connection, the latest version of the GPL should be - available at these locations: - - - - - - - - * SiSU uses: - * Standard SiSU markup syntax, - * Standard SiSU meta-markup syntax, and the - * Standard SiSU object citation numbering and system - - * Hompages: - - - - * Download: - - - * Ralph Amissah - - - - ** Description: modules shared by the different db types, dbi, postgresql, - sqlite - -=end -module SiSU_DB_columns - class Column_size - def lt_title - 600 - end - def lt_subtitle - 600 - end - def lt_author - 600 - end - def lt_author_title - 100 - end - def lt_author_nationality - 100 - end - def lt_illustrator - 600 - end - def lt_translator - 600 - end - def lt_prepared_by - 600 - end - def lt_digitized_by - 600 - end - def lt_subject - 600 - end - def lt_date - 10 - end - def lt_type - 600 - end - def lt_description - 2000 - end - def lt_publisher - 600 - end - def lt_contributor - 600 - end - def lt_format - 600 - end - def lt_identifier - 256 - end - def lt_source - 200 - end - def lt_language - 30 - end - def lt_language_char - 3 - end - def lt_language_original - 30 - end - def lt_language_original_char - 3 - end - def lt_relation - 100 - end - def lt_coverage - 100 - end - def lt_rights - 2000 - end - def lt_copyright - 2000 - end - def lt_owner - 600 - end - def lt_keywords - 600 - end - def lt_comment - 600 - end - def lt_loc - 30 - end - def lt_dewey - 30 - end - def lt_isbn - 16 - end - def lt_pg - 10 - end - def lt_abstract - 600 - end - def lt_skin - 100 - end - def lt_markup - 100 - end - def lt_links - 100 - end - def lt_information - 100 - end - def lt_contact - 100 - end - def lt_suffix - 600 - end - def lt_filename - 256 - end - def lt_types - 1 - end - def lt_subj - 64 - end - def lt_orig_pub - 400 - end - def lt_orig_pub_date - 400 - end - def lt_orig_pub_institution - 200 - end - def lt_orig_pub_nationality - 200 - end - def lt_writing_focus_nationality - 100 - end - def lt_topic_register - 2000 - end - def document_clean # restriction not necessary #12000 #2712 - 60000 - end - def document_body - 16000 - end - def document_seg - 120 - end - def document_seg_full - 120 - end - def endnote_clean # restriction not necessary #12000 #2712 - 60000 - end - def endnote_body - 16000 - end - end -end -__END__ diff --git a/lib/sisu/v0/db_create.rb b/lib/sisu/v0/db_create.rb deleted file mode 100644 index 2cdb2c06..00000000 --- a/lib/sisu/v0/db_create.rb +++ /dev/null @@ -1,597 +0,0 @@ -# coding: utf-8 -=begin - - * Name: SiSU - - * Description: a framework for document structuring, publishing and search - - * Author: Ralph Amissah - - * Copyright: (C) 1997 - 2009 Ralph Amissah All Rights Reserved. - - * License: GPL 3 or later: - - SiSU, a framework for document structuring, publishing and search - - Copyright (C) Ralph Amissah - - This program is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by the Free - Software Foundation, either version 3 of the License, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - more details. - - You should have received a copy of the GNU General Public License along with - this program. If not, see . - - If you have Internet connection, the latest version of the GPL should be - available at these locations: - - - - - - - - * SiSU uses: - * Standard SiSU markup syntax, - * Standard SiSU meta-markup syntax, and the - * Standard SiSU object citation numbering and system - - * Hompages: - - - - * Download: - - - * Ralph Amissah - - - - ** Description: modules shared by the different db types, dbi, postgresql, - sqlite - -=end -module SiSU_DB_create - require "#{SiSU_lib}/db_columns" - class Create < SiSU_DB_columns::Column_size - require "#{SiSU_lib}/sysenv" - @@dl=nil - def initialize(opt,conn,file,sql_type='pg') - @opt,@conn,@file,@sql_type=opt,conn,file,sql_type - @cX=SiSU_Screen::Ansi.new(@opt.cmd).cX - @comment=Comment.new(@conn,@sql_type) - @@dl ||=SiSU_Env::Info_env.new.digest.length - end - def available - DBI.available_drivers.each do |driver| - puts "Driver: #{driver}" - DBI.data_sources(driver).each do |dsn| - puts "\tDatasource: #{dsn}" - end - end - end - def create_db - @env=SiSU_Env::Info_env.new(@opt.fns) - tell=SiSU_Screen::Ansi.new(@opt.cmd,'invert','Create PG db:',%{"SiSU_#{@env.path.stub_pwd}"}) - tell.colorize unless @opt.cmd =~/q/ - SiSU_Env::System_call.new.create_pg_db(@env.path.stub_pwd) #watch use of path.stub_pwd instead of stub - end - def output_dir? - dir=SiSU_Env::Info_env.new('') - if @opt.cmd =~/d/ - #p dir.path.webserv_stub_ensure.inspect - dir.path.webserv_stub_ensure - end - end - def create_table - def metadata - print %{ - currently using sisu dbi module - to be populated from documents files - create tables metadata - data import through ruby transfer - } unless @opt.cmd =~/q/ - @conn.execute(%{ - CREATE TABLE metadata ( - tid BIGINT PRIMARY KEY, - title VARCHAR(#{lt_title}) NULL, - subtitle VARCHAR(#{lt_subtitle}) NULL, - author VARCHAR(#{lt_author}) NULL, -/* plan to replace creator field, currently used, with author field */ - creator VARCHAR(#{lt_author}) NULL, - author_title VARCHAR(#{lt_author_title}) NULL, - author_nationality VARCHAR(#{lt_author_nationality}) NULL, - illustrator VARCHAR(#{lt_illustrator}) NULL, - translator VARCHAR(#{lt_translator}) NULL, - subject VARCHAR(#{lt_subject}) NULL, - date VARCHAR(#{lt_date}) NULL, - date_added_to_site VARCHAR(#{lt_date}) NULL, - date_created VARCHAR(#{lt_date}) NULL, - date_issued VARCHAR(#{lt_date}) NULL, - date_available VARCHAR(#{lt_date}) NULL, - date_valid VARCHAR(#{lt_date}) NULL, - date_modified VARCHAR(#{lt_date}) NULL, - date_translated VARCHAR(#{lt_date}) NULL, -/* date DATE, */ -/* date_added_to_site DATE, */ -/* date_created DATE, */ -/* date_issued DATE, */ -/* date_available DATE, */ -/* date_valid DATE, */ -/* date_modified DATE, */ -/* date_translated DATE, */ - type VARCHAR(#{lt_type}) NULL, - description VARCHAR(#{lt_description}) NULL, - publisher VARCHAR(#{lt_publisher}) NULL, - contributor VARCHAR(#{lt_contributor}) NULL, - prepared_by VARCHAR(#{lt_prepared_by}) NULL, - digitized_by VARCHAR(#{lt_digitized_by}) NULL, - format VARCHAR(#{lt_format}) NULL, - identifier VARCHAR(#{lt_identifier}) NULL, - source VARCHAR(#{lt_source}) NULL, - language VARCHAR(#{lt_language}) NULL, - language_original VARCHAR(#{lt_language_original}) NULL, - relation VARCHAR(#{lt_relation}) NULL, - coverage VARCHAR(#{lt_coverage}) NULL, - rights VARCHAR(#{lt_rights}) NULL, - copyright VARCHAR(#{lt_copyright}) NULL, - owner VARCHAR(#{lt_owner}) NULL, - keywords VARCHAR(#{lt_keywords}) NULL, - comment VARCHAR(#{lt_comment}) NULL, - loc VARCHAR(#{lt_loc}) NULL, - dewey VARCHAR(#{lt_dewey}) NULL, - isbn VARCHAR(#{lt_isbn}) NULL, - pg VARCHAR(#{lt_pg}) NULL, - abstract VARCHAR(#{lt_abstract}) NULL, - prefix_a TEXT NULL, - prefix_b TEXT NULL, - skin VARCHAR(#{lt_skin}) NULL, - markup VARCHAR(#{lt_markup}) NULL, - links VARCHAR(#{lt_links}) NULL, - information VARCHAR(#{lt_information}) NULL, - contact VARCHAR(#{lt_contact}) NULL, - suffix VARCHAR(#{lt_suffix}) NULL, - filename VARCHAR(#{lt_filename}) NULL UNIQUE, - types CHAR(#{lt_types}) NULL, - subj VARCHAR(#{lt_subj}) NULL, - original_publication VARCHAR(#{lt_orig_pub}) NULL, - original_publication_date VARCHAR(#{lt_orig_pub_date}) NULL, - original_publication_institution VARCHAR(#{lt_orig_pub_institution}) NULL, - original_publication_nationality VARCHAR(#{lt_orig_pub_nationality}) NULL, - writing_focus_nationality VARCHAR(#{lt_writing_focus_nationality}) NULL, - topic_register VARCHAR(#{lt_topic_register}) NULL - ); - }) - @comment.metadata - end - def documents # create documents base - print %{ - to be populated from documents files - create tables documents document_trade document_env - data import through ruby transfer - } unless @opt.cmd =~/q/ - @conn.execute(%{ - CREATE TABLE documents ( - lid BIGINT PRIMARY KEY, - metadata_tid BIGINT REFERENCES metadata, - ocn SMALLINT, - ocnd VARCHAR(6), - ocns VARCHAR(6), - clean TEXT NULL, - body TEXT NULL, - seg VARCHAR(#{document_seg}) NULL, - lev SMALLINT NULL, - lev1 SMALLINT, - lev2 SMALLINT, - lev3 SMALLINT, - lev4 SMALLINT, - lev5 SMALLINT, - lev6 SMALLINT, - en_a SMALLINT NULL, - en_z SMALLINT NULL, - en_a_asterisk SMALLINT NULL, - en_z_asterisk SMALLINT NULL, - en_a_plus SMALLINT NULL, - en_z_plus SMALLINT NULL, - digest_clean CHAR(#{@@dl}), - digest_all CHAR(#{@@dl}), - types CHAR(1) NULL - ); - }) - @comment.documents - end - def endnotes - print %{ - to be populated from document files - create tables endnotes - data import through ruby transfer - } unless @opt.cmd =~/q/ - @conn.execute(%{ - CREATE TABLE endnotes ( - nid BIGINT PRIMARY KEY, - document_lid BIGINT REFERENCES documents, - nr SMALLINT, - clean TEXT NULL, - body TEXT NULL, - ocn SMALLINT, - ocnd VARCHAR(6), - ocns VARCHAR(6), - digest_clean CHAR(#{@@dl}), - metadata_tid BIGINT REFERENCES metadata - ); - }) - @comment.endnotes - end - def endnotes_asterisk - print %{ - to be populated from document files - create tables endnotes_asterisk - data import through ruby transfer - } unless @opt.cmd =~/q/ - @conn.execute(%{ - CREATE TABLE endnotes_asterisk ( - nid BIGINT PRIMARY KEY, - document_lid BIGINT REFERENCES documents, - nr SMALLINT, - clean TEXT NULL, - body TEXT NULL, - ocn SMALLINT, - ocnd VARCHAR(6), - ocns VARCHAR(6), - digest_clean CHAR(#{@@dl}), - metadata_tid BIGINT REFERENCES metadata - ); - }) - @comment.endnotes_asterisk - end - def endnotes_plus - print %{ - to be populated from document files - create tables endnotes_plus - data import through ruby transfer - } unless @opt.cmd =~/q/ - @conn.execute(%{ - CREATE TABLE endnotes_plus ( - nid BIGINT PRIMARY KEY, - document_lid BIGINT REFERENCES documents, - nr SMALLINT, - clean TEXT NULL, - body TEXT NULL, - ocn SMALLINT, - ocnd VARCHAR(6), - ocns VARCHAR(6), - digest_clean CHAR(#{@@dl}), - metadata_tid BIGINT REFERENCES metadata - ); - }) - @comment.endnotes_plus - end - def urls # create documents file links mapping - print %{ - currently using sisu dbi module - to be populated from documents files - create tables urls - data import through ruby transfer - } unless @opt.cmd =~/q/ - @conn.execute(%{ - CREATE TABLE urls ( - metadata_tid BIGINT REFERENCES metadata, - plaintext varchar(512), - html_toc varchar(512), - html_doc varchar(512), - xhtml varchar(512), - xml_sax varchar(512), - xml_dom varchar(512), - odf varchar(512), - pdf_p varchar(512), - pdf_l varchar(512), - concordance varchar(512), - latex_p varchar(512), - latex_l varchar(512), - digest varchar(512), - manifest varchar(512), - markup varchar(512), - sisupod varchar(512) - ); - }) - @comment.urls - end - self - end - end - class Comment - def initialize(conn,sql_type='pg') - @conn=conn - if sql_type =~ /pg/; psql - else none - end - end - def psql - def conn_execute_array(sql_arr) - @conn.transaction do |conn| - sql_arr.each do |sql| - conn.execute(sql) - end - end - end - #def conn_execute_array(sql_arr) - # sql_arr.each do |sql| - # @conn.execute(sql) - # end - #end - def metadata - sql_arr=[ - %{COMMENT ON Table metadata - IS 'contains SiSU documents metadata with metadata';}, - %{COMMENT ON COLUMN metadata.tid - IS 'unique';}, - %{COMMENT ON COLUMN metadata.filename - IS 'document filename';}, - %{COMMENT ON COLUMN metadata.title - IS 'metadata title (dublin core element 1)';}, - %{COMMENT ON COLUMN metadata.subtitle - IS 'document subtitle';}, - %{COMMENT ON COLUMN metadata.creator - IS 'metadata creator (dublin core element 2)';}, - %{COMMENT ON COLUMN metadata.author - IS 'metadata author (dublin core element 2)';}, - %{COMMENT ON COLUMN metadata.illustrator - IS 'metadata illustrator';}, - %{COMMENT ON COLUMN metadata.translator - IS 'metadata translator';}, - %{COMMENT ON COLUMN metadata.subject - IS 'metadata subject (dublin core element 3)';}, - %{COMMENT ON COLUMN metadata.date - IS 'metadata date (dublin core element 7)';}, - %{COMMENT ON COLUMN metadata.date_created - IS 'metadata date created (dublin core)';}, - %{COMMENT ON COLUMN metadata.date_issued - IS 'metadata date of issue (dublin core)';}, - %{COMMENT ON COLUMN metadata.date_available - IS 'metadata date available (dublin core)';}, - %{COMMENT ON COLUMN metadata.date_valid - IS 'metadata date valid (dublin core)';}, - %{COMMENT ON COLUMN metadata.date_modified - IS 'metadata date modified (dublin core)';}, - %{COMMENT ON COLUMN metadata.type - IS 'metadata type (dublin core element 8)';}, - %{COMMENT ON COLUMN metadata.description - IS 'metadata description (dublin core element 4)';}, - %{COMMENT ON COLUMN metadata.publisher - IS 'metadata publisher (dublin core element 5)';}, - %{COMMENT ON COLUMN metadata.contributor - IS 'metadata contributor (dublin core element 6)';}, - %{COMMENT ON COLUMN metadata.prepared_by - IS 'metadata markup prepared by';}, - %{COMMENT ON COLUMN metadata.digitized_by - IS 'metadata digitized by';}, - %{COMMENT ON COLUMN metadata.format - IS 'metadata format (dublin core element 9)';}, - %{COMMENT ON COLUMN metadata.identifier - IS 'metadata identifier (dublin core element 10)';}, - %{COMMENT ON COLUMN metadata.source - IS 'metadata source (dublin core element 11)';}, - %{COMMENT ON COLUMN metadata.language - IS 'metadata language (dublin core element 12)';}, - %{COMMENT ON COLUMN metadata.language_original - IS 'metadata original language';}, - %{COMMENT ON COLUMN metadata.relation - IS 'metadata (dublin core element 13)';}, - %{COMMENT ON COLUMN metadata.coverage - IS 'metadata coverage (dublin core element 14)';}, - %{COMMENT ON COLUMN metadata.rights - IS 'metadata rights / copyright / license (dublin core element 15)';}, - %{COMMENT ON COLUMN metadata.owner - IS 'metadata owner';}, - %{COMMENT ON COLUMN metadata.keywords - IS 'metadata keywords';}, - %{COMMENT ON COLUMN metadata.comment - IS 'metadata comment';}, - %{COMMENT ON COLUMN metadata.abstract - IS 'metadata abstract';}, - %{COMMENT ON COLUMN metadata.loc - IS 'metadata library of congress';}, - %{COMMENT ON COLUMN metadata.dewey - IS 'metadata dewey';}, - %{COMMENT ON COLUMN metadata.isbn - IS 'metadata isbn';}, - %{COMMENT ON COLUMN metadata.pg - IS 'metadata project gutenberg number';}, - %{COMMENT ON COLUMN metadata.prefix_a - IS 'metadata prefix';}, - %{COMMENT ON COLUMN metadata.prefix_b - IS 'metadata prefix';}, - %{COMMENT ON COLUMN metadata.skin - IS 'metadata sisu skin';}, - %{COMMENT ON COLUMN metadata.markup - IS 'metadata markup source';}, - %{COMMENT ON COLUMN metadata.links - IS 'metadata links';}, - %{COMMENT ON COLUMN metadata.information - IS 'metadata information';}, - %{COMMENT ON COLUMN metadata.contact - IS 'metadata contact';}, - %{COMMENT ON COLUMN metadata.suffix - IS 'metadata sisu suffix (output related)';}, - %{COMMENT ON COLUMN metadata.filename - IS 'metadata source filename';}, - %{COMMENT ON COLUMN metadata.types - IS 'document types scroll 1, seg 2, both 3';}, - %{COMMENT ON COLUMN metadata.subj - IS 'subject areas - no way to populate at present as not mapped';}, - ] - conn_execute_array(sql_arr) - end - def documents - sql_arr=[ - %{COMMENT ON Table documents - IS 'contains searchable text of SiSU documents';}, - %{COMMENT ON COLUMN documents.lid - IS 'unique';}, - %{COMMENT ON COLUMN documents.metadata_tid - IS 'tie to title in metadata';}, - %{COMMENT ON COLUMN documents.lev - IS 'doc level 1-6 \d\~';}, - %{COMMENT ON COLUMN documents.seg - IS 'segment name from level 4';}, - %{COMMENT ON COLUMN documents.ocn - IS 'object citation number';}, - %{COMMENT ON COLUMN documents.en_a - IS 'first endnote number in text object (eg. NULL or 34) (used with en_z to create range)';}, - %{COMMENT ON COLUMN documents.en_z - IS 'last endnote number within text object (eg. NULL, 34 or say 47) (used with en_a to create range)';}, - %{COMMENT ON COLUMN documents.en_a_asterisk - IS 'first endnote number in text object (eg. NULL or 34) (used with en_z_asterisk to create range)';}, - %{COMMENT ON COLUMN documents.en_z_asterisk - IS 'last endnote number within text object (eg. NULL, 34 or say 47) (used with en_a_asterisk to create range)';}, - %{COMMENT ON COLUMN documents.en_a_plus - IS 'first endnote number in text object (eg. NULL or 34) (used with en_z_plus to create range)';}, - %{COMMENT ON COLUMN documents.en_z_plus - IS 'last endnote number within text object (eg. NULL, 34 or say 47) (used with en_a_plus to create range)';}, - %{COMMENT ON COLUMN documents.types - IS 'document types seg scroll';}, - %{COMMENT ON COLUMN documents.clean - IS 'text object - substantive text: clean, stripped of markup';}, - %{COMMENT ON COLUMN documents.body - IS 'text object - substantive text: light html markup';}, - %{COMMENT ON COLUMN documents.lev1 - IS 'document structure, level 1';}, - %{COMMENT ON COLUMN documents.lev2 - IS 'document structure, level 2';}, - %{COMMENT ON COLUMN documents.lev3 - IS 'document structure, level 3';}, - %{COMMENT ON COLUMN documents.lev4 - IS 'document structure, level 4';}, - %{COMMENT ON COLUMN documents.lev5 - IS 'document structure, level 5';}, - %{COMMENT ON COLUMN documents.lev6 - IS 'document structure, level 6';} - ] - conn_execute_array(sql_arr) - end - def endnotes - sql_arr=[ - %{COMMENT ON Table endnotes - IS 'contains searchable text of SiSU documents endnotes';}, - %{COMMENT ON COLUMN endnotes.nid - IS 'unique';}, - %{COMMENT ON COLUMN endnotes.document_lid - IS 'ties to text block from which referenced';}, - %{COMMENT ON COLUMN endnotes.nr - IS 'endnote number ';}, - %{COMMENT ON COLUMN endnotes.clean - IS 'endnote substantive content, stripped of markup';}, - %{COMMENT ON COLUMN endnotes.body - IS 'endnote substantive content';}, - %{COMMENT ON COLUMN endnotes.ocn - IS 'object citation no# <\~(\d+)> from which endnote is referenced';}, - %{COMMENT ON COLUMN documents.metadata_tid - IS 'tie to title in metadata - unique for each document';} - ] - conn_execute_array(sql_arr) - end - def endnotes_asterisk - sql_arr=[ - %{COMMENT ON Table endnotes_asterisk - IS 'contains searchable text of SiSU documents endnotes asterisk';}, - %{COMMENT ON COLUMN endnotes_asterisk.nid - IS 'unique';}, - %{COMMENT ON COLUMN endnotes_asterisk.document_lid - IS 'ties to text block from which referenced';}, - %{COMMENT ON COLUMN endnotes_asterisk.nr - IS 'endnote number ';}, - %{COMMENT ON COLUMN endnotes_asterisk.clean - IS 'endnote substantive content, stripped of markup';}, - %{COMMENT ON COLUMN endnotes_asterisk.body - IS 'endnote substantive content';}, - %{COMMENT ON COLUMN endnotes_asterisk.ocn - IS 'object citation no# <\~(\d+)> from which endnote is referenced';}, - %{COMMENT ON COLUMN documents.metadata_tid - IS 'tie to title in metadata - unique for each document';} - ] - conn_execute_array(sql_arr) - end - def endnotes_plus - sql_arr=[ - %{COMMENT ON Table endnotes_plus - IS 'contains searchable text of SiSU documents endnotes';}, - %{COMMENT ON COLUMN endnotes_plus.nid - IS 'unique';}, - %{COMMENT ON COLUMN endnotes_plus.document_lid - IS 'ties to text block from which referenced';}, - %{COMMENT ON COLUMN endnotes_plus.nr - IS 'endnote number ';}, - %{COMMENT ON COLUMN endnotes_plus.clean - IS 'endnote substantive content, stripped of markup';}, - %{COMMENT ON COLUMN endnotes_plus.body - IS 'endnote substantive content';}, - %{COMMENT ON COLUMN endnotes_plus.ocn - IS 'object citation no# <\~(\d+)> from which endnote is referenced';}, - %{COMMENT ON COLUMN documents.metadata_tid - IS 'tie to title in metadata - unique for each document';}, - ] - conn_execute_array(sql_arr) - end - def urls - sql_arr=[ - %{COMMENT ON Table urls - IS 'contains base url links to different SiSU output';}, - %{COMMENT ON COLUMN documents.metadata_tid - IS 'tie to title in metadata - unique for each document, the mapping of rows is one to one';}, - %{COMMENT ON COLUMN urls.plaintext - IS 'plaintext utf-8';}, - %{COMMENT ON COLUMN urls.html_toc - IS 'table of contents for segmented html document';}, - %{COMMENT ON COLUMN urls.html_doc - IS 'html document (scroll)';}, - %{COMMENT ON COLUMN urls.xhtml - IS 'xhtml document (scroll)';}, - %{COMMENT ON COLUMN urls.xml_sax - IS 'xml sax oriented document (scroll)';}, - %{COMMENT ON COLUMN urls.xml_dom - IS 'xml dom oriented document (scroll)';}, - %{COMMENT ON COLUMN urls.odf - IS 'opendocument format text';}, - %{COMMENT ON COLUMN urls.pdf_p - IS 'pdf portrait';}, - %{COMMENT ON COLUMN urls.pdf_l - IS 'pdf landscape';}, - %{COMMENT ON COLUMN urls.concordance - IS 'rudimentary document index linked to html';}, - %{COMMENT ON COLUMN urls.latex_p - IS 'latex portrait';}, - %{COMMENT ON COLUMN urls.latex_l - IS 'latex_landscape';}, - %{COMMENT ON COLUMN urls.markup - IS 'markup';}, - %{COMMENT ON COLUMN urls.sisupod - IS 'SiSU document format .tgz (all SiSU information on document)';}, - ] - conn_execute_array(sql_arr) - end - self - end - def none - def metadata - end - def documents - end - def endnotes - end - def endnotes_asterisk - end - def endnotes_plus - end - def urls - end - self - end - end -end -__END__ diff --git a/lib/sisu/v0/db_dbi.rb b/lib/sisu/v0/db_dbi.rb deleted file mode 100644 index 1c09f334..00000000 --- a/lib/sisu/v0/db_dbi.rb +++ /dev/null @@ -1,93 +0,0 @@ -# coding: utf-8 -=begin - - * Name: SiSU - - * Description: a framework for document structuring, publishing and search - - * Author: Ralph Amissah - - * Copyright: (C) 1997 - 2009 Ralph Amissah All Rights Reserved. - - * License: GPL 3 or later: - - SiSU, a framework for document structuring, publishing and search - - Copyright (C) Ralph Amissah - - This program is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by the Free - Software Foundation, either version 3 of the License, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - more details. - - You should have received a copy of the GNU General Public License along with - this program. If not, see . - - If you have Internet connection, the latest version of the GPL should be - available at these locations: - - - - - - - - * SiSU uses: - * Standard SiSU markup syntax, - * Standard SiSU meta-markup syntax, and the - * Standard SiSU object citation numbering and system - - * Hompages: - - - - * Download: - - - * Ralph Amissah - - - - ** Description: modules shared by the different db types, dbi, postgresql, - sqlite - -=end -module SiSU_DB_DBI - require "#{SiSU_lib}/db_columns" - require "#{SiSU_lib}/db_tests" - require "#{SiSU_lib}/db_create" - require "#{SiSU_lib}/db_select" - require "#{SiSU_lib}/db_indexes" - require "#{SiSU_lib}/db_drop" - require "#{SiSU_lib}/db_remove" - require "#{SiSU_lib}/db_load_tuple" - require "#{SiSU_lib}/db_import" - class Column_size < SiSU_DB_columns::Column_size - end - class Test < SiSU_DB_tests::Test #% db_tests.rb - end - class Create . - - If you have Internet connection, the latest version of the GPL should be - available at these locations: - - - - - - - - * SiSU uses: - * Standard SiSU markup syntax, - * Standard SiSU meta-markup syntax, and the - * Standard SiSU object citation numbering and system - - * Hompages: - - - - * Download: - - - * Ralph Amissah - - - - ** Description: modules shared by the different db types, dbi, postgresql, - sqlite - -=end -module SiSU_DB_drop - class Drop - require "#{SiSU_lib}/response" - def initialize(opt,conn,db_info,sql_type='') - @opt,@conn,@db_info,@sql_type=opt,conn,db_info,sql_type - @ans=SiSU_Response::Response.new - case @sql_type - when /sqlite/ - cascade='' - else - cascade='CASCADE' - end - @drop_table=[ - "DROP TABLE metadata #{cascade};", - "DROP TABLE documents #{cascade};", - "DROP TABLE urls #{cascade};", - "DROP TABLE endnotes #{cascade};", - "DROP TABLE endnotes_asterisk #{cascade};", - "DROP TABLE endnotes_plus #{cascade};", - ] - end - def drop - def tables #% drop all tables - begin - msg_sqlite="as not all disk space is recovered after dropping the database << #{@db_info.sqlite.db} >>, you may be better off deleting the file, and recreating it as necessary" - case @sql_type - when /sqlite/ - @conn.transaction - @drop_table.each do |d| - @conn.execute(d) - end - @conn.commit - puts msg_sqlite - ans=@ans.response?('remove sql database?') - if ans and File.exist?(@db_info.sqlite.db) - File.unlink(@db_info.sqlite.db) - end - else - @conn.do(@drop_table.join('')) - end - rescue - case @sql_type - when /sqlite/ - #system("rm -vi #{@db_info.sqlite.db}") - ans=@ans.response?('remove sql database?') - if ans and File.exist?(@db_info.sqlite.db); File.unlink(@db_info.sqlite.db) - end - else - @conn.do(@drop_table.join('')) - end - ensure - #commit - end - end - def indexes #% drop all indexes - #@conn.do(%{ - # DROP INDEX object_nr ON documents(ocn); - # DROP INDEX body ON documents(body); - # DROP INDEX clean ON documents(clean); - # DROP INDEX lev1 ON documents(lev1); - # DROP INDEX lev2 ON documents(lev2); - # DROP INDEX lev3 ON documents(lev3); - # DROP INDEX lev4 ON documents(lev4); - # DROP INDEX lev5 ON documents(lev5); - # DROP INDEX lev6 ON documents(lev6); - # DROP INDEX endnote_nr ON endnotes(nr); - # DROP INDEX endnote ON endnotes(body); - # DROP INDEX title ON metadata(title); - # DROP INDEX filename ON metadata(filename) - # /* - # DROP INDEX object_nr ON documents(ocn) CASCADE; - # DROP INDEX body ON documents(body) CASCADE; - # DROP INDEX clean ON documents(clean) CASCADE; - # DROP INDEX lev1 ON documents(lev1) CASCADE; - # DROP INDEX lev2 ON documents(lev2) CASCADE; - # DROP INDEX lev3 ON documents(lev3) CASCADE; - # DROP INDEX lev4 ON documents(lev4) CASCADE; - # DROP INDEX lev5 ON documents(lev5) CASCADE; - # DROP INDEX lev6 ON documents(lev6) CASCADE; - # DROP INDEX endnote_nr ON endnotes(nr) CASCADE; - # DROP INDEX endnote ON endnotes(body) CASCADE; - # DROP INDEX title ON metadata(title) CASCADE; - # DROP INDEX filename ON metadata(filename) CASCADE - # */ - #}) - end - self - end - end -end -__END__ diff --git a/lib/sisu/v0/db_import.rb b/lib/sisu/v0/db_import.rb deleted file mode 100644 index da564639..00000000 --- a/lib/sisu/v0/db_import.rb +++ /dev/null @@ -1,886 +0,0 @@ -#j coding: utf-8 -=begin - - * Name: SiSU - - * Description: a framework for document structuring, publishing and search - - * Author: Ralph Amissah - - * Copyright: (C) 1997 - 2009 Ralph Amissah All Rights Reserved. - - * License: GPL 3 or later: - - SiSU, a framework for document structuring, publishing and search - - Copyright (C) Ralph Amissah - - This program is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by the Free - Software Foundation, either version 3 of the License, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - more details. - - You should have received a copy of the GNU General Public License along with - this program. If not, see . - - If you have Internet connection, the latest version of the GPL should be - available at these locations: - - - - - - - - * SiSU uses: - * Standard SiSU markup syntax, - * Standard SiSU meta-markup syntax, and the - * Standard SiSU object citation numbering and system - - * Hompages: - - - - * Download: - - - * Ralph Amissah - - - - ** Description: modules shared by the different db types, dbi, postgresql, - sqlite - -=end -module SiSU_DB_import - require "#{SiSU_lib}/db_columns" - require "#{SiSU_lib}/db_load_tuple" - require "#{SiSU_lib}/shared_html_lite" - require 'sqlite3' - class Import < SiSU_DB_columns::Column_size - include SiSU_Param - include SiSU_Screen - @@dl=nil - @@hname=nil - attr_accessor :tp - def initialize(opt,conn,file,sql_type='pg') - @opt,@conn,@file,@sql_type=opt,conn,file,sql_type - @cX=SiSU_Screen::Ansi.new(@opt.cmd).cX - @env=SiSU_Env::Info_env.new(@opt.fns) - @dal="#{@env.path.dal}" - if @opt.fns.empty? or @opt.cmd.empty?; @fnb='' - else - @md=SiSU_Param::Parameters.new(@opt).get - @fnb=@md.fnb - end - @suffix=@opt.fns[/(?:.+?)(?:\.ssm\.sst|\.-?sst)/,1] - @fnm="#@dal/#{@opt.fns}.meta.rbm" - @@seg,@@seg_full='','' #create? consider placing field just before clean text as opposed to seg which contains seg(.html) name info seg_full would contain seg info for levels 5 & 6 where available eg seg_full may be 7.3 (level 5) and 7.3.1 (level 6) where seg is 7 - @col=Hash.new('') - @col[:ocn]='' - @counter={} - @db=SiSU_Env::Info_db.new - @driver_sqlite3=false - @driver_sqlite3=true if @conn.inspect.match(/^(.{10})/)[1] == @db.sqlite.conn_sqlite3.inspect.match(/^(.{10})/)[1] - sql='SELECT MAX(lid) FROM documents' - begin - @col[:lid] ||=0 - @col[:lid]=if @driver_sqlite3 - @conn.execute( sql ).join.to_i - else @conn.execute( sql ) { |x| x.fetch_all.to_s.to_i } - end - rescue - puts "#{__FILE__}:#{__LINE__}" if @opt.cmd =~/M/ - end - @col[:lid]=0 if @col[:lid].nil? or @col[:lid].to_s.empty? - sql='SELECT MAX(nid) FROM endnotes' - begin - @id_n ||=0 - @id_n=if @driver_sqlite3 - @conn.execute( sql ).join.to_i - else - @id_n=@conn.execute( sql ) { |x| x.fetch_all.to_s.to_i } - end - rescue - puts "#{__FILE__}:#{__LINE__}" if @opt.cmd =~/M/ - end - @id_n =0 if @col[:lid].nil? or @col[:lid].to_s.empty? - @col[:lv1]=@col[:lv2]=@col[:lv3]=@col[:lv4]=@col[:lv5]=@col[:lv6]=0 - @db=SiSU_Env::Info_db.new - @@dl ||=SiSU_Env::Info_env.new.digest.length - end - def marshal_load - require "#{SiSU_lib}/dal" - @dal_array=SiSU_DAL::Source.new(@opt).get # dal file drawn here - tell=SiSU_Screen::Ansi.new(@opt.cmd,"#{@db.psql.db}::#{@opt.fns}") - tell.puts_blue unless @opt.cmd =~/q/ - tell=SiSU_Screen::Ansi.new(@opt.cmd,'Marshal Load',@fnm) - tell.print_grey if @opt.cmd =~/v/ - file_exist=if @sql_type=~/sqlite/; nil - else - @conn.select_one(%{ SELECT metadata.tid FROM metadata WHERE metadata.filename ~ '#{@opt.fns}'; }) - end - if (@sql_type!~/sqlite/ and not file_exist) \ - or @sql_type=~/sqlite/ - t_d=[] # transaction_data - t_d << db_import_metadata - t_d << db_import_documents(@dal_array) - t_d << db_import_urls(@dal_array,@fnc) #import OID on/off - t_d=t_d.flatten - if @opt.cmd =~/[MV]/ - puts @conn.class if defined? @conn.class - puts @conn.driver_name if defined? @conn.driver_name - puts @conn.driver if defined? @conn.driver - end - begin - @conn.transaction do |conn| - t_d.each do |sql| - conn.execute(sql) - end - end - rescue - SiSU_Errors::Info_error.new($!,$@,@opt.cmd,@opt.fns).error - puts "#{__FILE__}:#{__LINE__}" if @opt.cmd =~/M/ - ensure - #@conn.execute("COMMIT") - end - if @sql_type=~/sqlite/ \ - and @opt.cmd =~/[MV]/ - puts "\n" + @conn.inspect - puts "\nat #{__FILE__}:#{__LINE__}" - end - else - if file_exist - @db=SiSU_Env::Info_db.new - puts "\n#{@cX.grey}file #{@cX.off} #{@cX.blue}#{@opt.fns}#{@cX.off} #{@cX.grey}already exists in database#{@cX.off} #{@cX.blue}#{@db.psql.db}#{@cX.off} #{@cX.brown}update instead?#{@cX.off}" - end - end - end - def special_character_escape(str) - str.gsub!(/'/,"''") #string.gsub!(/'/,"\047") #string.gsub!(/'/,"\\'") - str.gsub!(/#{Mx[:br_line]}|#{Mx[:br_nl]}/,"
\n") - str.gsub!(/#{Mx[:gr_o]}(?:code|alt|group|verse)(?:-end)?#{Mx[:gr_c]}/,'') - str.gsub!(/#{Mx[:mk_o]}:name#\S+?#{Mx[:mk_c]}/,'') - str.gsub!(/#{Mx[:lnk_o]}\s*(\S+?\.(?:png|jpg))(?:\s+\d+x\d+)?(.+?)#{Mx[:lnk_c]}\S+/,'[image: \1] \2') - str.gsub!(/#{Mx[:lnk_o]}\s*(.+?)\s*#{Mx[:lnk_c]}(?:https?|file|ftp):\/\/\S+?([.,!?]?(?:\s|$))/,'\1\2') - end - def strip_markup(str) #define rules, make same as in dal clean - str.gsub!(/#{Mx[:fa_superscript_o]}(\d+)#{Mx[:fa_superscript_c]}/,'[\1]') - str.gsub!(/#{Mx[:pa_o]}:i[1-9]#{Mx[:pa_c]}/,'') - str.gsub!(/(?: \\;|#{Mx[:nbsp]})+/,' ') - str.gsub!(/#{Mx[:gr_o]}T[h]?#{Mx[:tc_p]}.+?#{Mx[:gr_c]}/u,"[TABLE]\n") #tables #CHECK should take whole table - str.gsub!(/#{Mx[:tc_o]}#{Mx[:tc_p]}#{Mx[:tc_p]}\d+(.+)#{Mx[:tc_c]}/u,'\1') #tables - str.gsub!(/#{Mx[:tc_p]}#{Mx[:tc_p]}\d+#{Mx[:tc_p]}/u,' ') #tables - str.gsub!(/#{Mx[:tc_p]}/u,' ') #tables tidy later - str.gsub!(/<.+?>/,'') - str.gsub!(/#{Mx[:lnk_o]}.+?\.(?:png|jpg|gif).+?#{Mx[:lnk_c]}(?:https?|file|ftp)\\\:\S+ /,' [image] ') # else image names found in search - str.gsub!(/\s\s+/,' ') - str.strip! - end - #% import into database tables - def pf_db_import_transaction_open - end - def pf_db_import_transaction_close - end - def db_import_metadata #% import documents - populate database - print %{ #{@cX.grey}import documents dbi_unit #{@cX.off} } unless @opt.cmd =~/q/ - @tp={} - @md=SiSU_Param::Parameters.new(@opt).get - if @md.title; @tp[:title]=@md.title - special_character_escape(@tp[:title]) - @tp[:title_f],@tp[:title_i]='title, ',"'#{@tp[:title]}', " - sql='SELECT MAX(tid) FROM metadata' - begin - @@id_t ||=0 - id_t=if @driver_sqlite3 - @conn.execute( sql ).join.to_i # { |x| id_t=x.join.to_i } - else @conn.execute( sql ) { |x| x.fetch_all.to_s.to_i } - end - @@id_t=id_t if id_t - rescue - puts "#{__FILE__} #{__LINE__}" if @opt.cmd =~/M/ - end - @@id_t =0 if @col[:lid].nil? or @col[:lid].to_s.empty? - @@id_t+=1 #bug related, needs to be performed once at start of file, but consider moving, as, placed here it means program will fail if document header lacks 0~title - puts %{\n#{@cX.grey}Processing file number#{@cX.off}: #{@cX.green}#{@@id_t}#{@@cX.off}} unless @opt.cmd =~/q/ - end - if @md.full_title; @tp[:long_title]=@md.full_title #dc - #sql='SELECT MAX(tid) FROM metadata' - #id_t=@conn.execute( sql ) { |x| x.fetch_all.to_s.to_i } - #@@id_t=id_t if id_t - #@@id_t ||=0 - #@@id_t+=1 #bug related, needs to be performed once at start of file, but consider moving, as, placed here it means program will fail if document header lacks 0~title - #puts %{\n#{@cX.grey}Processing file number#{@cX.off}: #{@cX.green}#{@@id_t}#{@@cX.off}} - end - if @md.subtitle; txt=@md.subtitle - special_character_escape(txt) - @tp[:subtitle_f],@tp[:subtitle_i]='subtitle, ',"'#{txt}', " - end - if @md.author; txt=@md.author #dc - special_character_escape(txt) - @tp[:creator_f],@tp[:creator_i]='creator, ',"'#{txt}', " - end - if @md.contributor; txt=@md.contributor #dc - special_character_escape(txt) - @tp[:contributor_f],@tp[:contributor_i]='contributor, ',"'#{txt}', " - end - if @md.translator; txt=@md.translator - special_character_escape(txt) - @tp[:translator_f],@tp[:translator_i]='translator, ',"'#{txt}', " - end - if @md.illustrator; txt=@md.illustrator - special_character_escape(txt) - @tp[:illustrator_f],@tp[:illustrator_i]='illustrator, ',"'#{txt}', " - end - if @md.publisher; txt=@md.publisher #dc - special_character_escape(txt) - @tp[:publisher_f],@tp[:publisher_i]='publisher, ',"'#{txt}', " - end - if @md.prepared_by; txt=@md.prepared_by - special_character_escape(txt) - @tp[:prepared_by_f],@tp[:prepared_by_i]='prepared_by, ',"'#{txt}', " - end - if @md.digitized_by; txt=@md.digitized_by - special_character_escape(txt) - @tp[:digitized_by_f],@tp[:digitized_by_i]='digitized_by, ',"'#{txt}', " - end - if @md.subject; txt=@md.subject #dc - special_character_escape(txt) - @tp[:subject_f],@tp[:subject_i]='subject, ',"'#{txt}', " - end - if @md.description; txt=@md.description #dc - special_character_escape(txt) - @tp[:description_f],@tp[:description_i]='description, ',"'#{txt}', " - end - if @md.abstract; txt=@md.abstract - special_character_escape(txt) - @tp[:abstract_f],@tp[:abstract_i]='abstract, ',"'#{txt}', " - end - if @md.type; txt=@md.type #dc - special_character_escape(txt) - @tp[:type_f],@tp[:type_i]='type, ',"'#{txt}', " - end - #if @md.owner; txt=@md.owner - # special_character_escape(txt) - # @tp[:owner_f],@tp[:owner_i]='owner, ',"'#{txt}', " - #end - #if @md.copyright; txt=@md.copyright - # special_character_escape(txt) - # @tp[:copyright_f],@tp[:copyright_i]='copyright, ',"'#{txt}', " - #end - if @md.rights; txt=@md.rights #dc - special_character_escape(txt) - @tp[:rights_f],@tp[:rights_i]='rights, ',"'#{txt}', " - end - if @md.date; txt=@md.date #dc - special_character_escape(txt) - @tp[:date_f],@tp[:date_i]='date, ',"'#{txt}', " - end - if @md.date_created; txt=@md.date_created #dc - special_character_escape(txt) - @tp[:date_created_f],@tp[:date_created_i]='date_created, ',"'#{txt}', " - end - if @md.date_issued; txt=@md.date_issued #dc - special_character_escape(txt) - @tp[:date_issued_f],@tp[:date_issued_i]='date_issued, ',"'#{txt}', " - end - if @md.date_available; txt=@md.date_available #dc - special_character_escape(txt) - @tp[:date_available_f],@tp[:date_available_i]='date_available, ',"'#{txt}', " - end - if @md.date_modified; txt=@md.date_modified #dc - special_character_escape(txt) - @tp[:date_modified_f],@tp[:date_modified_i]='date_modified, ',"'#{txt}', " - end - if @md.date_valid; txt=@md.date_valid #dc - special_character_escape(txt) - @tp[:date_valid_f],@tp[:date_valid_i]='date_valid, ',"'#{txt}', " - end - if @md.language[:name]; txt=@md.language[:name] #dc - special_character_escape(txt) - @tp[:language_f],@tp[:language_i]='language, ',"'#{txt}', " - end - if @md.language_original[:name]; txt=@md.language_original[:name] - special_character_escape(txt) - @tp[:language_original_f],@tp[:language_original_i]='language_original, ',"'#{txt}', " - end - if @md.format; txt=@md.format #dc - special_character_escape(txt) - @tp[:format_f],@tp[:format_i]='format, ',"'#{txt}', " - end - if @md.identifier; txt=@md.identifier #dc - special_character_escape(txt) - @tp[:identifier_f],@tp[:identifier_i]='identifier, ',"'#{txt}', " - end - if @md.source; txt=@md.source #dc - special_character_escape(txt) - @tp[:source_f],@tp[:source_i]='source, ',"'#{txt}', " - end - if @md.relation; txt=@md.relation #dc - special_character_escape(txt) - @tp[:relation_f],@tp[:relation_i]='relation, ',"'#{txt}', " - end - if @md.coverage; txt=@md.coverage #dc - special_character_escape(txt) - @tp[:coverage_f],@tp[:coverage_i]='coverage, ',"'#{txt}', " - end - if @md.keywords; txt=@md.keywords - special_character_escape(txt) - @tp[:keywords_f],@tp[:keywords_i]='keywords, ',"'#{txt}', " - end - if @md.comments; txt=@md.comments - special_character_escape(txt) - @tp[:comments_f],@tp[:comments_i]='comments, ',"'#{txt}', " - end - if @md.cls_loc; txt=@md.cls_loc - special_character_escape(txt) - @tp[:cls_loc_f],@tp[:cls_loc_i]='cls_loc, ',"'#{txt}', " - end - if @md.cls_dewey; txt=@md.cls_dewey - special_character_escape(txt) - @tp[:cls_dewey_f],@tp[:cls_dewey_i]='cls_dewey, ',"'#{txt}', " - end - if @md.cls_pg; txt=@md.cls_pg - special_character_escape(txt) - @tp[:cls_pg_f],@tp[:cls_pg_i]='cls_pg, ',"'#{txt}', " - end - if @md.cls_isbn; txt=@md.cls_isbn - special_character_escape(txt) - @tp[:cls_isbn_f],@tp[:cls_isbn_i]='cls_isbn, ',"'#{txt}', " - end - if @md.prefix_a; txt=@md.prefix_a - special_character_escape(txt) - @tp[:prefix_a_f],@tp[:prefix_a_i]='prefix_a, ',"'#{txt}', " - end - if @md.prefix_b; txt=@md.prefix_b - special_character_escape(txt) - @tp[:prefix_b_f],@tp[:prefix_b_i]='prefix_b, ',"'#{txt}', " - end - #if @md.suffix; txt=@md.suffix - # special_character_escape(txt) - # @tp[:suffix_f],@tp[:suffix_i]='suffix, ',"'#{txt}', " - #end - if @md.fns; txt=@md.fns - special_character_escape(txt) - @tp[:fns_f],@tp[:fns_i]="filename, ","'#{txt}', " - end - #if @md.en[:mismatch] > 0 - # id,info='WARNING document error in endnote markup, number mismatch',"endnotes: #{@md.en[:note]} != endnote reference marks: #{@md.en[:mark]} (difference = #{@md.en[:mismatch]})" - #end - if @md.wc_words; txt=@md.wc_words - @tp[:wc_words_f],@tp[:wc_words_i]='wc_words, ',"'#{txt}', " - end - if @md.dgst; txt=@md.dgst - @tp[:dgst_f],@tp[:dgst_i]='dgst, ',"'#{txt}', " - end - if @md.sc_number; txt=@md.sc_number - @tp[:sc_number_f],@tp[:sc_number_i]='sc_number, ',"'#{txt}', " - end - if @md.sc_date; txt=@md.sc_date - @tp[:sc_date_f],@tp[:sc_date_i]='sc_date, ',"'#{txt}', " - end - if @md.generated; txt=@md.generated - @tp[:generated_f],@tp[:generated_i]='generated, ',"'#{@txt}', " - end - #if @md.sisu_version; special_character_escape(@md.sisu_version) - # #id,info='Generated by',"#{@md.sisu_version[:project]} #{@md.sisu_version[:version]} #{@md.sisu_version[:date_stamp]} (#{@md.sisu_version[:date]})" - #end - #if @md.ruby_version; special_character_escape(@md.ruby_version) - SiSU_DB_DBI::Test.new(self,@opt).verify #% import title names, filenames (tuple) - t=SiSU_DB_tuple::Load_metadata.new(@conn,@tp,@@id_t,@opt,@file) - tuple=t.tuple - tuple - end - def db_import_documents(dal_array) #% import documents - populate main database table - #% import into substantive database tables (tuple) - begin - @col[:tid]=@@id_t - @en,@en_ast,@en_pls=[],[],[] - @col[:en_a]=nil - @col[:en_z]=nil - @tuple_array=[] - dal_array.each do |data| - #data.gsub!(/<[biu]>(.+?)<\/[biu]>/,'\1') # remove bold, italics, underscore - data.gsub!(/#{Mx[:fa_bold_o]}(.+?)#{Mx[:fa_bold_c]}/,'\1') - #data.gsub!(/#{Mx[:fa_emphasis_o]}(.+?)#{Mx[:fa_emphaisis_c]}/,'\1') - data.gsub!(/#{Mx[:fa_italics_o]}(.+?)#{Mx[:fa_italics_c]}/,'\1') - data.gsub!(/#{Mx[:fa_underscore_o]}(.+?)#{Mx[:fa_underscore_c]}/,'\1') - data.gsub!(/#{Mx[:fa_superscript_o]}(.+?)#{Mx[:fa_superscript_c]}/,'\1') - data.gsub!(/#{Mx[:fa_subscript_o]}(.+?)#{Mx[:fa_subscript_c]}/,'\1') - data.gsub!(/#{Mx[:fa_insert_o]}(.+?)#{Mx[:fa_insert_c]}/,'\1') - data.gsub!(/#{Mx[:fa_cite_o]}(.+?)#{Mx[:fa_cite_c]}/,'\1') - data.gsub!(/#{Mx[:fa_strike_o]}(.+?)#{Mx[:fa_strike_c]}/,'\1') - data.gsub!(/#{Mx[:gl_o]}(●)#{Mx[:gl_c]}\s*/,'\1 ') - data.gsub!(/#{Mx[:mk_o]}:name#\S+?#{Mx[:mk_c]}/,'') - @col[:seg]=@@seg - if data =~/#{Mx[:id_o]}~\d+;(?:\w|[0-6]:)\d+;\w\d+#{Mx[:id_c]}#{Mx[:id_o]}[0-9a-f]{#{@@dl}}:[0-9a-f]{#{@@dl}}#{Mx[:id_c]}/m # regular text - notedata=data.dup - if data[/^#{Mx[:lv_o]}([123]):\S*?#{Mx[:lv_c]}\s*(.+?)#{Mx[:id_o]}~(\d+);((?:\w|[0-6]:)\d+);(\w\d+)#{Mx[:id_c]}#{Mx[:id_o]}([0-9a-f]{#{@@dl}}):([0-9a-f]{#{@@dl}})#{Mx[:id_c]}/m] - @col[:lev],txt,@col[:ocn],@col[:ocnd],@col[:ocns],@col[:digest_clean],@col[:digest_all]=$1,$2,$3,$4,$5,$6,$7 - @col[:lid]+=1 - if txt =~/(?:#{Mx[:en_a_o]}|#{Mx[:en_b_o]})[*+]?(\d+)\s+.+?(?:#{Mx[:en_a_c]}|#{Mx[:en_b_c]})/ - endnotes(txt).range - if txt =~/#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}/; @en << endnotes(txt).standard - end - if txt =~/#{Mx[:en_b_o]}\*.+?#{Mx[:en_b_c]}/; @en_ast << endnotes(txt).asterisk - end - if txt =~/#{Mx[:en_b_o]}\+.+?#{Mx[:en_b_o]}/; @en_pls << endnotes(txt).plus - end - txt=endnotes(txt).clean_text - end - txt_obj={:txt =>txt,:col =>@col} - @col[:body]=SiSU_Format_Shared::CSS_Format.new(@md,txt_obj).lev4_minus - special_character_escape(@col[:body]) - @col[:plaintext]=@col[:body].dup - strip_markup(@col[:plaintext]) - if @en[0]; @en_a,@en_z=@en[0].first,@en[0].last - end - if @en_ast[0]; @en_a_asterisk,@en_z_asterisk=@en_ast[0].first,@en_ast[0].last - end - if @en_pls[0]; @en_a_plus,@en_z_plus=@en_pls[0].first,@en_pls[0].last - end - t=SiSU_DB_tuple::Load_documents.new(@conn,@col,@opt,@file) - @tuple_array << t.tuple - case @col[:lev] - when /1/; @col[:lv1]+=1 - when /2/; @col[:lv2]+=1 - when /3/; @col[:lv3]+=1 - end - @col[:lev]=@col[:plaintext]=@col[:body]='' - elsif data[/^#{Mx[:lv_o]}4:(\S*?)#{Mx[:lv_c]}\s*(.+?)#{Mx[:id_o]}~(\d+);((?:\w|[0-6]:)\d+);(\w\d+)#{Mx[:id_c]}#{Mx[:id_o]}([0-9a-f]{#{@@dl}}):([0-9a-f]{#{@@dl}})#{Mx[:id_c]}/] - @@seg,txt,@col[:ocn],@col[:ocnd],@col[:ocns],@col[:digest_clean],@col[:digest_all]=$1,$2,$3,$4,$5,$6,$7 - @col[:seg]=@@seg - @col[:lv4]+=1 - @col[:lid]+=1 - @col[:lev]=4 - @hname=if @col[:seg] \ - and not @col[:seg].to_s.empty? - @@hname=@col[:seg].to_s - else @@hname - end - @env=SiSU_Env::Info_env.new(@md.fns) - @base_url="#{@env.url.root}/#{@md.fnb}/#@hname.html" - if txt =~/(?:#{Mx[:en_a_o]}|#{Mx[:en_b_o]})[*+]?(\d+)\s+.+?(?:#{Mx[:en_a_c]}|#{Mx[:en_b_c]})/ - endnotes(txt).range - if txt =~ /#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}/; @en << endnotes(txt).standard - end - if txt =~/#{Mx[:en_b_o]}\*.+?#{Mx[:en_b_c]}/; @en_ast << endnotes(txt).asterisk - end - if txt =~/#{Mx[:en_b_o]}\+.+?#{Mx[:en_b_c]}/; @en_pls << endnotes(txt).plus - end - txt=endnotes(txt).clean_text(@base_url) - end - txt_obj={:txt =>txt,:col =>@col} - @col[:body]=SiSU_Format_Shared::CSS_Format.new(@md,txt_obj).lev4_plus - special_character_escape(@col[:body]) - @col[:plaintext]=@col[:body].dup - strip_markup(@col[:plaintext]) - if @en[0]; @en_a,@en_z=@en[0].first,@en[0].last - end - if @en_ast[0]; @en_a_asterisk,@en_z_asterisk=@en_ast[0].first,@en_ast[0].last - end - if @en_pls[0]; @en_a_plus,@en_z_plus=@en_pls[0].first,@en_pls[0].last - end - t=SiSU_DB_tuple::Load_documents.new(@conn,@col,@opt,@file) - @tuple_array << t.tuple - @col[:lev]=@col[:plaintext]=@col[:body]='' - elsif data[/^#{Mx[:lv_o]}5:\S*?#{Mx[:lv_c]}\s*(.+?)#{Mx[:id_o]}~(\d+);((?:\w|[0-6]:)\d+);(\w\d+)#{Mx[:id_c]}#{Mx[:id_o]}([0-9a-f]{#{@@dl}}):([0-9a-f]{#{@@dl}})#{Mx[:id_c]}/] # header lev5 seg level - txt,@col[:ocn],@col[:ocnd],@col[:ocns],@col[:digest_clean],@col[:digest_all]=$1,$2,$3,$4,$5,$6 - re=/^#{Mx[:lv_o]}5:(\S*?)#{Mx[:lv_c]}/ - @@seg_full=re.match(data)[1] if data=~re #create? - @@seg ||='' #nil # watch - @col[:seg]=@@seg - @col[:lv5]+=1 - @col[:lid]+=1 - @col[:lev]=5 - @hname=if @col[:seg] \ - and not @col[:seg].to_s.empty? - @@hname=@col[:seg].to_s - else @@hname - end - @env=SiSU_Env::Info_env.new(@md.fns) - @base_url="#{@env.url.root}/#{@md.fnb}/#@hname.html" - if txt =~/(?:#{Mx[:en_a_o]}|#{Mx[:en_b_o]})[*+]?(\d+)\s+.+?(?:#{Mx[:en_a_c]}|#{Mx[:en_b_c]})/ - endnotes(txt).range - if txt =~ /#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}/; @en << endnotes(txt).standard - end - if txt =~/#{Mx[:en_b_o]}\*.+?#{Mx[:en_b_c]}/; @en_ast << endnotes(txt).asterisk - end - if txt =~/#{Mx[:en_b_o]}\+.+?#{Mx[:en_b_c]}/; @en_pls << endnotes(txt).plus - end - txt=endnotes(txt).clean_text(@base_url) - end - txt_obj={:txt =>txt,:col =>@col} - @col[:body]=SiSU_Format_Shared::CSS_Format.new(@md,txt_obj).lev4_plus - special_character_escape(@col[:body]) - @col[:plaintext]=@col[:body].dup - strip_markup(@col[:plaintext]) - if @en[0]; @en_a,@en_z=@en[0].first,@en[0].last - end - if @en_ast[0]; @en_a_asterisk,@en_z_asterisk=@en_ast[0].first,@en_ast[0].last - end - if @en_pls[0]; @en_a_plus,@en_z_plus=@en_pls[0].first,@en_pls[0].last - end - t=SiSU_DB_tuple::Load_documents.new(@conn,@col,@opt,@file) - @tuple_array << t.tuple - @col[:lev]=@col[:plaintext]=@col[:body]='' - elsif data[/^#{Mx[:lv_o]}6:\S*?#{Mx[:lv_c]}\s*(.+?)#{Mx[:id_o]}~(\d+);((?:\w|[0-6]:)\d+);(\w\d+)#{Mx[:id_c]}#{Mx[:id_o]}([0-9a-f]{#{@@dl}}):([0-9a-f]{#{@@dl}})#{Mx[:id_c]}/] # header lev6 seg level - txt,@col[:ocn],@col[:ocnd],@col[:ocns],@col[:digest_clean],@col[:digest_all]=$1,$2,$3,$4,$5,$6 - re=/^#{Mx[:lv_o]}6:(\S*?)#{Mx[:lv_c]}/ - @@seg_full=re.match(data)[1] if data=~re #create? - @@seg ||='' #nil # watch - @col[:seg]=@@seg - @col[:lv6]+=1 - @col[:lid]+=1 - @col[:lev]=6 - @hname=if @col[:seg] \ - and not @col[:seg].to_s.empty? - @@hname=@col[:seg].to_s - else @@hname - end - @env=SiSU_Env::Info_env.new(@md.fns) - @base_url="#{@env.url.root}/#{@md.fnb}/#@hname.html" - if txt =~/(?:#{Mx[:en_a_o]}|#{Mx[:en_b_o]})[*+]?(\d+)\s+.+?(?:#{Mx[:en_a_c]}|#{Mx[:en_b_c]})/ - endnotes(txt).range - if txt =~ /#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}/; @en << endnotes(txt).standard - end - if txt =~/#{Mx[:en_b_o]}\*.+?#{Mx[:en_b_c]}/; @en_ast << endnotes(txt).asterisk - end - if txt =~/#{Mx[:en_b_o]}\+.+?#{Mx[:en_b_c]}/; @en_pls << endnotes(txt).plus - end - txt=endnotes(txt).clean_text(@base_url) - end - txt_obj={:txt =>txt,:col =>@col} - @col[:body]=SiSU_Format_Shared::CSS_Format.new(@md,txt_obj).lev4_plus - special_character_escape(@col[:body]) - @col[:plaintext]=@col[:body].dup - strip_markup(@col[:plaintext]) - if @en[0]; @en_a,@en_z=@en[0].first,@en[0].last - end - if @en_ast[0]; @en_a_asterisk,@en_z_asterisk=@en_ast[0].first,@en_ast[0].last - end - if @en_pls[0]; @en_a_plus,@en_z_plus=@en_pls[0].first,@en_pls[0].last - end - t=SiSU_DB_tuple::Load_documents.new(@conn,@col,@opt,@file) - @tuple_array << t.tuple - @col[:lev]=@col[:plaintext]=@col[:body]='' - else #% regular text - @col[:lid]+=1 - txt='' - txt,@col[:ocn],@col[:ocnd],@col[:ocns],@col[:digest_clean],@col[:digest_all]=(/(.+?)#{Mx[:id_o]}~(\d+);((?:\w|[0-6]:)\d+);(\w\d+)#{Mx[:id_c]}#{Mx[:id_o]}([0-9a-f]{#{@@dl}}):([0-9a-f]{#{@@dl}})#{Mx[:id_c]}/m).match(data).captures - @hname=if @col[:seg] \ - and not @col[:seg].to_s.empty? - @@hname=@col[:seg].to_s - else @@hname - end - @env=SiSU_Env::Info_env.new(@md.fns) - @base_url="#{@env.url.root}/#{@md.fnb}/#@hname.html" - if txt =~/(?:#{Mx[:en_a_o]}|#{Mx[:en_b_o]})[*+]?(\d+)\s+.+?(?:#{Mx[:en_a_c]}|#{Mx[:en_b_c]})/ - endnotes(txt).range - if txt =~ /#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}/; @en << endnotes(txt).standard - end - if txt =~/#{Mx[:en_b_o]}\*.+?#{Mx[:en_b_c]}/; @en_ast << endnotes(txt).asterisk - end - if txt =~/#{Mx[:en_b_o]}\+.+?#{Mx[:en_b_c]}/; @en_pls << endnotes(txt).plus - end - txt=endnotes(txt).clean_text(@base_url) - end - if @sql_type=~/pg/ \ - and txt.size > (document_clean - 1) #% examine pg build & remove limitation - puts "\n\nTOO LARGE (TXT - see error log)\n\n" - open("#{Dir.pwd}/pg_documents_error_log",'a') do |error| - error.puts("\n#{@opt.fns}\nTEXT BODY\n#{@col[:body].size} object #{@col[:ocn]} -> #{@col[:body].slice(0..500)}") - end - txt=%{\n\nLARGE TEXT BLOCK OMITTED\n\n} - end - if @en[0]; @en_a,@en_z=@en[0].first,@en[0].last - end - if @en_ast[0]; @en_a_asterisk,@en_z_asterisk=@en_ast[0].first,@en_ast[0].last - end - if @en_pls[0]; @en_a_plus,@en_z_plus=@en_pls[0].first,@en_pls[0].last - end - @col[:body]=if txt=~/#{Mx[:gr_o]}T[h]?#{Mx[:tc_p]}.+?#{Mx[:tc_p]}~\d+;\w\d+;\w\d+#{Mx[:gr_c]}/ #watch - txt_obj={:txt =>txt,:col =>@col} - SiSU_Format_Shared::CSS_Format.new(@md,txt_obj).html_table - elsif txt=~/^#{Mx[:pa_o]}:i([1-9])#{Mx[:pa_c]}/ - txt_obj={:txt =>txt,:col =>@col} - SiSU_Format_Shared::CSS_Format.new(@md,txt_obj).indent($1) - else - txt_obj={:txt =>txt,:col =>@col} - SiSU_Format_Shared::CSS_Format.new(@md,txt_obj).norm - end - special_character_escape(@col[:body]) - @col[:plaintext]=@col[:body].dup - strip_markup(@col[:plaintext]) - t=SiSU_DB_tuple::Load_documents.new(@conn,@col,@opt,@file) - @tuple_array << t.tuple - @en,@en_ast,@en_pls=[],[],[] - @col[:en_a]=@col[:en_z]=nil - @col[:lev]=@col[:plaintext]=@col[:body]='' - end - if notedata =~/#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}/ #% import into database endnotes tables - endnote_array=notedata.scan(/#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}/) - endnote_array.each do |inf| - if inf[/#{Mx[:en_a_o]}\d+.+?#{Mx[:id_o]}[0-9a-f]{#{@@dl}}#{Mx[:id_c]}#{Mx[:en_a_c]}/] # dal new endnotes 2003w31/1 - if inf[/#{Mx[:en_a_o]}(\d+)(.+?)#{Mx[:id_o]}([0-9a-f]{#{@@dl}})#{Mx[:id_c]}#{Mx[:en_a_c]}/] # dal new endnotes 2003w31/1 - nr,txt,digest_clean=$1,$2,$3 - end - @id_n+=1 - txt_obj={:txt =>txt,:col =>@col,:endnote_nr =>nr} - body=SiSU_Format_Shared::CSS_Format.new(@md,txt_obj).endnote - special_character_escape(body) - special_character_escape(txt) - strip_markup(txt) - if txt.size > (endnote_clean - 1) - puts "\n\nTOO LARGE (ENDNOTE - see error log)\n\n" - open("#{Dir.pwd}/pg_documents_error_log",'a') do |error| - error.puts("\n#{@opt.fns}\nENDNOTE\n#{txt.size} object #{@col[:ocn]},#{@col[:ocnd]},#{@col[:ocns]} -> #{txt.slice(0..500)}") - end - txt=%{\n\nLARGE TEXT BLOCK OMITTED\n\n} - end - if txt - en={} - en={ :type => 'endnotes', - :id => @id_n, - :lid => @col[:lid], - :nr => nr, - :txt => txt, - :body => body, - :ocn => @col[:ocn], - :ocnd => @col[:ocnd], - :ocns => @col[:ocns], - :id_t => @@id_t, - :hash => digest_clean - } - t=SiSU_DB_tuple::Load_endnotes.new(@conn,en,@opt,@file) - @tuple_array << t.tuple - end - end - end - word_mode=notedata.scan(/\S+/) - end - if notedata =~/#{Mx[:en_b_o]}\*.+?#{Mx[:en_b_c]}/ #% import into database endnotes tables - endnote_array=notedata.scan(/#{Mx[:en_b_o]}\*.+?#{Mx[:en_b_c]}/) - endnote_array.each do |inf| - if inf[/#{Mx[:en_b_o]}\*\d+.+?#{Mx[:id_o]}[0-9a-f]{#{@@dl}}#{Mx[:id_c]}#{Mx[:en_b_c]}/] # dal new endnotes 2003w31/1 - if inf[/#{Mx[:en_b_o]}[*](\d+)(.+?)#{Mx[:id_o]}([0-9a-f]{#{@@dl}})#{Mx[:id_c]}#{Mx[:en_b_c]}/] # dal new endnotes 2003w31/1 - nr,txt,digest_clean=$1,$2,$3 - end - @id_n+=1 - txt_obj={:txt =>txt,:col =>@col,:endnote_nr =>nr} - body=SiSU_Format_Shared::CSS_Format.new(@md,txt_obj).endnote - special_character_escape(body) - special_character_escape(txt) - strip_markup(txt) - if txt.size > (endnote_clean - 1) - puts "\n\nTOO LARGE (ENDNOTE - see error log)\n\n" - open("#{Dir.pwd}/pg_documents_error_log",'a') do |error| - error.puts("\n#{@opt.fns}\nENDNOTE\n#{txt.size} object #{@col[:ocn]},#{@col[:ocnd]},#{@col[:ocns]} -> #{txt.slice(0..500)}") - end - txt=%{\n\nLARGE TEXT BLOCK OMITTED\n\n} - end - if txt - #puts "'#{@id_n}', '#{@col[:lid]}', '#{en}', '#{txt}', '#{body}', '#{@col[:ocn]}', '#{@col[:ocnd]}', '#{@col[:ocns]}', '#{@@id_t}'" #% endnotes - en={} - en={ :type => 'endnotes_asterisk', - :id => @id_n, - :lid => @col[:lid], - :nr => nr, - :txt => txt, - :body => body, - :ocn => @col[:ocn], - :ocnd => @col[:ocnd], - :ocns => @col[:ocns], - :id_t => @@id_t, - :hash => digest_clean - } - t=SiSU_DB_tuple::Load_endnotes.new(@conn,en,@opt,@file) - @tuple_array << t.tuple - end - end - end - word_mode=notedata.scan(/\S+/) - end - if notedata =~/#{Mx[:en_b_o]}\+.+?#{Mx[:en_b_c]}/ #% import into database endnotes tables - endnote_array=notedata.scan(/#{Mx[:en_b_o]}\+.+?#{Mx[:en_b_c]}/) - endnote_array.each do |inf| - if inf[/#{Mx[:en_b_o]}\+\d+.+?#{Mx[:id_o]}[0-9a-f]{#{@@dl}}#{Mx[:id_c]}#{Mx[:en_b_c]}/] # dal new endnotes 2003w31/1 - if inf[/#{Mx[:en_b_o]}[+](\d+)(.+?)#{Mx[:id_o]}([0-9a-f]{#{@@dl}})#{Mx[:id_c]}#{Mx[:en_b_c]}/] # dal new endnotes 2003w31/1 - nr,txt,digest_clean=$1,$2,$3 - end - @id_n+=1 - txt_obj={:txt =>txt,:col =>@col,:endnote_nr =>nr} - body=SiSU_Format_Shared::CSS_Format.new(@md,txt_obj).endnote - special_character_escape(body) - special_character_escape(txt) - strip_markup(txt) - if txt.size > (endnote_clean - 1) - puts "\n\nTOO LARGE (ENDNOTE - see error log)\n\n" - open("#{Dir.pwd}/pg_documents_error_log",'a') do |error| - error.puts("\n#{@opt.fns}\nENDNOTE\n#{txt.size} object #{@col[:ocn]},#{@col[:ocnd]},#{@col[:ocns]} -> #{txt.slice(0..500)}") - end - txt=%{\n\nLARGE TEXT BLOCK OMITTED\n\n} - end - if txt - en={} - en={ :type => 'endnotes_plus', - :id => @id_n, - :lid => @col[:lid], - :nr => nr, - :txt => txt, - :body => body, - :ocn => @col[:ocn], - :ocnd => @col[:ocnd], - :ocns => @col[:ocns], - :id_t => @@id_t, - :hash => digest_clean - } - t=SiSU_DB_tuple::Load_endnotes.new(@conn,en,@opt,@file) - @tuple_array << t.tuple - end - end - end - word_mode=notedata.scan(/\S+/) - end - end - end - rescue; SiSU_Errors::Info_error.new($!,$@,@opt.cmd,@opt.fns).error - ensure - end - @tuple_array - end - def endnotes(txt) - @txt=txt - def standard - x=if @txt =~/#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}/; @txt.scan(/#{Mx[:en_a_o]}(\d+).+?#{Mx[:en_a_c]}/) - else nil - end - end - def asterisk - x=if @txt =~/#{Mx[:en_b_o]}\*.+?#{Mx[:en_b_c]}/; @txt.scan(/#{Mx[:en_b_o]}[*](\d+).+?#{Mx[:en_b_c]}/) - else nil - end - end - def plus - x=if @txt =~/#{Mx[:en_b_o]}\+.+?#{Mx[:en_b_c]}/; @txt.scan(/#{Mx[:en_b_o]}[+](\d+).+?#{Mx[:en_b_c]}/) - else nil - end - end - def clean_text(base_url=nil) - if base_url - @txt.gsub!(/#{Mx[:en_a_o]}(\d+).+?#{Mx[:en_a_c]}/,%{\\1}) - @txt.gsub!(/#{Mx[:en_b_o]}([*]\d+).+?#{Mx[:en_b_c]}/,%{\\1}) - @txt.gsub!(/#{Mx[:en_b_o]}([+]\d+).+?#{Mx[:en_b_c]}/,%{\\1}) - else - @txt.gsub!(/#{Mx[:en_a_o]}(\d+).+?#{Mx[:en_a_c]}/,'\1') - @txt.gsub!(/#{Mx[:en_b_o]}([*]\d+).+?#{Mx[:en_b_c]}/,'\1') - @txt.gsub!(/#{Mx[:en_b_o]}([+]\d+).+?#{Mx[:en_b_c]}/,'\1') - end - @txt - end - def range - @col[:en_a]=@col[:en_z]=nil - if @txt =~/#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}|#{Mx[:en_b_o]}([*]\d+).+?#{Mx[:en_b_c]}|#{Mx[:en_b_o]}([+]\d+).+?#{Mx[:en_b_c]}/ - word_array=@txt.scan(/\S+/) - word_array.each do |w| - if w[/(?:#{Mx[:en_a_o]}|#{Mx[:en_b_o]})[*+]?(\d+)\s+.+?(?:#{Mx[:en_a_c]}|#{Mx[:en_b_c]})(?:#{Mx[:en_a_c]}|#{Mx[:en_b_c]})/] # not tested since change 2003w31 - @col[:en_a]=$1 unless @col[:en_a] - @col[:en_z]=@col[:en_a].dup unless @col[:en_a] - @col[:en_z]=$1 if @col[:en_a] - end - end - end - @col - end - self - end - def db_import_urls(dbi_unit,meta) #% import documents OID - populate database - begin - @fnm=meta - @env=SiSU_Env::Info_env.new(@opt.fns) - base=@env.url.root - out=@env.path.output - f,u={},{} - if @fnb.empty? \ - or @fnb.nil? - p 'file output path error' #remove - end - if @opt.cmd !~/e/ \ - or (@opt.cmd=~/e/ and FileTest.file?("#{out}/#@fnb/#{@md.fn[:plain]}")==true) - f[:txt],u[:txt]='plaintext,', "'#{base}/#@fnb/#{@md.fn[:plain]}'," - end - if @opt.cmd !~/e/ \ - or (@opt.cmd=~/e/ and FileTest.file?("#{out}/#@fnb/#{@md.fn[:toc]}")==true) - f[:html_toc],u[:html_toc]='html_toc,', "'#{base}/#@fnb/#{@md.fn[:toc]}'," - end - if @opt.cmd !~/e/ \ - or (@opt.cmd=~/e/ and FileTest.file?("#{out}/#@fnb/#{@md.fn[:doc]}")==true) - f[:html_doc],u[:html_doc]='html_doc,', "'#{base}/#@fnb/#{@md.fn[:doc]}'," - end - if @opt.cmd !~/e/ \ - or (@opt.cmd=~/e/ and FileTest.file?("#{out}/#@fnb/#{@md.fn[:xhtml]}")==true) - f[:xhtml],u[:xhtml]='xhtml,', "'#{base}/#@fnb/#{@md.fn[:xhtml]}'," - end - if @opt.cmd !~/e/ \ - or (@opt.cmd=~/e/ and FileTest.file?("#{out}/#@fnb/#{@md.fn[:sax]}")==true) - f[:xml_sax],u[:xml_sax]='xml_sax,', "'#{base}/#@fnb/#{@md.fn[:sax]}'," - end - if @opt.cmd !~/e/ \ - or (@opt.cmd=~/e/ and FileTest.file?("#{out}/#@fnb/#{@md.fn[:dom]}")==true) - f[:xml_dom],u[:xml_dom]='xml_dom,', "'#{base}/#@fnb/#{@md.fn[:dom]}'," - end - if @opt.cmd !~/e/ \ - or (@opt.cmd=~/e/ and FileTest.file?("#{out}/#@fnb/#{@md.fn[:odf]}")==true) - f[:odf],u[:odf]='odf,', "'#{base}/#@fnb/#{@md.fn[:odf]}'," - end - if @opt.cmd !~/e/ \ - or (@opt.cmd=~/e/ and FileTest.file?("#{out}/#@fnb/#{@md.fn[:pdf_p]}")==true) - f[:pdf_p],u[:pdf_p]='pdf_p,', "'#{base}/#@fnb/#{@md.fn[:pdf_p]}'," - end - if @opt.cmd !~/e/ \ - or (@opt.cmd=~/e/ and FileTest.file?("#{out}/#@fnb/#{@md.fn[:pdf_l]}")==true) - f[:pdf_l],u[:pdf_l]='pdf_l,', "'#{base}/#@fnb/#{@md.fn[:pdf_l]}'," - end - if @opt.cmd !~/e/ \ - or (@opt.cmd=~/e/ and FileTest.file?("#{out}/#@fnb/#{@md.fn[:concordance]}")==true) - f[:concordance],u[:concordance]='concordance,', "'#{base}/#@fnb/#{@md.fn[:concordance]}'," - end - if @opt.cmd !~/e/ \ - or (@opt.cmd=~/e/ and FileTest.file?("#{out}/#@fnb/#{@opt.fns}.tex")==true) - f[:latex_p],u[:latex_p]='latex_p,', "'#{base}/#@fnb/#{@opt.fns}.tex'," - end - if @opt.cmd !~/e/ \ - or (@opt.cmd=~/e/ and FileTest.file?("#{out}/#@fnb/#{@opt.fns}.landscape.tex")==true) - f[:latex_l],u[:latex_l]='latex_l,', "'#{base}/#@fnb/#@opt.fns}.landscape.tex'," - end - if @opt.cmd !~/e/ \ - or (@opt.cmd=~/e/ and FileTest.file?("#{out}/#@fnb/#{@md.fn[:digest]}")==true) - f[:digest],u[:digest]='digest,', "'#{base}/#@fnb/#{@md.fn[:digest]}'," - end - if @opt.cmd !~/e/ \ - or (@opt.cmd=~/e/ and FileTest.file?("#{out}/#@fnb/#{@md.fn[:manifest]}")==true) #revisit, was to be text, this is html - f[:manifest],u[:manifest]='manifest,', "'#{base}/#@fnb/#{@md.fn[:manifest]}'," - end - if @opt.cmd !~/e/ \ - or (@opt.cmd=~/e/ and FileTest.file?("#{out}/#@fnb/#{@opt.fns}.meta")==true) - f[:markup],u[:markup]='markup,', "'#{base}/#@fnb/#{@opt.fns}.meta'," - end - if @opt.cmd !~/e/ \ - or (@opt.cmd=~/e/ and FileTest.file?("#{out}/#@fnb/#{@opt.fns}.tgz")==true) - f[:sisupod],u[:sisupod]='sisupod,', "'#{base}/#@fnb/#{@opt.fns}.tgz'," - end - t=SiSU_DB_tuple::Load_urls.new(@conn,f,u,@@id_t,@opt,@file) - tuple=t.tuple - rescue; SiSU_Errors::Info_error.new($!,$@,@opt.cmd,@opt.fns).error - ensure - end - tuple - end - end -end -__END__ diff --git a/lib/sisu/v0/db_indexes.rb b/lib/sisu/v0/db_indexes.rb deleted file mode 100644 index 315ae199..00000000 --- a/lib/sisu/v0/db_indexes.rb +++ /dev/null @@ -1,111 +0,0 @@ -# coding: utf-8 -=begin - - * Name: SiSU - - * Description: a framework for document structuring, publishing and search - - * Author: Ralph Amissah - - * Copyright: (C) 1997 - 2009 Ralph Amissah All Rights Reserved. - - * License: GPL 3 or later: - - SiSU, a framework for document structuring, publishing and search - - Copyright (C) Ralph Amissah - - This program is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by the Free - Software Foundation, either version 3 of the License, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - more details. - - You should have received a copy of the GNU General Public License along with - this program. If not, see . - - If you have Internet connection, the latest version of the GPL should be - available at these locations: - - - - - - - - * SiSU uses: - * Standard SiSU markup syntax, - * Standard SiSU meta-markup syntax, and the - * Standard SiSU object citation numbering and system - - * Hompages: - - - - * Download: - - - * Ralph Amissah - - - - ** Description: modules shared by the different db types, dbi, postgresql, - sqlite - -=end -module SiSU_DB_index - class Index # create documents Indexes def initialize(opt,conn='',sql_type='') - def initialize(opt,conn,file,sql_type='') - @opt,@conn,@file,@sql_type=opt,conn,file,sql_type - end - def create_indexes # check added from pg not tested - def conn_execute_array(sql_arr) - @conn.transaction do |conn| - sql_arr.each do |sql| - conn.execute(sql) - end - end - end - def base - print "\n create documents common indexes\n" unless @opt.cmd =~/q/ - sql_arr=[ - %{CREATE INDEX object_nr ON documents(ocn);}, - %{CREATE INDEX digest_clean ON documents(digest_clean);}, - %{CREATE INDEX digest_all ON documents(digest_all);}, - %{CREATE INDEX lev1 ON documents(lev1);}, - %{CREATE INDEX lev2 ON documents(lev2);}, - %{CREATE INDEX lev3 ON documents(lev3);}, - %{CREATE INDEX lev4 ON documents(lev4);}, - %{CREATE INDEX lev5 ON documents(lev5);}, - %{CREATE INDEX lev6 ON documents(lev6);}, - %{CREATE INDEX endnote_nr ON endnotes(nr);}, - %{CREATE INDEX digest_en ON endnotes(digest_clean);}, - %{CREATE INDEX endnote_nr_asterisk ON endnotes_asterisk(nr);}, - %{CREATE INDEX endnote_asterisk ON endnotes_asterisk(clean);}, - %{CREATE INDEX digest_en_asterisk ON endnotes_asterisk(digest_clean);}, - %{CREATE INDEX endnote_nr_plus ON endnotes_plus(nr);}, - %{CREATE INDEX endnote_plus ON endnotes_plus(clean);}, - %{CREATE INDEX digest_en_plus ON endnotes_plus(digest_clean);}, - %{CREATE INDEX title ON metadata(title);}, - %{CREATE INDEX filename ON metadata(filename)}, - ] - conn_execute_array(sql_arr) - end - def text - print "\n create documents text indexes\n" unless @opt.cmd =~/q/ - sql_arr=[ - %{CREATE INDEX clean ON documents(clean);}, - %{CREATE INDEX endnote ON endnotes(clean);} - ] - conn_execute_array(sql_arr) - end - base - @opt.cmd=~/D/ || @opt.mod=~/psql/ ? '' : text - end - end -end -__END__ diff --git a/lib/sisu/v0/db_load_tuple.rb b/lib/sisu/v0/db_load_tuple.rb deleted file mode 100644 index 447e9354..00000000 --- a/lib/sisu/v0/db_load_tuple.rb +++ /dev/null @@ -1,155 +0,0 @@ -# coding: utf-8 -=begin - - * Name: SiSU - - * Description: a framework for document structuring, publishing and search - - * Author: Ralph Amissah - - * Copyright: (C) 1997 - 2009 Ralph Amissah All Rights Reserved. - - * License: GPL 3 or later: - - SiSU, a framework for document structuring, publishing and search - - Copyright (C) Ralph Amissah - - This program is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by the Free - Software Foundation, either version 3 of the License, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - more details. - - You should have received a copy of the GNU General Public License along with - this program. If not, see . - - If you have Internet connection, the latest version of the GPL should be - available at these locations: - - - - - - - - * SiSU uses: - * Standard SiSU markup syntax, - * Standard SiSU meta-markup syntax, and the - * Standard SiSU object citation numbering and system - - * Hompages: - - - - * Download: - - - * Ralph Amissah - - - - ** Description: modules shared by the different db types, dbi, postgresql, - sqlite - -=end -module SiSU_DB_tuple - class Load_documents - require "#{SiSU_lib}/param" - include SiSU_Param - def initialize(conn,col,opt,file) - @conn,@col,@opt,@file=conn,col,opt,file - @col[:lev]=@col[:lev].to_i - unless @col[:lev]=~/^[1-6]/ \ - or @col[:lev]==1 \ - or @col[:lev]==2 \ - or @col[:lev]==3 \ - or @col[:lev]==4 \ - or @col[:lev]==5 \ - or @col[:lev]==6 #changed from \d+ ?? - @col[:lev]=0 - end - @col[:ocn]=0 unless @col[:ocn]=~/\d+/ - @cX=SiSU_Screen::Ansi.new(@opt.cmd).cX - end - def tuple #% import line - sql_entry=if @col[:en_a] - "INSERT INTO documents (lid, metadata_tid, lev, clean, body, ocn, ocnd, ocns, seg, lev1, lev2, lev3, lev4, lev5, lev6, en_a, en_z, digest_clean, digest_all) VALUES (#{@col[:lid]}, #{@col[:tid]}, #{@col[:lev]}, '#{@col[:plaintext]}', '#{@col[:body]}', '#{@col[:ocn]}', '#{@col[:ocnd]}', '#{@col[:ocns]}', '#{@col[:seg]}', '#{@col[:lv1]}', '#{@col[:lv2]}', '#{@col[:lv3]}', '#{@col[:lv4]}', '#{@col[:lv5]}', '#{@col[:lv6]}', '#{@col[:en_a]}', '#{@col[:en_z]}', '#{@col[:digest_clean]}', '#{@col[:digest_all]}');" - else - "INSERT INTO documents (lid, metadata_tid, lev, clean, body, ocn, ocnd, ocns, seg, lev1, lev2, lev3, lev4, lev5, lev6, digest_clean, digest_all) VALUES (#{@col[:lid]}, #{@col[:tid]}, #{@col[:lev]}, '#{@col[:plaintext]}', '#{@col[:body]}', '#{@col[:ocn]}', '#{@col[:ocnd]}', '#{@col[:ocns]}', '#{@col[:seg]}', '#{@col[:lv1]}', '#{@col[:lv2]}', '#{@col[:lv3]}', '#{@col[:lv4]}', '#{@col[:lv5]}', '#{@col[:lv6]}', '#{@col[:digest_clean]}', '#{@col[:digest_all]}');" - end - if @opt.cmd =~/M/ - if @opt.cmd =~/V/ - puts @file.inspect - puts sql_entry - end - @file.puts sql_entry - else - @file.puts sql_entry if @opt.cmd =~/V/ - end - if @opt.cmd =~/v/ - if @col[:lev].inspect =~/[1235678]/ - lev=case @col[:lev].inspect - when /1/; ':A' - when /2/; ':B' - when /3/; ':C' - when /5/; ' 2' - when /6/; ' 3' - end - puts %{#{lev}>\t#{@col[:lv1]}\t#{@col[:lv2]}\t#{@col[:lv3]}\t#{@col[:lv4]}\t#{@col[:lv5]}\t#{@col[:lv6]}\t#{@col[:ocn]}\t#{@col[:ocnd]}\t#{@col[:ocns]}} - elsif @col[:lev].inspect =~/[4]/ - puts %{ #{@cX.green}1>#{@cX.off}\t#{@col[:lv1]}\t#{@col[:lv2]}\t#{@col[:lv3]}\t#{@col[:lv4]}\t#{@col[:lv5]}\t#{@col[:lv6]}\t#{@col[:ocn]}\t#{@col[:ocnd]}\t#{@col[:ocns]}\t#{@col[:seg]}} - end - end - sql_entry - end - end - class Load_metadata - def initialize(conn,tp,id,opt,file) - @conn,@tp,@id,@opt,@file=conn,tp,id,opt,file - end - def tuple - sql_entry="INSERT INTO metadata (#{@tp[:fns_f]} #{@tp[:suffix_f]} #{@tp[:title_f]} #{@tp[:subtitle_f]} #{@tp[:creator_f]} #{@tp[:illustrator_f]} #{@tp[:translator_f]} #{@tp[:subject_f]} #{@tp[:description_f]} #{@tp[:publisher_f]} #{@tp[:contributor_f]} #{@tp[:prepared_by_f]} #{@tp[:digitized_by_f]} #{@tp[:date_f]} #{@tp[:date_created_f]} #{@tp[:date_issued_f]} #{@tp[:date_valid_f]} #{@tp[:date_available_f]} #{@tp[:date_modified_f]} #{@tp[:type_f]} #{@tp[:format_f]} #{@tp[:identifier_f]} #{@tp[:source_f]} #{@tp[:language_f]} #{@tp[:language_original_f]} #{@tp[:relation_f]} #{@tp[:coverage_f]} #{@tp[:rights_f]} #{@tp[:copyright_f]} #{@tp[:owner_f]} #{@tp[:keywords_f]} #{@tp[:abstract_f]} #{@tp[:comment_f]} #{@tp[:loc_f]} #{@tp[:dewey_f]} #{@tp[:isbn_f]} #{@tp[:pg_f]} #{@tp[:prefix_a_f]} #{@tp[:prefix_b_f]} tid) VALUES (#{@tp[:fns_i]} #{@tp[:suffix_i]} #{@tp[:title_i]} #{@tp[:subtitle_i]} #{@tp[:creator_i]} #{@tp[:illustrator_i]} #{@tp[:translator_i]} #{@tp[:subject_i]} #{@tp[:description_i]} #{@tp[:publisher_i]} #{@tp[:contributor_i]} #{@tp[:prepared_by_i]} #{@tp[:digitized_by_i]} #{@tp[:date_i]} #{@tp[:date_created_i]} #{@tp[:date_issued_i]} #{@tp[:date_valid_i]} #{@tp[:date_available_i]} #{@tp[:date_modified_i]} #{@tp[:type_i]} #{@tp[:format_i]} #{@tp[:identifier_i]} #{@tp[:source_i]} #{@tp[:language_i]} #{@tp[:language_original_i]} #{@tp[:relation_i]} #{@tp[:coverage_i]} #{@tp[:rights_i]} #{@tp[:copyright_i]} #{@tp[:owner_i]} #{@tp[:keywords_i]} #{@tp[:abstract_i]} #{@tp[:comment_i]} #{@tp[:loc_i]} #{@tp[:dewey_i]} #{@tp[:isbn_i]} #{@tp[:pg_i]} #{@tp[:prefix_a_i]} #{@tp[:prefix_b_i]} #{@id});" - if @opt.cmd =~/M/ - puts "maintenance mode on: creating sql transaction file (for last transaction set (document) only):\n\t#{@file.inspect}" - @file.puts sql_entry - else - @file.puts sql_entry if @opt.cmd =~/V/ - end - sql_entry - end - end - class Load_urls - def initialize(conn,f,u,id,opt,file) - @conn,@f,@u,@id,@opt,@file=conn,f,u,id,opt,file - end - def tuple - sql_entry="INSERT INTO urls (#{@f[:txt]} #{@f[:html_toc]} #{@f[:html_doc]} #{@f[:xhtml]} #{@f[:xml_sax]} #{@f[:xml_dom]} #{@f[:odf]} #{@f[:pdf_p]} #{@f[:pdf_l]} #{@f[:concordance]} #{@f[:latex_p]} #{@f[:latex_l]} #{@f[:manifest]} #{@f[:digest]} #{@f[:markup]} #{@f[:sisupod]} metadata_tid) VALUES (#{@u[:txt]} #{@u[:html_toc]} #{@u[:html_doc]} #{@u[:xhtml]} #{@u[:xml_sax]} #{@u[:xml_dom]} #{@u[:odf]} #{@u[:pdf_p]} #{@u[:pdf_l]} #{@u[:concordance]} #{@u[:latex_p]} #{@u[:latex_l]} #{@u[:manifest]} #{@u[:digest]} #{@u[:markup]} #{@u[:sisupod]} #{@id});" - if @opt.cmd =~/M/ - @file.puts sql_entry - else - @file.puts sql_entry if @opt.cmd =~/V/ - end - sql_entry - end - end - class Load_endnotes - def initialize(conn,en,opt,file) - @conn,@en,@opt,@file=conn,en,opt,file - end - def tuple - sql_entry="INSERT INTO #{@en[:type]} (nid, document_lid, nr, clean, body, ocn, ocnd, ocns, metadata_tid, digest_clean) VALUES ('#{@en[:id]}', '#{@en[:lid]}', '#{@en[:nr]}', '#{@en[:txt]}', '#{@en[:body]}', '#{@en[:ocn]}', '#{@en[:ocnd]}', '#{@en[:ocns]}', '#{@en[:id_t]}', '#{@en[:hash]}');" - if @opt.cmd =~/M/ - @file.puts sql_entry - else - @file.puts sql_entry if @opt.cmd =~/V/ - end - sql_entry - end - end -end -__END__ diff --git a/lib/sisu/v0/db_remove.rb b/lib/sisu/v0/db_remove.rb deleted file mode 100644 index bde5c891..00000000 --- a/lib/sisu/v0/db_remove.rb +++ /dev/null @@ -1,107 +0,0 @@ -# coding: utf-8 -=begin - - * Name: SiSU - - * Description: a framework for document structuring, publishing and search - - * Author: Ralph Amissah - - * Copyright: (C) 1997 - 2009 Ralph Amissah All Rights Reserved. - - * License: GPL 3 or later: - - SiSU, a framework for document structuring, publishing and search - - Copyright (C) Ralph Amissah - - This program is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by the Free - Software Foundation, either version 3 of the License, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - more details. - - You should have received a copy of the GNU General Public License along with - this program. If not, see . - - If you have Internet connection, the latest version of the GPL should be - available at these locations: - - - - - - - - * SiSU uses: - * Standard SiSU markup syntax, - * Standard SiSU meta-markup syntax, and the - * Standard SiSU object citation numbering and system - - * Hompages: - - - - * Download: - - - * Ralph Amissah - - - - ** Description: modules shared by the different db types, dbi, postgresql, - sqlite - -=end -module SiSU_DB_remove - class Remove - def initialize(opt,conn,file) - @opt,@conn,@file=opt,conn,file - @md=SiSU_Param::Parameters.new(@opt).get - @fnb=@md.fnb - @db=SiSU_Env::Info_db.new - end - def remove - driver_sqlite3 = true if @conn.inspect.match(/^(.{10})/)[1] == @db.sqlite.conn_sqlite3.inspect.match(/^(.{10})/)[1] - del_id=if driver_sqlite3 - @conn.get_first_value(%{ SELECT tid FROM metadata WHERE filename LIKE '#{@opt.fns}'; }).to_i - else - x=@conn.select_one(%{ SELECT tid FROM metadata WHERE filename LIKE '#{@opt.fns}'; }) - del=if x; x.join.to_i else nil - end - end - if del_id - sql_entry=[ - "DELETE FROM endnotes WHERE metadata_tid = '#{del_id}';", - "DELETE FROM endnotes_asterisk WHERE metadata_tid = '#{del_id}';", - "DELETE FROM endnotes_plus WHERE metadata_tid = '#{del_id}';", - "DELETE FROM documents WHERE metadata_tid = '#{del_id}';", - "DELETE FROM urls WHERE metadata_tid = '#{del_id}';", - "DELETE FROM metadata WHERE tid = '#{del_id}';", - ] - if driver_sqlite3 - @conn.transaction - sql_entry.each do |s| - @conn.execute(s) - end - @conn.commit if driver_sqlite3 - else - sql_entry.each do |s| - @conn.execute(s) - end - end - if @opt.cmd =~/M/ - @file.puts sql_entry if @opt.cmd =~/M/ - end - else - tell=SiSU_Screen::Ansi.new(@opt.cmd,"no such file in database #{@db.psql.db}::#{@opt.fns}") - tell.puts_grey #if @opt.cmd.include? ?v - end - end - end -end -__END__ diff --git a/lib/sisu/v0/db_select.rb b/lib/sisu/v0/db_select.rb deleted file mode 100644 index 1d5e1f20..00000000 --- a/lib/sisu/v0/db_select.rb +++ /dev/null @@ -1,193 +0,0 @@ -# coding: utf-8 -=begin - - * Name: SiSU - - * Description: a framework for document structuring, publishing and search - - * Author: Ralph Amissah - - * Copyright: (C) 1997 - 2009 Ralph Amissah All Rights Reserved. - - * License: GPL 3 or later: - - SiSU, a framework for document structuring, publishing and search - - Copyright (C) Ralph Amissah - - This program is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by the Free - Software Foundation, either version 3 of the License, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - more details. - - You should have received a copy of the GNU General Public License along with - this program. If not, see . - - If you have Internet connection, the latest version of the GPL should be - available at these locations: - - - - - - - - * SiSU uses: - * Standard SiSU markup syntax, - * Standard SiSU meta-markup syntax, and the - * Standard SiSU object citation numbering and system - - * Hompages: - - - - * Download: - - - * Ralph Amissah - - - - ** Description: modules shared by the different db types, dbi, postgresql, - sqlite - -=end -module SiSU_DB_select - class Case - def initialize(opt,conn='',sql_type='pg') - @opt,@conn,@sql_type=opt,conn,sql_type -#@conn.execute("BEGIN;") - #@sdb=Create.new(@conn) - @file=sql_maintenance_file - @db=SiSU_Env::Info_db.new - @sdb=SiSU_DB_DBI::Create.new(@opt,@conn,@file,@sql_type) # db_dbi.rb - @sdb_index=SiSU_DB_DBI::Index.new(@opt,@conn,@file,@sql_type) # db_dbi.rb - @sdb_no=SiSU_DB_DBI::Drop.new(@opt,@conn,@db,@sql_type) # db_dbi.rb - @sdb_import=SiSU_DB_DBI::Import.new(@opt,@conn,@file,@sql_type) if @opt.mod.inspect =~/update|import/ - @sdb_remove_doc=SiSU_DB_DBI::Remove.new(@opt,@conn,@file) if @opt.mod.inspect =~/update|remove/ - end - def sql_maintenance_file - file=if @opt.inspect =~/M/ - x=if @opt.fns and not @opt.fns.empty? - @env=SiSU_Env::Info_env.new(@opt.fns) if @opt.fns - puts "\n#{@env.path.sqlite}/#{@opt.fns}.sql" if @sql_type =~/sqlite/ and @opt.cmd =~/M/ - @db=SiSU_Env::Info_db.new - @job="sqlite3 #{@db.sqlite.db} < #{@env.path.sqlite}/#{@opt.fns}.sql" - File.new("#{@env.path.sqlite}/#{@opt.fns}.sql",'w+') - elsif @opt.fns and @opt.fns.inspect =~/create/; nil #sort variations later - else nil - end - else nil - end - file - end - def cases - @opt.mod.each do |mod| - case mod - when /^--createdb$/ - @sdb.output_dir? - begin - @sdb.create_db - rescue; @sdb.output_dir? - end - when /^--(?:init(?:ialize)?|create(?:all)?)$/ - @sdb.output_dir? - #@sdb.create_db - begin - #@sdb.create_db - @sdb.create_table.metadata - @sdb.create_table.documents - @sdb.create_table.endnotes - @sdb.create_table.endnotes_asterisk - @sdb.create_table.endnotes_plus - @sdb.create_table.urls - @sdb_index.create_indexes - rescue; SiSU_Errors::Info_error.new($!,$@,'-D').error; @sdb.output_dir? - end - when /^--createtable(s)?$/ - @sdb.output_dir? - begin - @sdb.create_table.metadata - @sdb.create_table.documents - @sdb.create_table.endnotes - @sdb.create_table.endnotes_asterisk - @sdb.create_table.endnotes_plus - @sdb.create_table.urls - @sdb_index.create_indexes - rescue; @sdb.output_dir? - end - when /^--recreate$/ - @sdb.output_dir? - begin - @sdb_no.drop.tables - @sdb.create_table.metadata - @sdb.create_table.documents - @sdb.create_table.endnotes - @sdb.create_table.endnotes_asterisk - @sdb.create_table.endnotes_plus - @sdb.create_table.urls - @sdb_index.create_indexes - rescue; @sdb.output_dir? - end - when /^--cr(eate)?lex$/ - @sdb.output_dir? - begin - @sdb.create_table.documents - rescue; @sdb.output_dir? - end - when /^--cr(eate)?metadata$/ - @sdb.output_dir? - begin - @sdb.create_table.metadata - rescue; @sdb.output_dir? - end - when /^--import$/ - @sdb_import.marshal_load - tell=case @sql_type - when /sqlite/; SiSU_Screen::Ansi.new(@opt.cmd,"sqlite #{@db.sqlite.db} database?") - when /pg/; SiSU_Screen::Ansi.new(@opt.cmd,"pgaccess or psql #{@db.psql.db} database?") - else '???' - end - tell.puts_grey if @opt.cmd =~/v/ - when /^--update$/ - @sdb_remove_doc.remove - @sdb_import.marshal_load - tell=SiSU_Screen::Ansi.new(@opt.cmd,"pgaccess or psql #{@db.psql.db} database?") - tell.puts_grey if @opt.cmd =~/v/ - when /^--remove$/ - @sdb_remove_doc.remove - when /^--index$/ - @sdb_index.create_indexes - when /^droptable(s)?$/ - @sdb_no.drop.tables - when /^--dropindex(es)?$/ - @sdb_no.drop.indexes - when /^--(?:dropall|drop)$/ - @sdb_no.drop.tables - #@sdb_no.drop.indexes - when /^--(?:db=)?(?:(?:sq)?lite|pg(?:sql)?|my(?:sql)?)$/ - else - help=SiSU_Help::Help.new - help.summary - help.commands - end - if @opt.cmd =~/M/ - #@conn.commit - #@conn.disconnect - puts @job - #system(@job) - end - end - begin - #@conn.commit if @sql_type =~/sqlite/ - rescue; @sdb.output_dir? - end - end - end -end -__END__ diff --git a/lib/sisu/v0/db_tests.rb b/lib/sisu/v0/db_tests.rb deleted file mode 100644 index c5370b52..00000000 --- a/lib/sisu/v0/db_tests.rb +++ /dev/null @@ -1,119 +0,0 @@ -# coding: utf-8 -=begin - - * Name: SiSU - - * Description: a framework for document structuring, publishing and search - - * Author: Ralph Amissah - - * Copyright: (C) 1997 - 2009 Ralph Amissah All Rights Reserved. - - * License: GPL 3 or later: - - SiSU, a framework for document structuring, publishing and search - - Copyright (C) Ralph Amissah - - This program is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by the Free - Software Foundation, either version 3 of the License, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - more details. - - You should have received a copy of the GNU General Public License along with - this program. If not, see . - - If you have Internet connection, the latest version of the GPL should be - available at these locations: - - - - - - - - * SiSU uses: - * Standard SiSU markup syntax, - * Standard SiSU meta-markup syntax, and the - * Standard SiSU object citation numbering and system - - * Hompages: - - - - * Download: - - - * Ralph Amissah - - - - ** Description: modules shared by the different db types, dbi, postgresql, - sqlite - -=end -module SiSU_DB_tests - class Test - def initialize(info,opt) - @ck,@opt=info,opt - unless @opt.cmd =~/q/ - puts @ck.tp[:fns] if @ck.tp[:fns] and not @ck.tp[:fns].empty? - puts @ck.tp[:title] if @ck.tp[:title] and not @ck.tp[:title].empty? - puts @ck.tp[:creator] if @ck.tp[:creator] and not @ck.tp[:creator].empty? - end - end - def verify - unless @opt.cmd =~/q/ - puts @ck.tp[:fns].length.to_s + ' checklength ' + @ck.tp[:fns] if @ck.tp[:fns] and @ck.tp[:fns].length >@ck.lt_filename - puts @ck.tp[:title].length.to_s + ' checklength ' + @ck.tp[:title] if @ck.tp[:title] and @ck.tp[:title].length >@ck.lt_title - puts @ck.tp[:subtitle].length.to_s + ' checklength ' + @ck.tp[:subtitle] if @ck.tp[:subtitle] and @ck.tp[:subtitle].length >@ck.lt_subtitle - puts @ck.tp[:creator].length.to_s + ' checklength ' + @ck.tp[:creator] if @ck.tp[:creator] and @ck.tp[:creator].length >@ck.lt_creator - puts @ck.tp[:author_title].length.to_s + ' checklength ' + @ck.tp[:author_title] if @ck.tp[:author_title] and @ck.tp[:author_title].length >@ck.lt_author_title - puts @ck.tp[:illustrator].length.to_s + ' checklength ' + @ck.tp[:illustrator] if @ck.tp[:illustrator] and @ck.tp[:illustrator].length >@ck.lt_illustrator - puts @ck.tp[:translator].length.to_s + ' checklength ' + @ck.tp[:translator] if @ck.tp[:translator] and @ck.tp[:translator].length >@ck.lt_translator - puts @ck.tp[:prepared_by].length.to_s + ' checklength ' + @ck.tp[:prepared_by] if @ck.tp[:prepared_by] and @ck.tp[:prepared_by].length >@ck.lt_prepared_by - puts @ck.tp[:digitized_by].length.to_s + ' checklength ' + @ck.tp[:digitized_by] if @ck.tp[:digitized_by] and @ck.tp[:digitized_by].length >@ck.lt_digitized_by - puts @ck.tp[:subject].length.to_s + ' checklength ' + @ck.tp[:subject] if @ck.tp[:subject] and @ck.tp[:subject].length >@ck.lt_subject - puts @ck.tp[:description].length.to_s + ' checklength ' + @ck.tp[:description] if @ck.tp[:description] and @ck.tp[:description].length >@ck.lt_description - puts @ck.tp[:publisher].length.to_s + ' checklength ' + @ck.tp[:publisher] if @ck.tp[:publisher] and @ck.tp[:publisher].length >@ck.lt_publisher - puts @ck.tp[:contributor].length.to_s + ' checklength ' + @ck.tp[:contributor] if @ck.tp[:contributor] and @ck.tp[:contributor].length >@ck.lt_contributor - puts @ck.tp[:date].length.to_s + ' checklength ' + @ck.tp[:date] if @ck.tp[:date] and @ck.tp[:date].length >@ck.lt_date - puts @ck.tp[:date_created].length.to_s + ' checklength ' + @ck.tp[:date_created] if @ck.tp[:date_created] and @ck.tp[:date_created].length >@ck.lt_date - puts @ck.tp[:date_issued].length.to_s + ' checklength ' + @ck.tp[:date_issued] if @ck.tp[:date_issued] and @ck.tp[:date_issued].length >@ck.lt_date - puts @ck.tp[:date_valid].length.to_s + ' checklength ' + @ck.tp[:date_valid] if @ck.tp[:date_valid] and @ck.tp[:date_valid].length >@ck.lt_date - puts @ck.tp[:date_available].length.to_s + ' checklength ' + @ck.tp[:date_available] if @ck.tp[:date_available] and @ck.tp[:date_available].length >@ck.lt_date - puts @ck.tp[:date_modified].length.to_s + ' checklength ' + @ck.tp[:date_modified] if @ck.tp[:date_modified] and @ck.tp[:date_modified].length >@ck.lt_date - puts @ck.tp[:date_translated].length.to_s + ' checklength ' + @ck.tp[:date_translated] if @ck.tp[:date_translated] and @ck.tp[:date_translated].length >@ck.lt_date - puts @ck.tp[:date_added_to_site].length.to_s + ' checklength ' + @ck.tp[:date_added_to_site] if @ck.tp[:date_added_to_site] and @ck.tp[:date_added_to_site].length >@ck.lt_date - puts @ck.tp[:type].length.to_s + ' checklength ' + @ck.tp[:type] if @ck.tp[:type] and @ck.tp[:type].length >@ck.lt_type - puts @ck.tp[:format].length.to_s + ' checklength ' + @ck.tp[:format] if @ck.tp[:format] and @ck.tp[:format].length >@ck.lt_format - puts @ck.tp[:identifier].length.to_s + ' checklength ' + @ck.tp[:identifier] if @ck.tp[:identifier] and @ck.tp[:identifier].length >@ck.lt_identifier - puts @ck.tp[:source].length.to_s + ' checklength ' + @ck.tp[:source] if @ck.tp[:source] and @ck.tp[:source].length >@ck.lt_source - puts @ck.tp[:language].length.to_s + ' checklength ' + @ck.tp[:language] if @ck.tp[:language] and @ck.tp[:language].length >@ck.lt_language - puts @ck.tp[:language_original].length.to_s + ' checklength ' + @ck.tp[:language_original] if @ck.tp[:language_original] and @ck.tp[:language_original].length >@ck.lt_language_original - #puts @ck.tp[:language_char].length.to_s + ' checklength ' + @ck.tp[:language_char] if @ck.tp[:language_char] and @ck.tp[:language_char].length >@ck.lt_language_char - #puts @ck.tp[:language_original_char].length.to_s + ' checklength ' + @ck.tp[:language_original_char] if @ck.tp[:language_original_char] and @ck.tp[:language_original_char].length >@ck.lt_language_original_char - puts @ck.tp[:relation].length.to_s + ' checklength ' + @ck.tp[:relation] if @ck.tp[:relation] and @ck.tp[:relation].length >@ck.lt_relation - puts @ck.tp[:coverage].length.to_s + ' checklength ' + @ck.tp[:coverage] if @ck.tp[:coverage] and @ck.tp[:coverage].length >@ck.lt_coverage - puts @ck.tp[:rights].length.to_s + ' checklength ' + @ck.tp[:rights] if @ck.tp[:rights] and @ck.tp[:rights].length >@ck.lt_rights - puts @ck.tp[:copyright].length.to_s + ' checklength ' + @ck.tp[:copyright] if @ck.tp[:copyright] and @ck.tp[:copyright].length >@ck.lt_copyright - puts @ck.tp[:owner].length.to_s + ' checklength ' + @ck.tp[:owner] if @ck.tp[:owner] and @ck.tp[:owner].length >@ck.lt_owner - puts @ck.tp[:keywords].length.to_s + ' checklength ' + @ck.tp[:keywords] if @ck.tp[:keywords] and @ck.tp[:keywords].length >@ck.lt_keywords - puts @ck.tp[:abstract].length.to_s + ' checklength ' + @ck.tp[:abstract] if @ck.tp[:abstract] and @ck.tp[:abstract].length >@ck.lt_abstract - puts @ck.tp[:comment].length.to_s + ' checklength ' + @ck.tp[:comment] if @ck.tp[:comment] and @ck.tp[:comment].length >@ck.lt_comment - puts @ck.tp[:loc].length.to_s + ' checklength ' + @ck.tp[:loc] if @ck.tp[:loc] and @ck.tp[:loc].length >@ck.lt_loc - puts @ck.tp[:dewey].length.to_s + ' checklength ' + @ck.tp[:dewey] if @ck.tp[:dewey] and @ck.tp[:dewey].length >@ck.lt_dewey - puts @ck.tp[:isbn].length.to_s + ' checklength ' + @ck.tp[:isbn] if @ck.tp[:isbn] and @ck.tp[:isbn].length >@ck.lt_isbn - puts @ck.tp[:pg].length.to_s + ' checklength ' + @ck.tp[:pg] if @ck.tp[:pg] and @ck.tp[:pg].length >@ck.lt_pg - puts @ck.tp[:topic_register].length.to_s + ' checklength ' + @ck.tp[:topic_register] if @ck.tp[:topic_register] and @ck.tp[:topci_register].length >@ck.lt_topic_register - puts @ck.tp[:date] if @ck.tp[:date] and not @ck.tp[:date].empty? and @ck.tp[:date] !~/\d\d-\d\d-\d\d/ - end - end - end -end -__END__ diff --git a/lib/sisu/v0/dbi.rb b/lib/sisu/v0/dbi.rb deleted file mode 100644 index 644b150d..00000000 --- a/lib/sisu/v0/dbi.rb +++ /dev/null @@ -1,149 +0,0 @@ -# coding: utf-8 -=begin - - * Name: SiSU - - * Description: a framework for document structuring, publishing and search - - * Author: Ralph Amissah - - * Copyright: (C) 1997 - 2009 Ralph Amissah All Rights Reserved. - - * License: GPL 3 or later: - - SiSU, a framework for document structuring, publishing and search - - Copyright (C) Ralph Amissah - - This program is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by the Free - Software Foundation, either version 3 of the License, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - more details. - - You should have received a copy of the GNU General Public License along with - this program. If not, see . - - If you have Internet connection, the latest version of the GPL should be - available at these locations: - - - - - - - - * SiSU uses: - * Standard SiSU markup syntax, - * Standard SiSU meta-markup syntax, and the - * Standard SiSU object citation numbering and system - - * Hompages: - - - - * Download: - - - * Ralph Amissah - - - - ** Description: postgresql module, dbi import frame - -=end -module SiSU_DBI #% database building - require "#{SiSU_lib}/help" - require "#{SiSU_lib}/sysenv" - include SiSU_Env - include SiSU_Screen - require "#{SiSU_lib}/param" - include SiSU_Param - require "#{SiSU_lib}/db_dbi" # db_dbi.rb - include SiSU_DB_DBI - require "#{SiSU_lib}/shared_html_lite" - include SiSU_Format_Shared - class SiSU_SQL - def initialize(opt) - SiSU_Env::Load.new('dbi',true).prog - @opt=opt - @db=SiSU_Env::Info_db.new - if @opt.cmd =~/d/i \ - or @opt.mod.inspect =~/--(pg(?:sql)?|(?:sq)?lite)/ - @sql_type=if @opt.cmd=~/D/ \ - or @opt.mod.inspect =~/--pg(?:sql)?/ - maintenance_check(@opt,__FILE__,__LINE__) if @opt.cmd.inspect =~/M/ - 'pg' - elsif @opt.cmd =~/d/ \ - and @opt.mod.inspect =~/--(?:db[=-])?pg(?:sql)?/ - maintenance_check(@opt,__FILE__,__LINE__) if @opt.cmd.inspect =~/M/ - 'pg' - elsif @opt.cmd=~/d/ \ - or @opt.mod.inspect =~/--(?:sq)?lite/ - maintenance_check(@opt,__FILE__,__LINE__) if @opt.cmd.inspect =~/M/ - 'sqlite' - elsif @opt.cmd =~/d/ \ - and @opt.mod.inspect =~/--(?:db[=-])?(?:sq)?lite/ - maintenance_check(@opt,__FILE__,__LINE__) if @opt.cmd.inspect =~/M/ - 'sqlite' - #elsif @opt.cmd =~/d/ and @opt.mod.select =~/--my(?:sql)?/; 'mysql' - else - maintenance_check(@opt,__FILE__,__LINE__) if @opt.cmd.inspect =~/M/ - 'sqlite' - end - end - end - def maintenance_check(opt,file,line) - p opt.mod - p opt.cmd - p "at #{file} #{line}" - end - def read_psql - begin - @conn=@db.psql.conn_dbi - rescue - if @opt.mod.inspect=~/--(createall|create)/ - puts %{manually create the database: "#{db}" if it does not yet exist} - #sudo su -p postgres; createdb #{db}; #[createuser?] - end - SiSU_DB_DBI::Case.new(@opt,@conn,@sql_type).cases - @conn=DBI.connect(dbi,user,db) - ensure - end - end - def read_sqlite - begin - sql_type='sqlite' - @conn=@db.sqlite.conn_sqlite3 - #@conn=@db.sqlite.conn_dbi #issue with dbi sqlite api, when fixed revert to using, KEEP - rescue - ensure - end - end - def connect - case @sql_type - when /pg/; read_psql - when /sqlite/; read_sqlite - end - tell=SiSU_Screen::Ansi.new(@opt.cmd,"DBI (#@sql_type) #{@opt.mod}") - tell.dbi_title unless @opt.cmd =~/q/ - begin - SiSU_DB_DBI::Case.new(@opt,@conn,@sql_type).cases - rescue - SiSU_Errors::Info_error.new($!,$@,@cf,@opt.fns).error - ensure - end - begin - #@conn.disconnect if @sql_type =~/sqlite/ and @opt.mod.inspect !~/^--(?:re)?create/ - #@conn.disconnect if @sql_type =~/sqlite/ - rescue - connect - end - end - end -end -__END__ diff --git a/lib/sisu/v0/defaults.rb b/lib/sisu/v0/defaults.rb deleted file mode 100644 index fe2a61e8..00000000 --- a/lib/sisu/v0/defaults.rb +++ /dev/null @@ -1,2225 +0,0 @@ -# coding: utf-8 -=begin - - * Name: SiSU - - * Description: a framework for document structuring, publishing and search - - * Author: Ralph Amissah - - * Copyright: (C) 1997 - 2009 Ralph Amissah All Rights Reserved. - - * License: GPL 3 or later: - - SiSU, a framework for document structuring, publishing and search - - Copyright (C) Ralph Amissah - - This program is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by the Free - Software Foundation, either version 3 of the License, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - more details. - - You should have received a copy of the GNU General Public License along with - this program. If not, see . - - If you have Internet connection, the latest version of the GPL should be - available at these locations: - - - - - - - - * SiSU uses: - * Standard SiSU markup syntax, - * Standard SiSU meta-markup syntax, and the - * Standard SiSU object citation numbering and system - - * Hompages: - - - - * Download: - - - * Ralph Amissah - - - - ** Description: Default values (reset by skins) - -=end -$latex_run=nil -module SiSU_Viz - require 'uri' - require "#{SiSU_lib}/sysenv" - include SiSU_Env - require "#{SiSU_lib}/css" - include SiSU_Style - class Skin - #attr_accessor :glyph,:html,:php,:javascript,:path,:text,:url,:color,:icon,:font,:markup,:paragraph,:table,:table_do,:indent,:margin,:png,:nav_txt,:nav_png,:banner,:widget - def initialize - #@css=SiSU_Env::CSS_default.new - @fonts='verdana, arial, georgia, tahoma, sans-serif, helvetica, times, roman' # 'verdana, arial, georgia, tahoma, sans-serif, helvetica, "times new roman", times, roman' - @dir=SiSU_Env::Info_env.new - @date=SiSU_Env::Info_date.new #{@date.year} - @v=SiSU_Env::Info_version.instance.get_version - end - #% glyph - def glyph_bullet # • - '• ' # [• flagged] - end - #% html - def html_hardspace - ' ' - end - #% php - def php_persist - end - #% javascript #kxjs knxjs - def js_home - end - def js_infobox - end - def js_knxjs - end - def js_head - end - def js_top - end - def js_sisu - end - def js_home - end - def js_sponsor - end - def js_books - end - def js_journals - end - def js_conferences - end - def js_services - end - def js_catalogue - end - def js_doc - end - def js_toc - end - def js_seg - end - def js_mail - end - def js_manifest - end - def js_status - end - def js_next - end - def js_prev - end - def js_portrait - end - def js_landscape - end - def js_pdf - end - def js_odf - end - def js_concordance - end - def js_instruments - end - def js_external - end - def js_gopher - end - def js_ftp - end - def js_law - end - def js_disclaimer - end - def js_old - end - def semantic_tags - def default - #:f => 'firstname', - #:m => 'middlename', - #:l => 'lastname', - #:ed => 'editor', #editor? - #:v => 'version', #edition - { - :pub => 'publication', - :conv => 'convention', - :vol => 'volume', - :pg => 'page', - :cty => 'city', - :org => 'organization', - :uni => 'university', - :dept => 'department', - :fac => 'faculty', - :inst => 'institute', - :co => 'company', - :com => 'company', - :conv => 'convention', - :dt => 'date', - :y => 'year', - :m => 'month', - :d => 'day', - :ti => 'title', - :au => 'author', - :ed => 'editor', #editor? - :v => 'version', #edition - :n => 'name', - :fn => 'firstname', - :mn => 'middlename', - :ln => 'lastname', - :in => 'initials', - :qt => 'quote', - :ct => 'cite', - :ref => 'reference', - :ab => 'abreviation', - :def => 'define', - :desc => 'description', - :trans => 'translate', - } - end - self - end - #% decorate - def decorate_italics - 'title|article|book|journal' - end - def decorate_bold - end - def decorate_uppercase - 'surname' - end - #% semantic - def sem_title #dc 1 - 'title' - end - def sem_article - 'article' - end - def sem_book - 'book' - end - def sem_journal - 'journal' - end - def sem_fullname # (contains: firstname, surname) #issues arise as contains surname etc. - 'fullname' - end - def sem_first - 'first' - end - def sem_surname - 'surname' - end - def sem_middle - 'middle' - end - def sem_creator #dc 2 # == fullname (contains: firstname, surname) - 'creator' - end - def sem_author # == fullname (contains: firstname, surname) - 'author' - end - def sem_editor # == fullname (contains: firstname, surname) - 'editor' - end - def sem_illustrator # == fullname (contains: firstname, surname) - 'illustrator' - end - def sem_translator # == fullname (contains: firstname, surname) - 'translator' - end - def sem_isbn # 10 or 13 - 'isbn' - end - def sem_isbn_10 - 'isbn10' - end - def sem_isbn_13 - 'isbn13' - end - def sem_loc # library of congress - 'loc' - end - def sem_dewey - 'dewey' - end - def sem_pg # project gutenberg number - 'pg' - end - def sem_subject #dc 3 - 'subject' - end - def sem_date #dc 7 - 'date' - end - def sem_date_created - 'date_created' - end - def sem_date_issued - 'date_issued' - end - def sem_date_available - 'date_available' - end - def sem_date_valid - 'date_valid' - end - def sem_date_modified - 'date_modified' - end - def sem_type #dc 8 - 'type' - end - def sem_description #dc 4 - 'description' - end - def sem_publisher #dc 5 - 'publisher' - end - def sem_contributor #dc 6 - 'contributor' - end - def sem_format #dc 9 - 'format' - end - def sem_identifier #dc 10 - 'identifier' - end - def sem_source #dc 11 - 'source' - end - def sem_language #dc 12 - 'language' - end - def sem_relation #dc 13 - 'source' - end - def sem_coverage #dc 14 - 'coverage' - end - def sem_rights #dc 15 - 'rights' - end - def sem_copyright - 'copyright' - end - def sem_license - 'license' - end - def sem_prepared_by - 'prepared_by' - end - def sem_digitized_by - 'digitized_by' - end - def sem_keywords - 'keywords' - end - def sem_comments - 'comments' - end - def sem_abstract - 'abstract' - end - #% path - def path_stylesheet_home - %{ } - end - #% text #changed from txt to avoid naming conflicts #FOLLOW - def txt_generator - %{ - } - end - def txt_generator_comment - %{ } - end - def txt_hp - ' SiSU' - end - def txt_hp_alias - 'SiSU' - end - def txt_home - 'SiSU' - end - def txt_signature # used in latex/pdf footer - 'SiSU' - end - #% url - def url_urify(uri) - URI.parse(uri) - end - def url_sisu - 'http://www.jus.uio.no/sisu' - end - def url_sisudoc - 'http://www.sisudoc.org' - end - def url_root - '/sisu' #watch - end - def url_root_http - 'http://www.jus.uio.no/sisu' #watch - end - def url_home - 'http://www.jus.uio.no/sisu' # used in pdf header - end - def url_site #used as stub... where there are subdirectories and is different from home - url_home - #'http://www.jus.uio.no/sisu' # used in pdf header - end - def url_txt - 'www.jus.uio.no/sisu' - end - def url_path_image_base #used for html image display - '../_sisu/image' - end - def url_path_image #used for html image display - '../_sisu/image' - end - def url_path_image_sys #used for html image display - '../_sisu/image_sys' - end - def url_path_ebook_dir - './ebook' - end - def url_path_ebook_images - '.' - end - def url_promo - '' - end - def url_promo_home - '' - end - def url_decoration - def tex_open - '{\UseTextSymbol{OML}{<}}' - end - def tex_close - '{\UseTextSymbol{OML}{>}}' - end - def xml_open - '<' - end - def xml_close - '>' - end - def txt_open - '<' - end - def txt_close - '>' - end - self - end - #% color - def color_shadow - '"4"' - end - def color_body - %{} - end - def color_white - '"#ffffff"' - end - def color_black - '#000000' - end - def color_shadow #hmmm - '"4"' - end - def color_blue_dark - '#000099' - end - def color_blue - 'blue' - end - def color_blue_base - '#b9d4dd' - #'#eff6ff' #light - #'#c0d9d9' #light - #'#0044cc' #pale - #'#c0d9d9' #sky - end - def color_blue_ink - '#003399' - end - def color_blue_tinge - '#e3ecef' - #'#d7dddd' - #'#f2f5f7' - end - def color_blue_grey - '#8faebf' - end - def color_blue_murky - '#437389' - end - #def color_brown - # '#423a27' - #end - def color_beige - '#f1e8de' - #'#fff3b6'#custard - end - def color_subtleglow - '#dddccc' - end - def color_glow - '#fff0c3' - end - def color_rose - '#ffdec9' - end - def color_turquoise - '#1c869b' - end - def color_grey_pale - '#eeeeee' - # '#dddddd' #light - end - def color_grey_medium - '#cccccc' - end - def color_grey - '#999999' - end - def color_yellow_light - '#fff3b6' - end - def color_yellow - '#ffde14' - end - def color_yellow_dark - '#ffcc00' - end - def color_green_light - '#b7d398' # #e2efd5 #b7d398 #b1c999 # '#aed19e' - end - def color_green - '#0a8400' - end - def color_green_dark - '#086800' - end - def color_ruby - '#a00000' - end - def color_maroon - '#800000' - end - def color_paper - %{"#{color_white}"} - end - def color_band1 - %{"#{color_white}"} - #'"#777777"' - end - def color_band2 - %{"#{color_white}"} - #'"#cccccc"' - end - def color_body - %{\n\n} - end - def color_font_face #was font WATCH - "#{color_black}" - end - def color_surround - %{"#{color_white}"} - end - def color_band - %{"#{color_white}"} - end - def color_table1 - 'ffffcc' - end - def color_table2 - 'c0d0f0' - end - def color_band1 - '"#ffffff"' - end - def color_band2 - '"#ffffff"' - end - #% icon - def icon_ico - 'rb7.ico' - end - def icon_sisu - 'sisu.png' - end - def icon_manifest - 'b_info.png' - end - def icon_doc - 'b_doc.png' - end - def icon_toc - 'b_toc.png' - end - def icon_wmp - 'b_wmp.png' - end - def icon_odf - 'b_odf.png' - end - def icon_pdf - 'b_pdf.png' - end - def icon_pdf_portrait - 'b_pdf.png' - end - def icon_pdf_landscape - 'b_pdf.png' - end - def icon_status - 'b_status.png' - end - def icon_external - 'b_ext.png' - end - def icon_external_toc - 'b_ext_toc.png' - end - def icon_seg_toc - 'b_bluebell.png' - end - def icon_crosslink_toc - 'b_amber.png' - end - def icon_mail - 'b_mail.png' - end - def icon_para - 'b_para.png' - end - def icon_pdf - 'b_pdf.png' - end - def icon_ftp - 'b_ftp.png' - end - def icon_gopher - 'b_gopher.png' - end - def icon_choice - 'b_choice.png' - end - def icon_new - 'b_new.png' - end - def icon_book - 'b_amber.png' - # b_book.png - end - def icon_dot_clear - 'dot_clear.png' - end - def icon_dot_white - 'dot_white.png' - end - def icon_dot - icon_dot_white - end - def icon_amber - 'b_amber.png' - end - def icon_rose - 'b_rose.png' - end - def icon_bluebell - 'b_bluebell.png' - end - def icon_home_button - 'sisu.png' - end - def icon_home_banner - 'sisu.png' - end - def icon_site - 'b_home.png' - end - def icon_bluedot - 'blueband.png' - end - def icon_next - 'arrow_next_red.png' - end - def icon_previous - 'arrow_prev_red.png' - end - def icon_up - 'arrow_up_red.png' - end - #% font - def font_fonts - @fonts - end - def font_face - %{face="#{font_fonts}"} - end - def font_lmtoc_face - %{face="#{font_fonts}"} - end - def font_ebook_face - %{face="#{font_fonts}"} - end - def font_face_lmtoc - %{face="#{font_fonts}"} - end - def font_color - 'color="#000000"' - end - def font_size - 'size="4"' - end - def font_size_txt - 'size="4"' - end - def font_size_txt_00 - 'size="3"' - end - def font_size_endnote - 'size="3"' - end - def font_small - 'size="3"' - end - def font_tiny - 'size="2"' - end - #% markup - def markup_italics_list #regular expression of words to be italised - end - def markup_bold_list #regular expression of words to be made bold - 'SiSU' - end - def markup_make_italic - if defined? italics_list \ - and italics_list - #make=italics_list.split(/;\s+/).join('|').strip - make={} - if italics_list - r=italics_list.dup - x=case r - when /\/i$/; 'i' - else '' - end - r.gsub!(/^\/(.+?)\/i?/,'\1') - r.gsub!(/\(/,'(?:') # avoid need to escape use of brackets within regex provided - m='\b(' + r + ')\b' - make[:str] - make[:regx]=if x =~/i/; /#{m}/i - else /#{m}/ - end - else nil - end - end - end - def markup_make_bold - if defined? bold_list \ - and not bold_list.empty? - make={} - if bold_list - #make=bold_list.split(/;\s+/).join('|').strip - r=bold_list.dup - x=case r - when /\/i$/; 'i' - else '' - end - r.gsub!(/^\/(.+?)\/i?/,'\1') - r.gsub!(/\(/,'(?:') # avoid need to escape use of brackets within regex provided - m='\b(' + r + ')\b' - make[:str] - make[:regx]=if x =~/i/; /#{m}/i - else /#{m}/ - end - else nil - end - make - end - end - #% paragraph - def paragraph_txt - %{

} - end - def paragraph_txt_00 - %{

} - end - def paragraph_font_citation - %{} - end - def paragraph_endnote - %{

} - end - def paragraph_table - %{

} - end - def paragraph_table_xml - end - def paragraph_tiny - %{

} - end - def paragraph_small - %{

} # keep but not used? - end - def paragraph_font_tiny - %{} - end - def paragraph_font_small - %{} - end - def paragraph_heading_1 - %{

} - end - def paragraph_heading_1_center - %{

} - end - #% table - def table_close - ' -' - end - def table_close_centered_table - end - def table_align_A - end - def table_align_B - end - def table_align_C - end - def table_width_1 - '"100%"' - end - def table_width_2 - '"99%"' - end - def table_width_3 - '"94%"' - end - def table_width_4 - '"90%"' - end - def table_width_txt - '"94%"' - end - def table_width_txt_avgo - '"100%"' - end - def table_width_txt_r - '"96%"' - end - def table_cellpad_small_paper_margins - '"6"' - end - def table_cellpad_paper_margins - '"36"' - end - def table_cellpad_A - '"0"' - end - def table_cellpad_B - '"20"' - end - def table_cellpad_shadow - '"4"' - end - def table_cellpad_band - '"16"' - end - def table_cellpad_box - '"20"' - end - def table_table_align_A - '
' - end - def table_table_align_B - '
' - end - def table_table_align_C - ' ' - end - #% table_do - def table_do_table_paper - %{#{table_align_C}
\n

\n} - end - def table_do_table_surround - %{ - -
\n} - end - #% indent - def indent_level_0 - '"1%"' - end - def indent_level_1 - '"4%"' - end - def indent_level_2 - '"6%"' - end - def indent_level_3 - '"8%"' - end - def indent_level_4 - '"10%"' - end - #% margin - def margin_num - '

' - end - def margin_numless - '' - end - def margin_num_css - ' ' - end - def margin_num_header - '' - end - def margin_txt_00_1 - %{ - -
-} - end - def margin_txt_w1 - %{ - -
 } - end - def margin_txt_w2 - %{ - -
 } - end - def margin_txt_0 - %{ -
-} - end - def margin_txt_1 - %{ -
} - end - def margin_txt_2 - %{ - -
-} - end - def margin_txt_3 - %{ - -
-} - end - def margin_css #unused, check - ' -
' - end - #% png - def png_ico - %{ } - end - def png_sisu #check url path - %{ - SiSU - } - end - def png_hp - dir=SiSU_Env::Info_env.new #(@fns) - %{ - #{txt_home} - } - end - def png_site - #dir=SiSU_Env::Info_env.new #(@fns) - %{@} - end - def png_homepage - png_site - end - def png_nav - %{Contents} - end - def png_manifest - %{Document Manifest} - end - def png_doc - %{Full Text} - end - def png_toc - %{TOC linked} - end - def png_odf - %{ODF/ODT} - end - def png_pdf - %{PDF} - end - def png_pdf_portrait - %{PDF portrait} - end - def png_pdf_landscape - %{PDF landscape} - end - def png_wmp - %{Concordance} - end - def png_para - %{Segment} - end - def png_status - %{Membership status} - end - def png_mark - %{*} - end - def png_doc_tiny - %{Doc} - end - def png_toc_tiny - %{TOC} - end - def png_status_tiny - %{Status, Member States} - end - def png_ftp - %{FTP} - end - def png_gopher - %{Gopher} - end - def png_crosslink - %{lateral hop} - end - def png_crosslink_ext - %{lateral hop} - end - def png_home - dir=SiSU_Env::Info_env.new #(@fns) - %{#{txt_home} -->} - end - def png_home_button - #dir=SiSU_Env::Info_env.new #(@fns) - %{#{txt_home} -->} - end - def png_book - %{Cameron May Books} - end - #% png_nav - def png_nav_home - end - def png_nav_toc - %{TOC} - end - def png_nav_doc - end - def png_nav_previous - %{<< previous} - end - def png_nav_next - %{next >>} - end - def png_nav_pre - png_nav_previous - end - def png_nav_nxt - png_nav_next - end - def png_nav_pdf - %{PDF} - end - def png_nav_pdf_portrait - %{pdf portrait} - end - def png_nav_pdf_landscape - %{pdf landscape} - end - def png_nav_dot_toc - %{^} - end - def png_nav_dot_previous - %{<} - end - def png_nav_dot_next - %{>} - end - def png_nav_dot_pre - png_nav_dot_previous - end - def png_nav_dot_nxt - png_nav_dot_next - end - #% nav_txt - def nav_txt_home - %{ - #{png_site}  - } - end - def nav_txt_home_button - %{ - #{png_home_button}  - } - end - def nav_txt_homepage - %{ - #{png_site} homepage  - } - end - def nav_txt_toc_link - %{ - #{png_toc}  toc  - } - end - def nav_txt_toc_link_verbose - %{ - #{png_toc}  segments' toc  - } - end - def nav_txt_doc_link - %{ - #{png_doc}  scroll  - } - end - def nav_txt_manifest - %{ - #{png_manifest}  - } - end - def nav_txt_concordance - %{ -   A-Z  - } - end - def nav_txt_previous - ' -   << Previous   - - Full Text ' - end - def nav_txt_next - %{ -   Next     >>   - } - end - def nav_txt_odf - %{ - #{png_odf}  odt  - } - end - def nav_txt_pdfs - %{ - pdfs   - } - end - def nav_txt_pdf_portrait - %{ - #{png_pdf_portrait} -   pdf  - } - end - def nav_txt_pdf_landscape - %{ - #{png_pdf_landscape} -   pdf  - } - end - #% banner - def banner_home - %{
- - #{png_site} - -
- - an -
- ( international | transnational ) -
- commercial law & e-commerce -
- infrastructure monitor
} - end - def banner_home_guide - %{
- - #{png_doc} LM toc - - - #{png_doc} LM 20** - -
} - end - def banner_home_button_only - %{ - #{png_home_button} - } - end - def banner_home_button #yellow_dark now white - %{ - -
- - #{png_home_button} - - -#{table_close}} - end - def banner_home_and_index_buttons #yellow_dark now white - %{ - - -
- - -
- - #{png_home} - -
-
- - -
- - -  This text's sub-  -
-  Table of Contents  -
-
-
-
-   -#{table_close}} - end - def banner_url_txt_sisu - %{SiSU} - end - def banner_band #yellow_dark now white - %{ - -
- - #{png_home} - - -#{table_close}} - end - def banner_credit_band - %{ -
- -
- -
} - end - def banner_instrument_cover_band_scr - ' -
' - end - def banner_instrument_cover_band_seg - ' -
' - end - #% widget - def widget_promo # Array used to build promo from list.yml and promo.yml - # ['sisu_icon','sisu','sisu_search_libre','open_society','fsf','ruby'] - end - def widget_browsers -< - -
-

- - If you have problems viewing pages on this site please update your browser: - -

-#{table_close} - - - - - - - - - -
-

- - -  Epiphany - - ® | - -

-
-

- - -  Galeon - - ® | - -

-
-

- - - I-Explorer - - ® | - -

-
-

- - - Kazehakase - ® |

- -

- - - Konqueror - ® |

-

- - - Mozilla - - - Firefox - - ® | - -

-
-

- - - Netscape - - ® | - -

-
-

- - - Opera - - ® | - -

-
-

- - - Safari - - ® - -

-#{table_close} - - - - - - - - - - -WOK - end - def widgets_open -< -WOK - end - def widget_pdfviewers -< - - - - -WOK - end - def widget_sisu -< - -WOK - end - def widget_way_better - < - -WOK - end - def widget_wayBetter - widget_way_better - end - #% credits - def credits_itl_cover_band - %{
-

- - for console/text viewing: - -

-
-

- - - elinks -  | - -

-
-

- - - links2 -  | - -

-
-

- - - w3m - - -

-
-

- - for lightweight gui (X) viewing try: - -

-
-

- - - Dillo - -  | - -

-
-

- - -  Epiphany - - ® | - -

-
-

- - -  Galeon -  | - -

-
-

- - - links2 -g - - -

-#{table_close} -
- -
-

- - & for - - pdf - - viewings of this site we recommend stand alone viewers -
- (rather than web browser plugins): -
-

-
-

- - - Acrobat Reader - - ® -  | - -

-
-

- - - Evince - - ® - -

-
-

- -  GhostView® , - - GV® - - & - - GSview® - -  | - -

-
-

- - -  Xpdf - - ® - -

-
-

- - SiSU - -

-
- -

- Output generated by - - #{@v[:project]} - - #{@v[:version]} #{@v[:date]} (#{@v[:date_stamp]}) -
- - #{@v[:project]} - - Copyright © Ralph Amissah - 1997, current #{@date.year_static}. - All Rights Reserved. -
- - #{@v[:project]} - - is software for document structuring, publishing and search, -
- - www.jus.uio.no/sisu - - and - - www.sisudoc.org - -
- w3 since October 3 1993 - - ralph@amissah.com - -

-
-

- #{@v[:project]} using: -
Standard SiSU markup syntax, -
Standard SiSU meta-markup syntax, and the -
Standard SiSU object citation numbering and system, (object/text positioning system) -
- Copyright © Ralph Amissah 1997, current #{@date.year_static}. - All Rights Reserved. -

-
-

- - GPLv3 - -

-
-

- - #{@v[:project]} - - is released under - GPLv3 - or later, - #{url_decoration.xml_open}http://www.gnu.org/licenses/gpl.html#{url_decoration.xml_close} -

-
-

- #{@v[:project]}, developed using - - Ruby - - on - - Debian/Gnu/Linux - - software infrastructure, - with the usual GPL (or OSS) suspects. -
- Better - "performance, reliability, scalability, security & total cost of ownership" - [not to mention flexibility & choice] use of and adherence to open standards (where practical and fair) and it is software libré. -
- Get With the Future - - Way Better! - -

-
-
- -
- -
- - -
- -
- \@ -
- #{txt_home} -
- #{banner_url_txt_sisu} -
-
-#{table_close*4}} - end - def credits_sisu - %{
- -
- #{widget_sisu} - #{widget_way_better} -
} - end - def credits_splash - end - #% bottom - def bottom_surround - %{
#{table_close} -
- -
-#{table_close} - - #{banner_band} -#{table_close} - -
- - - -} - end - def scroll(text) - if @md.fns =~ /\.(?:-|ssm\.)?sst$/ - scroll=%{ -} - end - end - def seg(text) - %{ -} - end - def search - env=SiSU_Env::Info_env.new(@md.fns,@md) - env.widget.search_form('sisusearch',nil,nil,true) - end - def manifest - %{} - end - def pdf - pdf=if @md.programs[:pdf] \ - and @cf_defaults.cf_0 =~/p/ - %{ - - -} - else '' - end - end - def odf - odf=if @cf_defaults.cf_0 =~/o/ - %{ -} - else '' - end - end - def concordance(text) - if @md.concord_make \ - and @md.wc_words < 300000 #max word count for display of concordance here as would now be a large file - %{} - else '' - end - end - end - class XML - end - class Head_toc < Head_information - def initialize(md) - super(md) - @md=md - @tocband_scroll,@tocband_segtoc=make_scroll,make_seg - end - def scroll_head_navigation_band - pdf=if @md.programs[:pdf] - < - #{make_seg_scroll_pdf} - -WOK - else '' - end - %{
- #{table_close} - - #{credits_splash} -#{table_close} - -} - end - end - class Home < Skin - def initialize - @v=SiSU_Env::Info_version.instance.get_version - @dir=SiSU_Env::Info_env.new - @date=SiSU_Env::Info_date.new #{@date.year} - end - def redirect - < -SiSU - - - -SiSU informtion provided at www.jus.uio.no/sisu/SiSU

-If your browser supports redirection, you will be escorted there shortly. - - -WOK - end - def homepage - < - - -SiSU information Structuring Universe - Structured -information, Serialized Units - software for electronic texts, -documents, books, digital libraries in plaintext, html, XHTML, XML, -ODF (OpenDocument), LaTeX, PDF, SQL (PostgreSQL and SQLite), and -for search - - - - - - - - - - - - - -

-

- - SiSU >> - -

-

- SiSU information Structuring Universe -

-

- Structured information, Serialized Units -

-

-software for electronic texts, document collections, books, digital libraries, and search, -

-

- with "atomic search" and text positioning system (shared text citation numbering: "ocn") -

-

-outputs include: plaintext, html, XHTML, XML, ODF (OpenDocument), LaTeX, PDF, SQL (PostgreSQL and SQLite) -

-
- -
-

- - SiSU - -

-

- --- -

-

- - SiSU Manual - -

-

- --- -

-

- - What does SiSU do? Summary - -

-

- --- -

-

- - Book Samples and Markup Examples - -

-

- --- -

-

- - Object Citation Numbering - ocn - -

-

(a text positioning system)

-

- --- -

-

- - Search - "granular" - -

- Of interest is the ease of streaming documents to a relational database, at an object (roughly paragraph) level and the potential for increased precision in the presentation of matches that results thereby. The ability to serialise html, LaTeX, XML, SQL, (whatever) is also inherent in / incidental to the design. For a description see the - - abandoned U.S. provisional patent application - -

-

- --- -

-

- - Download - -

-

- --- -

-

- - Changelog - -

-

- --- -

-

- - License - -

-

- Gnu / Linux / Unix -

-

- ============= -

-

- - sisu man pages - -

-

- --- -

-

- document preparation can be on any platform, in any editor: - (syntax highlight support currently for: vim, kate, write, gedit, diakonos) -

-

- - Syntax highlighting - -

-

- ============= -

-

- - * Composite document - -

-

- the composite document is a superset of the following documents: -

-

- - SiSU description - -

-

- - SiSU examples - -

-

- - SiSU chronology - -

-

- - SiSU technical - -

-

- - SiSU FAQ - -

-

- - SiSU download - -

-

- - SiSU changelog - -

-

- - SiSU license - -

-

- - SiSU standard - -

-

- - SiSU abandoned provisional patent - -

-

- Note: the placement of SiSU documents on the Net predate the release of SiSU. -

-
-
-

- For less markup than the most elementary HTML you can have more. -

-

SiSU - Structured information, Serialized Units for electronic documents, is an information structuring, transforming, publishing and search framework with the following features:

-

-(i) markup syntax: -(a) -simpler than html, -(b) -mnemonic, influenced by mail/messaging/wiki markup practices, -(c) human readable, and easily writable,

-

(ii) -(a) -minimal markup requirement, -(b) -single file marked up for multiple outputs,

-

-notes -

-

-* -documents are prepared in a single UTF-8 file using a minimalistic mnemonic syntax. Typical literature, documents like "War and Peace" require almost no markup, and most of the headers are optional. -

-

-* -markup is easily readable/parsed by the human eye, (basic markup is simpler and more sparse than the most basic html), [this may also be converted to XML representations of the same input/source document]. -

-

-* -markup defines document structure (this may be done once in a header pattern-match description, or for heading levels individually); basic text attributes (bold, italics, underscore, strike-through etc.) as required; and semantic information related to the document (header information, extended beyond the Dublin core and easily further extended as required); the headers may also contain processing instructions. -

-

(iii) -(a) -multiple outputs primarily industry established and institutionally accepted open standard formats, include amongst others: plaintext (UTF-8); html; (structured) XML; ODF (Open Document text)l; LaTeX; PDF (via LaTeX); SQL type databases (currently PostgreSQL and SQLite). Also produces: concordance files; document content certificates (md5 or sha256 digests of headings, paragraphs, images etc.) and html manifests (and sitemaps of content). - -(b) - -takes advantage of the strengths implicit in these very different output types, (e.g. PDFs produced using typesetting of LaTeX, databases populated with documents at an individual object/paragraph level, making possible granular search (and related possibilities))

-

(iv) -outputs share a common numbering system (dubbed "object citation numbering" (ocn)) that is meaningful (to man and machine) across various digital outputs whether paper, screen, or database oriented, (PDF, html, XML, sqlite, postgresql), this numbering system can be used to reference content.

-

-(v) -SQL databases are populated at an object level (roughly headings, paragraphs, verse, tables) and become searchable with that degree of granularity, the output information provides the object/paragraph numbers which are relevant across all generated outputs; it is also possible to look at just the matching paragraphs of the documents in the database; [output indexing also work well with search indexing tools like hyperesteier].

-

-(vi) - use of semantic meta-tags in headers permit the addition of semantic information on documents, (the available fields are easily extended)

-

-(vii) -creates organised directory/file structure for (file-system) output, easily mapped with its clearly defined structure, with all text objects numbered, you know in advance where in each document output type, a bit of text will be found (e.g. from an SQL search, you know where to go to find the prepared html output or PDF etc.)... there is more; easy directory management and document associations, the document preparation (sub-)directory may be used to determine output (sub-)directory, the skin used, and the SQL database used,

-

-(viii) -"Concordance file" wordmap, consisting of all the words in a document and their (text/ object) locations within the text, (and the possibility of adding vocabularies),

-

-(ix) -document content certification and comparison considerations: -(a) -the document and each object within it stamped with an md5 hash making it possible to easily check or guarantee that the substantive content of a document is unchanged, -(b) -version control, documents integrated with time based source control system, default RCS or CVS with use of $Id$ tag, which SiSU checks -

-(x) -SiSU's minimalist markup makes for meaningful "diffing" of the substantive content of markup-files,

-

-(xi) -easily skinnable, document appearance on a project/site wide, directory wide, or document instance level easily controlled/changed,

-

-(xii) -in many cases a regular expression may be used (once in the document header) to define all or part of a documents structure obviating or reducing the need to provide structural markup within the document,

-

-(xiii) -prepared files may be batch process, documents produced are static files so this needs to be done only once but may be repeated for various reasons as desired (updated content, addition of new output formats, updated technology document presentations/representations)

-

-(xiv) -possible to pre-process, which permits: the easy creation of standard form documents, and templates/term-sheets, or; building of composite documents (master documents) from other sisu marked up documents, or marked up parts, i.e. import documents or parts of text into a main document should this be desired

-

-there is a considerable degree of future-proofing, output representations are "upgradeable", and new document formats may be added. -

-

-(xv) -there is a considerable degree of future-proofing, output representations are "upgradeable", and new document formats may be added: -(a) -modular, (thanks in no small part to Ruby) another output format required, write another module.... -(b) easy to update output formats (eg html, XHTML, LaTeX/PDF produced can be updated in program and run against whole document set), -(c) easy to add, modify, or have alternative syntax rules for input, should you need to,

-

-(xvi) -scalability, dependent on your file-system (ext3, Reiserfs, XFS, whatever) and on the relational database used (currently Postgresql and SQLite), and your hardware,

-

-(xvii) -only marked up files need be backed up, to secure the larger document set produced,

-

-(xviii) -document management,

-

-(xix) -Syntax highlighting for SiSU markup is available for a number of text editors.

-

(xx) remote operations: -(a) -run SiSU on a remote server, (having prepared sisu markup documents locally or on that server, i.e. this solution where sisu is installed on the remote server, would work whatever type of machine you chose to prepare your markup documents on), -(b) -generated document outputs may be posted by sisu to remote sites (using rsync/scp) -(c) -document source (plaintext utf-8) if shared on the net may be identified by its url and processed locally to produce the different document outputs.

-

-(xxi) -document source may be bundled together (automatically) with associated documents (multiple language versions or master document with inclusions) and images and sent as a zip file called a sisupod, if shared on the net these too may be processed locally to produce the desired document outputs, these may be downloaded, shared as email attachments, or processed by running sisu against them, either using a url or the filename. -

-

-(xxii) -for basic document generation, the only software dependency is Ruby, and a few standard Unix tools (this covers plaintext, html, XML, ODF, LaTeX). To use a database you of course need that, and to convert the LaTeX generated to PDF, a LaTeX processor like tetex or texlive. -

-

-as a developers tool it is flexible and extensible -

-
-

-More information on SiSU provided at www.jus.uio.no/sisu/SiSU

-
-
-

-SiSU ("SiSU information Structuring Universe" or "Structured information, Serialized Units"),1 is a Unix command line oriented framework for document structuring, publishing and search. Featuring minimalistic markup, multiple standard outputs, a common citation system, and granular search. -

-

- Using markup applied to a document, SiSU can produce plain text, HTML, XHTML, XML, OpenDocument, LaTeX or PDF files, and populate an SQL database with objects2 (equating generally to paragraph-sized chunks) so searches may be performed and matches returned with that degree of granularity (e.g. your search criteria is met by these documents and at these locations within each document). Document output formats share a common object numbering system for locating content. This is particularly suitable for "published" works (finalized texts as opposed to works that are frequently changed or updated) for which it provides a fixed means of reference of content. -

- -

-How it works -

-

-SiSU markup is fairly minimalistic, it consists of: a (largely optional) document header, made up of information about the document (such as when it was published, who authored it, and granting what rights) and any processing instructions; and markup within text which is related to document structure and typeface. SiSU must be able to discern the structure of a document, (text headings and their levels in relation to each other), either from information provided in the instruction header or from markup within the text (or from a combination of both). Processing is done against an abstraction of the document comprising of information on the document's structure and its objects,2 which the program serializes (providing the object numbers) and which are assigned hash sum values based on their content. This abstraction of information about document structure, objects, (and hash sums), provides considerable flexibility in representing documents different ways and for different purposes (e.g. search, document layout, publishing, content certification, concordance etc.), and makes it possible to take advantage of some of the strengths of established ways of representing documents, (or indeed to create new ones).

-

-1. also chosen for the meaning of the Finnish term "sisu". -

-

-2 objects include: headings, paragraphs, verse, tables, images, but not footnotes/endnotes which are numbered separately and tied to the object from which they are referenced.

-

- More information on SiSU provided at: - - www.jus.uio.no/sisu/SiSU - -

-SiSU was developed in relation to legal documents, and is strong across a wide variety of texts (law, literature...(humanities, law and part of the social sciences)). SiSU handles images but is not suitable for formulae/ statistics, or for technical writing at this time.

-

-SiSU has been developed and has been in use for several years. Requirements to cover a wide range of documents within its use domain have been explored.

-

- -ralph@amissah.com - -

-

- -ralph.amissah@gmail.com - -

-

-#{@date.year_static} -

-

-w3 since October 3 1993 -

-
- - -WOK - end - def home_toc - ' ' - end - end - class Inserts - end - class TeX < Skin - def initialize(papersize='') - @papersize=papersize - #@vz=SiSU_Env::Get_init.instance.skin #used within skins, however pulls in much that is not otherwise needed - end - def a4 - def portrait - def w - 160 - end - def h - 228 - end - def img_px - 450 - end - self - end - def landscape - def w - 238 - end - def h - 160 - end - def img_px - 348 - end - self - end - self - end - def letter - def portrait - def w - 166 - end - def h - 212 - end - def img_px - 468 - end - self - end - def landscape - def w - 226 - end - def h - 166 - end - def img_px - 310 - end - self - end - self - end - def legal - def portrait - def w - 168 - end - def h - 286 - end - def img_px - 474 - end - self - end - def landscape - def w - 296 - end - def h - 166 - end - def img_px - 420 - end - self - end - self - end - def b5 - def portrait - def w - 140 - end - def h - 204 - end - def img_px - 356 - end - self - end - def landscape - def w - 200 - end - def h - 130 - end - def img_px - 280 - end - self - end - self - end - def a5 - def portrait - def w - 112 - end - def h - 162 - end - def img_px - 280 - end - self - end - def landscape - def w - 152 - end - def h - 100 - end - def img_px - 230 - end - self - end - self - end - def dimensions - d=case @papersize - when /a4/; a4 - when /letter/; letter - when /legal/; legal - when /b5/; b5 - when /a5/; a5 - else a4 - end - end - end -end -__END__ diff --git a/lib/sisu/v0/digests.rb b/lib/sisu/v0/digests.rb deleted file mode 100644 index d4e5befc..00000000 --- a/lib/sisu/v0/digests.rb +++ /dev/null @@ -1,377 +0,0 @@ -# coding: utf-8 -=begin - - * Name: SiSU - - * Description: a framework for document structuring, publishing and search - - * Author: Ralph Amissah - - * Copyright: (C) 1997 - 2009 Ralph Amissah All Rights Reserved. - - * License: GPL 3 or later: - - SiSU, a framework for document structuring, publishing and search - - Copyright (C) Ralph Amissah - - This program is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by the Free - Software Foundation, either version 3 of the License, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - more details. - - You should have received a copy of the GNU General Public License along with - this program. If not, see . - - If you have Internet connection, the latest version of the GPL should be - available at these locations: - - - - - - - - * SiSU uses: - * Standard SiSU markup syntax, - * Standard SiSU meta-markup syntax, and the - * Standard SiSU object citation numbering and system - - * Hompages: - - - - * Download: - - - * Ralph Amissah - - - - ** Description: document digests (md5|sha256) and structure processing - -=end -module SiSU_Digest_view - require "#{SiSU_lib}/particulars" - require "#{SiSU_lib}/i18n" - pwd=Dir.pwd - class Source - @@dg=nil - def initialize(opt) - @opt=opt - @fnb=@opt.fnb - @@endnotes_para=[] - @@dg=nil - @dg=@@dg ||=SiSU_Env::Info_env.new.digest.type - @particulars=SiSU_Particulars::Combined_singleton.instance.get_all(opt) - end - def read - begin - @env,@md,@dal_array=@particulars.env,@particulars.md,@particulars.dal_array - tool=if @opt.cmd =~/[MVv]/; "#{@env.program.text_editor} #{@env.path.output_tell}/#{@md.fnb}/#{@md.fn[:digest]}" - else '' - end - tell=SiSU_Screen::Ansi.new(@opt.cmd,"Document #@dg Digests",tool) - tell.green_hi_blue unless @opt.cmd =~/q/ - tell=SiSU_Screen::Ansi.new(@opt.cmd,@opt.fns,"#{@env.path.output_tell}/#{@md.fnb}/#{@md.fn[:digest]}") - tell.flow if @opt.cmd =~/[MV]/ - my_make=SiSU_Env::Create_file.new(@opt.cmd,@opt.fns) - SiSU_Digest_view::Source::Scroll.new(@particulars).songsheet - SiSU_Env::Info_skin.new(@md).select - rescue; SiSU_Errors::Info_error.new($!,$@,@opt.cmd,@opt.fns).error - ensure - end - end - private - class Scroll \1') - para.gsub!(/#{Mx[:fa_italics_o]}(.+?)#{Mx[:fa_italics_c]}/,'\1') - para.gsub!(/#{Mx[:fa_underscore_o]}(.+?)#{Mx[:fa_underscore_c]}/,'\1') - if para=~/#{Mx[:en_a_o]}[\d*+]+.+?#{Mx[:id_o]}[0-9a-f]{#@dl}#{Mx[:id_c]}#{Mx[:en_a_c]}/ - para_endnotes << para.scan(/(?:#{Mx[:en_a_o]}|#{Mx[:en_b_o]})([\d*+]+).+?#{Mx[:id_o]}([0-9a-f]{#@dl})#{Mx[:id_c]}(?:#{Mx[:en_a_c]}|#{Mx[:en_b_c]})/) - end - ima=[] - if para !~/^%+\s/ \ - and para =~/(?:^|[^_\\])#{Mx[:lnk_o]}(\S+\.(png|jpg|gif))\s.+?#{Mx[:lnk_c]}(?:(?:https?|file|ftp):\/\/\S+|image)/ - images=para.scan(/(?:^|[^_\\])#{Mx[:lnk_o]}(\S+\.(?:png|jpg|gif))\s.+?#{Mx[:lnk_c]}(?:(?:https?|file|ftp):\/\/\S+|image)/).flatten - else image=nil - end - x=case para - when /^#{Mx[:meta_o]}title#{Mx[:meta_c]}/ - "\n" + ' '*0 +'@' + ' '*9 - when /^#{Mx[:meta_o]}subtitle#{Mx[:meta_c]}/ - "\n" + ' '*1 +'@' + ' '*8 - when /^#{Mx[:lv_o]}1:/ - "\n" + ' '*2 +':A ' + ' '*6 +'- ' + ocn + ' '*(10-ocn.length) + d_clean + ' ' + d_all - when /^#{Mx[:lv_o]}2:/ - "\n" + ' '*3 +':B ' + ' '*5 +'- ' + ocn + ' '*(10-ocn.length) + d_clean + ' ' + d_all - when /^#{Mx[:lv_o]}3:/ - "\n" + ' '*4 +':C ' + ' '*4 +'- ' + ocn + ' '*(10-ocn.length) + d_clean + ' ' + d_all - when /^#{Mx[:lv_o]}4:/ - "\n" + ' '*5 +'1' + ' '*4 +'- ' + ocn + ' '*(10-ocn.length) + d_clean + ' ' + d_all - when /^#{Mx[:lv_o]}5:/ - "\n" + ' '*6 +'2' + ' '*3 +'- ' + ocn + ' '*(10-ocn.length) + d_clean + ' ' + d_all - when /^#{Mx[:lv_o]}6:/ - "\n" + ' '*7 +'3' + ' '*2 +'- ' + ocn + ' '*(10-ocn.length) + d_clean + ' ' + d_all - else - if para =~/MD5\(\S+?\.sst\)=\s*([0-9a-f]{#@dl})<\/u>/ #watch - @n,@s=/MD5\((\S+?\.sst)\)=\s*([0-9a-f]{#@dl})<\/u>/.match(para)[1,2] - end - x=unless ocn =~ /^0$/ - if images \ - and images.length > 0 # then get path of image & produce digest - @image_name,@image_dgst,@img=[],[],[] - images.each do |i| - image_source=if FileTest.file?("#{@env.path.image_source_local_tex}/#{i}") - @env.path.image_source_local_tex - elsif FileTest.file?("#{@env.path.image_source_remote_tex}/#{i}") - @env.path.image_source_remote_tex - elsif FileTest.file?("#{@env.path.image_source_tex}/#{i}") - @env.path.image_source_tex - else - tell=SiSU_Screen::Ansi.new(@md.cmd,"ERROR - image:", %{"#{i}" missing}, "search locations: #{@env.path.image_source_local_tex}, #{@env.path.image_source_remote_tex} and #{@env.path.image_source_tex}") - tell.error2 unless @md.cmd =~/q/ - nil - end - @img << /\S+\.(png|jpg|gif)/.match(i)[1] - not_found_msg='image not found' - if image_source - para_image = image_source + '/' + i - @image_name << i - @image_dgst << if @dg =~/^sha(?:2|256)$/; sys.sha256(para_image) - else sys.md5(para_image) - end - else - @image_name << ' '*16 + i + ' [image missing]' - @image_dgst << '' - @image_dgst[1]=not_found_msg + ' '*(32-not_found_msg.length) - end - end - line= "\n" + ' '*9 + ' - ' + ocn + ' '*(10-ocn.length) + d_clean + ' ' + d_all + "\n" - line_image=[] - c=0 - @image_name.each do |ok| - line_image << %{ #{@img[c]} #{@image_dgst[c][1]} #{@image_name[c]}} - c +=1 - end - line=line + line_image.join("\n") - else "\n" + ' '*9 + ' - ' + ocn + ' '*(10-ocn.length) + d_clean + ' ' + d_all - end - else - prefix='' - metad=[@tr.full_title,@tr.author,@tr.translator,@tr.illustrator,@tr.prepared_by,@tr.digitized_by,@tr.description,@tr.subject,@tr.abstract,@tr.publisher,@tr.contributor,@tr.date_created,@tr.date_issued,@tr.date_available,@tr.date_modified,@tr.date_valid,@tr.date,@tr.type,@tr.format,@tr.rights,@tr.identifier,@tr.source,@tr.language,@tr.language_original,@tr.relation,@tr.coverage,@tr.keywords,@tr.comments,@tr.cls_loc,@tr.cls_dewey,@tr.cls_gutenberg,@tr.cls_isbn,@tr.prefix_a,@tr.prefix_b,@tr.sourcefile,@tr.sourcefile_digest,@tr.last_generated,@tr.sisu_version,@tr.ruby_version,@tr.sc_number,@tr.sc_date,'Skin_Digest: ','Generated by: ','Ruby version: '] - metad.each do |n| - m=rgx_txt(n) - if m=~/\S+/ \ - and para=~/^#{m}:/ - x,o=0,18 - while x < 2; o = o + 2 - x=o - n.length - end - space=' '*x - prefix="#{n.downcase}#{space}" - break - else prefix=' '*9 - end - end - m_title=rgx_txt(@tr.full_title) - m_author=rgx_txt(@tr.author) - m_sourcefile_digest=rgx_txt(@tr.sourcefile_digest) - m_sisu_version=rgx_txt(@tr.sisu_version) - m_last_generated=rgx_txt(@tr.last_generated) - m_ruby_version=rgx_txt(@tr.ruby_version) - case para - when /#{m_title}: / - @t=/#{m_title}: (.+?)#{Mx[:id_o]}~\d;(?:\w|[0-6]:)\d+;\w\d+#{Mx[:id_c]}#{Mx[:id_o]}[0-9a-f]{#@dl}:[0-9a-f]{#@dl}#{Mx[:id_c]}/.match(para)[1].gsub(/<\/?u>/,'').strip - when /#{m_author}: / - @c=/#{m_author}: (.+?)#{Mx[:id_o]}~\d;(?:\w|[0-6]:)\d+;\w\d+#{Mx[:id_c]}#{Mx[:id_o]}[0-9a-f]{#@dl}:[0-9a-f]{#@dl}#{Mx[:id_c]}/.match(para)[1].gsub(/<\/?u>/,'').strip - when /#{m_sourcefile_digest}.+?/ #watch - dgst_extra="\n" + ' '*21 +'source' +' '*4 + @md.dgst[1] + ' '*34 + @md.fns - when /Skin_Digest: / - dgst_extra="\n" + ' '*21 + 'skin' +' '*6 + @md.dgst_skin[1] + ' '*34 + /(skin_\S+?\.rb)/.match(@md.dgst_skin[0])[1] - when /#{m_sisu_version}: / - @v=/#{m_sisu_version}: (.+?)#{Mx[:id_o]}~\d;(?:\w|[0-6]:)\d+;\w\d+#{Mx[:id_c]}#{Mx[:id_o]}[0-9a-f]{#@dl}:[0-9a-f]{#@dl}#{Mx[:id_c]}/.match(para)[1].gsub(/<\/?u>/,'').strip - when /#{m_last_generated}: / - @g=/#{m_last_generated}: (.+?)#{Mx[:id_o]}~\d;(?:\w|[0-6]:)\d+;\w\d+#{Mx[:id_c]}#{Mx[:id_o]}[0-9a-f]{#@dl}:[0-9a-f]{#@dl}#{Mx[:id_c]}/.match(para)[1].gsub(/<\/?u>/,'').strip - # 'doc last generated' - when /#{m_ruby_version}: / - @r=/#{m_ruby_version}: (.+?)#{Mx[:id_o]}~\d;(?:\w|[0-6]:)\d+;\w\d+#{Mx[:id_c]}#{Mx[:id_o]}[0-9a-f]{#@dl}:[0-9a-f]{#@dl}#{Mx[:id_c]}/.match(para)[1].gsub(/<\/?u>/,'').strip - end - dgst_extra ||='' - "\n" + prefix +' - ' + ocn + ' '*(10-ocn.length) + d_clean + ' ' + d_all + dgst_extra + "\n" - end - end - para_endnotes[0].each { |e| y << "\n" + ' '*(28-e[0].length) + "[#{e[0].to_s}] #{e[1].to_s}" } if para_endnotes[0] - if y; digests(x,y) - else digests(x) - end - end - end - manifest="#{@env.url.root}/#{@md.fnb}/sisu_manifest.html" - a=%{level (if any), ocn: digest clean (no markup/notes), digest all (includes markup & endnotes)\n [endnote number] endnote digest clean\n} - description("#@t\n") - description("#@c\n") - description("#{@md.fns}\n") - description("----------------------------------------------\n") - description("SiSU Document Content Certificate (Digest/DCC)\n") - description("----------------------------------------------\n") - description(" #@dg digests\n") - description("------------\n") - description("Sourcefile digest: #@s\n") - description(" source filename: #@n\n") - description("available outputs: #{manifest}\n") - description(" time generated: #@g\n") - description(" SiSU version used: #@v\n") - description(" Ruby version used: #@r\n") - description("------------\n") - description("Document Digest Tree (from dal):\n") - description(a) - #digests("------------\n") - #digests("#@v\n") - #digests("#@g\n") - #digests("#@r\n") - end - def dal_structure - #there will be a docubook mapping header, fairly complex variations - data=@data - l=Hash.new(0) - dal_structure_tree("------------\n") - dal_structure_tree("document structure[*]\n") - ocn,endnotes=nil,nil - data.each do |para| - x=case para - when /^#{Mx[:meta_o]}/; l[0] +=1 - if para =~/^#{Mx[:meta_o]}title#{Mx[:meta_c]}/; '' #' '*0 +'@ == headers' + "\n" + ' '*0 +'headings:' - end - when /^#{Mx[:lv_o]}1:/; l[1] +=1 - ' '*0 +':A' - when /^#{Mx[:lv_o]}2:/; l[2] +=1 - ' '*1 +':B' - when /^#{Mx[:lv_o]}3:/; l[3] +=1 - ' '*2 +':C' - when /^#{Mx[:lv_o]}4:/; l[4] +=1 - ' '*3 +'1' - when /^#{Mx[:lv_o]}5:/; l[5] +=1 - ' '*4 +'2' - when /^#{Mx[:lv_o]}6:/; l[6] +=1 - ' '*5 +'3' - else nil - end - if para =~/#{Mx[:id_o]}~(\d+);(?:\w|[0-6]:)\d+;\w\d+#{Mx[:id_c]}#{Mx[:id_o]}[0-9a-f]{#@dl}:[0-9a-f]{#@dl}#{Mx[:id_c]}/ - ocn=$1 unless $1.to_i == 0 - end - if para =~/(?:#{Mx[:en_a_o]}|#{Mx[:en_b_o]})([\d*+]+).+?#{Mx[:id_o]}[0-9a-f]{#@dl}#{Mx[:id_c]}(?:#{Mx[:en_a_c]}|#{Mx[:en_b_c]})/ - endnotes=$1 unless $1.to_i == 0 - end - dal_structure_tree("#{x}\n") if x and not x.empty? - end - dal_structure_tree(" [*] heading levels\n") - dal_structure_summary("------------\n") - dal_structure_summary("document structure[*]\n") - [0,1,2,3,4,5,6].each do |y| - v=case y.to_s - when /0/; '@ ' - when /1/; ':A' - when /2/; ':B' - when /3/; ':C' - when /4/; '1 ' - when /5/; '2 ' - when /6/; '3 ' - end - dal_structure_summary("#{v} = #{l[y]}\n") if l[y] > 0 - end - dal_structure_summary("objects (ocn) = #{ocn}\n") - dal_structure_summary("endnotes = #{endnotes}\n") - dal_structure_summary(" [*] number of headers (@) and of each heading level (:A to :C and 1 to 3)\n") - end - def supplementary - if defined? @md.sc_number \ - and @md.sc_number - rcinfo("------------\n") - rcinfo("source control information\n") - rcinfo(" (the following information while not important for document content certification\n may help the publisher in locating the version referred to)\n") - rcinfo(" rcs version number: #{@md.sc_number}\n") - if defined? @md.sc_date \ - and @md.sc_date - rcinfo(" rcs date: #{@md.sc_date}\n") - end - if defined? @md.sc_time \ - and @md.sc_time - rcinfo(" rcs time: #{@md.sc_time}\n") - end - end - rcinfo("------------\n") - rcinfo("Note: the time generated related fields (text and digests) will vary between otherwise identical document outputs\n") - end - end - end -end -__END__ - diff --git a/lib/sisu/v0/embedded.rb b/lib/sisu/v0/embedded.rb deleted file mode 100644 index 7f351a18..00000000 --- a/lib/sisu/v0/embedded.rb +++ /dev/null @@ -1,139 +0,0 @@ -# coding: utf-8 -=begin - - * Name: SiSU - - * Description: a framework for document structuring, publishing and search - - * Author: Ralph Amissah - - * Copyright: (C) 1997 - 2009 Ralph Amissah All Rights Reserved. - - * License: GPL 3 or later: - - SiSU, a framework for document structuring, publishing and search - - Copyright (C) Ralph Amissah - - This program is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by the Free - Software Foundation, either version 3 of the License, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - more details. - - You should have received a copy of the GNU General Public License along with - this program. If not, see . - - If you have Internet connection, the latest version of the GPL should be - available at these locations: - - - - - - - - * SiSU uses: - * Standard SiSU markup syntax, - * Standard SiSU meta-markup syntax, and the - * Standard SiSU object citation numbering and system - - * Hompages: - - - - * Download: - - - * Ralph Amissah - - - - ** Description: sitemap created from parameters extracted from input file(s) - -=end -module SiSU_Embedded - require "#{SiSU_lib}/param" - require "#{SiSU_lib}/sysenv" - include SiSU_Env - include SiSU_Param - class Source - require 'fileutils' - include FileUtils - def initialize(opt) - @opt=opt - @md=SiSU_Param::Parameters.new(@opt).get - @env=SiSU_Env::Info_env.new(@md.fns) - @rhost=SiSU_Env::Info_remote.new(@opt).remote_host_base - end - def read - songsheet - end - def songsheet - images - audio - multimedia - begin - rescue; SiSU_Errors::Info_error.new($!,$@,@opt.cmd,@opt.fns).error - ensure - end - end - def images - src="#{Dir.pwd}/_sisu/image" - ldest="#{@env.path.webserv}/#{@env.path.stub_pwd}/_sisu/image" - @rhost.each do |remote_conn| - rdest="#{remote_conn[:name]}/#{@env.path.stub_pwd}/_sisu/image" - if @md.cmd.inspect =~/[vVMR]/ \ - and FileTest.directory?(src) - mkdir_p(ldest) unless FileTest.directory?(ldest) - src_ec="#{src}/" + @md.ec[:image].join(" #{src}/") - unless @opt.fns =~/\.-sst$/ - SiSU_Env::System_call.new(src_ec,"#{ldest}/.",'q').rsync - if @md.cmd.inspect =~/R/ #rsync to remote image directory - SiSU_Env::System_call.new(src_ec,"#{rdest}/.",'q').rsync - end - end - end - end - end - def audio - #p @md.ec[:audio] - src="#{Dir.pwd}/_sisu/mm/audio" - ldest="#{@env.path.webserv}/#{@env.path.stub_pwd}/_sisu/mm/audio" - @rhost.each do |remote_conn| - rdest="#{remote_conn[:name]}/#{@env.path.stub_pwd}/_sisu/mm/audio" - if @md.cmd.inspect =~/[vVMR]/ \ - and FileTest.directory?(src) - mkdir_p(ldest) unless FileTest.directory?(ldest) - src_ec="#{src}/" + @md.ec[:audio].join(" #{src}/") - SiSU_Env::System_call.new(src_ec,"#{ldest}/.",'q').rsync - if @md.cmd.inspect =~/R/ #rsync to remote audio directory - SiSU_Env::System_call.new(src_ec,"#{rdest}/.",'q').rsync - end - end - end - end - def multimedia - #p @md.ec[:multimedia] - src="#{Dir.pwd}/_sisu/mm/video" - ldest="#{@env.path.webserv}/#{@env.path.stub_pwd}/_sisu/mm/video" - @rhost.each do |remote_conn| - rdest="#{remote_conn[:name]}/#{@env.path.stub_pwd}/_sisu/mm/video" - if @md.cmd.inspect =~/[vVMR]/ \ - and FileTest.directory?(src) - mkdir_p(ldest) unless FileTest.directory?(ldest) - src_ec="#{src}/" + @md.ec[:multimedia].join(" #{src}/") - SiSU_Env::System_call.new(src_ec,"#{ldest}/.",'q').rsync - if @md.cmd.inspect =~/R/ #rsync to remote video directory - SiSU_Env::System_call.new(src_ec,"#{rdest}/.",'q').rsync - end - end - end - end - end -end -__END__ diff --git a/lib/sisu/v0/errors.rb b/lib/sisu/v0/errors.rb deleted file mode 100644 index 93aab7cb..00000000 --- a/lib/sisu/v0/errors.rb +++ /dev/null @@ -1,82 +0,0 @@ -# coding: utf-8 -=begin - - * Name: SiSU - - * Description: a framework for document structuring, publishing and search - - * Author: Ralph Amissah - - * Copyright: (C) 1997 - 2009 Ralph Amissah All Rights Reserved. - - * License: GPL 3 or later: - - SiSU, a framework for document structuring, publishing and search - - Copyright (C) Ralph Amissah - - This program is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by the Free - Software Foundation, either version 3 of the License, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - more details. - - You should have received a copy of the GNU General Public License along with - this program. If not, see . - - If you have Internet connection, the latest version of the GPL should be - available at these locations: - - - - - - - - * SiSU uses: - * Standard SiSU markup syntax, - * Standard SiSU meta-markup syntax, and the - * Standard SiSU object citation numbering and system - - * Hompages: - - - - * Download: - - - * Ralph Amissah - - - - ** Description: system environment, error screen reporting - -=end -module SiSU_Errors - require "#{SiSU_lib}/sysenv" - include SiSU_Env - include SiSU_Screen - class Info_error . - - If you have Internet connection, the latest version of the GPL should be - available at these locations: - - - - - - - - * SiSU uses: - * Standard SiSU markup syntax, - * Standard SiSU meta-markup syntax, and the - * Standard SiSU object citation numbering and system - - * Hompages: - - - - * Download: - - - * Ralph Amissah - - - - ** Description: system environment, resource control and configuration details - -=end -def help - puts <. - - If you have Internet connection, the latest version of the GPL should be - available at these locations: - - - - - - - - * SiSU uses: - * Standard SiSU markup syntax, - * Standard SiSU meta-markup syntax, and the - * Standard SiSU object citation numbering and system - - * Hompages: - - - - * Download: - - - * Ralph Amissah - - - - ** Description: simple xml representation (sax style) - -=end -module HARVEST_authors - require "#{SiSU_lib}/author_format" - @@the_idx_authors=[] - class Songsheet - def initialize(opt) - @opt=opt - @file_list=opt.files - @env=SiSU_Env::Info_env.new - end - def songsheet - files,idx_array=[],[] - @file_list.each do |f| - if f =~/.+?\.ss[tm]$/ - files << f[/(.+?\.ss[tm])$/,1] - else - print "not .sst or .ssm ? << #{f} >> " - end - end - files.each do |filename| - file_array=[] - File.open(filename,'r') do |file| - file.each_line("\n\n") do |line| - if line =~/^@\S+?: / - file_array << line - elsif line =~/^(?:\s*\n|%+ )/ - else break - end - end - end - idx_array=HARVEST_authors::Harvest.new(file_array,filename,idx_array).extract_harvest - end - the_idx=HARVEST_authors::Index.new(idx_array,@@the_idx_authors).construct_book_author_index - #HARVEST_authors::Output_index.new(the_idx).screen_print.cycle - HARVEST_authors::Output_index.new(@opt,the_idx).html_print.html_songsheet - puts "file://#{@env.path.output_md_harvest}/harvest_authors.html" - puts "file://#{@env.path.pwd}/harvest_authors.html" if @opt.cmd.inspect =~/-M/ - end - end - class Harvest - def initialize(data,filename,idx_array) - @data,@filename,@idx_array=data,filename,idx_array - end - def extract_harvest - data,filename,idx_array=@data,@filename,@idx_array - @orig_pub,@title,@subtitle,@fulltitle,@author,@author_format=nil,nil,nil,nil,nil,nil - @authors=[] - rgx={} - rgx[:author]=/^@(?:author|creator):\s+(.+)/ - rgx[:title]=/^@title:\s+(.+)/ - rgx[:subtitle]=/^@subtitle:\s+(.+)/ - rgx[:date]=/^@subtitle:\s+(.+)/ - rgx[:date]=/^@date:\s+(\d{4})/ - rgx[:orig_pub]=/^@original_publication:\s+(.+)/ - data.each do |para| - if para=~ rgx[:orig_pub] - @orig_pub=rgx[:orig_pub].match(para)[1] - end - if para=~ rgx[:title] - @title=rgx[:title].match(para)[1] - end - if para=~ rgx[:subtitle] - @subtitle=rgx[:subtitle].match(para)[1] - end - if para=~ rgx[:author] - @author_format=rgx[:author].match(para)[1] - end - if para=~ rgx[:date] - @date=rgx[:date].match(para)[1] - end - break if @title and @subtitle and @author and @date and @orig_pub - end - @fulltitle=if @subtitle - @title + ' - ' + @subtitle - else @title - end - if @title and @author_format #and @orig_pub (publication details) - creator=FORMAT::Author.new(@author_format.strip).author_details - @authors,@authorship=creator[:authors],creator[:authorship] - file=if filename=~/~[a-z]{2,3}\.ss[mt]$/ - lang='.' + /~([a-z]{2,3})\.ss[mt]$/.match(filename)[1] - filename.sub(/~[a-z]{2,3}\.ss[mt]$/,'') - else - lang='' - filename.sub(/\.ss[mt]$/,'') - end - page="sisu_manifest#{lang}.html" - idx_array <<= { :filename => filename, :file => file, :orig_pub => @orig_pub, :date => @date, :title => @fulltitle, :author => creator, :page => page } - else - #p "missing author field: #@filename title: #@title; author: #@author_format; idx: #@orig_pub" - end - idx_array.flatten! - idx_array - end - end - class Index - def initialize(idx_array,the_idx) - @idx_array,@the_idx=idx_array,the_idx - @@the_idx_authors=@the_idx - end - def capital(txt) - txt[0].chr.capitalize + txt[1,txt.length] - end - def construct_book_author_index - idx_array=@idx_array - idx_array.each do |idx| - idx[:author][:last_first_format_a].each do |author| - author.strip! - if @@the_idx_authors[author].class==NilClass - @@the_idx_authors[author]={:md => []} - end - @@the_idx_authors[author][:md] << { :filename => idx[:filename], :file => idx[:file], :author => idx[:author], :title => idx[:title], :date => idx[:date], :page => idx[:page] } - end - end - @the_idx=@@the_idx_authors - end - end - class Output_index - def initialize(opt,the_idx) - @opt,@the_idx=opt,the_idx - @env=SiSU_Env::Info_env.new - @rc=Get_init.instance.yamlrc - @alph=%W[9 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z] - @letter=@alph.shift - @vz=SiSU_Env::Get_init.instance.skin - end - def html_file_open - @output={} - @output[:html]=File.new("#{@env.path.output_md_harvest}/harvest_authors.html",'w') - @output[:html_mnt]= if @opt.cmd.inspect =~/-M/ - File.new("#{@env.path.pwd}/harvest_authors.html",'w') - else nil - end - end - def html_file_close - @output[:html].close - @output[:html_mnt].close if @output[:html_mnt].class == File - end - def html_print - def html_songsheet - html_file_open - html_head - html_alph - html_body - html_tail - html_file_close - end - def html_head_adjust(type='') - css_path=if type !~/maintenance/ - '../_sisu/css/harvest.css' - else 'harvest.css' - end - sv=SiSU_Env::Info_version.instance.get_version - < - - -SiSU Metadata Harvest - Authors - - - - - - - - - - - - -

SiSU Metadata Harvest - Authors

-

[ HOME ] also see SiSU Metadata Harvest - Topics

-
-WOK - end - def html_head - @output[:html_mnt] << html_head_adjust('maintenance') if @opt.cmd.inspect =~/-M/ - @output[:html] << html_head_adjust - end - def html_alph - a=[] - a << '

' - @alph.each do |x| - a << if x =~/[0-9]/; '' - else - %{#{x}, } - end - end - @output[:html_mnt] << a.join if @output[:html_mnt].class == File - @output[:html] << a.join - end - def html_tail - a=[] - a <<< - - - - - - -#{@vz.credits_sisu} - - -WOK - @output[:html_mnt] << a if @output[:html_mnt].class == File - @output[:html] << a - end - def do_html(html) - @output[:html_mnt] << html if @output[:html_mnt].class == File - @output[:html] << html - end - def do_string(attrib,string) - html=%{

#{string}

} - do_html(html) - end - def do_string_name(attrib,string) - f=/^(\S)/.match(string[0])[1] - if @letter < f - while @letter < f - if @alph.length > 0 - @letter=@alph.shift - if @output[:html_mnt].class == File - @output[:html_mnt] << %{\n

#{@letter}

} - end - @output[:html] << %{\n

#{@letter}

} - else break - end - end - end - end - def html_body - the_idx=@the_idx - the_idx.sort.each do |a| - do_string_name('',a) - name=a[0].sub(/(.+?)(?:,.+|$)/,'\1').gsub(/\s+/,'_') - x = %{

#{a[0]}

} - if @output[:html_mnt].class == File - @output[:html_mnt] << x - end - @output[:html] << x - works=[] - a[1][:md].each do |x| - work=[ "#{x[:date]} #{x[:title]}", %{

#{x[:date]} #{x[:title]}, #{x[:author][:authors_s]}

} ] - works<<=if @output[:html_mnt].class == File - work.concat([%{

[src]  #{x[:date]} #{x[:title]}, #{x[:author][:authors_s]} -- [#{x[:file]}.sst]

}]) - else work - end - end - works.sort_by {|x| x[0]}.each do |x| - @output[:html] << x[1] - @output[:html_mnt] << x[2] if @output[:html_mnt].class == File - end - end - end - self - end - def screen_print - def cycle - the_idx=@the_idx - the_idx.sort.each do |a| - puts a[0] - a[1][:md].each do |x| - puts "\t" + x[:file] - end - end - end - self - end - end -end -__END__ diff --git a/lib/sisu/v0/harvest_topics.rb b/lib/sisu/v0/harvest_topics.rb deleted file mode 100644 index 1ab62a95..00000000 --- a/lib/sisu/v0/harvest_topics.rb +++ /dev/null @@ -1,571 +0,0 @@ -# coding: utf-8 -=begin - - * Name: SiSU - - * Description: a framework for document structuring, publishing and search - metadata harvest, extract topics and associated writings from document set - (topics use topic_register header) - - * Author: Ralph Amissah - - * Copyright: (C) 1997 - 2009 Ralph Amissah All Rights Reserved. - - * License: GPL 3 or later: - - SiSU, a framework for document structuring, publishing and search - - Copyright (C) Ralph Amissah - - This program is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by the Free - Software Foundation, either version 3 of the License, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - more details. - - You should have received a copy of the GNU General Public License along with - this program. If not, see . - - If you have Internet connection, the latest version of the GPL should be - available at these locations: - - - - - - - - * SiSU uses: - * Standard SiSU markup syntax, - * Standard SiSU meta-markup syntax, and the - * Standard SiSU object citation numbering and system - - * Hompages: - - - - * Download: - - - * Ralph Amissah - - - - ** Description: simple xml representation (sax style) - -=end -module HARVEST_topics - require "#{SiSU_lib}/author_format" - class Songsheet - def initialize(opt) - @opt=opt - @file_list=opt.files - @env=SiSU_Env::Info_env.new - end - def songsheet - files,idx_array=[],[] - @file_list.each do |f| - if f =~/.+?\.ss[tm]$/ - files << f[/(.+?\.ss[tm])$/,1] - else - print "not .sst or .ssm ? << #{f} >> " - end - end - files.each do |filename| - file_array=[] - File.open(filename,'r') do |file| - file.each_line("\n\n") do |line| - if line =~/^@\S+?: / - #line=line.gsub(/\n/,' ') - file_array << line - elsif line =~/^(?:\s*\n|%+ )/ - else break - end - end - end - #file_array=IO.readlines("#{filename}","\n\r") - idx_array=HARVEST_topics::Harvest.new(file_array,filename,idx_array).extract_harvest - end - the_idx=HARVEST_topics::Index.new(idx_array,@@the_idx_topics).construct_book_topic_index - #HARVEST_topics::Output_index.new(the_idx).screen_print.cycle - HARVEST_topics::Output_index.new(@opt,the_idx).html_print.html_songsheet - puts "file://#{@env.path.output_md_harvest}/harvest_topics.html" - puts "file://#{@env.path.pwd}/harvest_topics.html" if @opt.cmd.inspect =~/-M/ - end - end - class Harvest - def initialize(data,filename,idx_array) - @data,@filename,@idx_array=data,filename,idx_array - end - def extract_harvest - data,filename,idx_array=@data,@filename,@idx_array - @idx_lst,@title,@subtitle,@fulltitle,@author,@author_format=nil,nil,nil,nil,nil,nil - rgx={} - rgx[:author]=/^@(?:author|creator):\s+(.+)/ - rgx[:title]=/^@title:\s+(.+)/ - rgx[:subtitle]=/^@subtitle:\s+(.+)/ - rgx[:idx]=/^@topic_register:\s+(.+)/ - data.each do |para| - if para=~ rgx[:idx] - @idx_list=rgx[:idx].match(para)[1] - end - if para=~ rgx[:title] - @title=rgx[:title].match(para)[1] - end - if para=~ rgx[:subtitle] - @subtitle=rgx[:subtitle].match(para)[1] - end - if para=~ rgx[:author] - @author_format=rgx[:author].match(para)[1] - end - break if @title and @subtitle and @author and @idx_lst - end - @fulltitle=if @subtitle - @title + ' - ' + @subtitle - else @title - end - if @title and @author_format and @idx_list - creator=FORMAT::Author.new(@author_format.strip).author_details - @authors,@authorship=creator[:authors],creator[:authorship] - file=if filename=~/~[a-z]{2,3}\.ss[mt]$/ - lang='.' + /~([a-z]{2,3})\.ss[mt]$/.match(filename)[1] - filename.sub(/~[a-z]{2,3}\.ss[mt]$/,'') - else - lang='' - filename.sub(/\.ss[mt]$/,'') - end - page="sisu_manifest#{lang}.html" - idx_array <<=if @idx_list =~/;/ - g=@idx_list.scan(/[^;]+/) - idxl=[] - g.each do |i| - i.strip! - idxl << { :filename => filename, :file => file, :rough_idx => i, :title => @fulltitle, :author => creator, :page => page} - end - idxl - else { :filename => filename, :file => file, :rough_idx => @idx_list, :title => @fulltitle, :author => creator, :page => page } - end - else - p "missing author field: #@filename title: #@title; author: #@author_format; idx: #@idx_list" - end - idx_array.flatten! - idx_array - end - end - class Index - def initialize(idx_array,the_idx) - @idx_array,@the_idx=idx_array,the_idx - @@the_idx_topics=@the_idx - end - def capital(txt) - txt[0].chr.capitalize + txt[1,txt.length] - end - def contents(hash,idx) - names='' - idx[:author][:last_first_format_a].each do |n| - s=n.sub(/(.+?)(?:,.+|$)/,'\1').gsub(/\s+/,'_') - names += %{#{n}, } - end - hash << { :filename => idx[:filename], :file => idx[:file], :author => names, :title => idx[:title], :page => idx[:page] } - end - def construct_book_topic_index - idx_array=@idx_array - idx_array.each do |idx| - @lv0,@lv1,@lv2,@lv3,@lv4={},{},{},{},{} - if idx[:rough_idx] - idx_lst=idx[:rough_idx].scan(/[^:]+/) - else - puts "no topic register in: << #{idx[:filename]} >>" - next - end - idx_lst_alt=[] - idx_lst.each {|lev| idx_lst_alt << lev.scan(/[^|]+/)} - depth = idx_lst_alt.length - 1 - range = 0..depth - range.each do |t| - if idx_lst_alt[t] - case t - when 0 - lev0=idx_lst_alt[t] - lev0.each do |lv0| - lv0=capital(lv0) - if @@the_idx_topics[lv0].class==NilClass - @@the_idx_topics[lv0]={:md => []} - end - @lv0=lv0 if lev0.length == 1 - j=@@the_idx_topics[lv0][:md] - contents(j,idx) if idx_lst_alt.length - 1 == t - end - when 1 - lev1=idx_lst_alt[t] - lev1.each do |lv1| - lv1=capital(lv1) - if @@the_idx_topics[@lv0][lv1].class==NilClass - @@the_idx_topics[@lv0][lv1]={:md => []} - end - @lv1=lv1 if lev1.length == 1 - j=@@the_idx_topics[@lv0][lv1][:md] - contents(j,idx) if idx_lst_alt.length - 1 == t - end - when 2 - lev2=idx_lst_alt[t] - lev2.each do |lv2| - lv2=capital(lv2) - if @@the_idx_topics[@lv0][@lv1][lv2].class==NilClass - @@the_idx_topics[@lv0][@lv1][lv2]={:md => []} - end - @lv2=lv2 if lev2.length == 1 - j=@@the_idx_topics[@lv0][@lv1][lv2][:md] - contents(j,idx) if idx_lst_alt.length - 1 == t - end - when 3 - lev3=idx_lst_alt[t] - lev3.each do |lv3| - lv3=capital(lv3) - if @@the_idx_topics[@lv0][@lv1][@lv2][lv3].class==NilClass - @@the_idx_topics[@lv0][@lv1][@lv2][lv3]={:md => []} - end - @lv3=lv3 if lev3.length == 1 - j=@@the_idx_topics[@lv0][@lv1][@lv2][lv3][:md] - contents(j,idx) if idx_lst_alt.length - 1 == t - end - when 4 - lev4=idx_lst_alt[t] - lev4.each do |lv4| - lv4=capital(lv4) - if @@the_idx_topics[@lv0][@lv1][@lv2][@lv3][lv4].class==NilClass - @@the_idx_topics[@lv0][@lv1][@lv2][@lv3][lv4]={:md => []} - end - @lv4=lv4 if lev4.length == 1 - j=@@the_idx_topics[@lv0][@lv1][@lv2][@lv3][lv4][:md] - contents(j,idx) if idx_lst_alt.length - 1 == t - end - end - end - end - end - @the_idx - end - end - class Output_index - def initialize(opt,the_idx) - @opt,@the_idx=opt,the_idx - @env=SiSU_Env::Info_env.new - @rc=Get_init.instance.yamlrc - @alph=%W[9 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z] - @letter=@alph.shift - @vz=SiSU_Env::Get_init.instance.skin - end - def html_file_open - @output={} - @output[:html]=File.new("#{@env.path.output_md_harvest}/harvest_topics.html",'w') - if @opt.cmd.inspect =~/-M/ - @output[:html_mnt]=File.new("#{@env.path.pwd}/harvest_topics.html",'w') - end - end - def html_file_close - @output[:html].close - @output[:html_mnt].close if @output[:html_mnt].class == File - end - def html_print - def html_songsheet - html_file_open - html_head - html_alph - html_body - html_tail - html_file_close - end - def html_head_adjust(type='') - css_path=if type !~/maintenance/ - '../_sisu/css/harvest.css' - else 'harvest.css' - end - sv=SiSU_Env::Info_version.instance.get_version - < - - -SiSU Metadata Harvest - Topics - - - - - - - - - - - - -

SiSU Metadata Harvest - Topics

-

[ HOME ] also see SiSU Metadata Harvest - Authors

-
-WOK - end - def html_head - @output[:html_mnt] << html_head_adjust('maintenance') if @opt.cmd.inspect =~/-M/ - @output[:html] << html_head_adjust - end - def html_alph - a=[] - a << '

' - @alph.each do |x| - a << if x =~/[0-9]/; '' - else - %{#{x}, } - end - end - @output[:html_mnt] << a if @opt.cmd.inspect =~/-M/ - @output[:html] << a.join - end - def html_tail - a=[] - a <<< - - - - - - -#{@vz.credits_sisu} - - -WOK - @output[:html_mnt] << a if @output[:html_mnt].class == File - @output[:html] << a - end - def do_html(html) - @output[:html] << html - end - def do_html_maintenance(html) - @output[:html_mnt] << html if @output[:html_mnt].class == File - end - def do_string(attrib,string) - html=%{

#{string}

} - do_html(html) - do_html_maintenance(html) if @output[:html_mnt].class == File - end - def do_string_default(attrib,string) - html=%{

#{string}

} - do_html(html) - end - def do_string_maintenance(attrib,string) - html=%{

#{string}

} - do_html_maintenance(html) if @output[:html_mnt].class == File - end - def do_string_name(attrib,string) - f=/^(\S)/.match(string)[1] - if @letter < f - while @letter < f - if @alph.length > 0 - @letter=@alph.shift - if @output[:html_mnt].class == File - @output[:html_mnt] << %{\n

#{@letter}

} - end - @output[:html] << %{\n

#{@letter}

} - else break - end - end - end - name=string.strip.gsub(/\s+/,'_') - html=%{

#{string}

} - do_html(html) - do_html_maintenance(html) if @output[:html_mnt].class == File - end - def do_array(lv,array) - lv+=1 - array.each do |b| - do_case(lv,b) - end - end - def do_hash_md(attrib,hash) - html=%{#{hash[:title]} - #{hash[:author]}} - do_string_default(attrib,html) - end - def do_hash_md_maintenance(attrib,hash) - if @output[:html_mnt].class == File #should not be run for presentation output - html=%{[src]  #{hash[:title]} - #{hash[:author]}} - do_string_maintenance(attrib,html) - end - end - def do_hash(lv,hash) - lv+=1 - key=[] - hash.each_key do |m| - if m == :md - do_case(lv,hash[m]) - elsif m != :title and m != :author and m != :filename and m != :file and m != :rough_idx and m != :page - key << m - elsif m == :title - do_hash_md('work',hash) - do_hash_md_maintenance('work',hash) - end - end - if key.length > 0 - key.sort.each do |m| - attrib="lev#{lv}" - if lv == 0 - do_string_name(attrib,m) - else do_string(attrib,m) - end - do_case(lv,hash[m]) - end - end - end - def do_case(lv,a) - y = a.class - case - when y == String - attrib="lev#{lv}" - if lv == 0 - do_string_name(attrib,a) - else do_string(attrib,a) - end - #do_string_name(attrib,a) - when y == Array - do_array(lv,a) - when y == Hash - do_hash(lv,a) - end - end - def html_body - the_idx=@the_idx - the_idx.sort.each do |a| - do_case(-1,a) - end - end - self - end - def screen_print - def do_string(lv,string) - s=' '*4 - puts s*lv + string - end - def do_array(lv,array) - lv+=1 - array.each do |b| - do_case(lv,b) - end - end - def do_hash_md(lv,hash) - string=hash[:title] + ' - ' + hash[:author] - do_string(lv,string) - end - def do_hash(lv,hash) - lv+=1 - key=[] - hash.each_key do |m| - if m == :md - do_case(lv,hash[m]) - elsif m != :title and m != :author and m != :filename and m != :file and m != :rough_idx and m != :page - key << m - elsif m == :title - do_hash_md(lv,hash) - end - end - if key.length > 0 - key.sort.each do |m| - do_string(lv,m) - do_case(lv,hash[m]) - end - end - end - def do_case(lv,a) - s=' '*4 - y = a.class - case - when y == String - do_string(lv,a) - when y == Array - do_array(lv,a) - when y == Hash - do_hash(lv,a) - end - end - def cycle - the_idx=@the_idx - the_idx.each do |a| - do_case(-1,a) - end - end - self - end - def screen_print_unsorted - def do_string(lv,string) - s=' '*4 - puts s*lv + string - end - def do_array(lv,array) - lv+=1 - array.each do |b| - do_case(lv,b) - end - end - def do_hash_md(lv,hash) - string=hash[:title] + ' - ' + hash[:author] - do_string(lv,string) - end - def do_hash(lv,hash) - lv+=1 - hash.each_key do |m| - if m == :md - do_case(lv,hash[m]) - else - if m != :title and m != :author and m != :filename and m != :file and m != :rough_idx and m != :page - do_string(lv,m) - do_case(lv,hash[m]) - elsif m == :title - do_hash_md(lv,hash) - else - end - end - end - end - def do_case(lv,a) - s=' '*4 - y = a.class - case - when y == String - do_string(lv,a) - when y == Array - do_array(lv,a) - when y == Hash - do_hash(lv,a) - end - end - def cycle - the_idx=@the_idx - the_idx.each do |a| - do_case(-1,a) - end - end - self - end - end -end -__END__ -terms -|_ t{tl1} -|_ {fa}[fa]{filenames and other details} - | |_ {tl2} -|_ {fa}[fa]{filenames and other details} - | | |_{tl3} -|_ {fa}[fa]{filenames and other details} - | | | |_{tl4} - {fa}[fa]{filenames and other details} - | | | | - | | | |_{tl4a} - {fa}[fa]{filenames and other details} - | | | | - | | | |_{tl4b} - {fa}[fa]{filenames and other details} - | | | | - | | | |_ ... - | | | - | | |_{tl3a} - {fa}[fa]{filenames and other details} - | | - | |_{tl2a} - {fa}[fa]{filenames and other details} - | - |_ t{tl1a} -|_ {fa}[fa]{filenames and other details} - |_ ... diff --git a/lib/sisu/v0/help.rb b/lib/sisu/v0/help.rb deleted file mode 100644 index cd5eaf25..00000000 --- a/lib/sisu/v0/help.rb +++ /dev/null @@ -1,2036 +0,0 @@ -# coding: utf-8 -=begin - - * Name: SiSU - - * Description: a framework for document structuring, publishing and search - - * Author: Ralph Amissah - - * Copyright: (C) 1997 - 2009 Ralph Amissah All Rights Reserved. - - * License: GPL 3 or later: - - SiSU, a framework for document structuring, publishing and search - - Copyright (C) Ralph Amissah - - This program is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by the Free - Software Foundation, either version 3 of the License, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - more details. - - You should have received a copy of the GNU General Public License along with - this program. If not, see . - - If you have Internet connection, the latest version of the GPL should be - available at these locations: - - - - - - - - * SiSU uses: - * Standard SiSU markup syntax, - * Standard SiSU meta-markup syntax, and the - * Standard SiSU object citation numbering and system - - * Hompages: - - - - * Download: - - - * Ralph Amissah - - - - ** Description: interactive infomation/help - -=end -module SiSU_Help - require "#{SiSU_lib}/sysenv" - require "#{SiSU_lib}/param" - include SiSU_Screen - class Help - def initialize(request='',color='') - @request,@color=request,color - if color =~/color_off/; @cX=SiSU_Screen::Ansi.new('k').cX - else @cX=SiSU_Screen::Ansi.new('yes').cX - end - fns='help_example_dummy_file_name.sst' - @env=SiSU_Env::Info_env.new(fns) - @db=SiSU_Env::Info_db.new - m=/.+\/(?:src\/)?(\S+)/im # m=/.+?\/(?:src\/)?([^\/]+)$/im # m=/.+\/(\S+)/m - @output_stub=Dir.pwd[m,1] - end - def help_request - begin - gotten=nil - regx=/^(list|com(?:mands)?|mod(?:ifiers)|markup|syntax|example(?:37|38)?|head(?:ers?)?|(?:heading|title|level|structure)s?|endnotes|footnotes|tables?|customise|skin|dir(?:ectories)?|paths?|lang(?:uage)?|modules|setup|conf(?:ig(?:ure)?)?|standards?|li[cs]en[sc]e|scratch|install|termsheet|dublin(?:core)?|dc|customise|styles?|appearance|theme|env(ironment)?|dir(?:ector(?:y|ies))?|metaverse|abstract|features|summary|(?:short)?cuts?|sisu|about|ext(?:ernal)?(?:_?prog(?:rams)?)?)|utf-?8|plaintext|html|xml|xhtml|odf|odt|opendocument|css|pdf|latex|tex|(?:tex)?info|search|(?:hyper)?est(?:raier)?|searchform|cgi|sql|db|postgresql|pg?sql|sqlite|convert|php|webrick|sitemaps?|ya?ml|ansi|colors|-[AabcDdEeFHhIMmNnopqrRSstUuVvwXxyZz0-9]|-[Ddcv]|-[CcFLSVvW]/ - help_info=%{#{@cX.blue_hi}SiSU help#{@cX.off} #{@cX.ruby}~#{@cX.off} #{@request}} - help_list=%{#{@cX.blue}sisu --help#{@cX.off} #{@cX.cyan}type keyword else "enter" to exit help:\n\tkeywords include:#{@cX.off} #{@cX.brown}list, (com)mands, short(cuts), (mod)ifiers, (env)ironment, markup, syntax, headers, headings, endnotes, tables, example, customise, skin, (dir)ectories, path, (lang)uage, db, install, setup, (conf)igure, convert, external_programs, dublincore, termsheet, search, sql, hyper(est)raier, features, external_programs, license#{@cX.off} \n} - help_prompt=%{#{@cX.fuschia}exit, [or carriage return to exit help] #{@cX.off}\n#{@cX.blue_hi}SiSU help#{@cX.off} #{@cX.ruby}~#{@cX.off} } - until gotten =~/exit|quit|bye|q|^\s*$/ \ - and ( @request.nil? or @request.empty? ) - @help=Help.new(@request,@color) - if @request - puts help_info - gotten=@request - @request=nil - end - case gotten - when /h((?:elp)| )|~/i - @help.summary - help_@request - when /list/; @help.summary - when /com(mands)?/; @help.commands - when /mod(ifiers)?/; @help.modifiers - when /markup|syntax/; @help.markup - when /example\b/; @help.example - when /example37/; @help.example37 - when /example38/; @help.example38 - when /(?:heading|title|level)s?|structure/; @help.headings - when /head(ers?)?/; @help.headers - when /dublin(core)?|dc/; @help.dublin_core - when /(?:foot|end)notes/; @help.endnotes - when /tables?/; @help.tables - when /customise|skin/; @help.customise - when /modules/; @help.modules - when /env(ironment)?/; @help.environment - when /dir(ector(y|ies))?/; @help.directories - when /paths?/; @help.path - when /setup/; @help.setup - when /conf(?:ig(?:ure)?)?/; @help.configure - when /standards?/; @help.standards - when /lang(?:uage)?/; @help.languages - when /li[cs]en[sc]e/; @help.license - when /scratch/; @help.scratch - when /install/; @help.install - when /termsheet/; @help.termsheet - when /customise|styles?|appearance|theme/; @help.customise - when /metaverse/; @help.dal - when /plaintext|ascii|-[aAeE]/; @help.plaintext - when /utf-?8/i; @help.utf8 - when /html|-[hH]/; @help.html - when /css/; @help.css - when /xhtml|-b/; @help.xhtml - when /xml|-[xX]/; @help.xml - when /odf|odt|opendocument|-o/; @help.odf - when /php/; @help.php - when /pdf|-p/; @help.pdf - when /latex|tex/; @help.latex - when /(tex)?info/; @help.texinfo - when /lout/; @help.lout - when /concordance|index|-w/; @help.concordance - when /search\b/; @help.help_search - when /(?:hyper)?est(?:raier)?/; @help.hyperestraier - when /db|database|sql|postgresql|sqlite|pg?sql|-[dD]/; @help.sql - when /searchform|cgi/; @help.cgi - when /convert/; @help.convert - when /webrick|-W/; @help.webrick - when /abstract|features|summary|about|sisu/; @help.abstract - when /ext(?:ernal)?(?:_?prog(?:rams)?)?/; @help.external_programs - when /ya?ml/; @help.yaml - when /sitemaps?/; @help.sitemap - when /(?:short)?cuts?/; @help.shortcuts - when /ansi|colors?/; SiSU_Screen::Ansi.new('c').colors - else @help.summary - end - print help_list - print help_prompt - gotten=nil - gotten=gets - end - rescue - #STDERR.puts Ansi.new($!, $@).rescue - # dies silently... for now, silence of use in connection with "sisu ~ commands" etc. - ensure - end - end - def summary - print < - ------------------------------------------ - #{@cX.green}~##{@cX.off} unnumbered paragraph (place marker at end of paragraph) - #{@cX.green}-##{@cX.off} unnumbered paragraph, delete when not required (place marker at end of paragraph) [used in dummy headings, eg. for segmented html] - ------------------------------------------ - manual page breaks (LaTeX/pdf) - #{@cX.green}<:pb>#{@cX.off} page break, which breaks a page, starting a new page in single column text and a new column in double column text - #{@cX.green}<:pn>#{@cX.off} page new, which starts a new page, in both single and double column text (leaving an empty column in double column text if necessary). - Note: page breaks are usually introduced to pdfs either as header instructions, indicating that pages should break at given levels - ------------------------------------------ - #{@cX.cyan}Composite documents#{@cX.off} - It is possible to build a document by creating a master document that requires other documents. The documents required may complete documents that could be generated independently, or they could be markup snippets, prepared so as to be easily available to be placed within another text. If the calling document is a master document (built mainly from other documents), it should be named with the suffix #{@cX.blue}.ssm#{@cX.off} Within this document you would provide information on the other documents that should be included within the text. These may be other documents that would be processed in a regular way, or markup bits prepared only for inclusion within a master document #{@cX.blue}.sst#{@cX.off} regular markup file, or #{@cX.blue}.ssi#{@cX.off} (insert/information) A secondary file of the composite document is built prior to processing with the same prefix and the suffix #{@cX.blue}.ssm.sst#{@cX.off} - - #{@cX.cyan}#basic sisu markup alternatives#{@cX.off} - #{@cX.green}{#{@cX.off}filename.ssi#{@cX.green}}require#{@cX.off} - #{@cX.green}<< {#{@cX.off}filename.ssi#{@cX.green}}#{@cX.off} - - #{@cX.cyan}#using textlink alternatives#{@cX.off} - #{@cX.green}|#{@cX.off}filename.ssi#{@cX.green}|@|^|require#{@cX.off} - #{@cX.green}<< |#{@cX.off}filename.ssi#{@cX.green}|@|^|#{@cX.off} - - #{@cX.cyan}#using thlnk alternatives#{@cX.off} - #{@cX.green}require#{@cX.off} - #{@cX.green}<< #{@cX.off} - - #{@cX.cyan}Composite documents - remote parts#{@cX.off} - Composite documents may be built from remote parts, by using the composite document syntax with a url. This makes sense using either sisu regular syntax (which is just a convenient way of marking up), or thlnk syntax, which also recognises remote urls, and permits hyperlinking ascii to the url location. - - #{@cX.cyan}Remote documents#{@cX.off} - SiSU will download and process remote locations if a url is provided instead of a filename. [this at present works only for sisu markup files without images] - - ------------------------------------------ - #{@cX.green}%#{@cX.off}#{@cX.off} add a comment to text, that will be removed prior to processing (place marker at beginning of line) - #{@cX.green}\\#{@cX.off}#{@cX.off} escape a sepcial character, whether general: { } < > or contextual special characters, (in combination with other characters) ~ - _ / % ^ and occasionally ! # + , - #{@cX.green}%%#{@cX.off}#{@cX.off} same as above but recognised by vim folds for placing fold in document text, in addition to headers and headings - ------------------------------------------ - - #{@cX.ruby}More HELP on Markup#{@cX.off} markup help is available on: - document wide instructions: headers (document structure) - general text markup: headings; endnotes; tables (which also includes a note on preformatted text) - configuration and customisation - document or site wide customisation: customise; skin -WOK - help_markup -# {../_sisu/image/tux.png http://www.jus.uio.no/sisu/ w=64 c=\"a better way\" }:image depreciated image eg -# old form - end - def example - help_markup - end - def example37 - print <. - - If you have Internet connection, the latest version of the GPL should be - available at these locations: - <#{@cX.blue}http://www.fsf.org/licenses/gpl.html#{@cX.off}> - <#{@cX.blue}http://www.gnu.org/licenses/gpl.html#{@cX.off}> - <#{@cX.blue}http://www.jus.uio.no/sisu/gpl.fsf#{@cX.off}> - - * SiSU uses: - * Standard SiSU markup syntax, - * Standard SiSU meta-markup syntax, and the - * Standard SiSU object citation numbering and system - - * Hompages: - <#{@cX.blue}http://www.jus.uio.no/sisu#{@cX.off}> - <#{@cX.blue}http://www.sisudoc.org#{@cX.off}> - - * Download: - <#{@cX.blue}http://www.jus.uio.no/sisu/SiSU/download.html#{@cX.off}> - - Ralph Amissah - <#{@cX.blue}ralph@amissah.com#{@cX.off}> - <#{@cX.blue}ralph.amissah@gmail.com#{@cX.off}> - -WOK - end - def standards - print <to bold to indent for superscript for subscript text - -_1 at the beginning of a line indents the paragraph - -_2 at the beginning of a line double indents the paragraph - -Others include - -Other things to note: - -By default paragraphs are automatically numbered... and is the same across all output formats -This makes citation a lot easier... regardless of the form of output that is being looked at -It also permits the building of various addons, like the concordance feature which identifies each word and the paragraphs in which the word appears with links to the paragraph... - -Urls are automatically turned to live links in the html and pdf files created... -WOK - end - end -end -__END__ - diff --git a/lib/sisu/v0/html.rb b/lib/sisu/v0/html.rb deleted file mode 100644 index 39775832..00000000 --- a/lib/sisu/v0/html.rb +++ /dev/null @@ -1,703 +0,0 @@ -# coding: utf-8 -=begin - - * Name: SiSU - - * Description: a framework for document structuring, publishing and search - - * Author: Ralph Amissah - - * Copyright: (C) 1997 - 2009 Ralph Amissah All Rights Reserved. - - * License: GPL 3 or later: - - SiSU, a framework for document structuring, publishing and search - - Copyright (C) Ralph Amissah - - This program is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by the Free - Software Foundation, either version 3 of the License, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - more details. - - You should have received a copy of the GNU General Public License along with - this program. If not, see . - - If you have Internet connection, the latest version of the GPL should be - available at these locations: - - - - - - - - * SiSU uses: - * Standard SiSU markup syntax, - * Standard SiSU meta-markup syntax, and the - * Standard SiSU object citation numbering and system - - * Hompages: - - - - * Download: - - - * Ralph Amissah - - - - ** Description: html generation, processing - -=end -module SiSU_HTML - require 'pstore' - require "#{SiSU_lib}/particulars" - include SiSU_Particulars - require "#{SiSU_lib}/defaults" - include SiSU_Viz - require "#{SiSU_lib}/html_table" - require "#{SiSU_lib}/html_format" - include SiSU_HTML_Format - require "#{SiSU_lib}/html_segments" - require "#{SiSU_lib}/html_scroll" - include SiSU_HTML_seg - require "#{SiSU_lib}/html_promo" - include SiSU_HTML_promo - require "#{SiSU_lib}/html_tune" - include SiSU_HTML_Tune - require "#{SiSU_lib}/shared_xml" - require "#{SiSU_lib}/shared_structure" - class Source - def initialize(opt) - @opt=opt - @particulars=SiSU_Particulars::Combined_singleton.instance.get_all(opt) - end - def read - songsheet - end - def songsheet - begin - @md=@particulars.md - @fnb=@md.fnb - @env=@particulars.env - loc=@env.url.output_tell - tool=if @opt.cmd =~/z/; "#{@env.program.web_browser} #{loc}/#@fnb/#{@md.fn[:index]}" - elsif @opt.cmd =~/[MVv]/; "#{@env.program.web_browser} #{loc}/#@fnb/#{@md.fn[:index]}" - else '' - end - SiSU_Screen::Ansi.new(@opt.cmd,'HTML',tool).green_hi_blue unless @opt.cmd =~/q/ - SiSU_Screen::Ansi.new(@opt.cmd,@opt.fns,"#{@env.path.output_tell}/#@fnb/#{@md.fn[:index]}").flow if @opt.cmd =~/[MV]/ - SiSU_Env::Info_skin.new(@md).select - data=nil - my_make=SiSU_Env::Create_file.new(@opt.cmd,@opt.fns,@md) #Beware #FIX opt and md, both not necessary - SiSU_Env::SiSU_file.new(@md).mkdir - @tuned_file_array=SiSU_HTML::Source::Html_environment.new(@particulars).tuned_file_instructions - data=@tuned_file_array - scr_endnotes=SiSU_HTML::Source::Endnotes.new(data,@md).scroll - toc=SiSU_HTML::Source::Toc.new(data,@md).songsheet - links_guide=SiSU_HTML::Source::Links_guide.new(data,@md).toc - data=@tuned_file_array - scr_toc=SiSU_HTML::Source::Scroll_head_and_segtoc.new(@md,toc,links_guide).in_common #watch - SiSU_HTML::Source::Seg.new(data,@md).songsheet - data=@tuned_file_array - scr=SiSU_HTML::Source::Scroll.new(data,@md).songsheet - scroll=SiSU_HTML::Source::Scroll_output.new(scr_toc,scr[:body],scr_endnotes,scr[:metadata],scr[:owner_details],scr[:tails],@md).publish - SiSU_HTML::Source::Output.new(scroll,@md).scroll - rescue; SiSU_Errors::Info_error.new($!,$@,@opt.cmd,@opt.fns).error - ensure - unless @opt.cmd =~/[MV]/ #check maintenance flag - texfiles=Dir["#{@env.path.tune}/#{@opt.fns}*"] - texfiles.each do |f| - if FileTest.file?(f) - File.unlink(f) - end - end - end - SiSU_Env::Create_file.new(@opt.cmd,@opt.fns).param_instantiate - @@flag,@@scr,@@seg,@@seg_endnotes,@@seg_subtoc,@@seg_ad={},{},{},{},{},{} - @@seg_total,@@tracker,@@loop_count,@@tablehead,@@number_of_cols=0,0,0,0,0 - @@seg_name,@@seg_name_html,@@seg_subtoc_array,@@seg_endnotes_array,@@segtocband,@@tablefoot=Array.new(7){[]} - @@filename_seg,@@seg_url,@@fn,@@to_lev4,@@get_hash_to,@@get_hash_fn='','','','','','','' - @@is4=@@is3=@@is2=@@is1=@@header1=@@header2=@@header3=@@header4=0 - end - end - private - class Html_environment - def initialize(particulars) - @particulars=particulars - @md,@env=particulars.md,particulars.env - @vz=SiSU_Env::Get_init.instance.skin - @env,@css,@symlnk=particulars.env,SiSU_Style::CSS.new,SiSU_Env::Create_system_link.new #home - end - def suffix_linkname #not used at present - sfx=if @md.cmd =~/h/; '.html' - else '' - end - end - def link_images - @symlnk.images - end - def directories - my_make=SiSU_Env::Create_file.new(@md.cmd,@md.fns) - @path={ :root=>my_make.html_root } - title=File.basename(@md.fns,'.rb') - SiSU_Env::SiSU_file.new(@md).mkdir - end - def tuned_file_instructions - @tell=SiSU_Screen::Ansi.new(@md.cmd) - @md.cmd=@md.cmd.gsub(/H/,'h') - @md.file_type='html' if @md.cmd =~/[hon]/ - directories - newfilename=%{#{@env.path.output}/#{@md.fnb}/#{@md.fn[:index]}} if @md.file_type =~/html/ - dal_array=@particulars.dal_array # dal file drawn here - @tuned_file_array=SiSU_HTML_Tune::Tune.new(dal_array,@md).songsheet - @tuned_file_array - end - end - class Split_text_object s_lnk_url,:lnk_txt =>s_lnk_lnk,:target =>target} - lev_para_ocn=SiSU_HTML_Format::Format_toc.new(@md,txt_obj) - @links_guide_toc << lev_para_ocn.links_guide if s_lnk_lnk - end - end - end - format_head_toc=SiSU_HTML_Format::Head_toc.new(@md) - @links_guide_toc << format_head_toc.links_guide_close #(guide_type) - @links_guide_toc - end - end - class Endnotes - include SiSU_HTML_Format - def initialize(data,md) - @data,@md=data,md - end - def scroll - @scr_endnotes=[] - format_head_scroll=SiSU_HTML_Format::Head_scroll.new(@md) - @scr_endnotes << format_head_scroll.title_endnote - @data.each do |para| - pg=para.dup - unless pg =~/^#{Mx[:gr_o]}code#{Mx[:gr_c]}/ - if pg =~/(?:#{Mx[:en_a_o]}|#{Mx[:en_b_o]})[\d*+]+ note} - format_scroll=SiSU_HTML_Format::Format_scroll.new(@md,txt_obj) - @scr_endnotes << format_scroll.endnote_body - end - end - end - end - @scr_endnotes - end - end - class Toc [],:seg_mini=>[],:scr=>[] } - @@seg_url='' - @@dp,@@firstseg=nil,nil - def initialize(data='',md=nil) - @data,@md=data,md - @vz=SiSU_Env::Get_init.instance.skin - @dp=@@dp ||=SiSU_Env::Info_env.new.digest.pattern - @pat_heading=/^(?:#{Mx[:lv_o]}[1-6]:\S*?#{Mx[:lv_c]}\s*)?(.*)#{Mx[:id_o]}~(\d+);(?:[hm]|[0-6]:)\d+;\w\d+#{Mx[:id_c]}#{Mx[:id_o]}#@dp:#@dp#{Mx[:id_c]}$/ - @pat_strip_heading_name=/(.+?)<\/a>/ - @tell=SiSU_Screen::Ansi.new(@md.cmd) if @md - end - def songsheet #extracts toc for scroll & seg - SiSU_Screen::Ansi.new(@md.cmd,'Toc').txt_grey unless @md.cmd =~/q/ - toc=nil - @@firstseg=nil - @@toc={ :seg=>[],:seg_mini=>[],:scr=>[] } - @data.each do |para| - if para =~/^(?:#{Mx[:lv_o]}[1-6]:|4~!)/ - para_toc=para.dup - para_toc.gsub!(/  [\d*+]+<\/sup> <\/a>\s*(?:#{Mx[:en_a_o]}|#{Mx[:en_b_o]}).+?(?:#{Mx[:en_a_c]}|#{Mx[:en_b_c]})/m,'') #remove endnotes from toc - toc=case para_toc - when /^\s*#{Mx[:lv_o]}1:\S*/; Toc.new(para_toc,@md).level_1 - when /^\s*#{Mx[:lv_o]}2:\S*/; Toc.new(para_toc,@md).level_2 - when /^\s*#{Mx[:lv_o]}3:\S*/; Toc.new(para_toc,@md).level_3 - when /^\s*#{Mx[:lv_o]}4:\S+/; Toc.new(para_toc,@md).level_4 - when /^\s*#{Mx[:lv_o]}5:\S*/; Toc.new(para_toc,@md).level_5 - when /^\s*#{Mx[:lv_o]}6:\S*/; Toc.new(para_toc,@md).level_6 - when /^\s*4~!/; Toc.new(para_toc).level_crosslink - else - end - if @@firstseg.nil? \ - and para=~/^#{Mx[:lv_o]}4:\S+?#{Mx[:lv_c]}/ - @@firstseg=/^#{Mx[:lv_o]}4:(\S+?)#{Mx[:lv_c]}/.match(para)[1] - end - if toc - begin - @@toc[:seg] << toc[:seg] if toc[:seg] - @@toc[:seg_mini] << toc[:seg_mini] if toc[:seg_mini] - @@toc[:scr] << toc[:scr] if toc[:scr] - rescue; SiSU_Errors::Info_error.new($!,$@,@md.cmd,@md.fns).error - end - end - end - end - @md.firstseg=@@firstseg - @@toc - end - def minitoc - minitoc=@@toc[:seg_mini].join("\n") - '
' + minitoc + '
' - end - protected - def rss #sort all wrong, disabled but kept - @@toc[:seg] <<< -
-

-(relatively static) RSS feeds for DOCUMENTS:
-RSS feed http://www.jus.uio.no/lm/rssfeed/documents.xml
-RSS feed http://www.jus.uio.no/lm/rssfeed/tradelaw.xml
-RSS feed http://www.jus.uio.no/lm/rssfeed/environmental.xml
-

info@address.com
-

-
-WOK - end - def level_doc_owner_details - if @md.stmp =~/\w\w/ - format_head_scroll=SiSU_HTML_Format::Head_scroll.new(@md) - @@toc[:scr] << format_head_scroll.toc_owner_details - end - end -#not used --> - def level_endnotes - if @md.flag_endnotes - format_head_scroll=SiSU_HTML_Format::Head_scroll.new(@md) - @@toc[:scr] << format_head_scroll.toc_endnote - end - end - def level_concordance - format_head_toc=SiSU_HTML_Format::Head_toc.new(@md) - @@toc[:seg_mini] << format_head_toc.mini_seg_concordance - end - def level_metadata - format_head_toc=SiSU_HTML_Format::Head_toc.new(@md) - @@toc[:scr] << format_head_toc.metadata - @@toc[:seg] << format_head_toc.seg_metadata - @@toc[:seg_mini] << format_head_toc.mini_seg_metadata - end - def level_word_index - format_head_toc=SiSU_HTML_Format::Head_toc.new(@d0c) - @@toc[:scr] << format_head_toc.concordance - @@toc[:seg] << format_head_toc.concordance - @@toc[:seg_mini] << format_head_toc.mini_concordance - end -# <-- not used - def level_1 - para=@data - unless para =~/#{Mx[:id_o]}~0;(?:\w|[0-6]:)\d+;\w\d+#{Mx[:id_c]}#{Mx[:id_o]}#@dp:#@dp#{Mx[:id_c]}$/ - para.gsub!(@pat_strip_heading_name,'\1') - end - para[@pat_heading] - linkname,link=$1.strip,$2 if $& - if link \ - and link !~/#/ #% keep eye on link - p_num=SiSU_HTML_Format::Paragraph_number.new(@md,link) - end - title=unless para =~/Document Information/; linkname - else - link='metadata' - %{
#{linkname}} - end - toc={} - txt_obj={:txt =>title} - format_toc=SiSU_HTML_Format::Format_toc.new(@md,txt_obj) - toc[:seg]=if para =~/^#{Mx[:lv_o]}\d:meta^#{Mx[:lv_c]}\s*Document Information/ - format_toc.lev0 - else format_toc.lev1 - end - toc[:seg_mini]=if para =~/^#{Mx[:lv_o]}\d:meta#{Mx[:lv_c]}\s*Document Information/ - x=if @md.concord_make - format_toc.mini_concord_tail - else format_toc.mini_tail - end - else format_toc.mini_lev1 - end - title=if para =~/(#{Mx[:id_o]}~0;(?:\w|[0-6]:)\d+;\w\d+#{Mx[:id_c]}#{Mx[:id_o]}#@dp:#@dp#{Mx[:id_c]})$/ - m=/#{$1}/ - para.gsub!(m,'') - if para=~/^#{Mx[:lv_o]}\d:meta#{Mx[:lv_c]}\s*Document Information/ - %{#{linkname}} - else linkname - end - else - @@toc[:scr] << '
' - link=if para =~/#{Mx[:id_o]}~[1-9];([0-6]):\d+;\w\d+#{Mx[:id_c]}#{Mx[:id_o]}#@dp:#@dp#{Mx[:id_c]}$/; $1 - else '' - end - %{#{linkname}} - end - txt_obj={:txt =>title} - format_toc=SiSU_HTML_Format::Format_toc.new(@md,txt_obj) - toc[:scr]=if para =~/^#{Mx[:lv_o]}\d:meta^#{Mx[:lv_c]}\s*Document Information/ - format_toc.lev0 - else format_toc.lev1 - end - toc - end - def level_2 - para=@data - unless para =~/#{Mx[:id_o]}~0;(?:\w|[0-6]:)\d+;\w\d+#{Mx[:id_c]}#{Mx[:id_o]}#@dp:#@dp#{Mx[:id_c]}$/ - para.gsub!(@pat_strip_heading_name,'\1') - end - para[@pat_heading] - linkname,ocn=$1.strip,$2 if $& - if ocn \ - and ocn !~/#/ - p_num=SiSU_HTML_Format::Paragraph_number.new(@md,ocn) - end - txt_obj={:txt =>linkname} - format_toc=SiSU_HTML_Format::Format_toc.new(@md,txt_obj) - toc={} - toc[:seg]=format_toc.lev2 - toc[:seg_mini]=format_toc.mini_lev2 - if para =~/(#{Mx[:id_o]}~0;(?:\w|[0-6]:)\d+;\w\d+#{Mx[:id_c]}#{Mx[:id_o]}#@dp:#@dp#{Mx[:id_c]})$/ - m=/#{$1}/ - para.gsub!(m,'') - title=linkname - else title=%{#{p_num.goto}#{linkname}} - end - txt_obj={:txt =>title} - format_toc=SiSU_HTML_Format::Format_toc.new(@md,txt_obj) - toc[:scr]=format_toc.lev2 - toc - end - def level_3 - para=@data - para.gsub!(@pat_strip_heading_name,'\1') - para.gsub(/(.*?)<\/a>(.*)/,'\1') #2002w42 altered gsub! - problematic? - suspect - para[@pat_heading] - linkname,ocn=$1.strip,$2 if $& - if ocn \ - and ocn !~/#/ - p_num=SiSU_HTML_Format::Paragraph_number.new(@md,ocn) - end - txt_obj={:txt =>linkname} - format_toc=SiSU_HTML_Format::Format_toc.new(@md,txt_obj) - toc={} - toc[:seg]=format_toc.lev3 - toc[:seg_mini]=format_toc.mini_lev3 - if para =~/(#{Mx[:id_o]}~0;(?:\w|[0-6]:)\d+;\w\d+#{Mx[:id_c]}#{Mx[:id_o]}#@dp:#@dp#{Mx[:id_c]})$/ - m=/#{$1}/ - para.gsub!(m,'') - title=linkname - else title=%{#{p_num.goto}#{linkname}} - end - txt_obj={:txt =>title} - format_toc=SiSU_HTML_Format::Format_toc.new(@md,txt_obj) - toc[:scr]=format_toc.lev3 - toc - end - def level_4 - para=@data - unless para =~/~metadata/ - unless para =~/#{Mx[:id_o]}~0;(?:\w|[0-6]:)\d+;\w\d+#{Mx[:id_c]}#{Mx[:id_o]}#@dp:#@dp#{Mx[:id_c]}$/ - para.gsub!(@pat_strip_heading_name,'\1') - para[@pat_heading] - linkname,ocn=$1.strip,$2 if $& - p_num=SiSU_HTML_Format::Paragraph_number.new(@md,ocn) if ocn - end - para.gsub!(/#{Mx[:id_o]}~0;(?:\w|[0-6]:)\d+;\w\d+#{Mx[:id_c]}#{Mx[:id_o]}#@dp:#@dp#{Mx[:id_c]}$/,'') - if para =~/^#{Mx[:lv_o]}4:/ - seg_link=para.gsub(/^\s*#{Mx[:lv_o]}4:(\S+?)#{Mx[:lv_c]}\s*(.+?)$/, - %{ - \\2 - }) - if seg_link =~/(#{Mx[:id_o]}\~\d+;(?:\w|[0-6]:\d+);\w\d+#{Mx[:id_c]}#{Mx[:id_o]}#@dp:#@dp#{Mx[:id_c]})$/m - m=/#{$1}/m - seg_link.gsub!(m,'') - end - @@seg_url=para[/^#{Mx[:lv_o]}4:(\S+?)#{Mx[:lv_c]}.+?$/,1] - elsif para =~/\d+.\d+.\d+.\d+|\d+.\d+.\d+|\d+.\d+|\d+/ - seg_link=para.gsub(/^\s*(#{@md.lv4}\s+)\s*(\d+.\d+.\d+.\d+|\d+.\d+.\d+|\d+.\d+|\d+)(.*)/, - %{\\1 \\2 \\3 }) - end - p_num=SiSU_HTML_Format::Paragraph_number.new(@md,ocn) if ocn - txt_obj={:txt =>seg_link} - format_toc=SiSU_HTML_Format::Format_toc.new(@md,txt_obj) - toc={} - toc[:seg]=format_toc.lev4 - toc[:seg_mini]=format_toc.mini_lev4 - if para =~/#{Mx[:id_o]}~0;(?:\w|[0-6]:)\d+;\w\d+#{Mx[:id_c]}#{Mx[:id_o]}#@dp:#@dp#{Mx[:id_c]}$/ - m=/#{$1}/ - para.gsub!(m,'') - title=linkname - else title=%{#{p_num.goto}#{linkname}} if p_num - end - txt_obj={:txt =>title} - format_toc=SiSU_HTML_Format::Format_toc.new(@md,txt_obj) - toc[:scr]=format_toc.lev4 - toc - end - end - def level_5 - para=@data - if para !~/#{Mx[:id_o]}~0;(?:\w|[0-6]:)\d+;\w\d+#{Mx[:id_c]}#{Mx[:id_o]}#@dp:#@dp#{Mx[:id_c]}$/ - para.gsub!(@pat_strip_heading_name,'\1') - end - para[@pat_heading] - linkname,ocn=$1.strip,$2 if $& - if ocn \ - and ocn !~/#/ - p_num=SiSU_HTML_Format::Paragraph_number.new(@md,ocn) - end - toc={} - if para =~/#{Mx[:id_o]}~0;(?:\w|[0-6]:)\d+;\w\d+#{Mx[:id_c]}#{Mx[:id_o]}#@dp:#@dp#{Mx[:id_c]}$/ - m=/#{$1}/ - para.gsub!(m,'') - title=linkname - else - lnk_n_txt=%{ - #{linkname} - } - txt_obj={:txt =>lnk_n_txt} - format_toc=SiSU_HTML_Format::Format_toc.new(@md,txt_obj) - toc[:seg]=format_toc.lev5 - toc[:seg_mini]=format_toc.mini_lev5 - title=%{#{p_num.goto}#{linkname}} - end - txt_obj={:txt =>title} - format_toc=SiSU_HTML_Format::Format_toc.new(@md,txt_obj) - toc[:scr]=format_toc.lev5 - toc - end - def level_6 - para=@data - if para !~/#{Mx[:id_o]}~0;(?:\w|[0-6]:)\d+;\w\d+#{Mx[:id_c]}#{Mx[:id_o]}#@dp:#@dp#{Mx[:id_c]}$/ - para.gsub!(@pat_strip_heading_name,'\1') - end - para[@pat_heading] - linkname,ocn=$1.strip,$2 if $& - if ocn \ - and ocn !~/#/ - p_num=SiSU_HTML_Format::Paragraph_number.new(@md,ocn) - end - toc={} - if para =~/#{Mx[:id_o]}~0;(?:\w|[0-6]:)\d+;\w\d+#{Mx[:id_c]}#{Mx[:id_o]}#@dp:#@dp#{Mx[:id_c]}$/ - m=/#{$1}/ - para.gsub!(m,'') - title=linkname - else - lnk_n_txt=%{ - #{linkname} - } - txt_obj={:txt =>lnk_n_txt} - format_toc=SiSU_HTML_Format::Format_toc.new(@md,txt_obj) - toc[:seg]=format_toc.lev6 - toc[:seg_mini]=format_toc.mini_lev6 - title=%{#{p_num.goto}#{linkname}} - end - txt_obj={:txt =>title} - format_toc=SiSU_HTML_Format::Format_toc.new(@md,txt_obj) - toc[:scr]=format_toc.lev6 - toc - end - def level_crosslink - para=@data - if para !~/^4~!/ - para.gsub!(/^4~!\s+(\S+)\s+(.+)/, - %{ -
- #{@png.crosslink_ext} -   \\2 - <\/a> -
-}) - else - para.gsub!(/^4~!\s+(\S+)\s+(.+)/, - %{
- - - #{@png.crosslink} -   \\2 - <\/a> -
-}) - end - end - end - class Scroll_head_and_segtoc < Toc - def initialize(md='',toc='',links_guide_toc='') - @md,@toc,@links_guide_toc=md,toc,links_guide_toc - @vz=SiSU_Env::Get_init.instance.skin - end - def in_common - toc_shared=[] - @segtoc=[] - SiSU_Screen::Ansi.new(@md.cmd,'Scroll & Segtoc').txt_grey unless @md.cmd =~/q/ - format_head_toc=SiSU_HTML_Format::Head_toc.new(@md) - dochead=format_head_toc.head - dochead.gsub!(/toc\.(html)/,'doc.\1') #kludge - ads=SiSU_HTML_promo::Ad.new(@md) - toc_shared << dochead << ads.div.major - @segtoc << format_head_toc.head << ads.div.major - toc_shared << format_head_toc.toc_head_escript if SiSU_HTML_Format::Head_toc.method_defined? :toc_head_escript - @segtoc << format_head_toc.toc_head_escript if SiSU_HTML_Format::Head_toc.method_defined? :toc_head_escript - toc_shared << format_head_toc.scroll_head_navigation_band - if @md.rights - rights=format_head_toc.rights - rights=SiSU_HTML_Tune::Clean_html.new(rights).clean - end - if @md.prefix_b - prefix_b=format_head_toc.prefix_b - prefix_b=SiSU_HTML_Tune::Clean_html.new(prefix_b).clean - end - @seg_toc_band=format_head_toc.seg_head_navigation_band('pdf') #bug, vary depending on type of doc !! examine - @seg_toc_band_bottom=format_head_toc.seg_head_navigation_band_bottom('pdf') #bug, vary depending on type of doc !! examine - @segtoc << @seg_toc_band - toc_shared << format_head_toc.scroll_head_title_banner_open - @segtoc << format_head_toc.seg_head_title_banner_open - tmp_head=nil - doc_title_endnote=@md.title.gsub(/(\*+)/,'\1') - tmp_head=doc_title_endnote + "\n" - txt_obj={:txt =>tmp_head} - format_txt_obj=SiSU_HTML_Format::Format_text_object.new(@md,txt_obj) - toc_shared << format_txt_obj.center_bold - @segtoc << format_txt_obj.center_bold - if not @md.subtitle.nil? \ - and not @md.subtitle.empty? - tmp_head=@md.subtitle + "\n" - txt_obj={:txt=>tmp_head} - format_txt_obj=SiSU_HTML_Format::Format_text_object.new(@md,txt_obj) - toc_shared << format_txt_obj.center_bold - @segtoc << format_txt_obj.center_bold - end - if @md.author - creator_endnote=@md.author.gsub(/(\*+)/,%{ \\1}) - tmp_head=creator_endnote + "\n" - txt_obj={:txt =>tmp_head} - format_txt_obj=SiSU_HTML_Format::Format_text_object.new(@md,txt_obj) - toc_shared << format_txt_obj.center_bold - @segtoc << format_txt_obj.center_bold - end - toc_shared << format_head_toc.copyat - @segtoc << format_head_toc.copyat - toc_shared << "#{@vz.table_close*1}\n" - @segtoc << "#{@vz.table_close*1}\n" - tmp_head=nil - if @md.prefix_a - tmp_head ||= %{

#{@md.prefix_a}\n} - toc_shared << tmp_head.dup - @segtoc << tmp_head.dup - end - tmp_head=nil - toc_shared << @links_guide_toc - toc_shared << rights if @md.rights - toc_shared << prefix_b if @md.prefix_b - #Table of Contents added/appended here - toc_shared << @toc[:scr] - @segtoc << @links_guide_toc - @segtoc << @toc[:seg] - @segtoc << rights if @md.rights - @segtoc << prefix_b if @md.prefix_b - #Segtoc tail added here - @segtoc << "

\n" #bugfix sort later DEBUGNOW - @segtoc << @seg_toc_band_bottom - ads=SiSU_HTML_promo::Ad.new(@md) - @segtoc << format_head_toc.seg_navigation_tail << ads.div.close << ads.display << format_head_toc.html_close - @segtoc.flatten!.compact! - Output.new(@segtoc,@md).segtoc - @segtoc=[] - @toc[:scr],@toc[:seg]=[],[] - toc_shared - end - end - class Table < SiSU_HTML_table::Table - end - class Scroll < SiSU_HTML_scroll::Scroll - end - class Scroll_output - def initialize(scr_toc,scr_body,scr_endnotes,scr_metadata,scr_owner_details,scr_tails,md) - @scr_toc,@scr_body,@scr_endnotes,@scr_metadata,@scr_owner_details,@scr_tails,@md=scr_toc,scr_body,scr_endnotes,scr_metadata,scr_owner_details,scr_tails,md - end - def publish - scroll=[] - hr='

' - scroll << @scr_toc << hr << @scr_body << @scr_endnotes << hr << @scr_metadata << @scr_owner_details << @scr_tails - scroll.flatten!.compact! - end - end - class Seg < SiSU_HTML_seg::Seg - end - class Output - @@dp=nil - def initialize(data='',md='') - @data,@md=data,md - @my_make=SiSU_Env::Create_file.new(@md.cmd,@md.fns,@md) - @dp=@@dp ||=SiSU_Env::Info_env.new.digest.pattern - end - def scroll - begin - @filename_html_scroll=@my_make.file_html_scroll(@md) - @data.each do |para| - para.strip! - para.gsub!(/<:.+?>/,'') - para.gsub!(/#{Rx[:mx_fa_clean]}/,'') - unless para =~/\A\s*\Z/ - @filename_html_scroll.puts para,"\n" - end - end - rescue; SiSU_Errors::Info_error.new($!,$@,@md.cmd,@md.fns).error - end - end - def segtoc - begin - @filename_html_segtoc=@my_make.file_html_segtoc(@md) - @filename_html_index=@my_make.file_html_index(@md) - @data.each do |para| - para.strip! - para.gsub!(/|#{Mx[:gr_o]}.*?#{Mx[:gr_c]}|#{Mx[:id_o]}~\d+;(?:[ohm]|[0-6]:)\d+;\w\d+#{Mx[:id_c]}#{Mx[:id_o]}#@dp:#@dp#{Mx[:id_c]}/,'') - unless para =~/\A\s*\Z/ - @filename_html_segtoc.puts para,"\n" - @filename_html_index.puts para,"\n" - end - end - rescue; SiSU_Errors::Info_error.new($!,$@,@md.cmd,@md.fns).error - end - end - end - end -end -__END__ diff --git a/lib/sisu/v0/html_format.rb b/lib/sisu/v0/html_format.rb deleted file mode 100644 index eb29f9f9..00000000 --- a/lib/sisu/v0/html_format.rb +++ /dev/null @@ -1,1425 +0,0 @@ -# coding: utf-8 -=begin - - * Name: SiSU - - * Description: a framework for document structuring, publishing and search - - * Author: Ralph Amissah - - * Copyright: (C) 1997 - 2009 Ralph Amissah All Rights Reserved. - - * License: GPL 3 or later: - - SiSU, a framework for document structuring, publishing and search - - Copyright (C) Ralph Amissah - - This program is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by the Free - Software Foundation, either version 3 of the License, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - more details. - - You should have received a copy of the GNU General Public License along with - this program. If not, see . - - If you have Internet connection, the latest version of the GPL should be - available at these locations: - - - - - - - - * SiSU uses: - * Standard SiSU markup syntax, - * Standard SiSU meta-markup syntax, and the - * Standard SiSU object citation numbering and system - - * Hompages: - - - - * Download: - - - * Ralph Amissah - - - - ** Description: html formating, css template - -=end -module SiSU_HTML_Format - include SiSU_Viz - class Paragraph_number - def initialize(md,ocn) - @md,@ocn=md,ocn[/(\d+)/m,1] - @ocn ||='' - vz=SiSU_Env::Get_init.instance.skin - @skin_no_ocn=if defined? vz.ocn_display_off \ - and vz.ocn_display_off == true - true - else false - end - end - def ocn_display - if @md.markup.inspect =~/no_ocn/ \ - or @md.mod.inspect =~/--no-ocn/ \ - or @skin_no_ocn - ocn_class='ocn_off' - @ocn.gsub(/^(\d+|)$/, - %{}) - elsif @ocn.to_i == 0 - @ocn.gsub(/^(\d+|)$/, - %{}) - else - ocn_class='ocn' - @ocn.gsub(/^(\d+|)$/, - %{}) - end - end - def name - %{} - end - def id #w3c? "tidy" complains about numbers as identifiers ! annoying - %{id="o#{@ocn}"} - end - def goto - %{} - end - end - class Head_information - include SiSU_Viz - attr_reader :md,:pdf,:rdf,:vz - def initialize(md) - @md=md - @rdf=SiSU_XML_tags::RDF.new(md) - # DublinCore 1 - title - @vz=SiSU_Env::Get_init.instance.skin - @css=SiSU_Env::CSS_stylesheet.new(md) - @seg_name_html=(SiSU_HTML::Source::Seg.new.seg_name_html || []) - @seg_name_html_tracker=(SiSU_HTML::Source::Seg.new.seg_name_html_tracker || []) - case @md.file_type - when /php/; @index='index' # @index="index.php" - else @index='index' - end - @metalink='#metadata' - @tocband_scroll,@tocband_segtoc=nil,nil - end - def doc_type - %{ -\n} - end - def toc_head_escript #embedded script in this case PHP - # %{

PHP or other embedded script for object persistence may go HERE

} - end - def seg_head_escript #embedded script in this case PHP - # %{

PHP or other embedded script for object persistence may go HERE

} - end - def table_close - %{ -#{@vz.table_close}} - end - def buttons_home - %{ - #{@vz.banner_home_and_index_buttons} -} - end - def copyat - %{#{@vz.paragraph_font_tiny}copy @ -
- #{@vz.txt_home} - } - end - def html_close #moved - %{ -} - end - end - class Widget < Head_information - def initialize(md) - super(md) - @md=md - @cf_defaults=SiSU_Env::Info_processing_flag.new - end - def home - %{
- - #{@vz.png_homepage} - - - #{text} - - - - #{text} - - - - #{@vz.nav_txt_manifest} - - - - #{@vz.nav_txt_pdf_portrait} - - - - #{@vz.nav_txt_pdf_landscape} - - - - #{@vz.nav_txt_odf} - - - - #{text} - -
-#{pdf} -
- #{@vz.banner_band} - -   -#{@vz.table_close} -

} - end - def concordance_navigation_band(type='') - if type=~/pdf/ - @tocband_concordance=make_concordance - end - %{ - - -
- #{@vz.banner_band} - - #@tocband_concordance - -   - #{@vz.png_nav_toc} -   -#{@vz.table_close} -

} - end - def seg_head_navigation_band(type='') - if type=~/pdf/ - @tocband_segtoc=make_scroll_seg_pdf - end - firstseg=%{ - #{@vz.png_nav_nxt} - } if @md.firstseg =~/\S+/ - %{ - - - -} - %{
- #{@vz.banner_band} - - #@tocband_segtoc - -  #{firstseg}  -#{@vz.table_close} -

} - end - def seg_head_navigation_band_bottom(type='') - if type=~/pdf/ - @tocband_segtoc=make_scroll_seg_pdf - end - firstseg=%{ - #{@vz.png_nav_nxt} - } if @md.firstseg =~/\S+/ - %{ - - - -} - %{
-   - - #@tocband_segtoc - -  #{firstseg}  -#{@vz.table_close} -

} - end - def manifest_link(text) - %{ - #{text} - } - end - def concordance_link(text) - if @md.concord_make - %{ - - #{text} - - } - else '' - end - end - def make_seg_scroll_pdf - wgt=Widget.new(@md) - scroll=%{

- #{@vz.nav_txt_doc_link} -
- - #{scroll} - #{wgt.seg(@vz.nav_txt_toc_link)}#{wgt.pdf}#{wgt.odf} - #{wgt.concordance(@vz.nav_txt_concordance)} - #{wgt.manifest} - #{wgt.search} - #{wgt.home} -
} - end - def make_scroll_seg_pdf - manifest=scroll=seg='' - wgt=Widget.new(@md) - seg=%{

- #{@vz.nav_txt_toc_link} -
- - #{seg} - #{wgt.scroll(@vz.nav_txt_doc_link)}#{wgt.pdf}#{wgt.odf} -
- #{wgt.concordance(@vz.nav_txt_concordance)} - #{wgt.manifest} - #{wgt.search} - #{wgt.home} -
} - end - def make_concordance - manifest=scroll=seg='' - wgt=Widget.new(@md) - %{ - - #{wgt.seg(@vz.nav_txt_toc_link)}#{wgt.scroll(@vz.nav_txt_doc_link)}#{wgt.pdf}#{wgt.odf} -
- #{wgt.concordance(@vz.nav_txt_concordance)} - #{wgt.manifest} - #{wgt.search} - #{wgt.home} -
} - end - def head - %{#{doc_type} - - - #{@md.html_title} - - -#{@rdf.rdftoc} -#{@rdf.metatag_html} -#{@css.html} - -#{@vz.color_body} - - - -#{@vz.js_top}} - end - def concordance - if @md.concord_make - %{#{@vz.margin_css} -

- - Concordance - -

-#{@vz.table_close}} - else - %{#{@vz.margin_css} -#{@vz.table_close}} - end - end - def links_guide_vertical_open #??? - url=(defined? @vz.url_hp) && @vz.url_hp =~/^http:\/\/\S+$/ ? @vz.url_hp : @vz.url_home - %{ -