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.
- checksums.yaml +7 -0
- data/bin/sisu +367 -0
- data/bin/sisugem +367 -0
- data/data/sisu/image/arrow_next_red.png +0 -0
- data/data/sisu/image/arrow_prev_red.png +0 -0
- data/data/sisu/image/arrow_up_red.png +0 -0
- data/data/sisu/image/b_bluebell.png +0 -0
- data/data/sisu/image/b_doc.png +0 -0
- data/data/sisu/image/b_epub.png +0 -0
- data/data/sisu/image/b_home.png +0 -0
- data/data/sisu/image/b_info.png +0 -0
- data/data/sisu/image/b_odf.png +0 -0
- data/data/sisu/image/b_pdf.png +0 -0
- data/data/sisu/image/b_search.png +0 -0
- data/data/sisu/image/b_toc.png +0 -0
- data/data/sisu/image/bullet_08.png +0 -0
- data/data/sisu/image/bullet_09.png +0 -0
- data/data/sisu/image/bullet_10.png +0 -0
- data/data/sisu/image/bullet_11.png +0 -0
- data/data/sisu/image/bullet_12.png +0 -0
- data/data/sisu/image/bullet_doc.png +0 -0
- data/data/sisu/image/bullet_red.png +0 -0
- data/data/sisu/image/dot_clear.png +0 -0
- data/data/sisu/image/dot_white.png +0 -0
- data/data/sisu/image/gplv3.png +0 -0
- data/data/sisu/image/gplv3_free_software.png +0 -0
- data/data/sisu/image/next.png +0 -0
- data/data/sisu/image/previous.png +0 -0
- data/data/sisu/image/rb7.ico +0 -0
- data/data/sisu/image/sisu.png +0 -0
- data/data/sisu/image/toctoc.png +0 -0
- data/data/sisu/version.yml +5 -0
- data/lib/sisu.rb +94 -0
- data/lib/sisu/air.rb +80 -0
- data/lib/sisu/ao.rb +590 -0
- data/lib/sisu/ao_character_check.rb +102 -0
- data/lib/sisu/ao_composite.rb +286 -0
- data/lib/sisu/ao_doc_objects.rb +565 -0
- data/lib/sisu/ao_doc_str.rb +2269 -0
- data/lib/sisu/ao_endnotes.rb +136 -0
- data/lib/sisu/ao_expand_insertions.rb +514 -0
- data/lib/sisu/ao_hash_digest.rb +174 -0
- data/lib/sisu/ao_idx.rb +422 -0
- data/lib/sisu/ao_images.rb +187 -0
- data/lib/sisu/ao_metadata.rb +86 -0
- data/lib/sisu/ao_misc_arrange.rb +207 -0
- data/lib/sisu/ao_numbering.rb +720 -0
- data/lib/sisu/ao_persist.rb +194 -0
- data/lib/sisu/ao_references.rb +502 -0
- data/lib/sisu/ao_syntax.rb +640 -0
- data/lib/sisu/cgi.rb +84 -0
- data/lib/sisu/cgi_pgsql.rb +270 -0
- data/lib/sisu/cgi_sql_common.rb +986 -0
- data/lib/sisu/cgi_sqlite.rb +244 -0
- data/lib/sisu/conf.rb +287 -0
- data/lib/sisu/constants.rb +388 -0
- data/lib/sisu/css.rb +3484 -0
- data/lib/sisu/db_columns.rb +1997 -0
- data/lib/sisu/db_create.rb +689 -0
- data/lib/sisu/db_dbi.rb +90 -0
- data/lib/sisu/db_drop.rb +207 -0
- data/lib/sisu/db_import.rb +877 -0
- data/lib/sisu/db_indexes.rb +146 -0
- data/lib/sisu/db_load_tuple.rb +323 -0
- data/lib/sisu/db_remove.rb +182 -0
- data/lib/sisu/db_select.rb +230 -0
- data/lib/sisu/db_sqltxt.rb +173 -0
- data/lib/sisu/db_tests.rb +114 -0
- data/lib/sisu/dbi.rb +166 -0
- data/lib/sisu/dbi_discrete.rb +206 -0
- data/lib/sisu/digests.rb +306 -0
- data/lib/sisu/dp.rb +1606 -0
- data/lib/sisu/dp_identify_markup.rb +161 -0
- data/lib/sisu/dp_make.rb +668 -0
- data/lib/sisu/embedded.rb +149 -0
- data/lib/sisu/errors.rb +84 -0
- data/lib/sisu/generic_parts.rb +131 -0
- data/lib/sisu/git.rb +277 -0
- data/lib/sisu/html.rb +775 -0
- data/lib/sisu/html_concordance.rb +391 -0
- data/lib/sisu/html_format.rb +1348 -0
- data/lib/sisu/html_harvest.rb +109 -0
- data/lib/sisu/html_harvest_author_format.rb +111 -0
- data/lib/sisu/html_harvest_authors.rb +466 -0
- data/lib/sisu/html_harvest_topics.rb +893 -0
- data/lib/sisu/html_lite_shared.rb +324 -0
- data/lib/sisu/html_manifest.rb +1032 -0
- data/lib/sisu/html_minitoc.rb +230 -0
- data/lib/sisu/html_parts.rb +437 -0
- data/lib/sisu/html_persist.rb +237 -0
- data/lib/sisu/html_promo.rb +440 -0
- data/lib/sisu/html_scroll.rb +235 -0
- data/lib/sisu/html_segments.rb +716 -0
- data/lib/sisu/html_shared.rb +62 -0
- data/lib/sisu/html_table.rb +64 -0
- data/lib/sisu/html_tune.rb +301 -0
- data/lib/sisu/hub.rb +277 -0
- data/lib/sisu/hub_actions.rb +1122 -0
- data/lib/sisu/hub_loop_markup_files.rb +170 -0
- data/lib/sisu/hub_options.rb +1695 -0
- data/lib/sisu/i18n.rb +702 -0
- data/lib/sisu/manpage.rb +377 -0
- data/lib/sisu/manpage_format.rb +85 -0
- data/lib/sisu/object_munge.rb +307 -0
- data/lib/sisu/prog_text_translation.rb +1702 -0
- data/lib/sisu/qrcode.rb +754 -0
- data/lib/sisu/relaxng.rb +1153 -0
- data/lib/sisu/remote.rb +246 -0
- data/lib/sisu/rexml.rb +148 -0
- data/lib/sisu/se.rb +158 -0
- data/lib/sisu/se_cleanoutput.rb +145 -0
- data/lib/sisu/se_clear.rb +105 -0
- data/lib/sisu/se_createsite.rb +273 -0
- data/lib/sisu/se_css.rb +221 -0
- data/lib/sisu/se_date.rb +92 -0
- data/lib/sisu/se_db.rb +214 -0
- data/lib/sisu/se_envcall.rb +326 -0
- data/lib/sisu/se_file_op.rb +2758 -0
- data/lib/sisu/se_filemap.rb +247 -0
- data/lib/sisu/se_get_init.rb +238 -0
- data/lib/sisu/se_hub_particulars.rb +234 -0
- data/lib/sisu/se_info_env.rb +2179 -0
- data/lib/sisu/se_info_port.rb +70 -0
- data/lib/sisu/se_info_system.rb +202 -0
- data/lib/sisu/se_load.rb +108 -0
- data/lib/sisu/se_processing.rb +659 -0
- data/lib/sisu/se_programs.rb +394 -0
- data/lib/sisu/se_remotes.rb +553 -0
- data/lib/sisu/se_standardise_lang.rb +176 -0
- data/lib/sisu/se_version.rb +174 -0
- data/lib/sisu/shared_images.rb +137 -0
- data/lib/sisu/shared_markup_alt.rb +336 -0
- data/lib/sisu/shared_metadata.rb +1361 -0
- data/lib/sisu/shared_sem.rb +156 -0
- data/lib/sisu/sisu_thor_lib.rb +407 -0
- data/lib/sisu/sitemaps.rb +224 -0
- data/lib/sisu/src_kdissert_share.rb +102 -0
- data/lib/sisu/src_po4a_share.rb +309 -0
- data/lib/sisu/src_po4a_shelf.rb +1217 -0
- data/lib/sisu/src_po4a_shelf_set.rb +297 -0
- data/lib/sisu/src_po4a_sst_ao_sst.rb +893 -0
- data/lib/sisu/src_po4a_sst_ao_sst_set.rb +284 -0
- data/lib/sisu/src_po4a_sstm.rb +135 -0
- data/lib/sisu/src_shared.rb +347 -0
- data/lib/sisu/src_sisupod_make.rb +171 -0
- data/lib/sisu/src_sisupod_sstm.rb +109 -0
- data/lib/sisu/sst_convert_markup.rb +323 -0
- data/lib/sisu/sst_do_inline_footnotes.rb +440 -0
- data/lib/sisu/sst_from_xml.rb +178 -0
- data/lib/sisu/sst_identify_markup.rb +482 -0
- data/lib/sisu/sst_to_s_xml_sax.rb +471 -0
- data/lib/sisu/termsheet.rb +163 -0
- data/lib/sisu/texinfo.rb +430 -0
- data/lib/sisu/texinfo_format.rb +541 -0
- data/lib/sisu/texpdf.rb +1162 -0
- data/lib/sisu/texpdf_format.rb +1689 -0
- data/lib/sisu/texpdf_parts.rb +235 -0
- data/lib/sisu/txt_asciidoc.rb +354 -0
- data/lib/sisu/txt_asciidoc_decorate.rb +207 -0
- data/lib/sisu/txt_markdown.rb +389 -0
- data/lib/sisu/txt_markdown_decorate.rb +207 -0
- data/lib/sisu/txt_orgmode.rb +376 -0
- data/lib/sisu/txt_orgmode_decorate.rb +186 -0
- data/lib/sisu/txt_output.rb +86 -0
- data/lib/sisu/txt_plain.rb +410 -0
- data/lib/sisu/txt_plain_decorate.rb +189 -0
- data/lib/sisu/txt_read.rb +109 -0
- data/lib/sisu/txt_rst.rb +371 -0
- data/lib/sisu/txt_rst_decorate.rb +186 -0
- data/lib/sisu/txt_shared.rb +241 -0
- data/lib/sisu/txt_textile.rb +367 -0
- data/lib/sisu/txt_textile_decorate.rb +186 -0
- data/lib/sisu/update.rb +141 -0
- data/lib/sisu/urls.rb +696 -0
- data/lib/sisu/utils.rb +232 -0
- data/lib/sisu/utils_composite.rb +115 -0
- data/lib/sisu/utils_response.rb +114 -0
- data/lib/sisu/utils_screen_text_color.rb +472 -0
- data/lib/sisu/utils_spell.rb +99 -0
- data/lib/sisu/webrick.rb +191 -0
- data/lib/sisu/wikispeak.rb +375 -0
- data/lib/sisu/xhtml.rb +472 -0
- data/lib/sisu/xhtml_epub2.rb +890 -0
- data/lib/sisu/xhtml_epub2_concordance.rb +322 -0
- data/lib/sisu/xhtml_epub2_format.rb +2272 -0
- data/lib/sisu/xhtml_epub2_persist.rb +278 -0
- data/lib/sisu/xhtml_epub2_segments.rb +599 -0
- data/lib/sisu/xhtml_epub2_tune.rb +330 -0
- data/lib/sisu/xhtml_parts.rb +183 -0
- data/lib/sisu/xhtml_shared.rb +62 -0
- data/lib/sisu/xhtml_table.rb +97 -0
- data/lib/sisu/xml_docbook5.rb +376 -0
- data/lib/sisu/xml_dom.rb +624 -0
- data/lib/sisu/xml_fictionbook2.rb +389 -0
- data/lib/sisu/xml_format.rb +865 -0
- data/lib/sisu/xml_md_oai_pmh_dc.rb +229 -0
- data/lib/sisu/xml_odf_odt.rb +887 -0
- data/lib/sisu/xml_odf_odt_format.rb +674 -0
- data/lib/sisu/xml_parts.rb +191 -0
- data/lib/sisu/xml_persist.rb +126 -0
- data/lib/sisu/xml_sax.rb +521 -0
- data/lib/sisu/xml_scaffold_structure_collapsed.rb +198 -0
- data/lib/sisu/xml_scaffold_structure_sisu.rb +201 -0
- data/lib/sisu/xml_shared.rb +665 -0
- data/lib/sisu/xml_tables.rb +261 -0
- data/lib/sisu/zap.rb +90 -0
- 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__
|