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