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.
Files changed (207) hide show
  1. checksums.yaml +7 -0
  2. data/bin/sisu +367 -0
  3. data/bin/sisugem +367 -0
  4. data/data/sisu/image/arrow_next_red.png +0 -0
  5. data/data/sisu/image/arrow_prev_red.png +0 -0
  6. data/data/sisu/image/arrow_up_red.png +0 -0
  7. data/data/sisu/image/b_bluebell.png +0 -0
  8. data/data/sisu/image/b_doc.png +0 -0
  9. data/data/sisu/image/b_epub.png +0 -0
  10. data/data/sisu/image/b_home.png +0 -0
  11. data/data/sisu/image/b_info.png +0 -0
  12. data/data/sisu/image/b_odf.png +0 -0
  13. data/data/sisu/image/b_pdf.png +0 -0
  14. data/data/sisu/image/b_search.png +0 -0
  15. data/data/sisu/image/b_toc.png +0 -0
  16. data/data/sisu/image/bullet_08.png +0 -0
  17. data/data/sisu/image/bullet_09.png +0 -0
  18. data/data/sisu/image/bullet_10.png +0 -0
  19. data/data/sisu/image/bullet_11.png +0 -0
  20. data/data/sisu/image/bullet_12.png +0 -0
  21. data/data/sisu/image/bullet_doc.png +0 -0
  22. data/data/sisu/image/bullet_red.png +0 -0
  23. data/data/sisu/image/dot_clear.png +0 -0
  24. data/data/sisu/image/dot_white.png +0 -0
  25. data/data/sisu/image/gplv3.png +0 -0
  26. data/data/sisu/image/gplv3_free_software.png +0 -0
  27. data/data/sisu/image/next.png +0 -0
  28. data/data/sisu/image/previous.png +0 -0
  29. data/data/sisu/image/rb7.ico +0 -0
  30. data/data/sisu/image/sisu.png +0 -0
  31. data/data/sisu/image/toctoc.png +0 -0
  32. data/data/sisu/version.yml +5 -0
  33. data/lib/sisu.rb +94 -0
  34. data/lib/sisu/air.rb +80 -0
  35. data/lib/sisu/ao.rb +590 -0
  36. data/lib/sisu/ao_character_check.rb +102 -0
  37. data/lib/sisu/ao_composite.rb +286 -0
  38. data/lib/sisu/ao_doc_objects.rb +565 -0
  39. data/lib/sisu/ao_doc_str.rb +2269 -0
  40. data/lib/sisu/ao_endnotes.rb +136 -0
  41. data/lib/sisu/ao_expand_insertions.rb +514 -0
  42. data/lib/sisu/ao_hash_digest.rb +174 -0
  43. data/lib/sisu/ao_idx.rb +422 -0
  44. data/lib/sisu/ao_images.rb +187 -0
  45. data/lib/sisu/ao_metadata.rb +86 -0
  46. data/lib/sisu/ao_misc_arrange.rb +207 -0
  47. data/lib/sisu/ao_numbering.rb +720 -0
  48. data/lib/sisu/ao_persist.rb +194 -0
  49. data/lib/sisu/ao_references.rb +502 -0
  50. data/lib/sisu/ao_syntax.rb +640 -0
  51. data/lib/sisu/cgi.rb +84 -0
  52. data/lib/sisu/cgi_pgsql.rb +270 -0
  53. data/lib/sisu/cgi_sql_common.rb +986 -0
  54. data/lib/sisu/cgi_sqlite.rb +244 -0
  55. data/lib/sisu/conf.rb +287 -0
  56. data/lib/sisu/constants.rb +388 -0
  57. data/lib/sisu/css.rb +3484 -0
  58. data/lib/sisu/db_columns.rb +1997 -0
  59. data/lib/sisu/db_create.rb +689 -0
  60. data/lib/sisu/db_dbi.rb +90 -0
  61. data/lib/sisu/db_drop.rb +207 -0
  62. data/lib/sisu/db_import.rb +877 -0
  63. data/lib/sisu/db_indexes.rb +146 -0
  64. data/lib/sisu/db_load_tuple.rb +323 -0
  65. data/lib/sisu/db_remove.rb +182 -0
  66. data/lib/sisu/db_select.rb +230 -0
  67. data/lib/sisu/db_sqltxt.rb +173 -0
  68. data/lib/sisu/db_tests.rb +114 -0
  69. data/lib/sisu/dbi.rb +166 -0
  70. data/lib/sisu/dbi_discrete.rb +206 -0
  71. data/lib/sisu/digests.rb +306 -0
  72. data/lib/sisu/dp.rb +1606 -0
  73. data/lib/sisu/dp_identify_markup.rb +161 -0
  74. data/lib/sisu/dp_make.rb +668 -0
  75. data/lib/sisu/embedded.rb +149 -0
  76. data/lib/sisu/errors.rb +84 -0
  77. data/lib/sisu/generic_parts.rb +131 -0
  78. data/lib/sisu/git.rb +277 -0
  79. data/lib/sisu/html.rb +775 -0
  80. data/lib/sisu/html_concordance.rb +391 -0
  81. data/lib/sisu/html_format.rb +1348 -0
  82. data/lib/sisu/html_harvest.rb +109 -0
  83. data/lib/sisu/html_harvest_author_format.rb +111 -0
  84. data/lib/sisu/html_harvest_authors.rb +466 -0
  85. data/lib/sisu/html_harvest_topics.rb +893 -0
  86. data/lib/sisu/html_lite_shared.rb +324 -0
  87. data/lib/sisu/html_manifest.rb +1032 -0
  88. data/lib/sisu/html_minitoc.rb +230 -0
  89. data/lib/sisu/html_parts.rb +437 -0
  90. data/lib/sisu/html_persist.rb +237 -0
  91. data/lib/sisu/html_promo.rb +440 -0
  92. data/lib/sisu/html_scroll.rb +235 -0
  93. data/lib/sisu/html_segments.rb +716 -0
  94. data/lib/sisu/html_shared.rb +62 -0
  95. data/lib/sisu/html_table.rb +64 -0
  96. data/lib/sisu/html_tune.rb +301 -0
  97. data/lib/sisu/hub.rb +277 -0
  98. data/lib/sisu/hub_actions.rb +1122 -0
  99. data/lib/sisu/hub_loop_markup_files.rb +170 -0
  100. data/lib/sisu/hub_options.rb +1695 -0
  101. data/lib/sisu/i18n.rb +702 -0
  102. data/lib/sisu/manpage.rb +377 -0
  103. data/lib/sisu/manpage_format.rb +85 -0
  104. data/lib/sisu/object_munge.rb +307 -0
  105. data/lib/sisu/prog_text_translation.rb +1702 -0
  106. data/lib/sisu/qrcode.rb +754 -0
  107. data/lib/sisu/relaxng.rb +1153 -0
  108. data/lib/sisu/remote.rb +246 -0
  109. data/lib/sisu/rexml.rb +148 -0
  110. data/lib/sisu/se.rb +158 -0
  111. data/lib/sisu/se_cleanoutput.rb +145 -0
  112. data/lib/sisu/se_clear.rb +105 -0
  113. data/lib/sisu/se_createsite.rb +273 -0
  114. data/lib/sisu/se_css.rb +221 -0
  115. data/lib/sisu/se_date.rb +92 -0
  116. data/lib/sisu/se_db.rb +214 -0
  117. data/lib/sisu/se_envcall.rb +326 -0
  118. data/lib/sisu/se_file_op.rb +2758 -0
  119. data/lib/sisu/se_filemap.rb +247 -0
  120. data/lib/sisu/se_get_init.rb +238 -0
  121. data/lib/sisu/se_hub_particulars.rb +234 -0
  122. data/lib/sisu/se_info_env.rb +2179 -0
  123. data/lib/sisu/se_info_port.rb +70 -0
  124. data/lib/sisu/se_info_system.rb +202 -0
  125. data/lib/sisu/se_load.rb +108 -0
  126. data/lib/sisu/se_processing.rb +659 -0
  127. data/lib/sisu/se_programs.rb +394 -0
  128. data/lib/sisu/se_remotes.rb +553 -0
  129. data/lib/sisu/se_standardise_lang.rb +176 -0
  130. data/lib/sisu/se_version.rb +174 -0
  131. data/lib/sisu/shared_images.rb +137 -0
  132. data/lib/sisu/shared_markup_alt.rb +336 -0
  133. data/lib/sisu/shared_metadata.rb +1361 -0
  134. data/lib/sisu/shared_sem.rb +156 -0
  135. data/lib/sisu/sisu_thor_lib.rb +407 -0
  136. data/lib/sisu/sitemaps.rb +224 -0
  137. data/lib/sisu/src_kdissert_share.rb +102 -0
  138. data/lib/sisu/src_po4a_share.rb +309 -0
  139. data/lib/sisu/src_po4a_shelf.rb +1217 -0
  140. data/lib/sisu/src_po4a_shelf_set.rb +297 -0
  141. data/lib/sisu/src_po4a_sst_ao_sst.rb +893 -0
  142. data/lib/sisu/src_po4a_sst_ao_sst_set.rb +284 -0
  143. data/lib/sisu/src_po4a_sstm.rb +135 -0
  144. data/lib/sisu/src_shared.rb +347 -0
  145. data/lib/sisu/src_sisupod_make.rb +171 -0
  146. data/lib/sisu/src_sisupod_sstm.rb +109 -0
  147. data/lib/sisu/sst_convert_markup.rb +323 -0
  148. data/lib/sisu/sst_do_inline_footnotes.rb +440 -0
  149. data/lib/sisu/sst_from_xml.rb +178 -0
  150. data/lib/sisu/sst_identify_markup.rb +482 -0
  151. data/lib/sisu/sst_to_s_xml_sax.rb +471 -0
  152. data/lib/sisu/termsheet.rb +163 -0
  153. data/lib/sisu/texinfo.rb +430 -0
  154. data/lib/sisu/texinfo_format.rb +541 -0
  155. data/lib/sisu/texpdf.rb +1162 -0
  156. data/lib/sisu/texpdf_format.rb +1689 -0
  157. data/lib/sisu/texpdf_parts.rb +235 -0
  158. data/lib/sisu/txt_asciidoc.rb +354 -0
  159. data/lib/sisu/txt_asciidoc_decorate.rb +207 -0
  160. data/lib/sisu/txt_markdown.rb +389 -0
  161. data/lib/sisu/txt_markdown_decorate.rb +207 -0
  162. data/lib/sisu/txt_orgmode.rb +376 -0
  163. data/lib/sisu/txt_orgmode_decorate.rb +186 -0
  164. data/lib/sisu/txt_output.rb +86 -0
  165. data/lib/sisu/txt_plain.rb +410 -0
  166. data/lib/sisu/txt_plain_decorate.rb +189 -0
  167. data/lib/sisu/txt_read.rb +109 -0
  168. data/lib/sisu/txt_rst.rb +371 -0
  169. data/lib/sisu/txt_rst_decorate.rb +186 -0
  170. data/lib/sisu/txt_shared.rb +241 -0
  171. data/lib/sisu/txt_textile.rb +367 -0
  172. data/lib/sisu/txt_textile_decorate.rb +186 -0
  173. data/lib/sisu/update.rb +141 -0
  174. data/lib/sisu/urls.rb +696 -0
  175. data/lib/sisu/utils.rb +232 -0
  176. data/lib/sisu/utils_composite.rb +115 -0
  177. data/lib/sisu/utils_response.rb +114 -0
  178. data/lib/sisu/utils_screen_text_color.rb +472 -0
  179. data/lib/sisu/utils_spell.rb +99 -0
  180. data/lib/sisu/webrick.rb +191 -0
  181. data/lib/sisu/wikispeak.rb +375 -0
  182. data/lib/sisu/xhtml.rb +472 -0
  183. data/lib/sisu/xhtml_epub2.rb +890 -0
  184. data/lib/sisu/xhtml_epub2_concordance.rb +322 -0
  185. data/lib/sisu/xhtml_epub2_format.rb +2272 -0
  186. data/lib/sisu/xhtml_epub2_persist.rb +278 -0
  187. data/lib/sisu/xhtml_epub2_segments.rb +599 -0
  188. data/lib/sisu/xhtml_epub2_tune.rb +330 -0
  189. data/lib/sisu/xhtml_parts.rb +183 -0
  190. data/lib/sisu/xhtml_shared.rb +62 -0
  191. data/lib/sisu/xhtml_table.rb +97 -0
  192. data/lib/sisu/xml_docbook5.rb +376 -0
  193. data/lib/sisu/xml_dom.rb +624 -0
  194. data/lib/sisu/xml_fictionbook2.rb +389 -0
  195. data/lib/sisu/xml_format.rb +865 -0
  196. data/lib/sisu/xml_md_oai_pmh_dc.rb +229 -0
  197. data/lib/sisu/xml_odf_odt.rb +887 -0
  198. data/lib/sisu/xml_odf_odt_format.rb +674 -0
  199. data/lib/sisu/xml_parts.rb +191 -0
  200. data/lib/sisu/xml_persist.rb +126 -0
  201. data/lib/sisu/xml_sax.rb +521 -0
  202. data/lib/sisu/xml_scaffold_structure_collapsed.rb +198 -0
  203. data/lib/sisu/xml_scaffold_structure_sisu.rb +201 -0
  204. data/lib/sisu/xml_shared.rb +665 -0
  205. data/lib/sisu/xml_tables.rb +261 -0
  206. data/lib/sisu/zap.rb +90 -0
  207. 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__