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,156 @@
1
+ # encoding: utf-8
2
+ =begin
3
+
4
+ * Name: SiSU
5
+
6
+ ** Description: documents, structuring, processing, publishing, search
7
+ *** Sematic tags
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/shared_sem.rb;hb=HEAD>
55
+
56
+ =end
57
+ module SiSU_Sem
58
+ require_relative 'dp' # dp.rb
59
+ class Tags
60
+ def initialize(para,md)
61
+ @para,@md=para,md
62
+ end
63
+ def rgx
64
+ def exclude
65
+ /^(?:<:code>|%+ )/
66
+ end
67
+ def each_csc
68
+ /(?:;|(?:[a-z]+(?:[_:.][a-z]+)+|[a-z]*):)\{|\}[:;][a-z]+(?:[_:.][a-z]+)*/m
69
+ end
70
+ def each_c
71
+ /(?:[a-z]+(?:[_:.][a-z]+)+|[a-z]*):\{|\}:[a-z]+(?:[_:.][a-z]+)*/m
72
+ end
73
+ def each_sc
74
+ /(?:[a-z]+(?:[_:.][a-z]+)+|[a-z]*);\{|\};[a-z]+(?:[_:.][a-z]+)*/m
75
+ end
76
+ def pair_csc
77
+ /(([a-z]+(?:[_:.][a-z]+)+|[a-z]+)(?::\{(.+?)\}:\2)|([:;])\{(.+?)\}\4[a-z]+(?:[_:.][a-z]+)*)/m
78
+ end
79
+ def pair_c
80
+ /(([a-z]+(?:[_:.][a-z]+)*)(?::\{(.+?)\}:\2)|:\{(.+?)\}:[a-z]+(?:[_:.][a-z]+)*)/m
81
+ end
82
+ def pair_sc
83
+ /(;\{.+?\};[a-z]+(?:[_:.][a-z]+)*)/m
84
+ end
85
+ def whole_csc_ae
86
+ /(([a-z]+(?:[_.][a-z]+)+|[a-z]*)(?::\[(.+?)\]:\2)|;\{(.+?)\};(?:[a-z]+(?:[_:.][a-z]+)+|[a-z]+)\b)/m
87
+ end
88
+ def each_csc_ae
89
+ /(?:;|(?:[a-z]+(?:[_:.][a-z]+)+)*:|[a-z]*:)\[|\][:;](?:[a-z]+(?:[_:.][a-z]+)+|[a-z]+)/m
90
+ end
91
+ self
92
+ end
93
+ def print
94
+ def scan_pair_c
95
+ if @para =~ rgx.pair_c
96
+ matched=@para.scan(rgx.pair_c).flatten
97
+ puts matched[0] unless matched[0].nil?
98
+ end
99
+ end
100
+ def scan_pair_sc
101
+ matched=@para.scan(rgx.pair_sc).flatten
102
+ puts matched[0] unless matched[0].nil?
103
+ end
104
+ def if_pair_c
105
+ if @para=~/([a-z](?:[a-z_:.]+?[a-z])?)+(?::\{(.+?)\}:\1)/m
106
+ puts "#{$1}:{ #{$2} }:#{$1}"
107
+ end
108
+ end
109
+ def if_pair_sc
110
+ if @para=~/;\{\s*(.+?)\s*\};([a-z]+(?:[_:.][a-z]+)*)/
111
+ puts ";{ #{$1} };#{$2}"
112
+ end
113
+ end
114
+ def match_pair_c
115
+ matched=[]
116
+ matched=rgx.pair_c.match(@para)[1] if @para =~ rgx.pair_c
117
+ puts matched unless matched.nil?
118
+ end
119
+ def match_pair_sc
120
+ matched=[]
121
+ matched=rgx.pair_sc.match(@para)[1] if @para =~ rgx.pair_sc
122
+ puts matched unless matched.nil?
123
+ end
124
+ def matching
125
+ scan_pair_c
126
+ end
127
+ self
128
+ end
129
+ def rm
130
+ def sem_marker_parts
131
+ unless @para =~ rgx.exclude
132
+ @para.gsub!(rgx.each_csc,'')
133
+ end
134
+ @para
135
+ end
136
+ def sem_marker_added_extra_parts
137
+ unless @para =~ rgx.exclude
138
+ @para.gsub!(rgx.whole_csc_ae,'')
139
+ if @para =~rgx.each_csc_ae
140
+ STDERR.puts "WARNING semantic tagging error: #{@para}"
141
+ end
142
+ end
143
+ @para
144
+ end
145
+ def all
146
+ if @md.sem_tag
147
+ sem_marker_parts
148
+ sem_marker_added_extra_parts
149
+ end
150
+ @para
151
+ end
152
+ self
153
+ end
154
+ end
155
+ end
156
+ __END__
@@ -0,0 +1,407 @@
1
+ module SiSU_Po4a_Actions
2
+ require_relative 'utils_response' # utils_response.rb
3
+ include SiSU_Response
4
+ @@source=@@targets=nil
5
+ def project_details
6
+ def name
7
+ 'SiSU translations under po4a management'
8
+ end
9
+ def name_warning
10
+ <<-WOK
11
+ #{name}
12
+
13
+ WARNING all sisu markup files (.ssm, .sst, .ssi) in languages other than #{language.source_language_selected}
14
+ are managed by po4a, through translations of the source language to other languages.
15
+
16
+ #{language.info_on_selection}
17
+ WOK
18
+ end
19
+ def setup_project
20
+ "Setup file for placing #{name}"
21
+ end
22
+ self
23
+ end
24
+ def notice
25
+ def warn_and_proceed?
26
+ '*WARNING* this software module creates, destroys, overwrites directories' + "\n" \
27
+ + '*WARNING*: Use this Software at your own risk!'
28
+ end
29
+ def default(selection=nil)
30
+ selections=:strict #selections=:short
31
+ ans=if selection
32
+ case selection
33
+ when selection.is_a?(String)
34
+ selections=:strict
35
+ <<-WOK
36
+ #{project_details.setup_project}
37
+ Default action selected - "#{selection} #{project_details.name}"
38
+ #{warn_and_proceed?}
39
+ WOK
40
+ when :make
41
+ selections=:strict
42
+ <<-WOK
43
+ #{project_details.setup_project}
44
+ "--#{selection}" selected - #{selection} #{project_details.name}
45
+ selected (or configured) languages to be used
46
+ source language: #{language.source_language_available_str}
47
+ target languages: #{language.translation_languages_selected_that_are_available.inspect}
48
+
49
+ WARNING: this action assumes (and places) this project is under po4a
50
+ (translation) management. It will create sub-directories for the
51
+ selected (or configured) target languages:
52
+ #{language.translation_languages_selected_that_are_available.inspect}
53
+ & the po4a configuration file: #{filename.po4a_cfg}
54
+ in the current directory:
55
+ #{Dir.pwd}
56
+ It will populate the sub-directories with translation files created from
57
+ the pot and po files found under the corresponding language
58
+ sub-directories, (under #{dir.pot}/ & #{dir.po}/).
59
+ (OVERWRITING any existing translated .ssm .sst .ssi files
60
+ in language subdirectories that are not under po4a management).
61
+
62
+ You should backup the current directory:
63
+ #{Dir.pwd}
64
+
65
+ #{warn_and_proceed?}
66
+ WOK
67
+ when :clean
68
+ selections=:strict
69
+ <<-WOK
70
+ #{project_details.setup_project}
71
+ "--#{selection}" selected - #{selection} #{project_details.name}
72
+ #{warn_and_proceed?}
73
+ WOK
74
+ when :distclean
75
+ selections=:strict
76
+ <<-WOK
77
+ #{project_details.setup_project}
78
+ "--#{selection}" selected - #{selection} #{project_details.name}
79
+ WARNING: this action assumes (and places) this project is under po4a
80
+ (translation) management. It will remove the sub-directories (if they exist):
81
+ #{language.possible_translations.inspect}
82
+
83
+ #{language.translation_languages_selected_that_are_available.inspect}
84
+ & file: #{filename.po4a_cfg}
85
+ in the current directory:
86
+ #{Dir.pwd}
87
+ Note: these sub-directories & the config file #{filename.po4a_cfg}
88
+ should be auto-generated from pot and po files if this project translation
89
+ is under po4a management.
90
+ This query is to give you the chance to make sure you know what you are doing.
91
+ #{warn_and_proceed?}
92
+ WOK
93
+ when :rebuild
94
+ selections=:strict
95
+ <<-WOK
96
+ #{project_details.setup_project}
97
+ "--#{selection}" selected - #{selection} #{project_details.name}
98
+ WARNING: this action assumes (and places) this project is under po4a
99
+ (translation) management. It will destroy/clobber and then create again the
100
+ sub-directories:
101
+ #{language.translation_languages_selected_that_are_available.inspect}
102
+ populating them with translation files created from the pot and po files
103
+ found under the corresponding language sub-directories in (#{dir.pot}/
104
+ & #{dir.po}/).
105
+ It will also generate the file: #{filename.po4a_cfg}
106
+ These actions will be taken in the current directory:
107
+ #{Dir.pwd}
108
+ This query is to give you the chance to make sure you know what you are doing.
109
+ #{warn_and_proceed?}
110
+ WOK
111
+ else
112
+ selections=:strict
113
+ <<-WOK
114
+ #{project_details.setup_project}
115
+ Default action selected - "#{selection} #{project_details.name}"
116
+ #{warn_and_proceed?}
117
+ WOK
118
+ end
119
+ else
120
+ selections=:strict
121
+ <<-WOK
122
+ #{project_details.setup_project}
123
+ Default action selected - "install and to setup #{project_details.name}"
124
+ #{warn_and_proceed?}
125
+ WOK
126
+ end
127
+ exit unless query.answer?(ans)
128
+ end
129
+ def project_help
130
+ puts <<-WOK
131
+ #{project_details.name}
132
+ #{project_details.setup_project}
133
+
134
+ This setup file is primarily to assist with having sisu markup files under po4a
135
+ translation management. It assumes that the source language files are placed
136
+ under the sub-directory identifying the source language set, which is currently
137
+ #{language.source_language_selected}
138
+ The files there are used to make the source translation file in the directory #{dir.pot}/
139
+ Which is then used to create files for translation under the directory #{dir.po}/
140
+ in sub-directories bearing the translation languages ISO code.
141
+
142
+ The current language translation selection is: #{translation_languages_selected_str}
143
+ The languages selected are located in the file: #{filename.languages_src_tgt}
144
+
145
+ sisu available language list: #{sisu_languages_available_str}
146
+
147
+ WOK
148
+ end
149
+ self
150
+ end
151
+ def generate
152
+ def readme
153
+ system(%{ruby ../../../../../bin/sisu6 --txt -v --no-manifest --dump='../../../../../..' en/README.ssm})
154
+ end
155
+ def manpage
156
+ system(%{ruby ../../../../../bin/sisu6 --manpage -v --no-manifest --dump='../../../../../../man/man1' en/sisu.ssm})
157
+ end
158
+ self
159
+ end
160
+ def filename
161
+ def languages_src_tgt
162
+ #'translation_languages'
163
+ 'languages_source_and_targets'
164
+ end
165
+ def po4a_cfg
166
+ 'po4a.cfg'
167
+ end
168
+ self
169
+ end
170
+ def dir
171
+ def pwd
172
+ Dir.pwd
173
+ end
174
+ def po4a_
175
+ 'po4a/' # ''
176
+ end
177
+ def pot
178
+ po4a_ + 'pot'
179
+ end
180
+ def po
181
+ po4a_ + 'po'
182
+ end
183
+ self
184
+ end
185
+ def dir_mk(dir)
186
+ FileUtils::mkdir_p(dir) unless FileTest.directory?(dir)
187
+ end
188
+ def po4a_flags
189
+ def debug
190
+ '-d -v'
191
+ end
192
+ def normal
193
+ ''
194
+ end
195
+ def quiet
196
+ '-q'
197
+ end
198
+ self
199
+ end
200
+ def languages_from_file
201
+ def language_source
202
+ if @@source.is_a?(String) \
203
+ and @@source =~ /w{2,4}/
204
+ else languages_extract_from_file
205
+ end
206
+ @@source
207
+ end
208
+ def language_targets
209
+ if @@targets.is_a?(Array) \
210
+ and @@targets.length > 0
211
+ else languages_extract_from_file
212
+ end
213
+ @@targets
214
+ end
215
+ def languages_extract_from_file
216
+ if (@@source.is_a?(String) \
217
+ and @@source =~/\w{2,4}/) \
218
+ and (@@targets.is_a?(Array) \
219
+ and @@targets.length > 0)
220
+ else
221
+ if FileTest.file?(filename.languages_src_tgt)
222
+ puts 'file: "' + filename.languages_src_tgt + '" found and used (unless overridden)'
223
+ langs=IO.read(filename.languages_src_tgt, mode: 'r:utf-8').scan(/source:\s+\w+|target:\s+\w.+/)
224
+ langs.each do |sel|
225
+ case sel
226
+ when /source:/
227
+ source=sel.split(/source:\s*|\s+/).join
228
+ source=(source =~/\w{2,4}/) ? source : nil
229
+ @@source=unless @@source.is_a?(String) \
230
+ and @@source =~/\w{2,4}/
231
+ source
232
+ else @@source
233
+ end
234
+ when /target:/
235
+ @@targets=unless @@targets.is_a?(Array)
236
+ sel.split(/targets?:\s*|\s+/) - ['']
237
+ else @@targets
238
+ end
239
+ end
240
+ end
241
+ else
242
+ puts %{(create) missing instruction file: "#{filename.languages_src_tgt}"\n contents e.g.:\n source: en\n target: de fr es ja ru zh\n no po target languages found}
243
+ exit
244
+ end
245
+ end
246
+ end
247
+ self
248
+ end
249
+ def language
250
+ def source_language_selected(src=nil)
251
+ @@source=if not @@source.nil? \
252
+ and @@source.is_a?(String) \
253
+ and @@source =~/\w{2,4}/
254
+ @@source
255
+ elsif (src \
256
+ && src.is_a?(String) \
257
+ && src.length > 1)
258
+ src
259
+ else
260
+ src=languages_from_file.language_source
261
+ end
262
+ end
263
+ def translation_languages_selected(targets=nil) #translation_languages
264
+ @@targets=if not @@targets.nil? \
265
+ and @@targets.is_a?(Array) \
266
+ and @@targets.length > 0
267
+ @@targets
268
+ elsif (targets \
269
+ && targets.is_a?(Array) \
270
+ && targets.length > 0)
271
+ targets
272
+ else
273
+ targets=languages_from_file.language_targets
274
+ end
275
+ end
276
+ def source_language_available
277
+ [source_language_selected] & sisu_languages_available
278
+ end
279
+ def translation_languages_selected_that_are_available
280
+ translation_languages_selected & sisu_languages_available
281
+ end
282
+ def info_on_selection
283
+ if translation_languages_selected != translation_languages_selected_that_are_available
284
+ <<-WOK
285
+ WARNING: language selections mismatch
286
+
287
+ The current language translation selection appears to be: #{translation_languages_selected_str}
288
+ Of which the following are valid (available) selections: #{translation_languages_selected_that_are_available_str}
289
+
290
+ sisu available language list: #{sisu_languages_available_str}
291
+
292
+ the following will be used: #{translation_languages_selected_that_are_available_str}
293
+ The languages selected are located in the file: #{filename.languages_src_tgt}
294
+ WOK
295
+ else
296
+ <<-WOK
297
+ The current language translation selection is: #{translation_languages_selected_str}
298
+ The languages selected are located in the file: #{filename.languages_src_tgt}
299
+
300
+ sisu available language list: #{sisu_languages_available_str}
301
+ WOK
302
+ end
303
+ end
304
+ def sisu_languages_available
305
+ $SiSU_Language_Codes.language_list.codes
306
+ end
307
+ def possible_translations
308
+ sisu_languages_available - [source_language_selected]
309
+ end
310
+ def translation_languages_selected_str
311
+ language.translation_languages_selected.join(' ')
312
+ end
313
+ def source_language_available_str
314
+ source_language_available.join
315
+ end
316
+ def translation_languages_selected_that_are_available_str
317
+ language.translation_languages_selected_that_are_available.join(' ')
318
+ end
319
+ def sisu_languages_available_str
320
+ language.sisu_languages_available.join(' ')
321
+ end
322
+ def posible_translations_str
323
+ language.posible_translations.join(' ')
324
+ end
325
+ self
326
+ end
327
+ def files_src
328
+ def ssm
329
+ Dir.glob("#{language.source_language_selected}/*.ssm").sort
330
+ end
331
+ def sst
332
+ Dir.glob("#{language.source_language_selected}/*.sst").sort
333
+ end
334
+ def ssi
335
+ Dir.glob("#{language.source_language_selected}/*.ssi").sort
336
+ end
337
+ def all
338
+ Dir.glob("#{language.source_language_selected}/*{.ssm,.sst,.ssi}").sort
339
+ end
340
+ self
341
+ end
342
+ def po4a_cfg_file
343
+ File.open("#{Dir.pwd}/#{filename.po4a_cfg}",'w')
344
+ end
345
+ def po4a_create
346
+ def configure #po4a_cfg
347
+ po4a_cfg_arr=[]
348
+ po4a_cfg_arr \
349
+ << "[po4a_langs] #{language.translation_languages_selected_that_are_available_str}"
350
+ po4a_cfg_arr \
351
+ << "[po4a_paths] #{dir.pot}/$master.pot $lang:#{dir.po}/$lang/$master.po"
352
+ files_src.ssm.each do |file_src|
353
+ file_src_fn=file_src.gsub(/#{language.source_language_selected}\//,'')
354
+ po4a_cfg_arr \
355
+ << "[type: text] #{file_src} $lang:$lang/#{file_src_fn}"
356
+ end
357
+ files_src.sst.each do |file_src|
358
+ file_src_fn=file_src.gsub(/#{language.source_language_selected}\//,'')
359
+ po4a_cfg_arr \
360
+ << "[type: text] #{file_src} $lang:$lang/#{file_src_fn}"
361
+ end
362
+ files_src.ssi.each do |file_src|
363
+ file_src_fn=file_src.gsub(/#{language.source_language_selected}\//,'')
364
+ po4a_cfg_arr \
365
+ << "[type: text] #{file_src} $lang:$lang/#{file_src_fn}"
366
+ end
367
+ file=po4a_cfg_file
368
+ po4a_cfg_arr.each do |txt|
369
+ puts txt
370
+ file << txt << "\n"
371
+ end
372
+ file.close
373
+ cmd='po4a --keep 0 ' \
374
+ + po4a_flags.normal + ' ' \
375
+ + filename.po4a_cfg
376
+ #cmd='po4a --keep 0 --no-backups --package-name ' \
377
+ #+ 'sisu-manual' + ' ' \
378
+ #+ po4a_flags.normal + ' ' \
379
+ #+ filename.po4a_cfg
380
+ system(cmd); puts cmd
381
+ end
382
+ self
383
+ end
384
+ def project
385
+ def make
386
+ dir_mk(dir.pot)
387
+ language.translation_languages_selected_that_are_available.each do |lang_dir|
388
+ dir_lang="#{Dir.pwd}/#{dir.po}/#{lang_dir}"
389
+ dir_mk(dir_lang)
390
+ end
391
+ po4a_create.configure
392
+ end
393
+ def clean
394
+ #rm -f po/*/*.po~
395
+ #rm -rf ../build
396
+ FileUtils.rm_f Dir.glob("./#{dir.po}/*/*.po~")
397
+ end
398
+ def distclean
399
+ #rm -f po4a.cfg
400
+ #rm -rf $(LANGUAGES)
401
+ FileUtils::rm_f(filename.po4a_cfg)
402
+ FileUtils::rm_r(language.possible_translations,:force => true)
403
+ end
404
+ self
405
+ end
406
+ end
407
+ __END__