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,284 @@
1
+ # encoding: utf-8
2
+ =begin
3
+
4
+ * Name: SiSU
5
+
6
+ ** Description: documents, structuring, processing, publishing, search
7
+ *** po4a
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/src_po4a_sst_ao_sst_set.rb;hb=HEAD>
55
+
56
+ =end
57
+ module SiSU_Po4aUtils
58
+ class Wrap
59
+ def initialize(md,orig='',trans='',n_char_max=76,n_indent=0,n_hang=nil)
60
+ @md,@orig,@trans,@n_char_max,@n_indent=
61
+ md, orig, trans, n_char_max, n_indent
62
+ @n_char_max_extend = n_char_max
63
+ @br="\n"
64
+ @n_hang=n_hang ? n_hang : @n_indent
65
+ @po4a_identify_type='type: SiSU doc'
66
+ #@po4a_identify_type='type: Plain text'
67
+ end
68
+ def line_wrap
69
+ space=' '
70
+ spaces_indent,spaces_hang=
71
+ "#{@br}#{space*@n_indent}",space*@n_hang
72
+ pot,i=[],0
73
+ pot_array=(@trans.empty?) ? [@orig] : [@orig,@trans]
74
+ pot_array.each do |pa|
75
+ line=0
76
+ out=[]
77
+ out[line]=''
78
+ @oldword='' #REMOVE @oldword
79
+ pa=pa.gsub(/<br>/,' <br> ').
80
+ gsub(/#{Mx[:br_nl]}/,"\n\n")
81
+ words=pa.scan(/\n\n|\\\\\\|<br>|\S+/m)
82
+ while words != ''
83
+ word=words.shift
84
+ if not word
85
+ out[line] unless out[line].empty? #check
86
+ break
87
+ elsif word =~/\n\n/
88
+ word="\n"
89
+ @n_char_max_extend = @n_char_max + out[line].length
90
+ line=line
91
+ elsif (out[line].length + word.length) > (@n_char_max_extend - @n_indent) \
92
+ and out[line] =~/\S+/
93
+ @n_char_max_extend = @n_char_max
94
+ out[line].squeeze!(' ')
95
+ line += 1
96
+ end
97
+ if word
98
+ out[line]=if out[line] \
99
+ and out[line] !~/\S+$/m
100
+ "#{out[line]}#{word}"
101
+ elsif out[line] \
102
+ and out[line] =~/\S+/
103
+ "#{out[line]} #{word}"
104
+ else "#{word.strip}"
105
+ end
106
+ end
107
+ @oldword=word if word =~/\S+/
108
+ end
109
+ x=out.join(spaces_indent).gsub(/\A\n+/m,'').insert(0,spaces_hang)
110
+ z=[]
111
+ x.split(/\n/).each do |y|
112
+ z << y
113
+ end
114
+ pot[i]=z.join("\n")
115
+ i +=1
116
+ pot
117
+ end
118
+ trans=(pot.length == 2) ? pot[1] : ''
119
+ po_str=<<WOK
120
+ #{pot[0]}
121
+ WOK
122
+ #{trans}
123
+ po_str
124
+ end
125
+ def no_line_wrap_block
126
+ pot,i=[],0
127
+ pot_array=(@trans.empty?) ? [@orig] : [@orig,@trans]
128
+ pot_array.each do |pa|
129
+ z=[]
130
+ pa.split(/\n\n/).each do |y|
131
+ z << y if not y.empty?
132
+ end
133
+ pot[i]=z.join("\n")
134
+ i +=1
135
+ pot
136
+ end
137
+ trans=(pot.length == 2) ? pot[1] : ''
138
+ po_str=<<WOK
139
+ #{pot[0]}
140
+ WOK
141
+ #{trans}
142
+ po_str
143
+ end
144
+ def line_wrap_indent1
145
+ @n_indent,@n_hang=2,2
146
+ line_wrap
147
+ end
148
+ def line_wrap_endnote
149
+ @n_indent,@n_hang=4,2
150
+ line_wrap
151
+ end
152
+ def array_wrap
153
+ if @orig.is_a?(Array)
154
+ @arr=[]
155
+ @orig.each do |line|
156
+ @arr << SiSU_TextUtils::Wrap.new(line,@n_char_max,@n_indent,@n_hang).line_wrap
157
+ end
158
+ end
159
+ @arr
160
+ end
161
+ end
162
+ class HeaderScan
163
+ def initialize(md,para)
164
+ @md,@p=md,para
165
+ end
166
+ def extract(tag,tag_content,type,attrib)
167
+ if dc_tag \
168
+ and dc_content
169
+ [dc_tag,dc_content,{dc_tag=>dc_content}]
170
+ else nil
171
+ end
172
+ end
173
+ def header(tag,tag_content,type='',attrib='') #this will break stuff and must be tested thoroughly 20060825
174
+ @tag,@tag_content,@type,@attrib=tag,tag_content,type,attrib
175
+ def label #element
176
+ @tag
177
+ end
178
+ def type
179
+ @type
180
+ end
181
+ def text
182
+ @tag_content
183
+ end
184
+ def info #element text
185
+ @tag_content
186
+ end
187
+ def attribute
188
+ @attrib
189
+ end
190
+ def element
191
+ @tag
192
+ end
193
+ def attrib
194
+ @attrib
195
+ end
196
+ def el
197
+ @tag
198
+ end
199
+ self
200
+ end
201
+ def start_is_match
202
+ case @p
203
+ when /^#{Mx[:meta_o]}(title)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,@md.title.full,'meta','dc') #dc 1
204
+ when /^#{Mx[:meta_o]}(creator|author)#{Mx[:meta_c]}\s*(.+?)$/ then header('creator',$2,'meta','dc') #dc 2
205
+ when /^#{Mx[:meta_o]}(subject)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','dc') #dc 3
206
+ when /^#{Mx[:meta_o]}(description)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','dc') #dc 4
207
+ when /^#{Mx[:meta_o]}(publisher)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','dc') #dc 5
208
+ when /^#{Mx[:meta_o]}(contributor)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','dc') #dc 6
209
+ when /^#{Mx[:meta_o]}(date)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','dc') #dc 7
210
+ when /^#{Mx[:meta_o]}(date\.created)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','extra')
211
+ when /^#{Mx[:meta_o]}(date\.issued)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','extra')
212
+ when /^#{Mx[:meta_o]}(date\.available)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','extra')
213
+ when /^#{Mx[:meta_o]}(date\.valid)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','extra')
214
+ when /^#{Mx[:meta_o]}(date\.modified)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','extra')
215
+ when /^#{Mx[:meta_o]}(type)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','dc') #dc 8
216
+ when /^#{Mx[:meta_o]}(format)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','dc') #dc 9
217
+ when /^#{Mx[:meta_o]}(identifier)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','dc') #dc 10
218
+ when /^#{Mx[:meta_o]}(source)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','dc') #dc 11
219
+ when /^#{Mx[:meta_o]}(language)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','dc') #dc 12
220
+ when /^#{Mx[:meta_o]}(relation)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','dc') #dc 13
221
+ when /^#{Mx[:meta_o]}(coverage)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','dc') #dc 14
222
+ when /^#{Mx[:meta_o]}(rights)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','dc') #dc 15
223
+ when /^#{Mx[:meta_o]}(keywords)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','extra')
224
+ when /^#{Mx[:meta_o]}(copyright)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','extra')
225
+ when /^#{Mx[:meta_o]}(translator|translated_by)#{Mx[:meta_c]}\s*(.+?)$/ then header('translator',$2)
226
+ when /^#{Mx[:meta_o]}(illustrator|illustrated_by)#{Mx[:meta_c]}\s*(.+?)$/ then header('illustrator',$2)
227
+ when /^#{Mx[:meta_o]}(prepared_by)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','extra')
228
+ when /^#{Mx[:meta_o]}(digitized_by)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','extra')
229
+ when /^#{Mx[:meta_o]}(comments?)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','extra')
230
+ when /^#{Mx[:meta_o]}(abstract)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','extra')
231
+ when /^#{Mx[:meta_o]}(tags?)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','extra')
232
+ when /^#{Mx[:meta_o]}(catalogue)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','extra')
233
+ when /^#{Mx[:meta_o]}(class(?:ify)?_loc)#{Mx[:meta_c]}\s*(.+?)$/ then header('classify_loc',$2,'meta','extra')
234
+ when /^#{Mx[:meta_o]}(class(?:ify)?_dewey)#{Mx[:meta_c]}\s*(.+?)$/ then header('classify_dewey',$2,'meta','extra')
235
+ when /^#{Mx[:meta_o]}(class(?:ify)?_pg)#{Mx[:meta_c]}\s*(.+?)$/ then header('classify_pg',$2,'meta','extra')
236
+ when /^#{Mx[:meta_o]}(class(?:ify)?_isbn)#{Mx[:meta_c]}\s*(.+?)$/ then header('classify_isbn',$2,'meta','extra')
237
+ when /^#{Mx[:meta_o]}(toc|structure)#{Mx[:meta_c]}\s*(.+?)$/ then header('structure',$2,'process','instruct')
238
+ when /^#{Mx[:meta_o]}(level|page|markup)#{Mx[:meta_c]}\s*(.+?)$/ then header('markup',$2,'process','instruct')
239
+ when /^#{Mx[:meta_o]}(bold)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'process','instruct')
240
+ when /^#{Mx[:meta_o]}(italics|itali[sz]e)#{Mx[:meta_c]}\s*(.+?)$/ then header('italicize',$2,'process','instruct')
241
+ when /^#{Mx[:meta_o]}(vocabulary|wordlist)#{Mx[:meta_c]}\s*(.+?)$/ then header('vocabulary',$2,'process','instruct')
242
+ when /^#{Mx[:meta_o]}(css|stylesheet)#{Mx[:meta_c]}\s*(.+?)$/ then header('css',$2,'process','instruct')
243
+ when /^#{Mx[:meta_o]}(links)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'process','instruct')
244
+ when /^#{Mx[:meta_o]}(prefix)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'process','instruct') #add a & b
245
+ when /^#{Mx[:meta_o]}(suffix)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'process','instruct')
246
+ when /^#{Mx[:meta_o]}(information)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'process','instruct')
247
+ when /^#{Mx[:meta_o]}(contact)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'process','instruct')
248
+ when /^#{Mx[:meta_o]}(rcs|cvs)#{Mx[:meta_c]}\s*(.+?)$/ then header('version',$2,'process','instruct')
249
+ else nil
250
+ end
251
+ end
252
+ def dublin
253
+ (@p =~/^#{Mx[:meta_o]}\S+?#{Mx[:meta_c]}/) \
254
+ ? start_is_match
255
+ : nil
256
+ end
257
+ def meta
258
+ (@p =~/^#{Mx[:meta_o]}\S+?#{Mx[:meta_c]}/) \
259
+ ? start_is_match
260
+ : nil
261
+ end
262
+ end
263
+ class ParagraphNumber
264
+ def initialize(paranum)
265
+ @paranum=/(\d+)/m.match(paranum)[1]
266
+ end
267
+ def display
268
+ @paranum.gsub(/(\d+)/,'#\1')
269
+ end
270
+ end
271
+ class PotNumber
272
+ @@n=0
273
+ def initialize
274
+ @@n +=2
275
+ end
276
+ def num
277
+ @@n
278
+ end
279
+ def reset
280
+ @@n=0
281
+ end
282
+ end
283
+ end
284
+ __END__
@@ -0,0 +1,135 @@
1
+ # encoding: utf-8
2
+ =begin
3
+
4
+ * Name: SiSU
5
+
6
+ ** Description: documents, structuring, processing, publishing, search
7
+ *** share sisu source markup file, copy it to output directory!
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/src_po4a_sstm.rb;hb=HEAD>
55
+
56
+ =end
57
+ module SiSU_Markup
58
+ require_relative 'src_shared' # src_shared.rb
59
+ include SiSU_Source
60
+ require_relative 'src_po4a_share' # src_po4a_share.rb
61
+ require_relative 'se' # se.rb
62
+ include SiSU_Env
63
+ class Source_Po4a < SiSU_Source::SiSUpodSource
64
+ def initialize(opt,build=nil,place=nil)
65
+ super(opt,build,place)
66
+ @opt=opt
67
+ md=SiSU_Param::Parameters.new(opt).get
68
+ @file=SiSU_Env::FileOp.new(md,opt.fno)
69
+ end
70
+ def dir_mk(dir)
71
+ unless FileTest.directory?(dir)
72
+ FileUtils::mkdir_p(dir)
73
+ end
74
+ end
75
+ def make_paths
76
+ dir_mk(@file.output_path.pot.dir)
77
+ dir_mk(@file.output_path.po.dir)
78
+ end
79
+ def language
80
+ def source_language_selected_str
81
+ @opt.act[:po4a_lang][:src] \
82
+ ? @opt.act[:po4a_lang][:src]
83
+ : 'en'
84
+ end
85
+ self
86
+ end
87
+ def read
88
+ unless @opt.act[:quiet][:set]==:on
89
+ (@opt.act[:verbose][:set]==:on \
90
+ || @opt.act[:verbose_plus][:set]==:on \
91
+ || @opt.act[:maintenance][:set]==:on) \
92
+ ? SiSU_Screen::Ansi.new(
93
+ @opt.act[:color_state][:set],
94
+ 'Share document markup text source',
95
+ @opt.fns
96
+ ).cyan_hi_blue
97
+ : SiSU_Screen::Ansi.new(
98
+ @opt.act[:color_state][:set],
99
+ 'Share document markup text source',
100
+ @opt.fns
101
+ ).cyan_title_hi
102
+ end
103
+ make_paths
104
+ if FileTest.directory?(@path_pod[:fnb])
105
+ FileUtils::mkdir_p(@file.output_path.src.dir) \
106
+ unless FileTest.directory?(@file.output_path.src.dir)
107
+ v=(@opt.act[:maintenance][:set]==:on) \
108
+ ? 'v' : ''
109
+ system(%{
110
+ #rsync -a#{v} #{@path_pod[:fnb]}/sisupod/doc/* #{@file.output_path.po4a.dir}
111
+ rsync -a#{v} #{@path_pod[:fnb]}/sisupod/doc/#{language.source_language_selected_str}* #{@file.output_path.po4a.dir}
112
+ chbk=`pwd`
113
+ cd #{@file.output_path.sisupod.dir}
114
+ for I in `find -type d` ; do chmod 755 $I ; done
115
+ for I in `find -type f` ; do chmod 644 $I ; done
116
+ cd ${chbk}
117
+ })
118
+ md=SiSU_Param::Parameters.new(@opt).get
119
+ file=SiSU_Env::FileOp.new(md)
120
+ SiSU_Po4a_Project::Po4aCfg.new(@opt,file).song
121
+ SiSU_Po4a_Project::Po4aProject.new(@opt,file).song
122
+ else
123
+ if (@opt.act[:verbose][:set]==:on \
124
+ || @opt.act[:verbose_plus][:set]==:on \
125
+ || @opt.act[:maintenance][:set]==:on)
126
+ SiSU_Screen::Ansi.new(
127
+ '',
128
+ "#{@opt.fno} not available"
129
+ ).blue_tab
130
+ end
131
+ end
132
+ end
133
+ end
134
+ end
135
+ __END__
@@ -0,0 +1,347 @@
1
+ # encoding: utf-8
2
+ =begin
3
+
4
+ * Name: SiSU
5
+
6
+ ** Description: documents, structuring, processing, publishing, search
7
+ *** create sisupod filetype and copy it to output directory!
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/src_shared.rb;hb=HEAD>
55
+
56
+ =end
57
+ module SiSU_Source
58
+ include SiSU_Env
59
+ class SiSUpodSource
60
+ require_relative 'se' # se.rb
61
+ require_relative 'se_hub_particulars' # se_hub_particulars.rb
62
+ require_relative 'utils_composite' # utils_composite.rb
63
+ include SiSU_Composite_Doc_Utils # composite doc, .ssm, extract all related insert files, array of filenames test
64
+ def initialize(opt,build=nil,place=nil)
65
+ @opt=opt
66
+ @date=SiSU_Env::InfoDate.new.dt
67
+ @env=SiSU_Env::InfoEnv.new(opt.fns)
68
+ #@ver=SiSU_Env::InfoVersion.instance.get_version
69
+ @v=(@opt.act[:verbose_plus][:set]==:on \
70
+ || @opt.act[:maintenance][:set]==:on) \
71
+ ? 'v' : ''
72
+ @particulars=SiSU_Particulars::CombinedSingleton.instance.get_all(opt)
73
+ @file=@particulars.file
74
+ @local_path="#{@file.output_path.sisupod.dir}"
75
+ processing_sisupod=@env.processing_path.processing_sisupod(opt)
76
+ processing_sisupod.make
77
+ path_pod=processing_sisupod.paths[:sisupod]
78
+ path_pod_fnb=processing_sisupod.paths[:fnb]
79
+ FileUtils::mkdir_p(path_pod) unless FileTest.directory?(path_pod)
80
+ @path_pod={
81
+ fnb: path_pod_fnb,
82
+ pod: path_pod,
83
+ doc: path_pod + '/' + Gt[:doc] + '/' + opt.lng,
84
+ po: path_pod + '/' + Gt[:po] + '/' + opt.lng,
85
+ pot: path_pod + '/' + Gt[:pot],
86
+ conf: path_pod + '/' + Gt[:conf],
87
+ image: path_pod + '/' + Gt[:image],
88
+ audio: path_pod + '/' + Gt[:audio],
89
+ video: path_pod + '/' + Gt[:video],
90
+ }
91
+ end
92
+ def read
93
+ unless @opt.act[:quiet][:set]==:on
94
+ (@opt.act[:verbose][:set]==:on \
95
+ || @opt.act[:verbose_plus][:set]==:on \
96
+ || @opt.act[:maintenance][:set]==:on) \
97
+ ? SiSU_Screen::Ansi.new(
98
+ @opt.act[:color_state][:set],
99
+ 'Assemble SiSU source',
100
+ "[#{@opt.f_pth[:lng_is]}] #{@opt.fno}").
101
+ green_hi_blue
102
+ : ''
103
+ end
104
+ unless @opt.fns.empty?
105
+ directories
106
+ doc_import_list=composite_and_imported_filenames_array(@opt.fno)
107
+ doc_import_list=[@opt.fno, doc_import_list].flatten
108
+ image_extraction(doc_import_list)
109
+ language_versions
110
+ end
111
+ end
112
+ def images_extract(f,images) # consider using param info
113
+ rgx_image=/(?:^|[^_\\])\{(?:\s*|\~\^\s+)(\S+?\.(?:png|jpg|gif)\b)/m
114
+ if f !~/^%+\s/ \
115
+ and f =~rgx_image
116
+ images << f.scan(rgx_image).uniq
117
+ end
118
+ images.flatten
119
+ end
120
+ def image_extraction(doc_import_list)
121
+ @rgx_rb_image=/["']\S*?([a-zA-Z0-9_-]+?\.(?:png|jpg|gif))["']/
122
+ @rgx_image=/(?:^|[^_\\])\{\s*(\S+?\.(?:png|jpg|gif))/
123
+ doc_import_dir=@opt.sub_location
124
+ images=[]
125
+ if doc_import_list.length > 0
126
+ doc_import_list=doc_import_list.uniq.flatten
127
+ doc_import_list.each do |fn|
128
+ file_array=IO.readlines(fn,'')
129
+ file_array.each do |f| #% work area
130
+ f=f.gsub(/<:=(\S+?)>/,'{ c_\1.png 14x14 }image') # embedded symbol (image)
131
+ if f !~/^%+\s/ \
132
+ and f =~@rgx_image
133
+ images=images_extract(f,images)
134
+ end
135
+ end
136
+ end
137
+ end
138
+ gi=SiSU_Env::GetInit.new
139
+ unless FileTest.file?("#{@path_pod[:conf]}/#{gi.makefile_name}")
140
+ if gi.makefile \
141
+ && FileTest.file?(gi.makefile)
142
+ FileUtils::mkdir_p(@path_pod[:conf]) \
143
+ unless FileTest.directory?(@path_pod[:conf])
144
+ FileUtils::cp(gi.makefile,"#{@path_pod[:conf]}/#{gi.makefile_name}")
145
+ end
146
+ #get images from makefile, consider placing in param
147
+ end
148
+ if images \
149
+ and images.length > 1
150
+ images=images.flatten.uniq
151
+ images.delete_if {|x| x =~/https?:\/\// }
152
+ #images=images.sort
153
+ FileUtils::mkdir_p(@path_pod[:image])
154
+ images_pwd=@opt.image_src_path
155
+ ##sequence copies base images, defaults used in all html outputs
156
+ #image_source_base='/usr/share/sisu/image'
157
+ #dir_pwd=Dir.pwd
158
+ #Dir.chdir(image_source_base)
159
+ #base_images=Dir.glob('*')
160
+ #base_images.each do |i|
161
+ # FileUtils::cp_r(i,"#{images_path_pod}/#{i}")
162
+ #end
163
+ #Dir.chdir(dir_pwd)
164
+ if FileTest.directory?(images_pwd)
165
+ images=images.uniq
166
+ images.each do |i|
167
+ if FileTest.file?("#{images_pwd}/#{i}")
168
+ FileUtils::cp(
169
+ "#{images_pwd}/#{i}",
170
+ "#{@path_pod[:image]}/#{i}"
171
+ )
172
+ else
173
+ STDERR.puts \
174
+ %{\t*WARN* did not find image - } \
175
+ + %{"#{images_pwd}/#{i}" } \
176
+ + %{[#{__FILE__}:#{__LINE__}]}
177
+ end
178
+ end
179
+ else
180
+ STDERR.puts \
181
+ %{\t*WARN* did not find - } \
182
+ + %{#{images_pwd} #{@path_pod[:image]} } \
183
+ + %{[#{__FILE__}:#{__LINE__}]}
184
+ end
185
+ end
186
+ if doc_import_list.length > 0 \
187
+ and @opt.fno =~/\.ssm$/
188
+ doc_import_list.each do |f|
189
+ if FileTest.file?("#{@opt.base_path}#{doc_import_dir}/#{f}")
190
+ FileUtils::cp(
191
+ "#{@opt.base_path}#{doc_import_dir}/#{f}",
192
+ "#{@path_pod[:doc]}/#{f}"
193
+ )
194
+ else
195
+ STDERR.puts \
196
+ %{\t*WARN* did not find image - } \
197
+ + %{"#{@opt.base_path}#{doc_import_dir}/#{f}" } \
198
+ + %{[#{__FILE__}:#{__LINE__}]}
199
+ end
200
+ end
201
+ end
202
+ end
203
+ def language_versions
204
+ x=@env.document_language_versions_found #check multiple document language versions (param not used)
205
+ doc_import_dir=@opt.sub_location
206
+ if x[:f] \
207
+ and x[:f].length > 0 #store multiple document language versions, sisupod
208
+ x[:f].each do |f|
209
+ FileUtils::mkdir_p(@path_pod[:doc]) \
210
+ unless FileTest.directory?(@path_pod[:doc])
211
+ if f[:f] =~/\~(\S{2,3})\.ss[tm]$/
212
+ lng_f=$1
213
+ if @opt.lng == lng_f
214
+ if @opt.fno =~/\.ssm$/
215
+ if FileTest.file?("#{@opt.base_path}#{doc_import_dir}/#{f[:f]}")
216
+ FileUtils::cp(
217
+ "#{@opt.base_path}#{doc_import_dir}/#{f[:f]}",
218
+ "#{@path_pod[:doc]}/#{f[:n]}"
219
+ )
220
+ else
221
+ STDERR.puts \
222
+ %{\t*WARN* did not find - } \
223
+ + %{"#{@opt.base_path}#{doc_import_dir}/#{f[:f]}" } \
224
+ + %{[#{__FILE__}:#{__LINE__}]}
225
+ end
226
+ else
227
+ if FileTest.file?("#{@opt.base_path}/#{f[:f]}")
228
+ cpy= :no
229
+ cpy=if f[:f] =~ /^#{@opt.f_pth[:lng_is]}\// \
230
+ or f[:f] =~ /~#{@opt.f_pth[:lng_is]}\.sst/
231
+ :yes
232
+ elsif f[:f] !~ /^(?:#{Px[:lng_lst_rgx]})\/|~(?:#{Px[:lng_lst_rgx]})\.sst/ \
233
+ and @opt.f_pth[:lng_is] == 'en'
234
+ :yes
235
+ else :no
236
+ end
237
+ if cpy == :yes
238
+ FileUtils::cp(
239
+ "#{@opt.base_path}/#{f[:f]}",
240
+ "#{@path_pod[:doc]}/#{f[:n]}"
241
+ )
242
+ end
243
+ else
244
+ STDERR.puts \
245
+ %{\t*WARN* did not find - } \
246
+ + %{"#{@opt.base_path}/#{f[:f]}" } \
247
+ + %{[#{__FILE__}:#{__LINE__}]}
248
+ end
249
+ end
250
+ end
251
+ else
252
+ if @opt.fno =~/\.ssm$/
253
+ if FileTest.file?("#{@opt.base_path}#{doc_import_dir}/#{f[:f]}")
254
+ FileUtils::cp_r(
255
+ "#{@opt.base_path}#{doc_import_dir}/#{f[:f]}",
256
+ "#{@path_pod[:doc]}/#{f[:n]}"
257
+ )
258
+ else
259
+ STDERR.puts \
260
+ %{\t*WARN* did not find - } \
261
+ + %{"#{@opt.base_path}#{doc_import_dir}/#{f[:f]}" } \
262
+ + %{[#{__FILE__}:#{__LINE__}]}
263
+ end
264
+ else
265
+ if FileTest.file?("#{@opt.base_path}#{doc_import_dir}/#{f[:f]}")
266
+ cpy= :no
267
+ cpy=if f[:f] =~ /^#{@opt.f_pth[:lng_is]}\// \
268
+ or f[:f] =~ /~#{@opt.f_pth[:lng_is]}\.sst/
269
+ :yes
270
+ elsif f[:f] !~ /^(?:#{Px[:lng_lst_rgx]})\/|~(?:#{Px[:lng_lst_rgx]})\.sst/ \
271
+ and @opt.f_pth[:lng_is] == 'en'
272
+ :yes
273
+ else :no
274
+ end
275
+ if cpy == :yes
276
+ FileUtils::cp(
277
+ "#{@opt.base_path}#{doc_import_dir}/#{f[:f]}",
278
+ "#{@path_pod[:doc]}/#{f[:n]}"
279
+ )
280
+ end
281
+ else
282
+ STDERR.puts \
283
+ %{\t*WARN* did not find - } \
284
+ + %{"#{@opt.base_path}#{doc_import_dir}/#{f[:f]}" } \
285
+ + %{[#{__FILE__}:#{__LINE__}]}
286
+ end
287
+ end
288
+ end
289
+ end
290
+ end #NB not all possibilies met, revisit, also in case of composite file may wish to add README
291
+ end
292
+ def directories
293
+ SiSU_Env::InfoEnv.new.sisupod_v4(@opt)
294
+ end
295
+ end
296
+ end
297
+ __END__
298
+ question?: should you permit the packing of multiple documents in single .xz ?
299
+
300
+ open @opt.fns, parse file
301
+ extract from file content:
302
+ images and copy each image from whatever image source to _sisu/sisupod/sisu/_sisu/image
303
+
304
+ remove previously existing contents of _/sisu/sisupod &
305
+ make directory structure:
306
+
307
+ v3 -->
308
+ _sisu
309
+ sisupod
310
+ doc
311
+ manifest.txt
312
+ en/content.sst [file content]
313
+ fr/content.sst
314
+ _sisu
315
+ conf
316
+ image (ln -s ../../image)
317
+ audio (ln -s ../../audio)
318
+ video (ln -s ../../video)
319
+ image [all images for specific document gathered here]
320
+ audio
321
+ video
322
+
323
+ v2 -->
324
+ _sisu
325
+ sisupod
326
+ content.sst [file content]
327
+ filename.sst [link to content.sst]
328
+ _sisu/
329
+ image/ [all images for specific document gathered here]
330
+
331
+ sisu
332
+ _sisu
333
+ sisurc.yml
334
+ convert/
335
+ standard_terms/
336
+ image
337
+ processing
338
+ ao/
339
+ tex/
340
+ texinfo/
341
+ tune/
342
+ sisupod
343
+
344
+ special case
345
+
346
+ composite file (master), e.g.
347
+ SiSU.ssm