sisu 7.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (207) hide show
  1. checksums.yaml +7 -0
  2. data/bin/sisu +367 -0
  3. data/bin/sisugem +367 -0
  4. data/data/sisu/image/arrow_next_red.png +0 -0
  5. data/data/sisu/image/arrow_prev_red.png +0 -0
  6. data/data/sisu/image/arrow_up_red.png +0 -0
  7. data/data/sisu/image/b_bluebell.png +0 -0
  8. data/data/sisu/image/b_doc.png +0 -0
  9. data/data/sisu/image/b_epub.png +0 -0
  10. data/data/sisu/image/b_home.png +0 -0
  11. data/data/sisu/image/b_info.png +0 -0
  12. data/data/sisu/image/b_odf.png +0 -0
  13. data/data/sisu/image/b_pdf.png +0 -0
  14. data/data/sisu/image/b_search.png +0 -0
  15. data/data/sisu/image/b_toc.png +0 -0
  16. data/data/sisu/image/bullet_08.png +0 -0
  17. data/data/sisu/image/bullet_09.png +0 -0
  18. data/data/sisu/image/bullet_10.png +0 -0
  19. data/data/sisu/image/bullet_11.png +0 -0
  20. data/data/sisu/image/bullet_12.png +0 -0
  21. data/data/sisu/image/bullet_doc.png +0 -0
  22. data/data/sisu/image/bullet_red.png +0 -0
  23. data/data/sisu/image/dot_clear.png +0 -0
  24. data/data/sisu/image/dot_white.png +0 -0
  25. data/data/sisu/image/gplv3.png +0 -0
  26. data/data/sisu/image/gplv3_free_software.png +0 -0
  27. data/data/sisu/image/next.png +0 -0
  28. data/data/sisu/image/previous.png +0 -0
  29. data/data/sisu/image/rb7.ico +0 -0
  30. data/data/sisu/image/sisu.png +0 -0
  31. data/data/sisu/image/toctoc.png +0 -0
  32. data/data/sisu/version.yml +5 -0
  33. data/lib/sisu.rb +94 -0
  34. data/lib/sisu/air.rb +80 -0
  35. data/lib/sisu/ao.rb +590 -0
  36. data/lib/sisu/ao_character_check.rb +102 -0
  37. data/lib/sisu/ao_composite.rb +286 -0
  38. data/lib/sisu/ao_doc_objects.rb +565 -0
  39. data/lib/sisu/ao_doc_str.rb +2269 -0
  40. data/lib/sisu/ao_endnotes.rb +136 -0
  41. data/lib/sisu/ao_expand_insertions.rb +514 -0
  42. data/lib/sisu/ao_hash_digest.rb +174 -0
  43. data/lib/sisu/ao_idx.rb +422 -0
  44. data/lib/sisu/ao_images.rb +187 -0
  45. data/lib/sisu/ao_metadata.rb +86 -0
  46. data/lib/sisu/ao_misc_arrange.rb +207 -0
  47. data/lib/sisu/ao_numbering.rb +720 -0
  48. data/lib/sisu/ao_persist.rb +194 -0
  49. data/lib/sisu/ao_references.rb +502 -0
  50. data/lib/sisu/ao_syntax.rb +640 -0
  51. data/lib/sisu/cgi.rb +84 -0
  52. data/lib/sisu/cgi_pgsql.rb +270 -0
  53. data/lib/sisu/cgi_sql_common.rb +986 -0
  54. data/lib/sisu/cgi_sqlite.rb +244 -0
  55. data/lib/sisu/conf.rb +287 -0
  56. data/lib/sisu/constants.rb +388 -0
  57. data/lib/sisu/css.rb +3484 -0
  58. data/lib/sisu/db_columns.rb +1997 -0
  59. data/lib/sisu/db_create.rb +689 -0
  60. data/lib/sisu/db_dbi.rb +90 -0
  61. data/lib/sisu/db_drop.rb +207 -0
  62. data/lib/sisu/db_import.rb +877 -0
  63. data/lib/sisu/db_indexes.rb +146 -0
  64. data/lib/sisu/db_load_tuple.rb +323 -0
  65. data/lib/sisu/db_remove.rb +182 -0
  66. data/lib/sisu/db_select.rb +230 -0
  67. data/lib/sisu/db_sqltxt.rb +173 -0
  68. data/lib/sisu/db_tests.rb +114 -0
  69. data/lib/sisu/dbi.rb +166 -0
  70. data/lib/sisu/dbi_discrete.rb +206 -0
  71. data/lib/sisu/digests.rb +306 -0
  72. data/lib/sisu/dp.rb +1606 -0
  73. data/lib/sisu/dp_identify_markup.rb +161 -0
  74. data/lib/sisu/dp_make.rb +668 -0
  75. data/lib/sisu/embedded.rb +149 -0
  76. data/lib/sisu/errors.rb +84 -0
  77. data/lib/sisu/generic_parts.rb +131 -0
  78. data/lib/sisu/git.rb +277 -0
  79. data/lib/sisu/html.rb +775 -0
  80. data/lib/sisu/html_concordance.rb +391 -0
  81. data/lib/sisu/html_format.rb +1348 -0
  82. data/lib/sisu/html_harvest.rb +109 -0
  83. data/lib/sisu/html_harvest_author_format.rb +111 -0
  84. data/lib/sisu/html_harvest_authors.rb +466 -0
  85. data/lib/sisu/html_harvest_topics.rb +893 -0
  86. data/lib/sisu/html_lite_shared.rb +324 -0
  87. data/lib/sisu/html_manifest.rb +1032 -0
  88. data/lib/sisu/html_minitoc.rb +230 -0
  89. data/lib/sisu/html_parts.rb +437 -0
  90. data/lib/sisu/html_persist.rb +237 -0
  91. data/lib/sisu/html_promo.rb +440 -0
  92. data/lib/sisu/html_scroll.rb +235 -0
  93. data/lib/sisu/html_segments.rb +716 -0
  94. data/lib/sisu/html_shared.rb +62 -0
  95. data/lib/sisu/html_table.rb +64 -0
  96. data/lib/sisu/html_tune.rb +301 -0
  97. data/lib/sisu/hub.rb +277 -0
  98. data/lib/sisu/hub_actions.rb +1122 -0
  99. data/lib/sisu/hub_loop_markup_files.rb +170 -0
  100. data/lib/sisu/hub_options.rb +1695 -0
  101. data/lib/sisu/i18n.rb +702 -0
  102. data/lib/sisu/manpage.rb +377 -0
  103. data/lib/sisu/manpage_format.rb +85 -0
  104. data/lib/sisu/object_munge.rb +307 -0
  105. data/lib/sisu/prog_text_translation.rb +1702 -0
  106. data/lib/sisu/qrcode.rb +754 -0
  107. data/lib/sisu/relaxng.rb +1153 -0
  108. data/lib/sisu/remote.rb +246 -0
  109. data/lib/sisu/rexml.rb +148 -0
  110. data/lib/sisu/se.rb +158 -0
  111. data/lib/sisu/se_cleanoutput.rb +145 -0
  112. data/lib/sisu/se_clear.rb +105 -0
  113. data/lib/sisu/se_createsite.rb +273 -0
  114. data/lib/sisu/se_css.rb +221 -0
  115. data/lib/sisu/se_date.rb +92 -0
  116. data/lib/sisu/se_db.rb +214 -0
  117. data/lib/sisu/se_envcall.rb +326 -0
  118. data/lib/sisu/se_file_op.rb +2758 -0
  119. data/lib/sisu/se_filemap.rb +247 -0
  120. data/lib/sisu/se_get_init.rb +238 -0
  121. data/lib/sisu/se_hub_particulars.rb +234 -0
  122. data/lib/sisu/se_info_env.rb +2179 -0
  123. data/lib/sisu/se_info_port.rb +70 -0
  124. data/lib/sisu/se_info_system.rb +202 -0
  125. data/lib/sisu/se_load.rb +108 -0
  126. data/lib/sisu/se_processing.rb +659 -0
  127. data/lib/sisu/se_programs.rb +394 -0
  128. data/lib/sisu/se_remotes.rb +553 -0
  129. data/lib/sisu/se_standardise_lang.rb +176 -0
  130. data/lib/sisu/se_version.rb +174 -0
  131. data/lib/sisu/shared_images.rb +137 -0
  132. data/lib/sisu/shared_markup_alt.rb +336 -0
  133. data/lib/sisu/shared_metadata.rb +1361 -0
  134. data/lib/sisu/shared_sem.rb +156 -0
  135. data/lib/sisu/sisu_thor_lib.rb +407 -0
  136. data/lib/sisu/sitemaps.rb +224 -0
  137. data/lib/sisu/src_kdissert_share.rb +102 -0
  138. data/lib/sisu/src_po4a_share.rb +309 -0
  139. data/lib/sisu/src_po4a_shelf.rb +1217 -0
  140. data/lib/sisu/src_po4a_shelf_set.rb +297 -0
  141. data/lib/sisu/src_po4a_sst_ao_sst.rb +893 -0
  142. data/lib/sisu/src_po4a_sst_ao_sst_set.rb +284 -0
  143. data/lib/sisu/src_po4a_sstm.rb +135 -0
  144. data/lib/sisu/src_shared.rb +347 -0
  145. data/lib/sisu/src_sisupod_make.rb +171 -0
  146. data/lib/sisu/src_sisupod_sstm.rb +109 -0
  147. data/lib/sisu/sst_convert_markup.rb +323 -0
  148. data/lib/sisu/sst_do_inline_footnotes.rb +440 -0
  149. data/lib/sisu/sst_from_xml.rb +178 -0
  150. data/lib/sisu/sst_identify_markup.rb +482 -0
  151. data/lib/sisu/sst_to_s_xml_sax.rb +471 -0
  152. data/lib/sisu/termsheet.rb +163 -0
  153. data/lib/sisu/texinfo.rb +430 -0
  154. data/lib/sisu/texinfo_format.rb +541 -0
  155. data/lib/sisu/texpdf.rb +1162 -0
  156. data/lib/sisu/texpdf_format.rb +1689 -0
  157. data/lib/sisu/texpdf_parts.rb +235 -0
  158. data/lib/sisu/txt_asciidoc.rb +354 -0
  159. data/lib/sisu/txt_asciidoc_decorate.rb +207 -0
  160. data/lib/sisu/txt_markdown.rb +389 -0
  161. data/lib/sisu/txt_markdown_decorate.rb +207 -0
  162. data/lib/sisu/txt_orgmode.rb +376 -0
  163. data/lib/sisu/txt_orgmode_decorate.rb +186 -0
  164. data/lib/sisu/txt_output.rb +86 -0
  165. data/lib/sisu/txt_plain.rb +410 -0
  166. data/lib/sisu/txt_plain_decorate.rb +189 -0
  167. data/lib/sisu/txt_read.rb +109 -0
  168. data/lib/sisu/txt_rst.rb +371 -0
  169. data/lib/sisu/txt_rst_decorate.rb +186 -0
  170. data/lib/sisu/txt_shared.rb +241 -0
  171. data/lib/sisu/txt_textile.rb +367 -0
  172. data/lib/sisu/txt_textile_decorate.rb +186 -0
  173. data/lib/sisu/update.rb +141 -0
  174. data/lib/sisu/urls.rb +696 -0
  175. data/lib/sisu/utils.rb +232 -0
  176. data/lib/sisu/utils_composite.rb +115 -0
  177. data/lib/sisu/utils_response.rb +114 -0
  178. data/lib/sisu/utils_screen_text_color.rb +472 -0
  179. data/lib/sisu/utils_spell.rb +99 -0
  180. data/lib/sisu/webrick.rb +191 -0
  181. data/lib/sisu/wikispeak.rb +375 -0
  182. data/lib/sisu/xhtml.rb +472 -0
  183. data/lib/sisu/xhtml_epub2.rb +890 -0
  184. data/lib/sisu/xhtml_epub2_concordance.rb +322 -0
  185. data/lib/sisu/xhtml_epub2_format.rb +2272 -0
  186. data/lib/sisu/xhtml_epub2_persist.rb +278 -0
  187. data/lib/sisu/xhtml_epub2_segments.rb +599 -0
  188. data/lib/sisu/xhtml_epub2_tune.rb +330 -0
  189. data/lib/sisu/xhtml_parts.rb +183 -0
  190. data/lib/sisu/xhtml_shared.rb +62 -0
  191. data/lib/sisu/xhtml_table.rb +97 -0
  192. data/lib/sisu/xml_docbook5.rb +376 -0
  193. data/lib/sisu/xml_dom.rb +624 -0
  194. data/lib/sisu/xml_fictionbook2.rb +389 -0
  195. data/lib/sisu/xml_format.rb +865 -0
  196. data/lib/sisu/xml_md_oai_pmh_dc.rb +229 -0
  197. data/lib/sisu/xml_odf_odt.rb +887 -0
  198. data/lib/sisu/xml_odf_odt_format.rb +674 -0
  199. data/lib/sisu/xml_parts.rb +191 -0
  200. data/lib/sisu/xml_persist.rb +126 -0
  201. data/lib/sisu/xml_sax.rb +521 -0
  202. data/lib/sisu/xml_scaffold_structure_collapsed.rb +198 -0
  203. data/lib/sisu/xml_scaffold_structure_sisu.rb +201 -0
  204. data/lib/sisu/xml_shared.rb +665 -0
  205. data/lib/sisu/xml_tables.rb +261 -0
  206. data/lib/sisu/zap.rb +90 -0
  207. metadata +251 -0
