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,689 @@
1
+ # encoding: utf-8
2
+ =begin
3
+
4
+ * Name: SiSU
5
+
6
+ ** Description: documents, structuring, processing, publishing, search
7
+ *** modules shared by the different db types, dbi, postgresql, 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/db_create.rb;hb=HEAD>
55
+
56
+ =end
57
+ module SiSU_DbCreate
58
+ require_relative 'db_columns' # db_columns.rb
59
+ class Create < SiSU_DbColumns::Columns
60
+ require_relative 'se' # se.rb
61
+ @@dl=nil
62
+ def initialize(opt,conn,file,sql_type=:pg)
63
+ @opt,@conn,@file,@sql_type=opt,conn,file,sql_type
64
+ @cX=SiSU_Screen::Ansi.new(@opt.act[:color_state][:set]).cX
65
+ @comment=(@sql_type==:pg) \
66
+ ? (SiSU_DbCreate::Comment.new(@conn,@sql_type))
67
+ : nil
68
+ @@dl ||=SiSU_Env::InfoEnv.new.digest.length
69
+ end
70
+ def available
71
+ DBI.available_drivers.each do |driver|
72
+ puts "Driver: #{driver}"
73
+ DBI.data_sources(driver).each do |dsn|
74
+ puts "\tDatasource: #{dsn}"
75
+ end
76
+ end
77
+ end
78
+ def create_db
79
+ @env=SiSU_Env::InfoEnv.new(@opt.fns)
80
+ tell=(@sql_type==:sqlite) \
81
+ ? SiSU_Screen::Ansi.new(
82
+ @opt.act[:color_state][:set],
83
+ 'Create SQLite db tables in:',
84
+ %{"#{@file}"}
85
+ )
86
+ : SiSU_Screen::Ansi.new(
87
+ @opt.act[:color_state][:set],
88
+ 'Create pgSQL db tables in:',
89
+ %{"#{Db[:name_prefix]}#{@env.path.base_markup_dir_stub}"}
90
+ )
91
+ if (@opt.act[:verbose][:set]==:on \
92
+ || @opt.act[:verbose_plus][:set]==:on \
93
+ || @opt.act[:maintenance][:set]==:on)
94
+ tell.dark_grey_title_hi
95
+ end
96
+ SiSU_Env::SystemCall.new.create_pg_db(@env.path.base_markup_dir_stub) if @sql_type==:pg #watch use of path.base_markup_dir_stub instead of stub
97
+ end
98
+ def output_dir?
99
+ dir=SiSU_Env::InfoEnv.new('')
100
+ if @opt.act[:sqlite][:set]==:on
101
+ dir.path.webserv_stub_ensure
102
+ end
103
+ end
104
+ def create_table
105
+ def conn_exec(sql)
106
+ if @sql_type==:pg
107
+ conn_exec_pg(sql)
108
+ elsif @sql_type==:sqlite
109
+ conn_exec_sqlite(sql)
110
+ end
111
+ end
112
+ def conn_exec_pg(sql)
113
+ begin
114
+ @conn.exec_params(sql)
115
+ rescue
116
+ if @conn.is_a?(NilClass)
117
+ errmsg="No pg connection (check pg dependencies)"
118
+ if @opt.act[:no_stop][:set]==:on
119
+ SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).
120
+ error("#{errmsg}, proceeding without pg output (as requested)")
121
+ else
122
+ SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).
123
+ error("#{errmsg}, STOPPING")
124
+ exit
125
+ end
126
+ end
127
+ end
128
+ end
129
+ def conn_exec_sqlite(sql)
130
+ begin
131
+ @conn.execute(sql)
132
+ rescue
133
+ if @conn.is_a?(NilClass)
134
+ errmsg="No sqlite3 connection (check sqlite3 dependencies)"
135
+ if @opt.act[:no_stop][:set]==:on
136
+ SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).
137
+ error("#{errmsg}, proceeding without sqlite output (as requested)")
138
+ else
139
+ SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).
140
+ error("#{errmsg}, STOPPING")
141
+ exit
142
+ end
143
+ end
144
+ end
145
+ end
146
+ def metadata_and_text
147
+ if (@opt.act[:verbose_plus][:set]==:on \
148
+ or @opt.act[:maintenance][:set]==:on)
149
+ print %{
150
+ currently using sisu_dbi module
151
+ to be populated from document files
152
+ create tables metadata_and_text
153
+ data import through ruby transfer
154
+ }
155
+ end
156
+ create_metadata_and_text=%{
157
+ CREATE TABLE metadata_and_text (
158
+ tid BIGINT PRIMARY KEY,
159
+ /* title */
160
+ #{column.title.create_column}
161
+ #{column.title_main.create_column}
162
+ #{column.title_sub.create_column}
163
+ #{column.title_short.create_column}
164
+ #{column.title_edition.create_column}
165
+ #{column.title_note.create_column}
166
+ #{column.title_language.create_column}
167
+ #{column.title_language_char.create_column}
168
+ /* creator */
169
+ #{column.creator_author.create_column}
170
+ #{column.creator_author_honorific.create_column}
171
+ #{column.creator_author_nationality.create_column}
172
+ #{column.creator_editor.create_column}
173
+ #{column.creator_contributor.create_column}
174
+ #{column.creator_illustrator.create_column}
175
+ #{column.creator_photographer.create_column}
176
+ #{column.creator_translator.create_column}
177
+ #{column.creator_prepared_by.create_column}
178
+ #{column.creator_digitized_by.create_column}
179
+ #{column.creator_audio.create_column}
180
+ #{column.creator_video.create_column}
181
+ /* language */
182
+ #{column.language_document.create_column}
183
+ #{column.language_document_char.create_column}
184
+ #{column.language_original.create_column}
185
+ #{column.language_original_char.create_column}
186
+ /* date */
187
+ #{column.date_added_to_site.create_column}
188
+ #{column.date_available.create_column}
189
+ #{column.date_created.create_column}
190
+ #{column.date_issued.create_column}
191
+ #{column.date_modified.create_column}
192
+ #{column.date_published.create_column}
193
+ #{column.date_valid.create_column}
194
+ #{column.date_translated.create_column}
195
+ #{column.date_original_publication.create_column}
196
+ #{column.date_generated.create_column}
197
+ /* publisher */
198
+ #{column.publisher.create_column}
199
+ /* original */
200
+ #{column.original_publisher.create_column}
201
+ #{column.original_language.create_column}
202
+ #{column.original_language_char.create_column}
203
+ #{column.original_source.create_column}
204
+ #{column.original_institution.create_column}
205
+ #{column.original_nationality.create_column}
206
+ /* rights */
207
+ #{column.rights_all.create_column}
208
+ #{column.rights_copyright_text.create_column}
209
+ #{column.rights_copyright_translation.create_column}
210
+ #{column.rights_copyright_illustrations.create_column}
211
+ #{column.rights_copyright_photographs.create_column}
212
+ #{column.rights_copyright_preparation.create_column}
213
+ #{column.rights_copyright_digitization.create_column}
214
+ #{column.rights_copyright_audio.create_column}
215
+ #{column.rights_copyright_video.create_column}
216
+ #{column.rights_license.create_column}
217
+ /* classify */
218
+ #{column.classify_topic_register.create_column}
219
+ #{column.classify_subject.create_column}
220
+ #{column.classify_loc.create_column}
221
+ #{column.classify_dewey.create_column}
222
+ #{column.classify_keywords.create_column}
223
+ /* identifier */
224
+ #{column.identifier_oclc.create_column}
225
+ #{column.identifier_isbn.create_column}
226
+ /* notes */
227
+ #{column.notes_abstract.create_column}
228
+ #{column.notes_description.create_column}
229
+ #{column.notes_comment.create_column}
230
+ #{column.notes_history.create_column}
231
+ #{column.notes_coverage.create_column}
232
+ #{column.notes_relation.create_column}
233
+ /* column.notes_source.create_column */
234
+ #{column.notes_type.create_column}
235
+ #{column.notes_format.create_column}
236
+ #{column.notes_prefix.create_column}
237
+ #{column.notes_prefix_a.create_column}
238
+ #{column.notes_prefix_b.create_column}
239
+ #{column.notes_suffix.create_column}
240
+ /* src */
241
+ #{column.src_filename.create_column}
242
+ #{column.src_fingerprint.create_column}
243
+ #{column.src_filesize.create_column}
244
+ #{column.src_word_count.create_column}
245
+ #{column.src_txt.create_column}
246
+ /* misc */
247
+ #{column.fulltext.create_column}
248
+ #{column.links.create_column.gsub(/,$/,'')}
249
+ /* subj VARCHAR(64) NULL, */
250
+ /* contact VARCHAR(100) NULL, */
251
+ /* information VARCHAR(100) NULL, */
252
+ /* types CHAR(1) NULL, */
253
+ /* writing_focus_nationality VARCHAR(100) NULL, */
254
+ );
255
+ }
256
+ conn_exec(create_metadata_and_text)
257
+ @comment.psql.metadata_and_text if @comment
258
+ end
259
+ def doc_objects # create doc_objects base
260
+ if (@opt.act[:verbose_plus][:set]==:on \
261
+ or @opt.act[:maintenance][:set]==:on)
262
+ print %{
263
+ to be populated from documents files
264
+ create tables doc_objects
265
+ data import through ruby transfer
266
+ }
267
+ end
268
+ create_doc_objects=%{
269
+ CREATE TABLE doc_objects (
270
+ lid BIGINT PRIMARY KEY,
271
+ metadata_tid BIGINT REFERENCES metadata_and_text,
272
+ ocn SMALLINT,
273
+ ocnd VARCHAR(6),
274
+ ocns VARCHAR(6),
275
+ clean TEXT NULL,
276
+ body TEXT NULL,
277
+ book_idx TEXT NULL,
278
+ seg VARCHAR(256) NULL,
279
+ lev_an VARCHAR(1),
280
+ lev SMALLINT NULL,
281
+ lev0 SMALLINT,
282
+ lev1 SMALLINT,
283
+ lev2 SMALLINT,
284
+ lev3 SMALLINT,
285
+ lev4 SMALLINT,
286
+ lev5 SMALLINT,
287
+ lev6 SMALLINT,
288
+ lev7 SMALLINT,
289
+ en_a SMALLINT NULL,
290
+ en_z SMALLINT NULL,
291
+ en_a_asterisk SMALLINT NULL,
292
+ en_z_asterisk SMALLINT NULL,
293
+ en_a_plus SMALLINT NULL,
294
+ en_z_plus SMALLINT NULL,
295
+ t_of VARCHAR(16),
296
+ t_is VARCHAR(16),
297
+ node VARCHAR(16) NULL,
298
+ parent VARCHAR(16) NULL,
299
+ digest_clean CHAR(#{@@dl}),
300
+ digest_all CHAR(#{@@dl}),
301
+ types CHAR(1) NULL
302
+ );
303
+ }
304
+ conn_exec(create_doc_objects)
305
+ @comment.psql.doc_objects if @comment
306
+ end
307
+ def endnotes
308
+ if (@opt.act[:verbose_plus][:set]==:on \
309
+ or @opt.act[:maintenance][:set]==:on)
310
+ print %{
311
+ to be populated from document files
312
+ create tables endnotes
313
+ data import through ruby transfer
314
+ }
315
+ end
316
+ create_endnotes=%{
317
+ CREATE TABLE endnotes (
318
+ nid BIGINT PRIMARY KEY,
319
+ document_lid BIGINT REFERENCES doc_objects,
320
+ nr SMALLINT,
321
+ clean TEXT NULL,
322
+ body TEXT NULL,
323
+ ocn SMALLINT,
324
+ ocnd VARCHAR(6),
325
+ ocns VARCHAR(6),
326
+ digest_clean CHAR(#{@@dl}),
327
+ metadata_tid BIGINT REFERENCES metadata_and_text
328
+ );
329
+ }
330
+ conn_exec(create_endnotes)
331
+ @comment.psql.endnotes if @comment
332
+ end
333
+ def endnotes_asterisk
334
+ if (@opt.act[:verbose_plus][:set]==:on \
335
+ or @opt.act[:maintenance][:set]==:on)
336
+ print %{
337
+ to be populated from document files
338
+ create tables endnotes_asterisk
339
+ data import through ruby transfer
340
+ }
341
+ end
342
+ create_endnotes_asterisk=%{
343
+ CREATE TABLE endnotes_asterisk (
344
+ nid BIGINT PRIMARY KEY,
345
+ document_lid BIGINT REFERENCES doc_objects,
346
+ nr SMALLINT,
347
+ clean TEXT NULL,
348
+ body TEXT NULL,
349
+ ocn SMALLINT,
350
+ ocnd VARCHAR(6),
351
+ ocns VARCHAR(6),
352
+ digest_clean CHAR(#{@@dl}),
353
+ metadata_tid BIGINT REFERENCES metadata_and_text
354
+ );
355
+ }
356
+ conn_exec(create_endnotes_asterisk)
357
+ @comment.psql.endnotes_asterisk if @comment
358
+ end
359
+ def endnotes_plus
360
+ if (@opt.act[:verbose_plus][:set]==:on \
361
+ or @opt.act[:maintenance][:set]==:on)
362
+ print %{
363
+ to be populated from document files
364
+ create tables endnotes_plus
365
+ data import through ruby transfer
366
+ }
367
+ end
368
+ create_endnotes_plus=%{
369
+ CREATE TABLE endnotes_plus (
370
+ nid BIGINT PRIMARY KEY,
371
+ document_lid BIGINT REFERENCES doc_objects,
372
+ nr SMALLINT,
373
+ clean TEXT NULL,
374
+ body TEXT NULL,
375
+ ocn SMALLINT,
376
+ ocnd VARCHAR(6),
377
+ ocns VARCHAR(6),
378
+ digest_clean CHAR(#{@@dl}),
379
+ metadata_tid BIGINT REFERENCES metadata_and_text
380
+ );
381
+ }
382
+ conn_exec(create_endnotes_plus)
383
+ @comment.psql.endnotes_plus if @comment
384
+ end
385
+ def urls # create doc_objects file links mapping
386
+ if (@opt.act[:verbose_plus][:set]==:on \
387
+ or @opt.act[:maintenance][:set]==:on)
388
+ print %{
389
+ currently using sisu_dbi module
390
+ to be populated from doc_objects files
391
+ create tables urls
392
+ data import through ruby transfer
393
+ }
394
+ end
395
+ create_urls=%{
396
+ CREATE TABLE urls (
397
+ metadata_tid BIGINT REFERENCES metadata_and_text,
398
+ plaintext varchar(512),
399
+ html_toc varchar(512),
400
+ html_doc varchar(512),
401
+ xhtml varchar(512),
402
+ xml_sax varchar(512),
403
+ xml_dom varchar(512),
404
+ odf varchar(512),
405
+ pdf_p varchar(512),
406
+ pdf_l varchar(512),
407
+ concordance varchar(512),
408
+ latex_p varchar(512),
409
+ latex_l varchar(512),
410
+ digest varchar(512),
411
+ manifest varchar(512),
412
+ markup varchar(512),
413
+ sisupod varchar(512)
414
+ );
415
+ }
416
+ conn_exec(create_urls)
417
+ @comment.psql.urls if @comment
418
+ end
419
+ self
420
+ end
421
+ end
422
+ class Comment < SiSU_DbColumns::Columns
423
+ def initialize(conn,sql_type=:pg)
424
+ @conn=conn
425
+ if sql_type == :pg then psql
426
+ end
427
+ end
428
+ def psql
429
+ def conn_execute_array(sql_arr)
430
+ @conn.transaction do |conn|
431
+ sql_arr.each do |sql|
432
+ conn.exec_params(sql)
433
+ end
434
+ end
435
+ end
436
+ def metadata_and_text
437
+ sql_arr=[
438
+ %{COMMENT ON Table metadata_and_text
439
+ IS 'contains SiSU metadata and fulltext for search (including source .sst if shared)';},
440
+ %{COMMENT ON COLUMN metadata_and_text.tid
441
+ IS 'unique';},
442
+ %{#{column.title.column_comment}},
443
+ %{#{column.title_main.column_comment}},
444
+ %{#{column.title_sub.column_comment}},
445
+ %{#{column.title_short.column_comment}},
446
+ %{#{column.title_edition.column_comment}},
447
+ %{#{column.title_note.column_comment}},
448
+ %{#{column.title_language.column_comment}},
449
+ %{#{column.title_language_char.column_comment}},
450
+ %{#{column.creator_author.column_comment}},
451
+ %{#{column.creator_author_honorific.column_comment}},
452
+ %{#{column.creator_author_nationality.column_comment}},
453
+ %{#{column.creator_editor.column_comment}},
454
+ %{#{column.creator_contributor.column_comment}},
455
+ %{#{column.creator_illustrator.column_comment}},
456
+ %{#{column.creator_photographer.column_comment}},
457
+ %{#{column.creator_translator.column_comment}},
458
+ %{#{column.creator_prepared_by.column_comment}},
459
+ %{#{column.creator_digitized_by.column_comment}},
460
+ %{#{column.creator_audio.column_comment}},
461
+ %{#{column.creator_video.column_comment}},
462
+ %{#{column.language_document.column_comment}},
463
+ %{#{column.language_document_char.column_comment}},
464
+ %{#{column.language_original.column_comment}},
465
+ %{#{column.language_original_char.column_comment}},
466
+ %{#{column.date_added_to_site.column_comment}},
467
+ %{#{column.date_available.column_comment}},
468
+ %{#{column.date_created.column_comment}},
469
+ %{#{column.date_issued.column_comment}},
470
+ %{#{column.date_modified.column_comment}},
471
+ %{#{column.date_published.column_comment}},
472
+ %{#{column.date_valid.column_comment}},
473
+ %{#{column.date_translated.column_comment}},
474
+ %{#{column.date_original_publication.column_comment}},
475
+ %{#{column.date_generated.column_comment}},
476
+ %{#{column.publisher.column_comment}},
477
+ %{#{column.original_publisher.column_comment}},
478
+ %{#{column.original_language.column_comment}},
479
+ %{#{column.original_language_char.column_comment}},
480
+ %{#{column.original_source.column_comment}},
481
+ %{#{column.original_institution.column_comment}},
482
+ %{#{column.original_nationality.column_comment}},
483
+ %{#{column.rights_all.column_comment}},
484
+ %{#{column.rights_copyright_text.column_comment}},
485
+ %{#{column.rights_copyright_translation.column_comment}},
486
+ %{#{column.rights_copyright_illustrations.column_comment}},
487
+ %{#{column.rights_copyright_photographs.column_comment}},
488
+ %{#{column.rights_copyright_preparation.column_comment}},
489
+ %{#{column.rights_copyright_digitization.column_comment}},
490
+ %{#{column.rights_copyright_audio.column_comment}},
491
+ %{#{column.rights_copyright_video.column_comment}},
492
+ %{#{column.rights_license.column_comment}},
493
+ %{#{column.classify_topic_register.column_comment}},
494
+ %{#{column.classify_subject.column_comment}},
495
+ %{#{column.classify_loc.column_comment}},
496
+ %{#{column.classify_dewey.column_comment}},
497
+ %{#{column.classify_keywords.column_comment}},
498
+ %{#{column.identifier_oclc.column_comment}},
499
+ %{#{column.identifier_isbn.column_comment}},
500
+ %{#{column.notes_abstract.column_comment}},
501
+ %{#{column.notes_comment.column_comment}},
502
+ %{#{column.notes_description.column_comment}},
503
+ %{#{column.notes_history.column_comment}},
504
+ %{#{column.notes_coverage.column_comment}},
505
+ %{#{column.notes_relation.column_comment}},
506
+ %{#{column.notes_type.column_comment}},
507
+ %{#{column.notes_format.column_comment}},
508
+ %{#{column.notes_prefix.column_comment}},
509
+ %{#{column.notes_prefix_a.column_comment}},
510
+ %{#{column.notes_prefix_b.column_comment}},
511
+ %{#{column.notes_suffix.column_comment}},
512
+ %{#{column.src_filename.column_comment}},
513
+ %{#{column.src_fingerprint.column_comment}},
514
+ %{#{column.src_filesize.column_comment}},
515
+ %{#{column.src_word_count.column_comment}},
516
+ %{#{column.src_txt.column_comment}},
517
+ %{#{column.fulltext.column_comment}},
518
+ %{#{column.links.column_comment}},
519
+ ]
520
+ conn_execute_array(sql_arr)
521
+ end
522
+ def doc_objects
523
+ sql_arr=[
524
+ %{COMMENT ON Table doc_objects
525
+ IS 'contains searchable text of SiSU document objects';},
526
+ %{COMMENT ON COLUMN doc_objects.lid
527
+ IS 'unique';},
528
+ %{COMMENT ON COLUMN doc_objects.metadata_tid
529
+ IS 'tie to title in metadata_and_text';},
530
+ %{COMMENT ON COLUMN doc_objects.lev_an
531
+ IS 'doc level A-D 1-4';},
532
+ %{COMMENT ON COLUMN doc_objects.lev
533
+ IS 'doc level 0-7 \d\~';},
534
+ %{COMMENT ON COLUMN doc_objects.seg
535
+ IS 'segment name from level number 4 (lv 1)';},
536
+ %{COMMENT ON COLUMN doc_objects.ocn
537
+ IS 'object citation number';},
538
+ %{COMMENT ON COLUMN doc_objects.en_a
539
+ IS 'first endnote number in text object (eg. NULL or 34) (used with en_z to create range)';},
540
+ %{COMMENT ON COLUMN doc_objects.en_z
541
+ IS 'last endnote number within text object (eg. NULL, 34 or say 47) (used with en_a to create range)';},
542
+ %{COMMENT ON COLUMN doc_objects.en_a_asterisk
543
+ IS 'first endnote number in text object (eg. NULL or 34) (used with en_z_asterisk to create range)';},
544
+ %{COMMENT ON COLUMN doc_objects.en_z_asterisk
545
+ IS 'last endnote number within text object (eg. NULL, 34 or say 47) (used with en_a_asterisk to create range)';},
546
+ %{COMMENT ON COLUMN doc_objects.en_a_plus
547
+ IS 'first endnote number in text object (eg. NULL or 34) (used with en_z_plus to create range)';},
548
+ %{COMMENT ON COLUMN doc_objects.en_z_plus
549
+ IS 'last endnote number within text object (eg. NULL, 34 or say 47) (used with en_a_plus to create range)';},
550
+ %{COMMENT ON COLUMN doc_objects.types
551
+ IS 'document types seg scroll';},
552
+ %{COMMENT ON COLUMN doc_objects.clean
553
+ IS 'text object - substantive text: clean, stripped of markup';},
554
+ %{COMMENT ON COLUMN doc_objects.body
555
+ IS 'text object - substantive text: light html markup';},
556
+ %{COMMENT ON COLUMN doc_objects.book_idx
557
+ IS 'book index creation information for paragraph, if provided';},
558
+ %{COMMENT ON COLUMN doc_objects.lev0
559
+ IS 'document structure, level number 0';},
560
+ %{COMMENT ON COLUMN doc_objects.lev1
561
+ IS 'document structure, level number 1';},
562
+ %{COMMENT ON COLUMN doc_objects.lev2
563
+ IS 'document structure, level number 2';},
564
+ %{COMMENT ON COLUMN doc_objects.lev3
565
+ IS 'document structure, level number 3';},
566
+ %{COMMENT ON COLUMN doc_objects.lev4
567
+ IS 'document structure, level number 4';},
568
+ %{COMMENT ON COLUMN doc_objects.lev5
569
+ IS 'document structure, level number 5';},
570
+ %{COMMENT ON COLUMN doc_objects.lev6
571
+ IS 'document structure, level number 6';},
572
+ %{COMMENT ON COLUMN doc_objects.lev7
573
+ IS 'document structure, level number 7';},
574
+ %{COMMENT ON COLUMN doc_objects.t_of
575
+ IS 'document structure, type of object (object is of)';},
576
+ %{COMMENT ON COLUMN doc_objects.t_is
577
+ IS 'document structure, object is';},
578
+ %{COMMENT ON COLUMN doc_objects.node
579
+ IS 'document structure, object node if heading';},
580
+ %{COMMENT ON COLUMN doc_objects.parent
581
+ IS 'document structure, object parent (is a heading)';}
582
+ ]
583
+ conn_execute_array(sql_arr)
584
+ end
585
+ def endnotes
586
+ sql_arr=[
587
+ %{COMMENT ON Table endnotes
588
+ IS 'contains searchable text of SiSU documents endnotes';},
589
+ %{COMMENT ON COLUMN endnotes.nid
590
+ IS 'unique';},
591
+ %{COMMENT ON COLUMN endnotes.document_lid
592
+ IS 'ties to text block from which referenced';},
593
+ %{COMMENT ON COLUMN endnotes.nr
594
+ IS 'endnote number <!e_(\d+)!>';},
595
+ %{COMMENT ON COLUMN endnotes.clean
596
+ IS 'endnote substantive content, stripped of markup';},
597
+ %{COMMENT ON COLUMN endnotes.body
598
+ IS 'endnote substantive content';},
599
+ %{COMMENT ON COLUMN endnotes.ocn
600
+ IS 'object citation no# <\~(\d+)> from which endnote is referenced';},
601
+ %{COMMENT ON COLUMN doc_objects.metadata_tid
602
+ IS 'tie to title in metadata_and_text - unique for each document';}
603
+ ]
604
+ conn_execute_array(sql_arr)
605
+ end
606
+ def endnotes_asterisk
607
+ sql_arr=[
608
+ %{COMMENT ON Table endnotes_asterisk
609
+ IS 'contains searchable text of SiSU documents endnotes marked with asterisk';},
610
+ %{COMMENT ON COLUMN endnotes_asterisk.nid
611
+ IS 'unique';},
612
+ %{COMMENT ON COLUMN endnotes_asterisk.document_lid
613
+ IS 'ties to text block from which referenced';},
614
+ %{COMMENT ON COLUMN endnotes_asterisk.nr
615
+ IS 'endnote number <!e_(\d+)!>';},
616
+ %{COMMENT ON COLUMN endnotes_asterisk.clean
617
+ IS 'endnote substantive content, stripped of markup';},
618
+ %{COMMENT ON COLUMN endnotes_asterisk.body
619
+ IS 'endnote substantive content';},
620
+ %{COMMENT ON COLUMN endnotes_asterisk.ocn
621
+ IS 'object citation no# <\~(\d+)> from which endnote is referenced';},
622
+ %{COMMENT ON COLUMN doc_objects.metadata_tid
623
+ IS 'tie to title in metadata_and_text - unique for each document';}
624
+ ]
625
+ conn_execute_array(sql_arr)
626
+ end
627
+ def endnotes_plus
628
+ sql_arr=[
629
+ %{COMMENT ON Table endnotes_plus
630
+ IS 'contains searchable text of SiSU documents endnotes marked with plus';},
631
+ %{COMMENT ON COLUMN endnotes_plus.nid
632
+ IS 'unique';},
633
+ %{COMMENT ON COLUMN endnotes_plus.document_lid
634
+ IS 'ties to text block from which referenced';},
635
+ %{COMMENT ON COLUMN endnotes_plus.nr
636
+ IS 'endnote number <!e_(\d+)!>';},
637
+ %{COMMENT ON COLUMN endnotes_plus.clean
638
+ IS 'endnote substantive content, stripped of markup';},
639
+ %{COMMENT ON COLUMN endnotes_plus.body
640
+ IS 'endnote substantive content';},
641
+ %{COMMENT ON COLUMN endnotes_plus.ocn
642
+ IS 'object citation no# <\~(\d+)> from which endnote is referenced';},
643
+ %{COMMENT ON COLUMN doc_objects.metadata_tid
644
+ IS 'tie to title in metadata_and_text - unique for each document';},
645
+ ]
646
+ conn_execute_array(sql_arr)
647
+ end
648
+ def urls
649
+ sql_arr=[
650
+ %{COMMENT ON Table urls
651
+ IS 'contains base url links to different SiSU output';},
652
+ %{COMMENT ON COLUMN doc_objects.metadata_tid
653
+ IS 'tie to title in metadata_and_text - unique for each document, the mapping of rows is one to one';},
654
+ %{COMMENT ON COLUMN urls.plaintext
655
+ IS 'plaintext utf-8';},
656
+ %{COMMENT ON COLUMN urls.html_toc
657
+ IS 'table of contents for segmented html document';},
658
+ %{COMMENT ON COLUMN urls.html_doc
659
+ IS 'html document (scroll)';},
660
+ %{COMMENT ON COLUMN urls.xhtml
661
+ IS 'xhtml document (scroll)';},
662
+ %{COMMENT ON COLUMN urls.xml_sax
663
+ IS 'xml sax oriented document (scroll)';},
664
+ %{COMMENT ON COLUMN urls.xml_dom
665
+ IS 'xml dom oriented document (scroll)';},
666
+ %{COMMENT ON COLUMN urls.odf
667
+ IS 'opendocument format text';},
668
+ %{COMMENT ON COLUMN urls.pdf_p
669
+ IS 'pdf portrait';},
670
+ %{COMMENT ON COLUMN urls.pdf_l
671
+ IS 'pdf landscape';},
672
+ %{COMMENT ON COLUMN urls.concordance
673
+ IS 'rudimentary document index linked to html';},
674
+ %{COMMENT ON COLUMN urls.latex_p
675
+ IS 'latex portrait';},
676
+ %{COMMENT ON COLUMN urls.latex_l
677
+ IS 'latex_landscape';},
678
+ %{COMMENT ON COLUMN urls.markup
679
+ IS 'markup';},
680
+ %{COMMENT ON COLUMN urls.sisupod
681
+ IS 'SiSU document format .tgz (all SiSU information on document)';},
682
+ ]
683
+ conn_execute_array(sql_arr)
684
+ end
685
+ self
686
+ end
687
+ end
688
+ end
689
+ __END__