sisu 7.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/bin/sisu +367 -0
- data/bin/sisugem +367 -0
- data/data/sisu/image/arrow_next_red.png +0 -0
- data/data/sisu/image/arrow_prev_red.png +0 -0
- data/data/sisu/image/arrow_up_red.png +0 -0
- data/data/sisu/image/b_bluebell.png +0 -0
- data/data/sisu/image/b_doc.png +0 -0
- data/data/sisu/image/b_epub.png +0 -0
- data/data/sisu/image/b_home.png +0 -0
- data/data/sisu/image/b_info.png +0 -0
- data/data/sisu/image/b_odf.png +0 -0
- data/data/sisu/image/b_pdf.png +0 -0
- data/data/sisu/image/b_search.png +0 -0
- data/data/sisu/image/b_toc.png +0 -0
- data/data/sisu/image/bullet_08.png +0 -0
- data/data/sisu/image/bullet_09.png +0 -0
- data/data/sisu/image/bullet_10.png +0 -0
- data/data/sisu/image/bullet_11.png +0 -0
- data/data/sisu/image/bullet_12.png +0 -0
- data/data/sisu/image/bullet_doc.png +0 -0
- data/data/sisu/image/bullet_red.png +0 -0
- data/data/sisu/image/dot_clear.png +0 -0
- data/data/sisu/image/dot_white.png +0 -0
- data/data/sisu/image/gplv3.png +0 -0
- data/data/sisu/image/gplv3_free_software.png +0 -0
- data/data/sisu/image/next.png +0 -0
- data/data/sisu/image/previous.png +0 -0
- data/data/sisu/image/rb7.ico +0 -0
- data/data/sisu/image/sisu.png +0 -0
- data/data/sisu/image/toctoc.png +0 -0
- data/data/sisu/version.yml +5 -0
- data/lib/sisu.rb +94 -0
- data/lib/sisu/air.rb +80 -0
- data/lib/sisu/ao.rb +590 -0
- data/lib/sisu/ao_character_check.rb +102 -0
- data/lib/sisu/ao_composite.rb +286 -0
- data/lib/sisu/ao_doc_objects.rb +565 -0
- data/lib/sisu/ao_doc_str.rb +2269 -0
- data/lib/sisu/ao_endnotes.rb +136 -0
- data/lib/sisu/ao_expand_insertions.rb +514 -0
- data/lib/sisu/ao_hash_digest.rb +174 -0
- data/lib/sisu/ao_idx.rb +422 -0
- data/lib/sisu/ao_images.rb +187 -0
- data/lib/sisu/ao_metadata.rb +86 -0
- data/lib/sisu/ao_misc_arrange.rb +207 -0
- data/lib/sisu/ao_numbering.rb +720 -0
- data/lib/sisu/ao_persist.rb +194 -0
- data/lib/sisu/ao_references.rb +502 -0
- data/lib/sisu/ao_syntax.rb +640 -0
- data/lib/sisu/cgi.rb +84 -0
- data/lib/sisu/cgi_pgsql.rb +270 -0
- data/lib/sisu/cgi_sql_common.rb +986 -0
- data/lib/sisu/cgi_sqlite.rb +244 -0
- data/lib/sisu/conf.rb +287 -0
- data/lib/sisu/constants.rb +388 -0
- data/lib/sisu/css.rb +3484 -0
- data/lib/sisu/db_columns.rb +1997 -0
- data/lib/sisu/db_create.rb +689 -0
- data/lib/sisu/db_dbi.rb +90 -0
- data/lib/sisu/db_drop.rb +207 -0
- data/lib/sisu/db_import.rb +877 -0
- data/lib/sisu/db_indexes.rb +146 -0
- data/lib/sisu/db_load_tuple.rb +323 -0
- data/lib/sisu/db_remove.rb +182 -0
- data/lib/sisu/db_select.rb +230 -0
- data/lib/sisu/db_sqltxt.rb +173 -0
- data/lib/sisu/db_tests.rb +114 -0
- data/lib/sisu/dbi.rb +166 -0
- data/lib/sisu/dbi_discrete.rb +206 -0
- data/lib/sisu/digests.rb +306 -0
- data/lib/sisu/dp.rb +1606 -0
- data/lib/sisu/dp_identify_markup.rb +161 -0
- data/lib/sisu/dp_make.rb +668 -0
- data/lib/sisu/embedded.rb +149 -0
- data/lib/sisu/errors.rb +84 -0
- data/lib/sisu/generic_parts.rb +131 -0
- data/lib/sisu/git.rb +277 -0
- data/lib/sisu/html.rb +775 -0
- data/lib/sisu/html_concordance.rb +391 -0
- data/lib/sisu/html_format.rb +1348 -0
- data/lib/sisu/html_harvest.rb +109 -0
- data/lib/sisu/html_harvest_author_format.rb +111 -0
- data/lib/sisu/html_harvest_authors.rb +466 -0
- data/lib/sisu/html_harvest_topics.rb +893 -0
- data/lib/sisu/html_lite_shared.rb +324 -0
- data/lib/sisu/html_manifest.rb +1032 -0
- data/lib/sisu/html_minitoc.rb +230 -0
- data/lib/sisu/html_parts.rb +437 -0
- data/lib/sisu/html_persist.rb +237 -0
- data/lib/sisu/html_promo.rb +440 -0
- data/lib/sisu/html_scroll.rb +235 -0
- data/lib/sisu/html_segments.rb +716 -0
- data/lib/sisu/html_shared.rb +62 -0
- data/lib/sisu/html_table.rb +64 -0
- data/lib/sisu/html_tune.rb +301 -0
- data/lib/sisu/hub.rb +277 -0
- data/lib/sisu/hub_actions.rb +1122 -0
- data/lib/sisu/hub_loop_markup_files.rb +170 -0
- data/lib/sisu/hub_options.rb +1695 -0
- data/lib/sisu/i18n.rb +702 -0
- data/lib/sisu/manpage.rb +377 -0
- data/lib/sisu/manpage_format.rb +85 -0
- data/lib/sisu/object_munge.rb +307 -0
- data/lib/sisu/prog_text_translation.rb +1702 -0
- data/lib/sisu/qrcode.rb +754 -0
- data/lib/sisu/relaxng.rb +1153 -0
- data/lib/sisu/remote.rb +246 -0
- data/lib/sisu/rexml.rb +148 -0
- data/lib/sisu/se.rb +158 -0
- data/lib/sisu/se_cleanoutput.rb +145 -0
- data/lib/sisu/se_clear.rb +105 -0
- data/lib/sisu/se_createsite.rb +273 -0
- data/lib/sisu/se_css.rb +221 -0
- data/lib/sisu/se_date.rb +92 -0
- data/lib/sisu/se_db.rb +214 -0
- data/lib/sisu/se_envcall.rb +326 -0
- data/lib/sisu/se_file_op.rb +2758 -0
- data/lib/sisu/se_filemap.rb +247 -0
- data/lib/sisu/se_get_init.rb +238 -0
- data/lib/sisu/se_hub_particulars.rb +234 -0
- data/lib/sisu/se_info_env.rb +2179 -0
- data/lib/sisu/se_info_port.rb +70 -0
- data/lib/sisu/se_info_system.rb +202 -0
- data/lib/sisu/se_load.rb +108 -0
- data/lib/sisu/se_processing.rb +659 -0
- data/lib/sisu/se_programs.rb +394 -0
- data/lib/sisu/se_remotes.rb +553 -0
- data/lib/sisu/se_standardise_lang.rb +176 -0
- data/lib/sisu/se_version.rb +174 -0
- data/lib/sisu/shared_images.rb +137 -0
- data/lib/sisu/shared_markup_alt.rb +336 -0
- data/lib/sisu/shared_metadata.rb +1361 -0
- data/lib/sisu/shared_sem.rb +156 -0
- data/lib/sisu/sisu_thor_lib.rb +407 -0
- data/lib/sisu/sitemaps.rb +224 -0
- data/lib/sisu/src_kdissert_share.rb +102 -0
- data/lib/sisu/src_po4a_share.rb +309 -0
- data/lib/sisu/src_po4a_shelf.rb +1217 -0
- data/lib/sisu/src_po4a_shelf_set.rb +297 -0
- data/lib/sisu/src_po4a_sst_ao_sst.rb +893 -0
- data/lib/sisu/src_po4a_sst_ao_sst_set.rb +284 -0
- data/lib/sisu/src_po4a_sstm.rb +135 -0
- data/lib/sisu/src_shared.rb +347 -0
- data/lib/sisu/src_sisupod_make.rb +171 -0
- data/lib/sisu/src_sisupod_sstm.rb +109 -0
- data/lib/sisu/sst_convert_markup.rb +323 -0
- data/lib/sisu/sst_do_inline_footnotes.rb +440 -0
- data/lib/sisu/sst_from_xml.rb +178 -0
- data/lib/sisu/sst_identify_markup.rb +482 -0
- data/lib/sisu/sst_to_s_xml_sax.rb +471 -0
- data/lib/sisu/termsheet.rb +163 -0
- data/lib/sisu/texinfo.rb +430 -0
- data/lib/sisu/texinfo_format.rb +541 -0
- data/lib/sisu/texpdf.rb +1162 -0
- data/lib/sisu/texpdf_format.rb +1689 -0
- data/lib/sisu/texpdf_parts.rb +235 -0
- data/lib/sisu/txt_asciidoc.rb +354 -0
- data/lib/sisu/txt_asciidoc_decorate.rb +207 -0
- data/lib/sisu/txt_markdown.rb +389 -0
- data/lib/sisu/txt_markdown_decorate.rb +207 -0
- data/lib/sisu/txt_orgmode.rb +376 -0
- data/lib/sisu/txt_orgmode_decorate.rb +186 -0
- data/lib/sisu/txt_output.rb +86 -0
- data/lib/sisu/txt_plain.rb +410 -0
- data/lib/sisu/txt_plain_decorate.rb +189 -0
- data/lib/sisu/txt_read.rb +109 -0
- data/lib/sisu/txt_rst.rb +371 -0
- data/lib/sisu/txt_rst_decorate.rb +186 -0
- data/lib/sisu/txt_shared.rb +241 -0
- data/lib/sisu/txt_textile.rb +367 -0
- data/lib/sisu/txt_textile_decorate.rb +186 -0
- data/lib/sisu/update.rb +141 -0
- data/lib/sisu/urls.rb +696 -0
- data/lib/sisu/utils.rb +232 -0
- data/lib/sisu/utils_composite.rb +115 -0
- data/lib/sisu/utils_response.rb +114 -0
- data/lib/sisu/utils_screen_text_color.rb +472 -0
- data/lib/sisu/utils_spell.rb +99 -0
- data/lib/sisu/webrick.rb +191 -0
- data/lib/sisu/wikispeak.rb +375 -0
- data/lib/sisu/xhtml.rb +472 -0
- data/lib/sisu/xhtml_epub2.rb +890 -0
- data/lib/sisu/xhtml_epub2_concordance.rb +322 -0
- data/lib/sisu/xhtml_epub2_format.rb +2272 -0
- data/lib/sisu/xhtml_epub2_persist.rb +278 -0
- data/lib/sisu/xhtml_epub2_segments.rb +599 -0
- data/lib/sisu/xhtml_epub2_tune.rb +330 -0
- data/lib/sisu/xhtml_parts.rb +183 -0
- data/lib/sisu/xhtml_shared.rb +62 -0
- data/lib/sisu/xhtml_table.rb +97 -0
- data/lib/sisu/xml_docbook5.rb +376 -0
- data/lib/sisu/xml_dom.rb +624 -0
- data/lib/sisu/xml_fictionbook2.rb +389 -0
- data/lib/sisu/xml_format.rb +865 -0
- data/lib/sisu/xml_md_oai_pmh_dc.rb +229 -0
- data/lib/sisu/xml_odf_odt.rb +887 -0
- data/lib/sisu/xml_odf_odt_format.rb +674 -0
- data/lib/sisu/xml_parts.rb +191 -0
- data/lib/sisu/xml_persist.rb +126 -0
- data/lib/sisu/xml_sax.rb +521 -0
- data/lib/sisu/xml_scaffold_structure_collapsed.rb +198 -0
- data/lib/sisu/xml_scaffold_structure_sisu.rb +201 -0
- data/lib/sisu/xml_shared.rb +665 -0
- data/lib/sisu/xml_tables.rb +261 -0
- data/lib/sisu/zap.rb +90 -0
- metadata +251 -0
|
@@ -0,0 +1,244 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
=begin
|
|
3
|
+
|
|
4
|
+
* Name: SiSU
|
|
5
|
+
|
|
6
|
+
** Description: documents, structuring, processing, publishing, search
|
|
7
|
+
*** generates naive cgi search form for search of sisu database (sqlite)
|
|
8
|
+
|
|
9
|
+
** Author: Ralph Amissah
|
|
10
|
+
<ralph@amissah.com>
|
|
11
|
+
<ralph.amissah@gmail.com>
|
|
12
|
+
|
|
13
|
+
** Copyright: (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
|
|
14
|
+
2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 Ralph Amissah,
|
|
15
|
+
All Rights Reserved.
|
|
16
|
+
|
|
17
|
+
** License: GPL 3 or later:
|
|
18
|
+
|
|
19
|
+
SiSU, a framework for document structuring, publishing and search
|
|
20
|
+
|
|
21
|
+
Copyright (C) Ralph Amissah
|
|
22
|
+
|
|
23
|
+
This program is free software: you can redistribute it and/or modify it
|
|
24
|
+
under the terms of the GNU General Public License as published by the Free
|
|
25
|
+
Software Foundation, either version 3 of the License, or (at your option)
|
|
26
|
+
any later version.
|
|
27
|
+
|
|
28
|
+
This program is distributed in the hope that it will be useful, but WITHOUT
|
|
29
|
+
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
|
30
|
+
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
|
31
|
+
more details.
|
|
32
|
+
|
|
33
|
+
You should have received a copy of the GNU General Public License along with
|
|
34
|
+
this program. If not, see <http://www.gnu.org/licenses/>.
|
|
35
|
+
|
|
36
|
+
If you have Internet connection, the latest version of the GPL should be
|
|
37
|
+
available at these locations:
|
|
38
|
+
<http://www.fsf.org/licensing/licenses/gpl.html>
|
|
39
|
+
<http://www.gnu.org/licenses/gpl.html>
|
|
40
|
+
|
|
41
|
+
<http://www.sisudoc.org/sisu/en/manifest/gpl.fsf.html>
|
|
42
|
+
|
|
43
|
+
** SiSU uses:
|
|
44
|
+
* Standard SiSU markup syntax,
|
|
45
|
+
* Standard SiSU meta-markup syntax, and the
|
|
46
|
+
* Standard SiSU object citation numbering and system
|
|
47
|
+
|
|
48
|
+
** Hompages:
|
|
49
|
+
<http://www.jus.uio.no/sisu>
|
|
50
|
+
<http://www.sisudoc.org>
|
|
51
|
+
|
|
52
|
+
** Git
|
|
53
|
+
<http://git.sisudoc.org/gitweb/?p=code/sisu.git;a=summary>
|
|
54
|
+
<http://git.sisudoc.org/gitweb/?p=code/sisu.git;a=blob;f=lib/sisu/cgi_sql_sqlite.rb;hb=HEAD>
|
|
55
|
+
|
|
56
|
+
=end
|
|
57
|
+
module SiSU_CGI_SQLite #% database building documents
|
|
58
|
+
require_relative 'se' # se.rb
|
|
59
|
+
require_relative 'cgi_sql_common' # cgi_sql_common.rb
|
|
60
|
+
include SiSU_CGI_SQL
|
|
61
|
+
class SearchSQLite < CGI_Common
|
|
62
|
+
def initialize(opt,webserv)
|
|
63
|
+
@opt,@webserv=opt,webserv
|
|
64
|
+
@cX=SiSU_Screen::Ansi.new(opt.act[:color_state][:set]).cX
|
|
65
|
+
@env=SiSU_Env::InfoEnv.new('',opt)
|
|
66
|
+
@image_src="#{@env.url.webserv_cgi(opt)}/_sisu/image_sys"
|
|
67
|
+
@name_of={}
|
|
68
|
+
@name_of[:output_dir_structure]=if opt.dir_structure_by.to_s =~/(?:language|filetype|filename)/
|
|
69
|
+
opt.dir_structure_by.to_s
|
|
70
|
+
else 'language'
|
|
71
|
+
end
|
|
72
|
+
@name_of[:lingual]=if opt.lingual.to_s =~/(?:mono|multi)/
|
|
73
|
+
opt.lingual.to_s
|
|
74
|
+
else 'multi'
|
|
75
|
+
end
|
|
76
|
+
@name_of[:host_url_cgi]=%q{http://#{ENV['HTTP_HOST']}#{ENV['PATH_INFO']}}
|
|
77
|
+
@name_of[:host_url_docs]=%q{http://#{ENV['HTTP_HOST']}}
|
|
78
|
+
@name_of[:cgi_script]=%q{#{ENV['SCRIPT_NAME']}}
|
|
79
|
+
@image_src=%q{http://#{ENV['HTTP_HOST']}/_sisu/image_sys}
|
|
80
|
+
@common=SiSU_CGI_SQL::CGI_Common.new(@webserv,opt,@image_src,@env)
|
|
81
|
+
@cgi_file_name=@env.url.cgi_sample_search_form_name(opt)
|
|
82
|
+
@name_of_sqlite_db_file='sisu_sqlite.db'
|
|
83
|
+
end
|
|
84
|
+
def sqlite
|
|
85
|
+
serve=[]
|
|
86
|
+
Dir.foreach(@env.path.webserv) do |x|
|
|
87
|
+
if x !~/^\./ \
|
|
88
|
+
and FileTest.directory?("#{@env.path.webserv}/#{x}")
|
|
89
|
+
if FileTest.file?("#{@env.path.webserv}/#{x}/#{@name_of_sqlite_db_file}")
|
|
90
|
+
serve << x unless x =~/^_\S+/
|
|
91
|
+
end
|
|
92
|
+
end
|
|
93
|
+
end
|
|
94
|
+
serve=serve.sort
|
|
95
|
+
f1,f2,f3='','',''
|
|
96
|
+
serve.each do |x|
|
|
97
|
+
f1 << %{ <option value="#{Db[:name_prefix]}#{x}">#{x}</option>\n}
|
|
98
|
+
end
|
|
99
|
+
f2 << %{ selected_db=case cgi['db']\n}
|
|
100
|
+
serve.each do |x|
|
|
101
|
+
f2 << %{ when /#{Db[:name_prefix]}#{x}/ then '<option value="#{Db[:name_prefix]}#{x}">#{x}</option>'\n}
|
|
102
|
+
end
|
|
103
|
+
f2 << " end\n"
|
|
104
|
+
f3 << %{ db_name='#{@name_of_sqlite_db_file}'\n}
|
|
105
|
+
f3 << %{ db_sqlite=case cgi['db']\n}
|
|
106
|
+
serve.each do |x|
|
|
107
|
+
f3 << %{ when /#{Db[:name_prefix]}#{x}/ then "#{@env.path.webserv}/#{x}/\#{db_name}"\n}
|
|
108
|
+
end
|
|
109
|
+
f3 << %{ else "#{@env.path.webserv}/#{serve[0]}/\#{db_name}"\n end\n}
|
|
110
|
+
if FileTest.writable?('.')
|
|
111
|
+
output=File.open(@cgi_file_name,'w')
|
|
112
|
+
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 << @common.dir_structure << @common.main3
|
|
113
|
+
puts <<-WOK
|
|
114
|
+
generated sample search form: #{@cX.green}#{@cgi_file_name}#{@cX.off}
|
|
115
|
+
default database name: #{@cX.green}#{Db[:name_prefix]}#{@env.path.base_markup_dir_stub}#{@cX.off} (#{@env.path.base_markup_dir_stub})
|
|
116
|
+
cgi & db host on: #{@cX.blue}#{@env.url.webserv_base_cgi(@opt)}#{@cX.off}
|
|
117
|
+
to modify use: #{@cX.brown}sisu --db-sqlite --webserv-search='#{@env.url.webserv_base_cgi(@opt)}'#{@cX.off}
|
|
118
|
+
sisu output on: #{@cX.blue}#{@env.url.webserv_files_from_db(@opt)}#{@cX.off}
|
|
119
|
+
to modify use: #{@cX.brown}sisu --db-sqlite --webserv-output='#{@env.url.webserv_files_from_db(@opt)}'#{@cX.off}
|
|
120
|
+
cgi search form link name: #{@cX.green}#{@env.url.cgi_sample_search_form_name(@opt)}#{@cX.off}
|
|
121
|
+
to modify use: #{@cX.brown}sisu --db-sqlite --cgi-search-form-name='#{@env.url.cgi_sample_search_form_name(@opt)}'#{@cX.off}
|
|
122
|
+
#{@cX.fuchsia}(settings priority: command line; sisurc.yml; else defaults)#{@cX.off}
|
|
123
|
+
|
|
124
|
+
#{@cX.fuchsia}NOTE it is first necessary to create the database and tables and populate it#{@cX.off}
|
|
125
|
+
|
|
126
|
+
sisu --sqlite --dropall # removes existing postgresql db & tables
|
|
127
|
+
sisu --sqlite --createall -v # creates postgresql db & tables
|
|
128
|
+
sisu --sqlite --update -v *.sst *.ssm # populate the db
|
|
129
|
+
sisu --sample-search-form --sqlite # creates the postgresql search form
|
|
130
|
+
# this should be done after creating the db
|
|
131
|
+
# to be searched
|
|
132
|
+
sisu --webrick & # starts ruby webrick web server
|
|
133
|
+
|
|
134
|
+
# if necessary make the directory '/usr/lib/cgi-bin'
|
|
135
|
+
# here we copy the postgresql search form to cgi-bin
|
|
136
|
+
# (copy #{@cgi_file_name} to your cgi directory)
|
|
137
|
+
# set file permissions to 755
|
|
138
|
+
WOK
|
|
139
|
+
a=case @webserv
|
|
140
|
+
when /pwd/ then ''
|
|
141
|
+
else <<-WOK
|
|
142
|
+
|
|
143
|
+
sudo cp -vi #{Dir.pwd}/#{@cgi_file_name} /usr/lib/cgi-bin/.; \\
|
|
144
|
+
sudo chmod -v 755 /usr/lib/cgi-bin/#{@cgi_file_name}
|
|
145
|
+
WOK
|
|
146
|
+
end
|
|
147
|
+
b='(to create and populate sisu sqlite database see "man sisu" and in particular the -d flag)'
|
|
148
|
+
SiSU_Screen::Ansi.new(@opt.act[:color_state][:set],a,b).warn
|
|
149
|
+
a=<<-WOK
|
|
150
|
+
|
|
151
|
+
#{@env.webserv_base_cgi(@opt)}/cgi-bin/#{@cgi_file_name}
|
|
152
|
+
|
|
153
|
+
WOK
|
|
154
|
+
SiSU_Screen::Ansi.new(@opt.act[:color_state][:set],a).print_blue
|
|
155
|
+
else puts "failed in attempt to write #{@cgi_file_name} to present directory, is directory writable?"
|
|
156
|
+
end
|
|
157
|
+
end
|
|
158
|
+
def header0
|
|
159
|
+
<<-WOK_SQL
|
|
160
|
+
#!/usr/bin/env ruby
|
|
161
|
+
=begin
|
|
162
|
+
#{about}
|
|
163
|
+
* Description: generates naive cgi search form for search of sisu database (sqlite)
|
|
164
|
+
#{gpl}
|
|
165
|
+
=end
|
|
166
|
+
begin
|
|
167
|
+
require 'cgi'
|
|
168
|
+
require 'fcgi'
|
|
169
|
+
require 'sqlite3'
|
|
170
|
+
rescue LoadError
|
|
171
|
+
puts 'cgi, fcgi or sqlite3 NOT FOUND (LoadError)'
|
|
172
|
+
end
|
|
173
|
+
@stub_default='sisu_sqlite'
|
|
174
|
+
@image_src="#{@image_src}"
|
|
175
|
+
@hosturl_cgi="#{@name_of[:host_url_cgi]}"
|
|
176
|
+
@hosturl_files="#{@name_of[:host_url_docs]}"
|
|
177
|
+
@output_dir_structure_by='#{@name_of[:output_dir_structure]}'
|
|
178
|
+
@lingual='#{@name_of[:lingual]}'
|
|
179
|
+
@db_name_prefix='#{Db[:name_prefix]}'
|
|
180
|
+
@base="#{@name_of[:host_url_cgi]}#{@name_of[:cgi_script]}"
|
|
181
|
+
WOK_SQL
|
|
182
|
+
end
|
|
183
|
+
def search_statement
|
|
184
|
+
<<-'WOK_SQL'
|
|
185
|
+
class DBI_SearchString
|
|
186
|
+
def initialize(l,t,q,cse=false)
|
|
187
|
+
@l,@t,@q=l,t,q
|
|
188
|
+
end
|
|
189
|
+
def string
|
|
190
|
+
search={ search: [], flag: false }
|
|
191
|
+
if @t =~/\S+/ or @q =~/\S+/
|
|
192
|
+
if @t =~/\S+/ then unescaped_search=CGI.unescape(@t)
|
|
193
|
+
elsif @q =~/\S+/ then unescaped_search=CGI.unescape(@q)
|
|
194
|
+
end
|
|
195
|
+
search_construct=[]
|
|
196
|
+
unescaped_search=unescaped_search.gsub(/\s*(AND|OR)\s*/,"%' \) \\1 #{@l} LIKE \( '%").
|
|
197
|
+
gsub(/(.+)/,"#{@l} LIKE \( '%\\1%' \)")
|
|
198
|
+
search_construct << unescaped_search
|
|
199
|
+
search_construct=search_construct.join(' ')
|
|
200
|
+
search[:search] << search_construct
|
|
201
|
+
search[:flag]=true
|
|
202
|
+
search
|
|
203
|
+
end
|
|
204
|
+
search
|
|
205
|
+
end
|
|
206
|
+
end
|
|
207
|
+
WOK_SQL
|
|
208
|
+
end
|
|
209
|
+
def search_query1
|
|
210
|
+
<<-'WOK_SQL'
|
|
211
|
+
@search_text=''
|
|
212
|
+
@search_text=search[:text].flatten.join(' AND ')
|
|
213
|
+
@search_text=@search_text.gsub(/(doc_objects\.clean\s+LIKE\s+\(\s*'%[^']+%'\s*\)\s+(?:(?:AND|OR)\s+doc_objects\.clean\s+LIKE\s+\(\s*'%[^']+%'\s*\))+)/,'(\1)')
|
|
214
|
+
end
|
|
215
|
+
WOK_SQL
|
|
216
|
+
end
|
|
217
|
+
def search_query2
|
|
218
|
+
<<-'WOK_SQL'
|
|
219
|
+
def sql_select_body
|
|
220
|
+
limit ||=@@limit
|
|
221
|
+
offset ||=@@offset
|
|
222
|
+
@sql_statement[:body]=%{SELECT metadata_and_text.title, metadata_and_text.creator_author, metadata_and_text.src_filename, metadata_and_text.language_document_char, metadata_and_text.notes_suffix, doc_objects.body, doc_objects.seg, doc_objects.ocn, metadata_and_text.tid FROM doc_objects, metadata_and_text WHERE #{@search_text} AND doc_objects.metadata_tid = metadata_and_text.tid ORDER BY metadata_and_text.language_document_char, metadata_and_text.title, metadata_and_text.src_filename, doc_objects.ocn}
|
|
223
|
+
@sql_statement[:range]=%{LIMIT #{limit} OFFSET #{offset} ;}
|
|
224
|
+
select=@sql_statement[:body] + ' ' + @sql_statement[:range]
|
|
225
|
+
select
|
|
226
|
+
end
|
|
227
|
+
def sql_select_body_format
|
|
228
|
+
%{<font color="#666666" size="2">#{sql_select_body}</font>}
|
|
229
|
+
end
|
|
230
|
+
def contents
|
|
231
|
+
@conn.execute(sql_select_body)
|
|
232
|
+
end
|
|
233
|
+
end
|
|
234
|
+
WOK_SQL
|
|
235
|
+
end
|
|
236
|
+
def dbi_connect
|
|
237
|
+
<<-'WOK_SQL'
|
|
238
|
+
@conn=SQLite3::Database.new(db_sqlite)
|
|
239
|
+
@conn.results_as_hash=true
|
|
240
|
+
WOK_SQL
|
|
241
|
+
end
|
|
242
|
+
end
|
|
243
|
+
end
|
|
244
|
+
__END__
|
data/lib/sisu/conf.rb
ADDED
|
@@ -0,0 +1,287 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
=begin
|
|
3
|
+
|
|
4
|
+
* Name: SiSU
|
|
5
|
+
|
|
6
|
+
** Description: documents, structuring, processing, publishing, search
|
|
7
|
+
*** configuration
|
|
8
|
+
|
|
9
|
+
** Author: Ralph Amissah
|
|
10
|
+
<ralph@amissah.com>
|
|
11
|
+
<ralph.amissah@gmail.com>
|
|
12
|
+
|
|
13
|
+
** Copyright: (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
|
|
14
|
+
2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 Ralph Amissah,
|
|
15
|
+
All Rights Reserved.
|
|
16
|
+
|
|
17
|
+
** License: GPL 3 or later:
|
|
18
|
+
|
|
19
|
+
SiSU, a framework for document structuring, publishing and search
|
|
20
|
+
|
|
21
|
+
Copyright (C) Ralph Amissah
|
|
22
|
+
|
|
23
|
+
This program is free software: you can redistribute it and/or modify it
|
|
24
|
+
under the terms of the GNU General Public License as published by the Free
|
|
25
|
+
Software Foundation, either version 3 of the License, or (at your option)
|
|
26
|
+
any later version.
|
|
27
|
+
|
|
28
|
+
This program is distributed in the hope that it will be useful, but WITHOUT
|
|
29
|
+
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
|
30
|
+
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
|
31
|
+
more details.
|
|
32
|
+
|
|
33
|
+
You should have received a copy of the GNU General Public License along with
|
|
34
|
+
this program. If not, see <http://www.gnu.org/licenses/>.
|
|
35
|
+
|
|
36
|
+
If you have Internet connection, the latest version of the GPL should be
|
|
37
|
+
available at these locations:
|
|
38
|
+
<http://www.fsf.org/licensing/licenses/gpl.html>
|
|
39
|
+
<http://www.gnu.org/licenses/gpl.html>
|
|
40
|
+
|
|
41
|
+
<http://www.sisudoc.org/sisu/en/manifest/gpl.fsf.html>
|
|
42
|
+
|
|
43
|
+
** SiSU uses:
|
|
44
|
+
* Standard SiSU markup syntax,
|
|
45
|
+
* Standard SiSU meta-markup syntax, and the
|
|
46
|
+
* Standard SiSU object citation numbering and system
|
|
47
|
+
|
|
48
|
+
** Hompages:
|
|
49
|
+
<http://www.jus.uio.no/sisu>
|
|
50
|
+
<http://www.sisudoc.org>
|
|
51
|
+
|
|
52
|
+
** Git
|
|
53
|
+
<http://git.sisudoc.org/gitweb/?p=code/sisu.git;a=summary>
|
|
54
|
+
<http://git.sisudoc.org/gitweb/?p=code/sisu.git;a=blob;f=lib/sisu/conf.rb;hb=HEAD>
|
|
55
|
+
|
|
56
|
+
=end
|
|
57
|
+
module SiSU_Initialize
|
|
58
|
+
require_relative 'se' # se.rb
|
|
59
|
+
include SiSU_Env
|
|
60
|
+
include SiSU_Screen
|
|
61
|
+
require_relative 'relaxng' # relaxng.rb
|
|
62
|
+
include SiSU_Relaxng
|
|
63
|
+
require_relative 'css' # css.rb
|
|
64
|
+
include SiSU_Style
|
|
65
|
+
class Source
|
|
66
|
+
def initialize(opt)
|
|
67
|
+
@opt=opt
|
|
68
|
+
end
|
|
69
|
+
def read
|
|
70
|
+
ConfigSite.new(@opt).make_homepage
|
|
71
|
+
ConfigSite.new(@opt).css
|
|
72
|
+
ConfigSite.new(@opt).dtd
|
|
73
|
+
ConfigSite.new(@opt).cp_local_images
|
|
74
|
+
ConfigSite.new(@opt).cp_external_images
|
|
75
|
+
ConfigSite.new(@opt).cp_webserver_images
|
|
76
|
+
end
|
|
77
|
+
end
|
|
78
|
+
class ConfigSite #config files such as css are not updated if they already exist unless forced using the --init=site modifier
|
|
79
|
+
require_relative 'se' # se.rb
|
|
80
|
+
def initialize(opt)
|
|
81
|
+
@opt=opt
|
|
82
|
+
@env=SiSU_Env::InfoEnv.new(@opt.fns)
|
|
83
|
+
@suffix={
|
|
84
|
+
rnc: 'rnc',
|
|
85
|
+
rng: 'rng',
|
|
86
|
+
xsd: 'xsd',
|
|
87
|
+
}
|
|
88
|
+
@path={
|
|
89
|
+
xml: @env.path.output + '/_sisu/xml',
|
|
90
|
+
xsd: @env.path.output + '/_sisu/xml/xsd',
|
|
91
|
+
rnc: @env.path.output + '/_sisu/xml/rnc',
|
|
92
|
+
rng: @env.path.output + '/_sisu/xml/rng',
|
|
93
|
+
style: @env.path.output + '/' + @env.path.style,
|
|
94
|
+
}
|
|
95
|
+
@pwd,@home=Dir.pwd,@env.path.home
|
|
96
|
+
end
|
|
97
|
+
def make_homepage
|
|
98
|
+
SiSU_Screen::Ansi.new(
|
|
99
|
+
@opt.act[:color_state][:set],
|
|
100
|
+
'invert',
|
|
101
|
+
'Make homepage',
|
|
102
|
+
''
|
|
103
|
+
).colorize unless @opt.act[:quiet][:set]==:on
|
|
104
|
+
SiSU_Env::CreateSite.new(@opt).homepage
|
|
105
|
+
end
|
|
106
|
+
def cp_local_images
|
|
107
|
+
SiSU_Screen::Ansi.new(
|
|
108
|
+
@opt.act[:color_state][:set],
|
|
109
|
+
'invert',
|
|
110
|
+
'Copy images',
|
|
111
|
+
''
|
|
112
|
+
).colorize unless @opt.act[:quiet][:set]==:on
|
|
113
|
+
SiSU_Env::CreateSite.new(@opt).cp_local_images
|
|
114
|
+
SiSU_Env::CreateSite.new(@opt).cp_webserver_images_local #this should not have been necessary
|
|
115
|
+
SiSU_Env::CreateSite.new(@opt).cp_base_images #base images (nav etc.) used by all html
|
|
116
|
+
end
|
|
117
|
+
def cp_external_images
|
|
118
|
+
SiSU_Screen::Ansi.new(
|
|
119
|
+
@opt.act[:color_state][:set],
|
|
120
|
+
'invert',
|
|
121
|
+
'Copy external images',
|
|
122
|
+
''
|
|
123
|
+
).colorize if @opt.act[:verbose_plus][:set]==:on
|
|
124
|
+
SiSU_Env::CreateSite.new(@opt).cp_external_images
|
|
125
|
+
end
|
|
126
|
+
def cp_webserver_images
|
|
127
|
+
SiSU_Screen::Ansi.new(
|
|
128
|
+
@opt.act[:color_state][:set],
|
|
129
|
+
'invert',
|
|
130
|
+
'Copy webserver/output file images',
|
|
131
|
+
''
|
|
132
|
+
).colorize unless @opt.act[:quiet][:set]==:on
|
|
133
|
+
SiSU_Env::CreateSite.new(@opt).cp_webserver_images
|
|
134
|
+
end
|
|
135
|
+
def css
|
|
136
|
+
SiSU_Screen::Ansi.new(
|
|
137
|
+
@opt.act[:color_state][:set],
|
|
138
|
+
'invert',
|
|
139
|
+
'Configuring CSSs',
|
|
140
|
+
''
|
|
141
|
+
).colorize unless @opt.act[:quiet][:set]==:on
|
|
142
|
+
SiSU_Env::CreateSite.new(@opt).cp_css
|
|
143
|
+
end
|
|
144
|
+
def dtd
|
|
145
|
+
SiSU_Screen::Ansi.new(
|
|
146
|
+
@opt.act[:color_state][:set],
|
|
147
|
+
'invert',
|
|
148
|
+
'Configuring DTDs',
|
|
149
|
+
''
|
|
150
|
+
).colorize unless @opt.act[:quiet][:set]==:on
|
|
151
|
+
@rxng=SiSU_Relaxng::RelaxNG.new
|
|
152
|
+
@path.each { |d| FileUtils::mkdir_p(d[1]) \
|
|
153
|
+
unless FileTest.directory?(d[1]) }
|
|
154
|
+
#ugly code, sort later
|
|
155
|
+
if @rxng.methods.join =~/[^_]dtd_sax\b/
|
|
156
|
+
if @rxng.dtd_sax.length > 200
|
|
157
|
+
dtd=File.new("#{@path[:style]}/#{@rxng.rng_name.output_sax}",'w')
|
|
158
|
+
dtd << @rxng.dtd_sax
|
|
159
|
+
dtd.close
|
|
160
|
+
else trang_rnc_model_output_sax
|
|
161
|
+
end
|
|
162
|
+
else trang_rnc_model_output_sax
|
|
163
|
+
end
|
|
164
|
+
if @rxng.methods.join =~/[^_]dtd_dom\b/
|
|
165
|
+
if @rxng.dtd_dom.length > 200
|
|
166
|
+
dtd=File.new("#{@path[:style]}/#{@rxng.rng_name.output_dom}",'w')
|
|
167
|
+
dtd << @rxng.dtd_dom
|
|
168
|
+
dtd.close
|
|
169
|
+
else trang_rnc_model_output_dom
|
|
170
|
+
end
|
|
171
|
+
else trang_rnc_model_output_dom
|
|
172
|
+
end
|
|
173
|
+
if @rxng.methods.join =~/[^_]dtd_node\b/
|
|
174
|
+
if @rxng.dtd_node.length > 200
|
|
175
|
+
dtd=File.new("#{@path[:style]}/#{@rxng.rng_name.input_node}",'w')
|
|
176
|
+
dtd << @rxng.dtd_node
|
|
177
|
+
dtd.close
|
|
178
|
+
else trang_rnc_model_input_node
|
|
179
|
+
end
|
|
180
|
+
else trang_rnc_model_input_node
|
|
181
|
+
end
|
|
182
|
+
if @rxng.methods.join =~/[^_]dtd_xhtml\b/
|
|
183
|
+
if @rxng.dtd_xhtml.length > 200
|
|
184
|
+
dtd=File.new("#{@path[:style]}/#{@rxng.rng_name.output_xhtml}",'w')
|
|
185
|
+
dtd << @rxng.dtd_xhtml
|
|
186
|
+
dtd.close
|
|
187
|
+
else trang_rnc_model_output_xhtml
|
|
188
|
+
end
|
|
189
|
+
else trang_rnc_model_output_xhtml
|
|
190
|
+
end
|
|
191
|
+
end
|
|
192
|
+
def trang_rnc_model_output_sax
|
|
193
|
+
s=@suffix
|
|
194
|
+
rnc_src=@env.processing_path.ao + '/sax.' + s[:rnc]
|
|
195
|
+
rnc_file=@path[:rnc] + '/' + @rxng.rnc_name.output_sax
|
|
196
|
+
rng_file=@path[:rng] + '/' + @rxng.rng_name.output_sax
|
|
197
|
+
xsd_file=@path[:xsd] + '/' + @rxng.xsd_name.output_sax
|
|
198
|
+
rnc=File.new(rnc_src,'w')
|
|
199
|
+
rnc << @rxng.rnc_model_output_sax
|
|
200
|
+
rnc.close
|
|
201
|
+
#xsd
|
|
202
|
+
schema=SiSU_Env::SystemCall.new(rnc_src,xsd_file)
|
|
203
|
+
schema.relaxng(@opt.selections.str)
|
|
204
|
+
#rng
|
|
205
|
+
schema=SiSU_Env::SystemCall.new(rnc_src,rng_file)
|
|
206
|
+
schema.relaxng(@opt.selections.str)
|
|
207
|
+
#rnc
|
|
208
|
+
if FileTest.file?(rnc_src)
|
|
209
|
+
FileUtils::cp(rnc_src,rnc_file)
|
|
210
|
+
FileUtils::chmod(0644,rnc_file)
|
|
211
|
+
else STDERR.puts %{\t*WARN* did not find rnc - "#{rnc_src}" [#{__FILE__}:#{__LINE__}]}
|
|
212
|
+
end
|
|
213
|
+
end
|
|
214
|
+
def trang_rnc_model_output_dom
|
|
215
|
+
s=@suffix
|
|
216
|
+
rnc_src=@env.processing_path.ao + '/dom.' + s[:rnc]
|
|
217
|
+
rnc_file=@path[:rnc] + '/' + @rxng.rnc_name.output_dom
|
|
218
|
+
rng_file=@path[:rng] + '/' + @rxng.rng_name.output_dom
|
|
219
|
+
xsd_file=@path[:xsd] + '/' + @rxng.xsd_name.output_dom
|
|
220
|
+
rnc=File.new(rnc_src,'w')
|
|
221
|
+
rnc << @rxng.rnc_model_output_dom
|
|
222
|
+
rnc.close
|
|
223
|
+
#xsd
|
|
224
|
+
schema=SiSU_Env::SystemCall.new(rnc_src,xsd_file)
|
|
225
|
+
schema.relaxng(@opt.selections.str)
|
|
226
|
+
#rng
|
|
227
|
+
schema=SiSU_Env::SystemCall.new(rnc_src,rng_file)
|
|
228
|
+
schema.relaxng(@opt.selections.str)
|
|
229
|
+
#rnc
|
|
230
|
+
if FileTest.file?(rnc_src)
|
|
231
|
+
FileUtils::cp(rnc_src,rnc_file)
|
|
232
|
+
FileUtils::chmod(0644,rnc_file)
|
|
233
|
+
else STDERR.puts %{\t*WARN* did not find rnc - "#{rnc_src}" [#{__FILE__}:#{__LINE__}]}
|
|
234
|
+
end
|
|
235
|
+
end
|
|
236
|
+
def trang_rnc_model_output_xhtml
|
|
237
|
+
s=@suffix
|
|
238
|
+
rnc_src=@env.processing_path.ao + '/xhtml.' + s[:rnc]
|
|
239
|
+
rnc_file=@path[:rnc] + '/' + @rxng.rnc_name.output_xhtml
|
|
240
|
+
rng_file=@path[:rng] + '/' + @rxng.rng_name.output_xhtml
|
|
241
|
+
xsd_file=@path[:xsd] + '/' + @rxng.xsd_name.output_xhtml
|
|
242
|
+
rnc=File.new(rnc_src,'w')
|
|
243
|
+
rnc << @rxng.rnc_model_output_xhtml
|
|
244
|
+
rnc.close
|
|
245
|
+
#xsd
|
|
246
|
+
schema=SiSU_Env::SystemCall.new(rnc_src,xsd_file)
|
|
247
|
+
schema.relaxng(@opt.selections.str)
|
|
248
|
+
#rng
|
|
249
|
+
schema=SiSU_Env::SystemCall.new(rnc_src,rng_file)
|
|
250
|
+
schema.relaxng(@opt.selections.str)
|
|
251
|
+
#rnc
|
|
252
|
+
if FileTest.file?(rnc_src)
|
|
253
|
+
FileUtils::cp(rnc_src,rnc_file)
|
|
254
|
+
FileUtils::chmod(0644,rnc_file)
|
|
255
|
+
else STDERR.puts %{\t*WARN* did not find rnc - "#{rnc_src}" [#{__FILE__}:#{__LINE__}]}
|
|
256
|
+
end
|
|
257
|
+
end
|
|
258
|
+
def trang_rnc_model_input_sax
|
|
259
|
+
rnc_file=@env.processing_path.ao + '/sax.rnc'
|
|
260
|
+
dtd_file=@path[:xsd] + '/' + @rxng.rng_name.input_sax
|
|
261
|
+
rnc=File.new(rnc_file,'w')
|
|
262
|
+
rnc << @rxng.rnc_model_output_sax
|
|
263
|
+
rnc.close
|
|
264
|
+
schema=SiSU_Env::SystemCall.new(rnc_file,dtd_file)
|
|
265
|
+
schema.relaxng(@opt.selections.str)
|
|
266
|
+
end
|
|
267
|
+
def trang_rnc_model_input_dom
|
|
268
|
+
rnc_file=@env.processing_path.ao + '/dom.rnc'
|
|
269
|
+
dtd_file=@path[:xsd] + '/' + @rxng.rng_name.input_dom
|
|
270
|
+
rnc=File.new(rnc_file,'w')
|
|
271
|
+
rnc << @rxng.rnc_model_output_dom
|
|
272
|
+
rnc.close
|
|
273
|
+
schema=SiSU_Env::SystemCall.new(rnc_file,dtd_file)
|
|
274
|
+
schema.relaxng(@opt.selections.str)
|
|
275
|
+
end
|
|
276
|
+
def trang_rnc_model_input_node
|
|
277
|
+
rnc_file=@env.processing_path.ao + '/node.rnc'
|
|
278
|
+
dtd_file=@path[:xsd] + '/' + @rxng.rng_name.input_node
|
|
279
|
+
rnc=File.new(rnc_file,'w')
|
|
280
|
+
rnc << @rxng.rnc_model_input_node
|
|
281
|
+
rnc.close
|
|
282
|
+
schema=SiSU_Env::SystemCall.new(rnc_file,dtd_file)
|
|
283
|
+
schema.relaxng(@opt.selections.str)
|
|
284
|
+
end
|
|
285
|
+
end
|
|
286
|
+
end
|
|
287
|
+
__END__
|