@@ -0,0 +1,224 @@
1
+ # encoding: utf-8
2
+ =begin
3
+
4
+ * Name: SiSU
5
+
6
+ ** Description: documents, structuring, processing, publishing, search
7
+ *** sitemap created from document parameters
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/sitemaps.rb;hb=HEAD>
55
+
56
+ =end
57
+ module SiSU_Sitemaps
58
+ require_relative 'dp' # dp.rb
59
+ include SiSU_Param
60
+ require_relative 'se' # se.rb
61
+ include SiSU_Env
62
+ require_relative 'xml_shared' # xml_shared.rb
63
+ include SiSU_XML_Munge
64
+ class Source
65
+ def initialize(opt)
66
+ @opt=opt
67
+ end
68
+ def read
69
+ songsheet
70
+ end
71
+ def songsheet
72
+ begin
73
+ @sys=SiSU_Env::SystemCall.new
74
+ fn_set_lang=SiSU_Env::StandardiseLanguage.new(@opt.lng).language
75
+ @fn=SiSU_Env::EnvCall.new(@opt.fns).lang(fn_set_lang[:c])
76
+ if @opt.act[:sitemap][:set]==:on
77
+ @md=SiSU_Param::Parameters.new(@opt).get
78
+ @trans=SiSU_XML_Munge::Trans.new(@md) #check @md is required
79
+ @env=SiSU_Env::InfoEnv.new(@md.fns)
80
+ # @file=SiSU_Env::FileOp.new(@md)
81
+ @rdf=SiSU_XML_Tags::RDF.new(@md)
82
+ @fnb_utf8_xml=@md.fnb.dup
83
+ @trans.char_enc.utf8(@fnb_utf8_xml) \
84
+ if @sys.locale =~/utf-?8/i
85
+ output_map(sitemap)
86
+ elsif @opt.selections.str =~/--sitemaps/
87
+ @sitemap_idx_fn='sitemapindex.xml'
88
+ @env=SiSU_Env::InfoEnv.new
89
+ output_idx(sitemap_index)
90
+ SiSU_Screen::Ansi.new(
91
+ @opt.act[:color_state][:set],
92
+ 'sitemap index:',
93
+ "#{@env.path.output}/#{@sitemap_idx_fn}"
94
+ ).result unless @opt.act[:quiet][:set]==:on
95
+ end
96
+ rescue
97
+ SiSU_Errors::Rescued.new($!,$@,@opt.cmd,@opt.fns).location do
98
+ __LINE__.to_s + ':' + __FILE__
99
+ end
100
+ ensure
101
+ end
102
+ end
103
+ def make_file(path,filename)
104
+ (File.writable?("#{path}/.")) \
105
+ ? (File.new("#{path}/#{filename}",'w+'))
106
+ : (SiSU_Screen::Ansi.new(
107
+ '',
108
+ "is the file or directory writable?, could not create #{filename}"
109
+ ).warn)
110
+ end
111
+ def output_map(sitemap)
112
+ path=@md.file.output_path.sitemaps.dir
113
+ filename=@fn[:sitemap]
114
+ touch_path=@md.file.output_path.sitemaps.dir
115
+ touch_filename=@fn[:sitemap_touch]
116
+ SiSU_Env::FileOp.new(@md).make_path(path)
117
+ file=SiSU_Env::FileOp.new(@md).make_file(path,filename)
118
+ file << sitemap
119
+ if FileTest.file?("#{touch_path}/#{touch_filename}")
120
+ FileUtils::rm("#{touch_path}/#{touch_filename}")
121
+ end
122
+ end
123
+ def output_idx(sitemap)
124
+ path=@env.path.output
125
+ filename=@sitemap_idx_fn
126
+ make_path(path)
127
+ file=make_file(path,filename)
128
+ file << sitemap
129
+ end
130
+ def sitemap_index
131
+ sitemap_files=Dir.glob("#{@env.path.sitemaps}/sitemap_*.xml")
132
+ sitemap_idx=[]
133
+ sitemap_idx << <<WOK
134
+ <?xml version="1.0" encoding="UTF-8"?>
135
+ <sitemapindex xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
136
+ xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemaps/0.9
137
+ http://www.sitemaps.org/schemas/sitemaps/sitemap.xsd"
138
+ xmlns="http://www.sitemaps.org/schemas/sitemapindex/0.9">
139
+ WOK
140
+ sitemap_files.each do |s|
141
+ f=s.gsub(/.+?\/sitemap_([^\/]+?)\.xml$/,'\1')
142
+ @trans.char_enc.utf8(f) \
143
+ if @sys.locale =~/utf-?8/i
144
+ sitemap_idx << <<WOK
145
+ <sitemap>
146
+ <loc>#{@env.path.url.remote}/#{f}/sitemap.xml</loc>
147
+ </sitemap>
148
+ WOK
149
+ end
150
+ sitemap_idx << <<WOK
151
+ </sitemapindex>
152
+ WOK
153
+ sitemap_idx.join
154
+ end
155
+ def sitemap
156
+ if defined? @md.date.modified \
157
+ and @md.date.modified=~/\d{4}-\d{2}-\d{2}/
158
+ sitemap_date_modified
159
+ else sitemap_no_date
160
+ end
161
+ end
162
+ def sitemap_date_modified
163
+ <<WOK
164
+ <?xml version='1.0' encoding='UTF-8'?>
165
+ <urlset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
166
+ xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemaps/0.9
167
+ http://www.sitemaps.org/schemas/sitemaps/sitemap.xsd"
168
+ xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
169
+ #{@rdf.comment_xml}
170
+ <url>
171
+ <loc>#{@env.path.url.remote}/#{@fnb_utf8_xml}/#{@fn[:toc]}</loc>
172
+ <lastmod>#{@md.date.modified}</lastmod>
173
+ <changefreq>monthly</changefreq>
174
+ <priority>0.7</priority>
175
+ </url>
176
+ <url>
177
+ <loc>#{@env.path.url.remote}/#{@fnb_utf8_xml}/#{@fn[:doc]}</loc>
178
+ <lastmod>#{@md.date.modified}</lastmod>
179
+ <priority>0.5</priority>
180
+ </url>
181
+ <url>
182
+ <loc>#{@env.path.url.remote}/#{@fnb_utf8_xml}/#{@fn[:manifest]}</loc>
183
+ <lastmod>#{@md.date.modified}</lastmod>
184
+ <priority>0.5</priority>
185
+ </url>
186
+ </urlset>
187
+ WOK
188
+ end
189
+ def sitemap_no_date
190
+ <<WOK
191
+ <?xml version="1.0" encoding="UTF-8"?>
192
+ <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
193
+ #{@rdf.comment_xml}
194
+ <url>
195
+ <loc>#{@env.path.url.remote}/#{@fnb_utf8_xml}/#{@fn[:toc]}</loc>
196
+ <changefreq>monthly</changefreq>
197
+ <priority>0.7</priority>
198
+ </url>
199
+ <url>
200
+ <loc>#{@env.path.url.remote}/#{@fnb_utf8_xml}/#{@fn[:doc]}</loc>
201
+ <priority>0.5</priority>
202
+ </url>
203
+ <url>
204
+ <loc>#{@env.path.url.remote}/#{@fnb_utf8_xml}/#{@fn[:manifest]}</loc>
205
+ <priority>0.5</priority>
206
+ </url>
207
+ </urlset>
208
+ WOK
209
+ end
210
+ end
211
+ end
212
+ __END__
213
+ * sanitize xml, pass through filter to ensure is valid - done but needs testing
214
+ * remote placement of sitemaps --sitemaps -R (probably makes more sense than doing against -Y [filename/wildcard]) - done but needs testing
215
+ * gzip sitemaps - not before testing / after testing
216
+ * issue with master documnts, naming and mapping, check multilingual
217
+
218
+ <!-- Document processing information:
219
+ * Generated by: SiSU 0.48.6 of 2006w45/6 (20061111)
220
+ * Ruby version: ruby 1.8.5 (2006-08-25) [i486-linux]
221
+ *
222
+ * Last Generated on: Sat Nov 18 15:28:08 +0000 2006
223
+ * SiSU http://www.jus.uio.no/sisu
224
+ -->
@@ -0,0 +1,102 @@
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_share_kdissert.rb;hb=HEAD>
55
+
56
+ =end
57
+ module SiSU_KdiSource
58
+ require_relative 'se' # se.rb
59
+ include SiSU_Env
60
+ class Source
61
+ begin
62
+ require 'fileutils'
63
+ include FileUtils
64
+ rescue LoadError
65
+ SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).
66
+ error('fileutils NOT FOUND (LoadError)')
67
+ end
68
+ def initialize(opt)
69
+ @opt=opt
70
+ @env=SiSU_Env::InfoEnv.new(@opt.fns)
71
+ @output_path="#{@env.path.output}/#{@opt.fnb}"
72
+ end
73
+ def read
74
+ SiSU_Screen::Ansi.new(
75
+ @opt.act[:color_state][:set],
76
+ 'Share Kdissert Source Document!',
77
+ @opt.fnb
78
+ ).green_hi_blue unless @opt.act[:quiet][:set]==:on
79
+ SiSU_Screen::Ansi.new(
80
+ @opt.act[:color_state][:set],
81
+ "Copy kdissert file to output directory",
82
+ "#{@opt.fnb} -> #{@output_path}"
83
+ ).warn unless @opt.act[:quiet][:set]==:on
84
+ FileUtils::mkdir_p(@env.path.output) unless FileTest.directory?(@env.path.output)
85
+ FileUtils::mkdir_p(@output_path) unless FileTest.directory?(@output_path)
86
+ if FileTest.directory?(@output_path)
87
+ if @opt.fns =~/\.kdi\._sst$/ \
88
+ and FileTest.file?(@opt.fnb)
89
+ FileUtils::cp(@opt.fnb,@output_path)
90
+ end
91
+ else
92
+ SiSU_Screen::Ansi.new(
93
+ @opt.act[:color_state][:set],
94
+ "Output directory does not exist",
95
+ "#{@opt.fnb} -> #{@output_path}"
96
+ ).warn unless @opt.act[:quiet][:set]==:on
97
+ exit
98
+ end
99
+ end
100
+ end
101
+ end
102
+ __END__
@@ -0,0 +1,309 @@
1
+ # encoding: utf-8
2
+ =begin
3
+
4
+ * Name: SiSU
5
+
6
+ ** Description: documents, structuring, processing, publishing, search
7
+ *** pot file generation
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_share.rb;hb=HEAD>
55
+
56
+ =end
57
+ #module SiSU_SStm_AO_SStm
58
+ module SiSU_Languages_Selected
59
+ require_relative 'utils_response' # utils_response.rb
60
+ def language
61
+ def sisu_languages_available
62
+ Px[:lng_lst]
63
+ end
64
+ def source_language_selected_str
65
+ @opt.act[:po4a_lang][:src] \
66
+ ? @opt.act[:po4a_lang][:src]
67
+ : 'en'
68
+ end
69
+ def translation_languages_selected
70
+ @opt.act[:po4a_lang][:trn] \
71
+ ? @opt.act[:po4a_lang][:trn]
72
+ : []
73
+ end
74
+ def translation_languages_available
75
+ sisu_languages_available - [source_language_selected_str]
76
+ end
77
+ def translation_languages_selected_that_are_available
78
+ translation_languages_selected & sisu_languages_available
79
+ end
80
+ def translation_languages_selected_that_are_available_str
81
+ translation_languages_selected_that_are_available.join(' ')
82
+ end
83
+ def translation_languages_selected_str
84
+ @opt.act[:po4a_lang][:trn].join(' ')
85
+ end
86
+ self
87
+ end
88
+ end
89
+ module SiSU_Po4a_Project
90
+ class Po4aCfg
91
+ include SiSU_Composite_Doc_Utils # composite doc, .ssm, extract all related insert files, array of filenames test
92
+ include SiSU_Response
93
+ include SiSU_Languages_Selected
94
+ def initialize(opt,file)
95
+ @opt,@file=opt,file
96
+ end
97
+ def song
98
+ if @opt.lng==language.source_language_selected_str
99
+ ans=response?('po4a config file')
100
+ if ans
101
+ po4a_cfg
102
+ end
103
+ end
104
+ end
105
+ def po4a_cfg_filename
106
+ 'po4a.cfg'
107
+ end
108
+ def dir
109
+ def pwd
110
+ Dir.pwd
111
+ end
112
+ def po4a_
113
+ 'po4a/' # ''
114
+ end
115
+ def pot
116
+ #po4a_ + 'pot'
117
+ 'pot'
118
+ end
119
+ def po
120
+ #po4a_ + 'po'
121
+ 'po'
122
+ end
123
+ self
124
+ end
125
+ def po4a_cfg_file
126
+ File.open("#{Dir.pwd}/#{po4a_cfg_filename}",'w')
127
+ end
128
+ def po4a_cfg
129
+ lng=language.source_language_selected_str
130
+ doc_import_list=composite_and_imported_filenames_array(@opt.fno)
131
+ po4a_cfg_arr=[]
132
+ po4a_cfg_arr \
133
+ << "[po4a_langs] #{language.translation_languages_selected_that_are_available_str}"
134
+ po4a_cfg_arr \
135
+ << "[po4a_paths] #{dir.pot}/$master.pot $lang:#{dir.po}/$lang/$master.po"
136
+ doc_import_list.each do |file_src|
137
+ file_src_fn=
138
+ file_src.gsub(/#{language.source_language_selected_str}\//,'')
139
+ po4a_cfg_arr \
140
+ << "[type: text] #{lng}/#{file_src} $lang:$lang/#{file_src_fn}"
141
+ end
142
+ file=@file.write_file.po4a_cfg
143
+ po4a_cfg_arr.each do |txt|
144
+ puts txt
145
+ file << txt << "\n"
146
+ end
147
+ file.close
148
+ end
149
+ end
150
+ class Po4aProject
151
+ include SiSU_Languages_Selected
152
+ include SiSU_Response
153
+ def initialize(opt,file)
154
+ @opt,@file=opt,file
155
+ end
156
+ def song
157
+ make_paths
158
+ if FileTest.directory?(@file.output_path.po4a.dir)
159
+ Dir.chdir(@file.output_path.po4a.dir)
160
+ dirs=Dir['*/']
161
+ dirs_language=[]
162
+ dirs.each do |x|
163
+ dirs_language << x.gsub(/\/$/,'')
164
+ end
165
+ dirs_translation = \
166
+ (language.translation_languages_available & dirs_language)
167
+ end
168
+ if (language.translation_languages_available & [@opt.lng]).length == 1
169
+ puts %{gettext for: #{dirs_translation}
170
+ in #{Dir.pwd}}
171
+ ans=response?('gettext?')
172
+ if ans
173
+ gettext_if_any_build_src_trans_po
174
+ end
175
+ end
176
+ ans=response?('build project?')
177
+ if ans
178
+ build_src_master_to_pot_and_po_and_srcs
179
+ end
180
+ end
181
+ def flags
182
+ def debug
183
+ '-d -v'
184
+ end
185
+ def normal
186
+ ''
187
+ end
188
+ def quiet
189
+ '-q'
190
+ end
191
+ self
192
+ end
193
+ def build_src_master_to_pot_and_po_and_srcs
194
+ if SiSU_Sys_Call::SystemCall.new.po4a
195
+ pwd=Dir.pwd
196
+ #cmd='po4a --keep 0 -M UTF-8 --no-backups ' \
197
+ #+ '--package-name ' \
198
+ #+ 'sisu-manual' + ' ' \
199
+ #+ flags.normal + ' ' \
200
+ #+ filename.po4a_cfg
201
+ cmd='po4a --keep 0 -M UTF-8' \
202
+ + flags.normal + ' ' \
203
+ + @file.base_filename.po4a_cfg
204
+ Dir.chdir(@file.output_path.po4a.dir)
205
+ system("
206
+ cd #{@file.output_path.po4a.dir}
207
+ #{cmd}
208
+ cd -
209
+ "); puts cmd
210
+ Dir.chdir(pwd)
211
+ end
212
+ end
213
+ def gettext_if_any_build_src_trans_po
214
+ Dir.chdir(@file.output_path.po4a.dir)
215
+ dirs=Dir['*/']
216
+ dirs_language=[]
217
+ dirs.each do |x|
218
+ dirs_language << x.gsub(/\/$/,'')
219
+ end
220
+ dirs_translation = \
221
+ (language.translation_languages_available & dirs_language)
222
+ files_src=Dir.glob("./#{source_language_selected_str}/*.ss[tmi]")
223
+ dirs_translation.each do |lng|
224
+ files_src.each do |file|
225
+ fn=file.gsub(/\.\/#{source_language_selected_str}\//,'')
226
+ system("
227
+ po4a-gettextize -f text -M utf-8 \
228
+ -m ./#{source_language_selected_str}/#{fn} \
229
+ -l ./#{lng}/#{fn} \
230
+ -p ./po/#{lng}/#{fn}.po
231
+ ")
232
+ puts fn
233
+ end
234
+ end
235
+ end
236
+ def dir_mk(dir)
237
+ unless FileTest.directory?(dir)
238
+ FileUtils::mkdir_p(dir)
239
+ end
240
+ end
241
+ def make_paths
242
+ dir_mk(@file.output_path.pot.dir)
243
+ dir_mk(@file.output_path.po.dir)
244
+ end
245
+ def clean
246
+ #rm -f po/*/*.po~
247
+ #rm -rf ../build
248
+ FileUtils.rm_f Dir.glob("./#{dir.po}/*/*.po~")
249
+ end
250
+ def distclean
251
+ #rm -f po4a.cfg
252
+ #rm -rf $(LANGUAGES)
253
+ FileUtils::rm_f(filename.po4a_cfg)
254
+ FileUtils::rm_r(language.possible_translations,:force => true)
255
+ #FileUtils::rm_r(language.translation_languages_selected_that_are_available,:force => true)
256
+ end
257
+ end
258
+ class Po4aDistClean
259
+ include SiSU_Languages_Selected
260
+ include SiSU_Response
261
+ def initialize(opt,file)
262
+ @opt,@file=opt,file
263
+ end
264
+ def song
265
+ pwd=Dir.pwd
266
+ if FileTest.directory?(@file.output_path.po4a.dir)
267
+ Dir.chdir(@file.output_path.po4a.dir)
268
+ dirs=Dir['*/']
269
+ dirs_language=[]
270
+ dirs.each do |x|
271
+ dirs_language << x.gsub(/\/$/,'')
272
+ end
273
+ dirs_translation = \
274
+ (language.translation_languages_available & dirs_language)
275
+ if dirs_translation.length > 0
276
+ puts %{remove language translation directorie(s): #{dirs_translation}
277
+ in #{Dir .pwd}}
278
+ ans=response?('disclean?')
279
+ if ans
280
+ FileUtils::rm_f(@file.base_filename.po4a_cfg)
281
+ FileUtils::rm_r(dirs_translation,:force => true)
282
+ #FileUtils::rm_r(language.translation_languages_available,:force => true)
283
+ end
284
+ end
285
+ Dir.chdir(pwd)
286
+ end
287
+ end
288
+ end
289
+ end
290
+ #end
291
+ __END__
292
+ REMOVE
293
+ &#033;\|&#035;\|&&#042;\|&#045;\|&#047;\|&#095;\|&#123;\|&#125;\|&#126;\|&#
294
+
295
+ tables are problematic, difficult to reconstitute instruction, check
296
+
297
+ metadata, move to top? and work on
298
+
299
+ footnotes, different types, asterisk, also do you want to have separate
300
+ paragraphs, or breaks within one block?
301
+
302
+ where no ocn appropriately use ~# or -# or indeed 1~name-
303
+
304
+ comments in document, what to do about them, not sure they are currently
305
+ retained in dal, could be quite valuable to keep
306
+
307
+ Translate Shell
308
+ http://www.soimort.org/translate-shell/
309
+ translate.google.com