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,1997 @@
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_columns.rb;hb=HEAD>
55
+
56
+ =end
57
+ module SiSU_DbColumns
58
+ require_relative 'se' # se.rb
59
+ require_relative 'db_sqltxt' # db_sqltxt.rb
60
+ class Columns < SiSU_DbText::Prepare
61
+ def initialize(md=nil)
62
+ @md=md
63
+ @db=SiSU_Env::InfoDb.new #watch
64
+ @lang ||=SiSU_i18n::Languages.new
65
+ if defined? md.opt.act \
66
+ and ((md.opt.act[:psql_import][:set]==:on \
67
+ || md.opt.act[:psql_update][:set]==:on) \
68
+ or (md.opt.act[:sqlite_import][:set]==:on \
69
+ || md.opt.act[:sqlite_update][:set]==:on)) \
70
+ and FileTest.exist?(md.fns)
71
+ txt_arr=IO.readlines(md.fns,'')
72
+ src=txt_arr.join("\n")
73
+ if @db.share_source?
74
+ @sisutxt=special_character_escape(src)
75
+ else @sisutxt=''
76
+ end
77
+ @fulltext=clean_searchable_text_from_document_objects(txt_arr)
78
+ else @sisutxt,@fulltext='',''
79
+ end
80
+ end
81
+ #% structures
82
+ #def column_define
83
+ # def varchar(name,size)
84
+ # "#{name} VARCHAR(#{size}) NULL,"
85
+ # end
86
+ #end
87
+ =begin
88
+ #% title
89
+ @title:
90
+ :subtitle:
91
+ :short:
92
+ :edition:
93
+ :language:
94
+ :note:
95
+ =end
96
+ def column
97
+ def title # DublinCore 1 - title
98
+ def name
99
+ 'title'
100
+ end
101
+ def create_column
102
+ "#{name} VARCHAR(#{Db[:col_title]}) NOT NULL,"
103
+ end
104
+ def column_comment
105
+ %{COMMENT ON COLUMN metadata_and_text.#{name}
106
+ IS 'metadata full document title [DC1]';}
107
+ end
108
+ def tuple
109
+ if defined? @md.title.full \
110
+ and @md.title.full=~/\S+/
111
+ txt=@md.title.full
112
+ txt=special_character_escape(txt)
113
+ ["#{name}, ","'#{txt}', "]
114
+ else ['','']
115
+ end
116
+ end
117
+ self
118
+ end
119
+ def title_main
120
+ def name
121
+ 'title_main'
122
+ end
123
+ def create_column
124
+ "#{name} VARCHAR(#{Db[:col_title_part]}) NOT NULL,"
125
+ end
126
+ def column_comment
127
+ %{COMMENT ON COLUMN metadata_and_text.#{name}
128
+ IS 'metadata main document title';}
129
+ end
130
+ def tuple
131
+ if defined? @md.title.main \
132
+ and @md.title.main=~/\S+/
133
+ txt=@md.title.main
134
+ txt=special_character_escape(txt)
135
+ ["#{name}, ","'#{txt}', "]
136
+ else ['','']
137
+ end
138
+ end
139
+ self
140
+ end
141
+ def title_sub
142
+ def name
143
+ 'title_sub'
144
+ end
145
+ def create_column
146
+ "#{name} VARCHAR(#{Db[:col_title_part]}) NULL,"
147
+ end
148
+ def column_comment
149
+ %{COMMENT ON COLUMN metadata_and_text.#{name}
150
+ IS 'metadata document subtitle';}
151
+ end
152
+ def tuple
153
+ if defined? @md.title.sub \
154
+ and @md.title.sub=~/\S+/
155
+ txt=@md.title.sub
156
+ txt=special_character_escape(txt)
157
+ ["#{name}, ","'#{txt}', "]
158
+ else ['','']
159
+ end
160
+ end
161
+ self
162
+ end
163
+ def title_short
164
+ def name
165
+ 'title_short'
166
+ end
167
+ def create_column
168
+ "#{name} VARCHAR(#{Db[:col_title_part]}) NULL,"
169
+ end
170
+ def column_comment
171
+ %{COMMENT ON COLUMN metadata_and_text.#{name}
172
+ IS 'metadata document short title if any';}
173
+ end
174
+ def tuple
175
+ if defined? @md.title.short \
176
+ and @md.title.short=~/\S+/
177
+ txt=@md.title.short
178
+ txt=special_character_escape(txt)
179
+ ["#{name}, ","'#{txt}', "]
180
+ else ['','']
181
+ end
182
+ end
183
+ self
184
+ end
185
+ def title_edition
186
+ def name
187
+ 'title_edition'
188
+ end
189
+ def create_column
190
+ "#{name} VARCHAR(#{Db[:col_title_edition]}) NULL,"
191
+ end
192
+ def column_comment
193
+ %{COMMENT ON COLUMN metadata_and_text.#{name}
194
+ IS 'metadata document edition (version)';}
195
+ end
196
+ def tuple
197
+ if defined? @md.title.edition \
198
+ and @md.title.edition=~/\S+/
199
+ txt=@md.title.edition
200
+ txt=special_character_escape(txt)
201
+ ["#{name}, ","'#{txt}', "]
202
+ else ['','']
203
+ end
204
+ end
205
+ self
206
+ end
207
+ def title_note
208
+ def name
209
+ 'title_note'
210
+ end
211
+ def create_column
212
+ "#{name} VARCHAR(#{Db[:col_info_note]}) NULL,"
213
+ end
214
+ def column_comment
215
+ %{COMMENT ON COLUMN metadata_and_text.#{name}
216
+ IS 'metadata document notes associated with title';}
217
+ end
218
+ def tuple
219
+ if defined? @md.title.note \
220
+ and @md.title.note=~/\S+/
221
+ txt=@md.title.note
222
+ txt=special_character_escape(txt)
223
+ ["#{name}, ","'#{txt}', "]
224
+ else ['','']
225
+ end
226
+ end
227
+ self
228
+ end
229
+ def title_language
230
+ def name
231
+ 'title_language'
232
+ end
233
+ def create_column
234
+ "#{name} VARCHAR(#{Db[:col_language]}) NULL,"
235
+ end
236
+ def column_comment
237
+ %{COMMENT ON COLUMN metadata_and_text.#{name}
238
+ IS 'metadata document language [DC12]';}
239
+ end
240
+ def tuple
241
+ if @lang.list[@md.opt.lng][:n]
242
+ txt=@lang.list[@md.opt.lng][:n]
243
+ txt=special_character_escape(txt)
244
+ ["#{name}, ","'#{txt}', "]
245
+ else ['','']
246
+ end
247
+ end
248
+ self
249
+ end
250
+ def title_language_char # consider
251
+ def name
252
+ 'title_language_char'
253
+ end
254
+ def create_column
255
+ "#{name} VARCHAR(#{Db[:col_language_char]}) NULL,"
256
+ end
257
+ def column_comment
258
+ %{COMMENT ON COLUMN metadata_and_text.#{name}
259
+ IS 'metadata document language iso code';}
260
+ end
261
+ def tuple
262
+ if defined? @md.opt.lng \
263
+ and @md.opt.lng=~/\S+/
264
+ txt=@md.opt.lng
265
+ txt=special_character_escape(txt)
266
+ ["#{name}, ","'#{txt}', "]
267
+ else ['','']
268
+ end
269
+ end
270
+ self
271
+ end
272
+ =begin
273
+ #% creator
274
+ @creator:
275
+ :author:
276
+ :editor:
277
+ :contributor:
278
+ :illustrator:
279
+ :photographer:
280
+ :translator:
281
+ :prepared_by:
282
+ :digitized_by:
283
+ :audio:
284
+ :video:
285
+ =end
286
+ def creator_author # DublinCore 2 - creator/author (author)
287
+ def name
288
+ 'creator_author'
289
+ end
290
+ def create_column
291
+ "#{name} VARCHAR(#{Db[:col_name]}) NULL,"
292
+ end
293
+ def column_comment
294
+ %{COMMENT ON COLUMN metadata_and_text.#{name}
295
+ IS 'metadata document author (creator) [DC2]';}
296
+ end
297
+ def tuple
298
+ if defined? @md.creator.author_detail \
299
+ and @md.creator.author_detail.is_a?(Array) \
300
+ and @md.creator.author_detail.length > 0
301
+ txt=''
302
+ @md.creator.author_detail.each do |h|
303
+ txt=txt + %{#{h[:the]}, #{h[:others]}; }
304
+ end
305
+ txt=txt.gsub(/[;, ]+\s*$/,'')
306
+ txt=special_character_escape(txt)
307
+ ["#{name}, ","'#{txt}', "]
308
+ else ['','']
309
+ end
310
+ end
311
+ self
312
+ end
313
+ def creator_author_honorific # consider
314
+ def name
315
+ 'creator_author_hon'
316
+ end
317
+ def create_column
318
+ "#{name} VARCHAR(#{Db[:col_creator_misc_short]}) NULL,"
319
+ end
320
+ def column_comment
321
+ %{COMMENT ON COLUMN metadata_and_text.#{name}
322
+ IS 'metadata document author honorific (title e.g, Ms. Dr. Prof.)';}
323
+ end
324
+ def tuple
325
+ if defined? @md.creator.author_hon \
326
+ and @md.creator.author_hon=~/\S+/
327
+ txt=@md.creator.author_hon
328
+ txt=special_character_escape(txt)
329
+ ["#{name}, ","'#{txt}', "]
330
+ else ['','']
331
+ end
332
+ end
333
+ self
334
+ end
335
+ def creator_author_nationality # consider
336
+ def name
337
+ 'creator_author_nationality'
338
+ end
339
+ def create_column
340
+ "#{name} VARCHAR(#{Db[:col_creator_misc_short]}) NULL,"
341
+ end
342
+ def column_comment
343
+ %{COMMENT ON COLUMN metadata_and_text.#{name}
344
+ IS 'metadata nationality of document author (creator)';}
345
+ end
346
+ def tuple
347
+ if defined? @md.creator.author_nationality_detail \
348
+ and @md.creator.author_nationality=~/\S+/
349
+ txt=@md.creator.author_nationality_detail
350
+ txt=special_character_escape(txt)
351
+ ["#{name}, ","'#{txt}', "]
352
+ else ['','']
353
+ end
354
+ end
355
+ self
356
+ end
357
+ def creator_editor
358
+ def name
359
+ 'creator_editor'
360
+ end
361
+ def create_column
362
+ "#{name} VARCHAR(#{Db[:col_name]}) NULL,"
363
+ end
364
+ def column_comment
365
+ %{COMMENT ON COLUMN metadata_and_text.#{name}
366
+ IS 'metadata document editor name(s)';}
367
+ end
368
+ def tuple
369
+ if defined? @md.creator.editor_detail \
370
+ and @md.creator.editor_detail.is_a?(Array) \
371
+ and @md.creator.editor_detail.length > 0
372
+ txt=''
373
+ @md.creator.editor_detail.each do |h|
374
+ txt=txt + %{#{h[:the]}, #{h[:others]}; }
375
+ end
376
+ txt=txt.gsub(/[;, ]+\s*$/,'')
377
+ txt=special_character_escape(txt)
378
+ ["#{name}, ","'#{txt}', "]
379
+ else ['','']
380
+ end
381
+ end
382
+ self
383
+ end
384
+ def creator_contributor # DublinCore 6 - contributor
385
+ def name
386
+ 'creator_contributor'
387
+ end
388
+ def create_column
389
+ "#{name} VARCHAR(#{Db[:col_name]}) NULL,"
390
+ end
391
+ def column_comment
392
+ %{COMMENT ON COLUMN metadata_and_text.#{name}
393
+ IS 'metadata document contributor name(s) [DC6]';}
394
+ end
395
+ def tuple
396
+ if defined? @md.creator.contributor_detail \
397
+ and @md.creator.contributor_detail.is_a?(Array) \
398
+ and @md.creator.contributor_detail.length > 0
399
+ txt=''
400
+ @md.creator.contributor_detail.each do |h|
401
+ txt=txt + %{#{h[:the]}, #{h[:others]}; }
402
+ end
403
+ txt=txt.gsub(/[;, ]+\s*$/,'')
404
+ txt=special_character_escape(txt)
405
+ ["#{name}, ","'#{txt}', "]
406
+ else ['','']
407
+ end
408
+ end
409
+ self
410
+ end
411
+ def creator_illustrator
412
+ def name
413
+ 'creator_illustrator'
414
+ end
415
+ def create_column
416
+ "#{name} VARCHAR(#{Db[:col_name]}) NULL,"
417
+ end
418
+ def column_comment
419
+ %{COMMENT ON COLUMN metadata_and_text.#{name}
420
+ IS 'metadata document illustrator name(s)';}
421
+ end
422
+ def tuple
423
+ if defined? @md.creator.illustrator_detail \
424
+ and @md.creator.illustrator_detail.is_a?(Array) \
425
+ and @md.creator.illustrator_detail.length > 0
426
+ txt=''
427
+ @md.creator.illustrator_detail.each do |h|
428
+ txt=txt + %{#{h[:the]}, #{h[:others]}; }
429
+ end
430
+ txt=txt.gsub(/[;, ]+\s*$/,'')
431
+ txt=special_character_escape(txt)
432
+ ["#{name}, ","'#{txt}', "]
433
+ else ['','']
434
+ end
435
+ end
436
+ self
437
+ end
438
+ def creator_photographer
439
+ def name
440
+ 'creator_photographer'
441
+ end
442
+ def create_column
443
+ "#{name} VARCHAR(#{Db[:col_name]}) NULL,"
444
+ end
445
+ def column_comment
446
+ %{COMMENT ON COLUMN metadata_and_text.#{name}
447
+ IS 'metadata document photographer name(s)';}
448
+ end
449
+ def tuple
450
+ if defined? @md.creator.photographer_detail \
451
+ and @md.creator.photographer_detail.is_a?(Array) \
452
+ and @md.creator.photographer_detail.length > 0
453
+ txt=''
454
+ @md.creator.photographer_detail.each do |h|
455
+ txt=txt + %{#{h[:the]}, #{h[:others]}; }
456
+ end
457
+ txt=txt.gsub(/[;, ]+\s*$/,'')
458
+ txt=special_character_escape(txt)
459
+ ["#{name}, ","'#{txt}', "]
460
+ else ['','']
461
+ end
462
+ end
463
+ self
464
+ end
465
+ def creator_translator
466
+ def name
467
+ 'creator_translator'
468
+ end
469
+ def create_column
470
+ "#{name} VARCHAR(#{Db[:col_name]}) NULL,"
471
+ end
472
+ def column_comment
473
+ %{COMMENT ON COLUMN metadata_and_text.#{name}
474
+ IS 'metadata document translator name(s)';}
475
+ end
476
+ def tuple
477
+ if defined? @md.creator.translator_detail \
478
+ and @md.creator.translator_detail.is_a?(Array) \
479
+ and @md.creator.translator_detail.length > 0
480
+ txt=''
481
+ @md.creator.translator_detail.each do |h|
482
+ txt=txt + %{#{h[:the]}, #{h[:others]}; }
483
+ end
484
+ txt=txt.gsub(/[;, ]+\s*$/,'')
485
+ txt=special_character_escape(txt)
486
+ ["#{name}, ","'#{txt}', "]
487
+ else ['','']
488
+ end
489
+ end
490
+ self
491
+ end
492
+ def creator_prepared_by
493
+ def name
494
+ 'creator_prepared_by'
495
+ end
496
+ def create_column
497
+ "#{name} VARCHAR(#{Db[:col_name]}) NULL,"
498
+ end
499
+ def column_comment
500
+ %{COMMENT ON COLUMN metadata_and_text.#{name}
501
+ IS 'metadata document prepared by name(s)';}
502
+ end
503
+ def tuple
504
+ if defined? @md.creator.prepared_by_detail \
505
+ and @md.creator.prepared_by_detail.is_a?(Array) \
506
+ and @md.creator.prepared_by_detail.length > 0
507
+ txt=''
508
+ @md.creator.prepared_by_detail.each do |h|
509
+ txt=txt + %{#{h[:the]}, #{h[:others]}; }
510
+ end
511
+ txt=txt.gsub(/[;, ]+\s*$/,'')
512
+ txt=special_character_escape(txt)
513
+ ["#{name}, ","'#{txt}', "]
514
+ else ['','']
515
+ end
516
+ end
517
+ self
518
+ end
519
+ def creator_digitized_by
520
+ def name
521
+ 'creator_digitized_by'
522
+ end
523
+ def create_column
524
+ "#{name} VARCHAR(#{Db[:col_name]}) NULL,"
525
+ end
526
+ def column_comment
527
+ %{COMMENT ON COLUMN metadata_and_text.#{name}
528
+ IS 'metadata document digitized by name(s)';}
529
+ end
530
+ def tuple
531
+ if defined? @md.creator.digitized_by_detail \
532
+ and @md.creator.digitized_by_detail.is_a?(Array) \
533
+ and @md.creator.digitized_by_detail.length > 0
534
+ txt=''
535
+ @md.creator.digitized_by_detail.each do |h|
536
+ txt=txt + %{#{h[:the]}, #{h[:others]}; }
537
+ end
538
+ txt=txt.gsub(/[;, ]+\s*$/,'')
539
+ txt=special_character_escape(txt)
540
+ ["#{name}, ","'#{txt}', "]
541
+ else ['','']
542
+ end
543
+ end
544
+ self
545
+ end
546
+ def creator_audio
547
+ def name
548
+ 'creator_audio'
549
+ end
550
+ def create_column
551
+ "#{name} VARCHAR(#{Db[:col_name]}) NULL,"
552
+ end
553
+ def column_comment
554
+ %{COMMENT ON COLUMN metadata_and_text.#{name}
555
+ IS 'metadata document audio by name(s)';}
556
+ end
557
+ def tuple
558
+ if defined? @md.creator.audio_detail \
559
+ and @md.creator.audio_detail.is_a?(Array) \
560
+ and @md.creator.audio_detail.length > 0
561
+ txt=''
562
+ @md.creator.audio_detail.each do |h|
563
+ txt=txt + %{#{h[:the]}, #{h[:others]}; }
564
+ end
565
+ txt=txt.gsub(/[;, ]+\s*$/,'')
566
+ txt=special_character_escape(txt)
567
+ ["#{name}, ","'#{txt}', "]
568
+ else ['','']
569
+ end
570
+ end
571
+ self
572
+ end
573
+ def creator_video
574
+ def name
575
+ 'creator_video'
576
+ end
577
+ def create_column
578
+ "#{name} VARCHAR(#{Db[:col_name]}) NULL,"
579
+ end
580
+ def column_comment
581
+ %{COMMENT ON COLUMN metadata_and_text.#{name}
582
+ IS 'metadata document video by name(s)';}
583
+ end
584
+ def tuple
585
+ if defined? @md.creator.video_detail \
586
+ and @md.creator.video_detail.is_a?(Array) \
587
+ and @md.creator.video_detail.length > 0
588
+ txt=''
589
+ @md.creator.video_detail.each do |h|
590
+ txt=txt + %{#{h[:the]}, #{h[:others]}; }
591
+ end
592
+ txt=txt.gsub(/[;, ]+\s*$/,'')
593
+ txt=special_character_escape(txt)
594
+ ["#{name}, ","'#{txt}', "]
595
+ else ['','']
596
+ end
597
+ end
598
+ self
599
+ end
600
+ =begin
601
+ #% language
602
+ #taken from other fields
603
+ @title:
604
+ :language:
605
+ @original:
606
+ :language:
607
+ #not available -->
608
+ #@language:
609
+ # :document:
610
+ # :original:
611
+ =end
612
+ def language_document
613
+ def name
614
+ 'language_document'
615
+ end
616
+ def create_column
617
+ "#{name} VARCHAR(#{Db[:col_language]}) NULL,"
618
+ end
619
+ def column_comment
620
+ %{COMMENT ON COLUMN metadata_and_text.#{name}
621
+ IS 'metadata document language';}
622
+ end
623
+ def tuple
624
+ if @lang.list[@md.opt.lng][:n]
625
+ txt=@lang.list[@md.opt.lng][:n]
626
+ txt=special_character_escape(txt)
627
+ ["#{name}, ","'#{txt}', "]
628
+ else ['','']
629
+ end
630
+ end
631
+ self
632
+ end
633
+ def language_document_char
634
+ def name
635
+ 'language_document_char'
636
+ end
637
+ def create_column
638
+ "#{name} VARCHAR(#{Db[:col_language_char]}) NOT NULL,"
639
+ end
640
+ def column_comment
641
+ %{COMMENT ON COLUMN metadata_and_text.#{name}
642
+ IS 'metadata document language';}
643
+ end
644
+ def tuple
645
+ #modify check, is now required, SiSUv3d_
646
+ if defined? @md.opt.lng \
647
+ and @md.opt.lng=~/\S+/
648
+ txt=@md.opt.lng
649
+ txt=special_character_escape(txt)
650
+ ["#{name}, ","'#{txt}', "]
651
+ else ['','']
652
+ end
653
+ end
654
+ self
655
+ end
656
+ def language_original
657
+ def name
658
+ 'language_original'
659
+ end
660
+ def create_column
661
+ "#{name} VARCHAR(#{Db[:col_language]}) NULL,"
662
+ end
663
+ def column_comment
664
+ %{COMMENT ON COLUMN metadata_and_text.#{name}
665
+ IS 'metadata original document/text language';}
666
+ end
667
+ def tuple
668
+ if defined? @md.language.original \
669
+ and @md.language.original=~/\S+/
670
+ txt=@md.language.original
671
+ txt=special_character_escape(txt)
672
+ ["#{name}, ","'#{txt}', "]
673
+ else ['','']
674
+ end
675
+ end
676
+ self
677
+ end
678
+ def language_original_char
679
+ def name
680
+ 'language_original_char'
681
+ end
682
+ def create_column
683
+ "#{name} VARCHAR(#{Db[:col_language_char]}) NULL,"
684
+ end
685
+ def column_comment
686
+ %{COMMENT ON COLUMN metadata_and_text.#{name}
687
+ IS 'metadata document language';}
688
+ end
689
+ def tuple
690
+ if defined? @md.language.original_char \
691
+ and @md.language.original_char=~/\S+/
692
+ txt=@md.language.original_char
693
+ txt=special_character_escape(txt)
694
+ ["#{name}, ","'#{txt}', "]
695
+ else ['','']
696
+ end
697
+ end
698
+ self
699
+ end
700
+ =begin
701
+ #% date
702
+ @date:
703
+ :added_to_site:
704
+ :available:
705
+ :created:
706
+ :issued:
707
+ :modified:
708
+ :published:
709
+ :valid:
710
+ :translated:
711
+ :original_publication:
712
+ =end
713
+ def date_added_to_site
714
+ def name
715
+ 'date_added_to_site'
716
+ end
717
+ def create_column
718
+ "#{name} VARCHAR(#{Db[:col_date_text]}) NULL,"
719
+ #"#{name} DATE,"
720
+ end
721
+ def column_comment
722
+ %{COMMENT ON COLUMN metadata_and_text.#{name}
723
+ IS 'metadata date added to site';}
724
+ end
725
+ def tuple
726
+ if defined? @md.date.added_to_site \
727
+ and @md.date.added_to_site=~/\S+/
728
+ txt=@md.date.added_to_site
729
+ txt=special_character_escape(txt)
730
+ ["#{name}, ","'#{txt}', "]
731
+ else ['','']
732
+ end
733
+ end
734
+ self
735
+ end
736
+ def date_available
737
+ def name
738
+ 'date_available'
739
+ end
740
+ def create_column
741
+ "#{name} VARCHAR(#{Db[:col_date_text]}) NULL,"
742
+ end
743
+ def column_comment
744
+ %{COMMENT ON COLUMN metadata_and_text.#{name}
745
+ IS 'metadata date added to site [DC]';}
746
+ end
747
+ def tuple
748
+ if defined? @md.date.available \
749
+ and @md.date.available=~/\S+/
750
+ txt=@md.date.available
751
+ txt=special_character_escape(txt)
752
+ ["#{name}, ","'#{txt}', "]
753
+ else ['','']
754
+ end
755
+ end
756
+ self
757
+ end
758
+ def date_created
759
+ def name
760
+ 'date_created'
761
+ end
762
+ def create_column
763
+ "#{name} VARCHAR(#{Db[:col_date_text]}) NULL,"
764
+ end
765
+ def column_comment
766
+ %{COMMENT ON COLUMN metadata_and_text.#{name}
767
+ IS 'metadata date created [DC]';}
768
+ end
769
+ def tuple
770
+ if defined? @md.date.created \
771
+ and @md.date.created=~/\S+/
772
+ txt=@md.date.created
773
+ txt=special_character_escape(txt)
774
+ ["#{name}, ","'#{txt}', "]
775
+ else ['','']
776
+ end
777
+ end
778
+ self
779
+ end
780
+ def date_issued
781
+ def name
782
+ 'date_issued'
783
+ end
784
+ def create_column
785
+ "#{name} VARCHAR(#{Db[:col_date_text]}) NULL,"
786
+ end
787
+ def column_comment
788
+ %{COMMENT ON COLUMN metadata_and_text.#{name}
789
+ IS 'metadata date issued [DC]';}
790
+ end
791
+ def tuple
792
+ if defined? @md.date.issued \
793
+ and @md.date.issued=~/\S+/
794
+ txt=@md.date.issued
795
+ txt=special_character_escape(txt)
796
+ ["#{name}, ","'#{txt}', "]
797
+ else ['','']
798
+ end
799
+ end
800
+ self
801
+ end
802
+ def date_modified
803
+ def name
804
+ 'date_modified'
805
+ end
806
+ def create_column
807
+ "#{name} VARCHAR(#{Db[:col_date_text]}) NULL,"
808
+ end
809
+ def column_comment
810
+ %{COMMENT ON COLUMN metadata_and_text.#{name}
811
+ IS 'metadata date modified [DC]';}
812
+ end
813
+ def tuple
814
+ if defined? @md.date.modified \
815
+ and @md.date.modified=~/\S+/
816
+ txt=@md.date.modified
817
+ txt=special_character_escape(txt)
818
+ ["#{name}, ","'#{txt}', "]
819
+ else ['','']
820
+ end
821
+ end
822
+ self
823
+ end
824
+ def date_published
825
+ def name
826
+ 'date_published'
827
+ end
828
+ def create_column
829
+ "#{name} VARCHAR(#{Db[:col_date_text]}) NULL,"
830
+ end
831
+ def column_comment
832
+ %{COMMENT ON COLUMN metadata_and_text.#{name}
833
+ IS 'metadata date published [DC7]';}
834
+ end
835
+ def tuple
836
+ if defined? @md.date.published \
837
+ and @md.date.published=~/\S+/
838
+ txt=@md.date.published
839
+ txt=special_character_escape(txt)
840
+ ["#{name}, ","'#{txt}', "]
841
+ else ['','']
842
+ end
843
+ end
844
+ self
845
+ end
846
+ def date_valid
847
+ def name
848
+ 'date_valid'
849
+ end
850
+ def create_column
851
+ "#{name} VARCHAR(#{Db[:col_date_text]}) NULL,"
852
+ end
853
+ def column_comment
854
+ %{COMMENT ON COLUMN metadata_and_text.#{name}
855
+ IS 'metadata date valid [DC]';}
856
+ end
857
+ def tuple
858
+ if defined? @md.date.valid \
859
+ and @md.date.valid=~/\S+/
860
+ txt=@md.date.valid
861
+ txt=special_character_escape(txt)
862
+ ["#{name}, ","'#{txt}', "]
863
+ else ['','']
864
+ end
865
+ end
866
+ self
867
+ end
868
+ def date_translated
869
+ def name
870
+ 'date_translated'
871
+ end
872
+ def create_column
873
+ "#{name} VARCHAR(#{Db[:col_date_text]}) NULL,"
874
+ end
875
+ def column_comment
876
+ %{COMMENT ON COLUMN metadata_and_text.#{name}
877
+ IS 'metadata date translated';}
878
+ end
879
+ def tuple
880
+ if defined? @md.date.translated \
881
+ and @md.date.translated=~/\S+/
882
+ txt=@md.date.translated
883
+ txt=special_character_escape(txt)
884
+ ["#{name}, ","'#{txt}', "]
885
+ else ['','']
886
+ end
887
+ end
888
+ self
889
+ end
890
+ def date_original_publication
891
+ def name
892
+ 'date_original_publication'
893
+ end
894
+ def create_column
895
+ "#{name} VARCHAR(#{Db[:col_date_text]}) NULL,"
896
+ end
897
+ def column_comment
898
+ %{COMMENT ON COLUMN metadata_and_text.#{name}
899
+ IS 'metadata date of original publication';}
900
+ end
901
+ def tuple
902
+ if defined? @md.date.original_publication \
903
+ and @md.date.original_publication=~/\S+/
904
+ txt=@md.date.original_publication
905
+ txt=special_character_escape(txt)
906
+ ["#{name}, ","'#{txt}', "]
907
+ else ['','']
908
+ end
909
+ end
910
+ self
911
+ end
912
+ def date_generated
913
+ def name
914
+ 'date_generated'
915
+ end
916
+ def create_column #choose other representation of time
917
+ "#{name} VARCHAR(30) NULL,"
918
+ #"#{name} VARCHAR(10) NULL,"
919
+ end
920
+ def column_comment
921
+ %{COMMENT ON COLUMN metadata_and_text.#{name}
922
+ IS 'metadata date of sisu generation of document, automatically populated';}
923
+ end
924
+ def tuple #choose other representation of time
925
+ if defined? @md.generated \
926
+ and @md.generated.to_s=~/\S+/
927
+ txt=@md.generated.to_s
928
+ txt=special_character_escape(txt)
929
+ ["#{name}, ","'#{txt}', "]
930
+ else ['','']
931
+ end
932
+ end
933
+ self
934
+ end
935
+ =begin
936
+ #% publisher
937
+ @publisher:
938
+ =end
939
+ def publisher
940
+ def name
941
+ 'publisher'
942
+ end
943
+ def create_column
944
+ "#{name} VARCHAR(#{Db[:col_name]}) NULL,"
945
+ end
946
+ def column_comment
947
+ %{COMMENT ON COLUMN metadata_and_text.#{name}
948
+ IS 'metadata document publisher [DC5]';}
949
+ end
950
+ def tuple
951
+ if defined? @md.publisher \
952
+ and @md.publisher=~/\S+/
953
+ txt=@md.publisher
954
+ txt=special_character_escape(txt)
955
+ ["#{name}, ","'#{txt}', "]
956
+ else ['','']
957
+ end
958
+ end
959
+ self
960
+ end
961
+ ##% current
962
+ # def current_publisher
963
+ # def name
964
+ # 'current_publisher'
965
+ # end
966
+ # def size
967
+ # 10
968
+ # end
969
+ # def create_column
970
+ # "#{name} VARCHAR(#{current_publisher.size}) NULL,"
971
+ # end
972
+ # def tuple
973
+ # t=if defined? @md.current.publisher \
974
+ # and @md.current.publisher=~/\S+/
975
+ # txt=@md.current.publisher
976
+ # txt=special_character_escape(txt)
977
+ # "'#{txt}', "
978
+ # end
979
+ # end
980
+ # self
981
+ # end
982
+ =begin
983
+ #% original
984
+ @original:
985
+ :publisher:
986
+ #:date: #repeated under date
987
+ :language:
988
+ :institution:
989
+ :nationality:
990
+ :source:
991
+ =end
992
+ def original_publisher
993
+ def name
994
+ 'original_publisher'
995
+ end
996
+ def create_column
997
+ "#{name} VARCHAR(#{Db[:col_name]}) NULL,"
998
+ end
999
+ def column_comment
1000
+ %{COMMENT ON COLUMN metadata_and_text.#{name}
1001
+ IS 'metadata document original publisher [DC5]';}
1002
+ end
1003
+ def tuple
1004
+ if defined? @md.original.publisher \
1005
+ and @md.original.publisher=~/\S+/
1006
+ txt=@md.original.publisher
1007
+ txt=special_character_escape(txt)
1008
+ ["#{name}, ","'#{txt}', "]
1009
+ else ['','']
1010
+ end
1011
+ end
1012
+ self
1013
+ end
1014
+ def original_language
1015
+ def name
1016
+ 'original_language'
1017
+ end
1018
+ def create_column
1019
+ "#{name} VARCHAR(#{Db[:col_language]}) NULL,"
1020
+ end
1021
+ def column_comment
1022
+ %{COMMENT ON COLUMN metadata_and_text.#{name}
1023
+ IS 'metadata document original language';}
1024
+ end
1025
+ def tuple
1026
+ if defined? @md.original.language \
1027
+ and @md.original.language=~/\S+/
1028
+ txt=@md.original.language
1029
+ txt=special_character_escape(txt)
1030
+ ["#{name}, ","'#{txt}', "]
1031
+ else ['','']
1032
+ end
1033
+ end
1034
+ self
1035
+ end
1036
+ def original_language_char # consider
1037
+ def name
1038
+ 'original_language_char'
1039
+ end
1040
+ def create_column
1041
+ "#{name} VARCHAR(#{Db[:col_language_char]}) NULL,"
1042
+ end
1043
+ def column_comment
1044
+ %{COMMENT ON COLUMN metadata_and_text.#{name}
1045
+ IS 'metadata document original language iso character';}
1046
+ end
1047
+ def tuple
1048
+ if defined? @md.original.language_char \
1049
+ and @md.original.language_char=~/\S+/
1050
+ txt=@md.original.language_char
1051
+ txt=special_character_escape(txt)
1052
+ ["#{name}, ","'#{txt}', "]
1053
+ else ['','']
1054
+ end
1055
+ end
1056
+ self
1057
+ end
1058
+ def original_source
1059
+ def name
1060
+ 'original_source'
1061
+ end
1062
+ def create_column
1063
+ "#{name} VARCHAR(#{Db[:col_name]}) NULL,"
1064
+ end
1065
+ def column_comment
1066
+ %{COMMENT ON COLUMN metadata_and_text.#{name}
1067
+ IS 'metadata document original source [DC11]';}
1068
+ end
1069
+ def tuple
1070
+ if defined? @md.original.source \
1071
+ and @md.original.source=~/\S+/
1072
+ txt=@md.original.source
1073
+ txt=special_character_escape(txt)
1074
+ ["#{name}, ","'#{txt}', "]
1075
+ else ['','']
1076
+ end
1077
+ end
1078
+ self
1079
+ end
1080
+ def original_institution
1081
+ def name
1082
+ 'original_institution'
1083
+ end
1084
+ def create_column
1085
+ "#{name} VARCHAR(#{Db[:col_name]}) NULL,"
1086
+ end
1087
+ def column_comment
1088
+ %{COMMENT ON COLUMN metadata_and_text.#{name}
1089
+ IS 'metadata document original institution';}
1090
+ end
1091
+ def tuple
1092
+ if defined? @md.original.institution \
1093
+ and @md.original.institution=~/\S+/
1094
+ txt=@md.original.institution
1095
+ txt=special_character_escape(txt)
1096
+ ["#{name}, ","'#{txt}', "]
1097
+ else ['','']
1098
+ end
1099
+ end
1100
+ self
1101
+ end
1102
+ def original_nationality
1103
+ def name
1104
+ 'original_nationality'
1105
+ end
1106
+ def create_column
1107
+ "#{name} VARCHAR(#{Db[:col_language]}) NULL,"
1108
+ end
1109
+ def column_comment
1110
+ %{COMMENT ON COLUMN metadata_and_text.#{name}
1111
+ IS 'metadata document original nationality';}
1112
+ end
1113
+ def tuple
1114
+ if defined? @md.original.nationality \
1115
+ and @md.original.nationality=~/\S+/
1116
+ txt=@md.original.nationality
1117
+ txt=special_character_escape(txt)
1118
+ ["#{name}, ","'#{txt}', "]
1119
+ else ['','']
1120
+ end
1121
+ end
1122
+ self
1123
+ end
1124
+ =begin
1125
+ #% rights
1126
+ @rights:
1127
+ #:copyright: #mapped to :text: used where no other copyrights and included in :all:
1128
+ :text:
1129
+ :translation:
1130
+ :illustrations:
1131
+ :photographs:
1132
+ :preparation:
1133
+ :digitization:
1134
+ :audio:
1135
+ :video:
1136
+ :license:
1137
+ :all:
1138
+ =end
1139
+ def rights_all
1140
+ def name
1141
+ 'rights'
1142
+ end
1143
+ def create_column
1144
+ "#{name} VARCHAR(#{Db[:col_info_note]}) NULL,"
1145
+ end
1146
+ def column_comment
1147
+ %{COMMENT ON COLUMN metadata_and_text.#{name}
1148
+ IS 'metadata rights associated with document (composite) [DC15]';}
1149
+ end
1150
+ def tuple
1151
+ if defined? @md.rights.all \
1152
+ and @md.rights.all=~/\S+/
1153
+ txt=@md.rights.all
1154
+ txt=special_character_escape(txt)
1155
+ ["#{name}, ","'#{txt}', "]
1156
+ else ['','']
1157
+ end
1158
+ end
1159
+ self
1160
+ end
1161
+ def rights_copyright_text
1162
+ def name
1163
+ 'rights_copyright_text'
1164
+ end
1165
+ def create_column
1166
+ "#{name} VARCHAR(#{Db[:col_info_note]}) NULL,"
1167
+ end
1168
+ def column_comment
1169
+ %{COMMENT ON COLUMN metadata_and_text.#{name}
1170
+ IS 'metadata copyright associated for document text';}
1171
+ end
1172
+ def tuple
1173
+ if defined? @md.rights.copyright_text \
1174
+ and @md.rights.copyright_text=~/\S+/
1175
+ txt=@md.rights.copyright_text
1176
+ txt=special_character_escape(txt)
1177
+ ["#{name}, ","'#{txt}', "]
1178
+ else ['','']
1179
+ end
1180
+ end
1181
+ self
1182
+ end
1183
+ def rights_copyright_translation
1184
+ def name
1185
+ 'rights_copyright_translation'
1186
+ end
1187
+ def create_column
1188
+ "#{name} VARCHAR(#{Db[:col_info_note]}) NULL,"
1189
+ end
1190
+ def column_comment
1191
+ %{COMMENT ON COLUMN metadata_and_text.#{name}
1192
+ IS 'metadata copyright associated for document text translation (if any)';}
1193
+ end
1194
+ def tuple
1195
+ if defined? @md.rights.copyright_translation \
1196
+ and @md.rights.copyright_translation=~/\S+/
1197
+ txt=@md.rights.copyright_translation
1198
+ txt=special_character_escape(txt)
1199
+ ["#{name}, ","'#{txt}', "]
1200
+ else ['','']
1201
+ end
1202
+ end
1203
+ self
1204
+ end
1205
+ def rights_copyright_illustrations
1206
+ def name
1207
+ 'rights_copyright_illustrations'
1208
+ end
1209
+ def create_column
1210
+ "#{name} VARCHAR(#{Db[:col_info_note]}) NULL,"
1211
+ end
1212
+ def column_comment
1213
+ %{COMMENT ON COLUMN metadata_and_text.#{name}
1214
+ IS 'metadata copyright associated for document text illustrations (if any)';}
1215
+ end
1216
+ def tuple
1217
+ if defined? @md.rights.copyright_illustrations \
1218
+ and @md.rights.copyright_illustrations=~/\S+/
1219
+ txt=@md.rights.copyright_illustrations
1220
+ txt=special_character_escape(txt)
1221
+ ["#{name}, ","'#{txt}', "]
1222
+ else ['','']
1223
+ end
1224
+ end
1225
+ self
1226
+ end
1227
+ def rights_copyright_photographs
1228
+ def name
1229
+ 'rights_copyright_photographs'
1230
+ end
1231
+ def create_column
1232
+ "#{name} VARCHAR(#{Db[:col_info_note]}) NULL,"
1233
+ end
1234
+ def column_comment
1235
+ %{COMMENT ON COLUMN metadata_and_text.#{name}
1236
+ IS 'metadata copyright associated for document text photographs (if any)';}
1237
+ end
1238
+ def tuple
1239
+ if defined? @md.rights.copyright_photographs \
1240
+ and @md.rights.copyright_photographs=~/\S+/
1241
+ txt=@md.rights.copyright_photographs
1242
+ txt=special_character_escape(txt)
1243
+ ["#{name}, ","'#{txt}', "]
1244
+ else ['','']
1245
+ end
1246
+ end
1247
+ self
1248
+ end
1249
+ def rights_copyright_preparation
1250
+ def name
1251
+ 'rights_copyright_preparation'
1252
+ end
1253
+ def create_column
1254
+ "#{name} VARCHAR(#{Db[:col_info_note]}) NULL,"
1255
+ end
1256
+ def column_comment
1257
+ %{COMMENT ON COLUMN metadata_and_text.#{name}
1258
+ IS 'metadata copyright associated for document text preparation (if any)';}
1259
+ end
1260
+ def tuple
1261
+ if defined? @md.rights.copyright_preparation \
1262
+ and @md.rights.copyright_preparation=~/\S+/
1263
+ txt=@md.rights.copyright_preparation
1264
+ txt=special_character_escape(txt)
1265
+ ["#{name}, ","'#{txt}', "]
1266
+ else ['','']
1267
+ end
1268
+ end
1269
+ self
1270
+ end
1271
+ def rights_copyright_digitization
1272
+ def name
1273
+ 'rights_copyright_digitization'
1274
+ end
1275
+ def create_column
1276
+ "#{name} VARCHAR(#{Db[:col_info_note]}) NULL,"
1277
+ end
1278
+ def column_comment
1279
+ %{COMMENT ON COLUMN metadata_and_text.#{name}
1280
+ IS 'metadata copyright associated for document text digitization (if any)';}
1281
+ end
1282
+ def tuple
1283
+ if defined? @md.rights.copyright_digitization \
1284
+ and @md.rights.copyright_digitization=~/\S+/
1285
+ txt=@md.rights.copyright_digitization
1286
+ txt=special_character_escape(txt)
1287
+ ["#{name}, ","'#{txt}', "]
1288
+ else ['','']
1289
+ end
1290
+ end
1291
+ self
1292
+ end
1293
+ def rights_copyright_audio
1294
+ def name
1295
+ 'rights_copyright_audio'
1296
+ end
1297
+ def create_column
1298
+ "#{name} VARCHAR(#{Db[:col_info_note]}) NULL,"
1299
+ end
1300
+ def column_comment
1301
+ %{COMMENT ON COLUMN metadata_and_text.#{name}
1302
+ IS 'metadata copyright associated for document text audio (if any)';}
1303
+ end
1304
+ def tuple
1305
+ if defined? @md.rights.copyright_audio \
1306
+ and @md.rights.copyright_audio=~/\S+/
1307
+ txt=@md.rights.copyright_audio
1308
+ txt=special_character_escape(txt)
1309
+ ["#{name}, ","'#{txt}', "]
1310
+ else ['','']
1311
+ end
1312
+ end
1313
+ self
1314
+ end
1315
+ def rights_copyright_video
1316
+ def name
1317
+ 'rights_copyright_video'
1318
+ end
1319
+ def create_column
1320
+ "#{name} VARCHAR(#{Db[:col_info_note]}) NULL,"
1321
+ end
1322
+ def column_comment
1323
+ %{COMMENT ON COLUMN metadata_and_text.#{name}
1324
+ IS 'metadata copyright associated for document text video (if any)';}
1325
+ end
1326
+ def tuple
1327
+ if defined? @md.rights.copyright_video \
1328
+ and @md.rights.copyright_video=~/\S+/
1329
+ txt=@md.rights.copyright_video
1330
+ txt=special_character_escape(txt)
1331
+ ["#{name}, ","'#{txt}', "]
1332
+ else ['','']
1333
+ end
1334
+ end
1335
+ self
1336
+ end
1337
+ def rights_license
1338
+ def name
1339
+ 'rights_license'
1340
+ end
1341
+ def create_column
1342
+ "#{name} VARCHAR(#{Db[:col_info_note]}) NULL,"
1343
+ end
1344
+ def column_comment
1345
+ %{COMMENT ON COLUMN metadata_and_text.#{name}
1346
+ IS 'metadata license granted for use of document if any)';}
1347
+ end
1348
+ def tuple
1349
+ if defined? @md.rights.license \
1350
+ and @md.rights.license=~/\S+/
1351
+ txt=@md.rights.license
1352
+ txt=special_character_escape(txt)
1353
+ ["#{name}, ","'#{txt}', "]
1354
+ else ['','']
1355
+ end
1356
+ end
1357
+ self
1358
+ end
1359
+ =begin
1360
+ #% identifier
1361
+ @identifier:
1362
+ :oclc:
1363
+ :isbn:
1364
+ =end
1365
+ def identifier_oclc
1366
+ def name
1367
+ 'identifier_oclc'
1368
+ end
1369
+ def create_column
1370
+ "#{name} VARCHAR(#{Db[:col_library]}) NULL,"
1371
+ end
1372
+ def column_comment
1373
+ %{COMMENT ON COLUMN metadata_and_text.#{name}
1374
+ IS 'metadata identifier document Online Computer Library Center number';}
1375
+ end
1376
+ def tuple
1377
+ if defined? @md.identifier.oclc \
1378
+ and @md.identifier.oclc=~/\S+/
1379
+ txt=@md.identifier.oclc
1380
+ txt=special_character_escape(txt)
1381
+ ["#{name}, ","'#{txt}', "]
1382
+ else ['','']
1383
+ end
1384
+ end
1385
+ self
1386
+ end
1387
+ def identifier_isbn
1388
+ def name
1389
+ 'identifier_isbn'
1390
+ end
1391
+ def create_column
1392
+ "#{name} VARCHAR(#{Db[:col_small]}) NULL,"
1393
+ end
1394
+ def column_comment
1395
+ %{COMMENT ON COLUMN metadata_and_text.#{name}
1396
+ IS 'metadata identifier document isbn (if any)';}
1397
+ end
1398
+ def tuple
1399
+ if defined? @md.identifier.isbn \
1400
+ and @md.identifier.isbn=~/\S+/
1401
+ txt=@md.identifier.isbn
1402
+ txt=special_character_escape(txt)
1403
+ ["#{name}, ","'#{txt}', "]
1404
+ else ['','']
1405
+ end
1406
+ end
1407
+ self
1408
+ end
1409
+ =begin
1410
+ #% classify
1411
+ @classify:
1412
+ :topic_register:
1413
+ :subject:
1414
+ :keywords:
1415
+ :type:
1416
+ :loc:
1417
+ :dewey:
1418
+ =end
1419
+ def classify_topic_register
1420
+ def name
1421
+ 'classify_topic_register'
1422
+ end
1423
+ def create_column
1424
+ "#{name} VARCHAR(#{Db[:col_info_note]}) NULL,"
1425
+ end
1426
+ def column_comment
1427
+ %{COMMENT ON COLUMN metadata_and_text.#{name}
1428
+ IS 'metadata classify document topic register (semi-structured document subject information)';}
1429
+ end
1430
+ def tuple
1431
+ if defined? @md.classify.topic_register \
1432
+ and @md.classify.topic_register=~/\S+/
1433
+ txt=@md.classify.topic_register
1434
+ txt=special_character_escape(txt)
1435
+ ["#{name}, ","'#{txt}', "]
1436
+ else ['','']
1437
+ end
1438
+ end
1439
+ self
1440
+ end
1441
+ def classify_subject
1442
+ def name
1443
+ 'classify_subject'
1444
+ end
1445
+ def create_column
1446
+ "#{name} VARCHAR(#{Db[:col_txt_long]}) NULL,"
1447
+ end
1448
+ def column_comment
1449
+ %{COMMENT ON COLUMN metadata_and_text.#{name}
1450
+ IS 'metadata classify document subject matter [DC3]';}
1451
+ end
1452
+ def tuple
1453
+ if defined? @md.classify.subject \
1454
+ and @md.classify.subject=~/\S+/
1455
+ txt=@md.classify.subject
1456
+ txt=special_character_escape(txt)
1457
+ ["#{name}, ","'#{txt}', "]
1458
+ else ['','']
1459
+ end
1460
+ end
1461
+ self
1462
+ end
1463
+ def classify_loc
1464
+ def name
1465
+ 'classify_loc'
1466
+ end
1467
+ def create_column
1468
+ "#{name} VARCHAR(#{Db[:col_library]}) NULL,"
1469
+ end
1470
+ def column_comment
1471
+ %{COMMENT ON COLUMN metadata_and_text.#{name}
1472
+ IS 'metadata classify document Library of Congress';}
1473
+ end
1474
+ def tuple
1475
+ if defined? @md.classify.loc \
1476
+ and @md.classify.loc=~/\S+/
1477
+ txt=@md.classify.loc
1478
+ txt=special_character_escape(txt)
1479
+ ["#{name}, ","'#{txt}', "]
1480
+ else ['','']
1481
+ end
1482
+ end
1483
+ self
1484
+ end
1485
+ def classify_dewey
1486
+ def name
1487
+ 'classify_dewey'
1488
+ end
1489
+ def create_column
1490
+ "#{name} VARCHAR(#{Db[:col_library]}) NULL,"
1491
+ end
1492
+ def column_comment
1493
+ %{COMMENT ON COLUMN metadata_and_text.#{name}
1494
+ IS 'metadata classify document Dewey';}
1495
+ end
1496
+ def tuple
1497
+ if defined? @md.classify.dewey \
1498
+ and @md.classify.dewey=~/\S+/
1499
+ txt=@md.classify.dewey
1500
+ txt=special_character_escape(txt)
1501
+ ["#{name}, ","'#{txt}', "]
1502
+ else ['','']
1503
+ end
1504
+ end
1505
+ self
1506
+ end
1507
+ def classify_keywords
1508
+ def name
1509
+ 'classify_keywords'
1510
+ end
1511
+ def create_column
1512
+ "#{name} VARCHAR(#{Db[:col_txt_long]}) NULL,"
1513
+ end
1514
+ def column_comment
1515
+ %{COMMENT ON COLUMN metadata_and_text.#{name}
1516
+ IS 'metadata classify document keywords';}
1517
+ end
1518
+ def tuple
1519
+ if defined? @md.classify.keywords \
1520
+ and @md.classify.keywords=~/\S+/
1521
+ txt=@md.classify.keywords
1522
+ txt=special_character_escape(txt)
1523
+ ["#{name}, ","'#{txt}', "]
1524
+ else ['','']
1525
+ end
1526
+ end
1527
+ self
1528
+ end
1529
+ =begin
1530
+ #% notes
1531
+ @notes:
1532
+ :abstract:
1533
+ :description:
1534
+ :comment:
1535
+ :coverage:
1536
+ :relation:
1537
+ :format:
1538
+ :history:
1539
+ :prefix:
1540
+ :prefix_a:
1541
+ :prefix_b:
1542
+ :suffix:
1543
+ =end
1544
+ def notes_abstract
1545
+ def name
1546
+ 'notes_abstract'
1547
+ end
1548
+ def create_column
1549
+ "#{name} TEXT NULL,"
1550
+ end
1551
+ def column_comment
1552
+ %{COMMENT ON COLUMN metadata_and_text.#{name}
1553
+ IS 'metadata document notes abstract';}
1554
+ end
1555
+ def tuple
1556
+ if defined? @md.notes.abstract \
1557
+ and @md.notes.abstract=~/\S+/
1558
+ txt=@md.notes.abstract
1559
+ txt=special_character_escape(txt)
1560
+ ["#{name}, ","'#{txt}', "]
1561
+ else ['','']
1562
+ end
1563
+ end
1564
+ self
1565
+ end
1566
+ def notes_description
1567
+ def name
1568
+ 'notes_description'
1569
+ end
1570
+ def create_column
1571
+ "#{name} TEXT NULL,"
1572
+ end
1573
+ def column_comment
1574
+ %{COMMENT ON COLUMN metadata_and_text.#{name}
1575
+ IS 'metadata document notes description [DC4]';}
1576
+ end
1577
+ def tuple
1578
+ if defined? @md.notes.description \
1579
+ and @md.notes.description=~/\S+/
1580
+ txt=@md.notes.description
1581
+ txt=special_character_escape(txt)
1582
+ ["#{name}, ","'#{txt}', "]
1583
+ else ['','']
1584
+ end
1585
+ end
1586
+ self
1587
+ end
1588
+ def notes_comment
1589
+ def name
1590
+ 'notes_comment'
1591
+ end
1592
+ def create_column
1593
+ "#{name} TEXT NULL,"
1594
+ end
1595
+ def column_comment
1596
+ %{COMMENT ON COLUMN metadata_and_text.#{name}
1597
+ IS 'metadata document notes comment';}
1598
+ end
1599
+ def tuple
1600
+ if defined? @md.notes.comment \
1601
+ and @md.notes.comment=~/\S+/
1602
+ txt=@md.notes.comment
1603
+ txt=special_character_escape(txt)
1604
+ ["#{name}, ","'#{txt}', "]
1605
+ else ['','']
1606
+ end
1607
+ end
1608
+ self
1609
+ end
1610
+ def notes_coverage
1611
+ def name
1612
+ 'notes_coverage'
1613
+ end
1614
+ def create_column
1615
+ "#{name} VARCHAR(#{Db[:col_txt_short]}) NULL,"
1616
+ end
1617
+ def column_comment
1618
+ %{COMMENT ON COLUMN metadata_and_text.#{name}
1619
+ IS 'metadata classify document coverage [DC14]';}
1620
+ end
1621
+ def tuple
1622
+ if defined? @md.classify.coverage \
1623
+ and @md.classify.coverage=~/\S+/
1624
+ txt=@md.classify.coverage
1625
+ txt=special_character_escape(txt)
1626
+ ["#{name}, ","'#{txt}', "]
1627
+ else ['','']
1628
+ end
1629
+ end
1630
+ self
1631
+ end
1632
+ def notes_relation
1633
+ def name
1634
+ 'notes_relation'
1635
+ end
1636
+ def create_column
1637
+ "#{name} VARCHAR(#{Db[:col_txt_short]}) NULL,"
1638
+ end
1639
+ def column_comment
1640
+ %{COMMENT ON COLUMN metadata_and_text.#{name}
1641
+ IS 'metadata classify document relation [DC13]';}
1642
+ end
1643
+ def tuple
1644
+ if defined? @md.classify.relation \
1645
+ and @md.classify.relation=~/\S+/
1646
+ txt=@md.classify.relation
1647
+ txt=special_character_escape(txt)
1648
+ ["#{name}, ","'#{txt}', "]
1649
+ else ['','']
1650
+ end
1651
+ end
1652
+ self
1653
+ end
1654
+ def notes_history #check, consider removal
1655
+ def name
1656
+ 'notes_history'
1657
+ end
1658
+ def create_column
1659
+ "#{name} VARCHAR(#{Db[:col_txt_long]}) NULL,"
1660
+ end
1661
+ def column_comment
1662
+ %{COMMENT ON COLUMN metadata_and_text.#{name}
1663
+ IS 'metadata document notes history';}
1664
+ end
1665
+ def tuple
1666
+ if defined? @md.notes.history \
1667
+ and @md.notes.history=~/\S+/
1668
+ txt=@md.notes.history
1669
+ txt=special_character_escape(txt)
1670
+ ["#{name}, ","'#{txt}', "]
1671
+ else ['','']
1672
+ end
1673
+ end
1674
+ self
1675
+ end
1676
+ def notes_type #check
1677
+ def name
1678
+ 'notes_type'
1679
+ end
1680
+ def create_column
1681
+ "#{name} VARCHAR(#{Db[:col_txt_long]}) NULL,"
1682
+ end
1683
+ def column_comment
1684
+ %{COMMENT ON COLUMN metadata_and_text.#{name}
1685
+ IS 'metadata notes document type [DC8]';}
1686
+ end
1687
+ def tuple
1688
+ if defined? @md.notes.type \
1689
+ and @md.notes.type=~/\S+/
1690
+ txt=@md.notes.type
1691
+ txt=special_character_escape(txt)
1692
+ ["#{name}, ","'#{txt}', "]
1693
+ else ['','']
1694
+ end
1695
+ end
1696
+ self
1697
+ end
1698
+ def notes_format
1699
+ def name
1700
+ 'notes_format'
1701
+ end
1702
+ def create_column
1703
+ "#{name} VARCHAR(#{Db[:col_txt_long]}) NULL,"
1704
+ end
1705
+ def column_comment
1706
+ %{COMMENT ON COLUMN metadata_and_text.#{name}
1707
+ IS 'metadata classify document format [DC9]';}
1708
+ end
1709
+ def tuple
1710
+ if defined? @md.classify.format \
1711
+ and @md.classify.format=~/\S+/
1712
+ txt=@md.classify.format
1713
+ txt=special_character_escape(txt)
1714
+ ["#{name}, ","'#{txt}', "]
1715
+ else ['','']
1716
+ end
1717
+ end
1718
+ self
1719
+ end
1720
+ def notes_prefix
1721
+ def name
1722
+ 'notes_prefix'
1723
+ end
1724
+ def create_column
1725
+ "#{name} TEXT NULL,"
1726
+ end
1727
+ def column_comment
1728
+ %{COMMENT ON COLUMN metadata_and_text.#{name}
1729
+ IS 'metadata document notes prefix';}
1730
+ end
1731
+ def tuple
1732
+ if defined? @md.notes.prefix \
1733
+ and @md.notes.prefix=~/\S+/
1734
+ txt=@md.notes.prefix
1735
+ txt=special_character_escape(txt)
1736
+ ["#{name}, ","'#{txt}', "]
1737
+ else ['','']
1738
+ end
1739
+ end
1740
+ self
1741
+ end
1742
+ def notes_prefix_a
1743
+ def name
1744
+ 'notes_prefix_a'
1745
+ end
1746
+ def create_column
1747
+ "#{name} TEXT NULL,"
1748
+ end
1749
+ def column_comment
1750
+ %{COMMENT ON COLUMN metadata_and_text.#{name}
1751
+ IS 'metadata document notes prefix_a';}
1752
+ end
1753
+ def tuple
1754
+ if defined? @md.notes.prefix_a \
1755
+ and @md.notes.prefix_a=~/\S+/
1756
+ txt=@md.notes.prefix_a
1757
+ txt=special_character_escape(txt)
1758
+ ["#{name}, ","'#{txt}', "]
1759
+ else ['','']
1760
+ end
1761
+ end
1762
+ self
1763
+ end
1764
+ def notes_prefix_b
1765
+ def name
1766
+ 'notes_prefix_b'
1767
+ end
1768
+ def create_column
1769
+ "#{name} TEXT NULL,"
1770
+ end
1771
+ def column_comment
1772
+ %{COMMENT ON COLUMN metadata_and_text.#{name}
1773
+ IS 'metadata document notes prefix_b';}
1774
+ end
1775
+ def tuple
1776
+ if defined? @md.notes.prefix_b \
1777
+ and @md.notes.prefix_b=~/\S+/
1778
+ txt=@md.notes.prefix_b
1779
+ txt=special_character_escape(txt)
1780
+ ["#{name}, ","'#{txt}', "]
1781
+ else ['','']
1782
+ end
1783
+ end
1784
+ self
1785
+ end
1786
+ def notes_suffix
1787
+ def name
1788
+ 'notes_suffix'
1789
+ end
1790
+ def create_column # keep text
1791
+ "#{name} TEXT NULL,"
1792
+ end
1793
+ def column_comment
1794
+ %{COMMENT ON COLUMN metadata_and_text.#{name}
1795
+ IS 'metadata document notes suffix';}
1796
+ end
1797
+ def tuple
1798
+ if defined? @md.notes.suffix \
1799
+ and @md.notes.suffix=~/\S+/
1800
+ txt=@md.notes.suffix
1801
+ txt=special_character_escape(txt)
1802
+ ["#{name}, ","'#{txt}', "]
1803
+ else ['','']
1804
+ end
1805
+ end
1806
+ self
1807
+ end
1808
+ =begin
1809
+ #% src
1810
+ =end
1811
+ def src_filename
1812
+ def name
1813
+ 'src_filename'
1814
+ end
1815
+ def create_column
1816
+ "#{name} VARCHAR(#{Db[:col_filename]}) NOT NULL,"
1817
+ end
1818
+ def column_comment
1819
+ %{COMMENT ON COLUMN metadata_and_text.#{name}
1820
+ IS 'sisu markup source text filename';}
1821
+ end
1822
+ def tuple
1823
+ if defined? @md.fns \
1824
+ and @md.fns=~/\S+/
1825
+ txt=@md.fns
1826
+ txt=special_character_escape(txt)
1827
+ ["#{name}, ","'#{txt}', "]
1828
+ else ['','']
1829
+ end
1830
+ end
1831
+ self
1832
+ end
1833
+ def src_fingerprint
1834
+ def name
1835
+ 'src_fingerprint' #hash/digest, sha512, sha256 or md5
1836
+ end
1837
+ def create_column
1838
+ "#{name} VARCHAR(#{Db[:col_digest]}) NULL,"
1839
+ #"#{name} TEXT NULL,"
1840
+ end
1841
+ def column_comment
1842
+ %{COMMENT ON COLUMN metadata_and_text.#{name}
1843
+ IS 'sisu markup source text fingerprint, hash digest sha512, sha256 or md5';}
1844
+ end
1845
+ def tuple
1846
+ if defined? @md.dgst \
1847
+ and @md.dgst.is_a?(Array) \
1848
+ and @md.dgst[1]=~/\S+/
1849
+ txt=@md.dgst[1]
1850
+ ["#{name}, ","'#{txt}', "]
1851
+ else ['','']
1852
+ end
1853
+ end
1854
+ self
1855
+ end
1856
+ def src_filesize
1857
+ def name
1858
+ 'src_filesize'
1859
+ end
1860
+ def create_column
1861
+ "#{name} VARCHAR(#{Db[:col_filesize]}) NULL,"
1862
+ end
1863
+ def column_comment
1864
+ %{COMMENT ON COLUMN metadata_and_text.#{name}
1865
+ IS 'sisu markup source text file size';}
1866
+ end
1867
+ def tuple
1868
+ if defined? @md.filesize \
1869
+ and @md.filesize=~/\S+/
1870
+ txt=@md.filesize
1871
+ txt=special_character_escape(txt)
1872
+ ["#{name}, ","'#{txt}', "]
1873
+ else ['','']
1874
+ end
1875
+ end
1876
+ self
1877
+ end
1878
+ def src_word_count
1879
+ def name
1880
+ 'src_word_count'
1881
+ end
1882
+ def create_column
1883
+ "#{name} TEXT NULL,"
1884
+ end
1885
+ def column_comment
1886
+ %{COMMENT ON COLUMN metadata_and_text.#{name}
1887
+ IS 'sisu markup source text word count';}
1888
+ end
1889
+ def tuple
1890
+ if defined? @md.wc_words \
1891
+ and @md.wc_words=~/\S+/
1892
+ txt=@md.wc_words
1893
+ txt=special_character_escape(txt)
1894
+ ["#{name}, ","'#{txt}', "]
1895
+ else ['','']
1896
+ end
1897
+ end
1898
+ self
1899
+ end
1900
+ def src_txt # consider naming sisusrc
1901
+ def name
1902
+ 'src_text'
1903
+ end
1904
+ def create_column
1905
+ "#{name} TEXT NULL,"
1906
+ end
1907
+ def column_comment
1908
+ %{COMMENT ON COLUMN metadata_and_text.#{name}
1909
+ IS 'sisu markup source text (if shared)';}
1910
+ end
1911
+ def tuple
1912
+ if ((@md.opt.act[:psql_import][:set]==:on \
1913
+ || @md.opt.act[:psql_update][:set]==:on) \
1914
+ or (@md.opt.act[:sqlite_import][:set]==:on \
1915
+ || @md.opt.act[:sqlite_update][:set]==:on)) \
1916
+ and FileTest.exist?(@md.fns)
1917
+ ["#{name}, ","'#{@sisutxt}', "]
1918
+ else ['','']
1919
+ end
1920
+ end
1921
+ self
1922
+ end
1923
+ =begin
1924
+ #% misc
1925
+ @links:
1926
+ =end
1927
+ def fulltext
1928
+ def name
1929
+ 'fulltext'
1930
+ end
1931
+ def create_column
1932
+ "#{name} TEXT NULL,"
1933
+ end
1934
+ def column_comment
1935
+ %{COMMENT ON COLUMN metadata_and_text.#{name}
1936
+ IS 'document full text clean, searchable';}
1937
+ end
1938
+ def tuple
1939
+ if ((@md.opt.act[:psql_import][:set]==:on \
1940
+ || @md.opt.act[:psql_update][:set]==:on) \
1941
+ or (@md.opt.act[:sqlite_import][:set]==:on \
1942
+ || @md.opt.act[:sqlite_update][:set]==:on)) \
1943
+ and FileTest.exist?(@md.fns)
1944
+ ["#{name}, ","'#{@fulltext}', "]
1945
+ else ['','']
1946
+ end
1947
+ end
1948
+ self
1949
+ end
1950
+ def links
1951
+ def name
1952
+ 'links'
1953
+ end
1954
+ def create_column
1955
+ "#{name} TEXT NULL,"
1956
+ #"#{name} VARCHAR(#{links.size}) NULL,"
1957
+ end
1958
+ def column_comment
1959
+ %{COMMENT ON COLUMN metadata_and_text.#{name}
1960
+ IS 'metadata document links';}
1961
+ end
1962
+ def tuple
1963
+ if defined? @md.links \
1964
+ and @md.links=~/\S+/
1965
+ txt=@md.links
1966
+ txt=special_character_escape(txt)
1967
+ ["#{name}, ","'#{txt}', "]
1968
+ else ['','']
1969
+ end
1970
+ end
1971
+ self
1972
+ end
1973
+ self
1974
+ end
1975
+ end
1976
+ class ColumnSize
1977
+ def document_clean # restriction not necessary
1978
+ 60000
1979
+ end
1980
+ def document_body
1981
+ 16000
1982
+ end
1983
+ def document_seg
1984
+ 120
1985
+ end
1986
+ def document_seg_full
1987
+ 120
1988
+ end
1989
+ def endnote_clean # restriction not necessary
1990
+ 60000
1991
+ end
1992
+ def endnote_body
1993
+ 16000
1994
+ end
1995
+ end
1996
+ end
1997
+ __END__