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,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__