sisu 7.0.0

Sign up to get free protection for your applications and to get access to all the features.
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__