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,1217 @@
|
|
|
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_shelf.rb;hb=HEAD>
|
|
55
|
+
|
|
56
|
+
=end
|
|
57
|
+
module SiSU_Po4a
|
|
58
|
+
require_relative 'ao' # ao.rb
|
|
59
|
+
require_relative 'se' # se.rb
|
|
60
|
+
include SiSU_Env
|
|
61
|
+
require_relative 'ao_composite' # ao_composite.rb
|
|
62
|
+
require_relative 'shared_metadata' # shared_metadata.rb
|
|
63
|
+
require_relative 'src_po4a_shelf_set' # src_po4a_shelf_set.rb
|
|
64
|
+
include SiSU_Param
|
|
65
|
+
require_relative 'object_munge' # object_munge.rb
|
|
66
|
+
require_relative 'utils_composite' # utils_composite.rb
|
|
67
|
+
class Source
|
|
68
|
+
include SiSU_Object_Munge
|
|
69
|
+
@@opt_src,@@opt_trn,@@opt_src_,@@opt_trn_,@@md_src,@@md_trn=
|
|
70
|
+
nil, nil, nil, nil, nil, nil
|
|
71
|
+
@@auto_translation_ = :go
|
|
72
|
+
def initialize(opt,fn=nil)
|
|
73
|
+
@opt,@fn=opt,fn
|
|
74
|
+
#unless @opt.fns =~/(.+?\.(?:-|ssm\.)?sst)$/
|
|
75
|
+
# puts "#{@opt.fns} not a processed file type"
|
|
76
|
+
#end
|
|
77
|
+
file_arr=SiSU_Info_Env::InfoEnv.new.source_file_processing_array(@opt.fns)
|
|
78
|
+
SiSU_Param::Parameters::Instructions.new(file_arr,@opt).extract
|
|
79
|
+
r=Px[:lng_lst_rgx].gsub(/\|en\|/,'|')
|
|
80
|
+
@lang_regx=%r{(?:#{r})}
|
|
81
|
+
if opt.fns =~/\S+?~#{@lang_regx}\.ss[mti]/ \
|
|
82
|
+
and opt.f_pth[:lng]!=@opt.lng_base
|
|
83
|
+
@@opt_src_=false
|
|
84
|
+
@@opt_trn=opt
|
|
85
|
+
@@md_trn=SiSU_Param::Parameters.new(opt).get
|
|
86
|
+
else
|
|
87
|
+
@@opt_src_=true
|
|
88
|
+
@@opt_src=opt
|
|
89
|
+
@@md_src=SiSU_Param::Parameters.new(opt).get
|
|
90
|
+
end
|
|
91
|
+
end
|
|
92
|
+
def wrap_width_set(md,env)
|
|
93
|
+
if defined? md.make.plaintext_wrap \
|
|
94
|
+
and md.make.plaintext_wrap
|
|
95
|
+
md.make.plaintext_wrap
|
|
96
|
+
elsif defined? env.plaintext_wrap \
|
|
97
|
+
and env.plaintext_wrap
|
|
98
|
+
env.plaintext_wrap
|
|
99
|
+
else 78
|
|
100
|
+
end
|
|
101
|
+
end
|
|
102
|
+
def process_file(md,env,file,wrap_width,fn)
|
|
103
|
+
unless @opt.act[:quiet][:set]==:on
|
|
104
|
+
tool=(@opt.act[:verbose][:set]==:on \
|
|
105
|
+
|| @opt.act[:verbose_plus][:set]==:on \
|
|
106
|
+
|| @opt.act[:maintenance][:set]==:on) \
|
|
107
|
+
? "#{env.program.text_editor} #{file.output_path.pot.dir}/"
|
|
108
|
+
: @opt.fns
|
|
109
|
+
(@opt.act[:verbose][:set]==:on \
|
|
110
|
+
|| @opt.act[:verbose_plus][:set]==:on \
|
|
111
|
+
|| @opt.act[:maintenance][:set]==:on) \
|
|
112
|
+
? SiSU_Screen::Ansi.new(
|
|
113
|
+
@opt.act[:color_state][:set],
|
|
114
|
+
'Pot po4a',
|
|
115
|
+
tool
|
|
116
|
+
).green_hi_blue
|
|
117
|
+
: SiSU_Screen::Ansi.new(
|
|
118
|
+
@opt.act[:color_state][:set],
|
|
119
|
+
'Pot po4a',
|
|
120
|
+
tool
|
|
121
|
+
).green_title_hi
|
|
122
|
+
if (@opt.act[:verbose][:set]==:on \
|
|
123
|
+
|| @opt.act[:verbose_plus][:set]==:on \
|
|
124
|
+
|| @opt.act[:maintenance][:set]==:on)
|
|
125
|
+
SiSU_Screen::Ansi.new(
|
|
126
|
+
@opt.act[:color_state][:set],
|
|
127
|
+
@opt.fns,
|
|
128
|
+
file.output_path.pot.dir
|
|
129
|
+
).flow
|
|
130
|
+
end
|
|
131
|
+
end
|
|
132
|
+
if @opt.fns =~/\S+?~#{@lang_regx}\.ss[mti]/ \
|
|
133
|
+
or @opt.f_pth[:lng] !=@opt.lng_base
|
|
134
|
+
opt_lang_trn_fn=fn
|
|
135
|
+
@ao_arr_lang_trans=
|
|
136
|
+
SiSU_AO::Source.new(@opt,opt_lang_trn_fn,:po4a).get # ao file drawn here
|
|
137
|
+
opt_lang_src_fn=(fn =~/\S+?~\S{2}(?:_\S{2})?\.ss[mti]/) \
|
|
138
|
+
? (fn.gsub(/(\S+?)~\S{2}(?:_\S{2})?(\.ss[mti])/,'\1\2')) #check i
|
|
139
|
+
: fn
|
|
140
|
+
transdir,srcdir=Dir.pwd,Dir.pwd
|
|
141
|
+
if Dir.pwd.to_s =~/\/#{@lang_regx}$/
|
|
142
|
+
transdir=Dir.pwd
|
|
143
|
+
srcdir=transdir.
|
|
144
|
+
gsub(/\/#{@lang_regx}$/,
|
|
145
|
+
"/#{@opt.lng_base}")
|
|
146
|
+
if FileTest.directory?(srcdir)
|
|
147
|
+
Dir.chdir(srcdir)
|
|
148
|
+
end
|
|
149
|
+
else nil
|
|
150
|
+
end
|
|
151
|
+
if FileTest.file?("#{srcdir}/#{opt_lang_src_fn}")
|
|
152
|
+
@ao_arr_lang_src=
|
|
153
|
+
SiSU_AO::Source.new(
|
|
154
|
+
@@opt_src,
|
|
155
|
+
opt_lang_src_fn,
|
|
156
|
+
:po4a
|
|
157
|
+
).get # ao file drawn here
|
|
158
|
+
else
|
|
159
|
+
puts "no identified source document"
|
|
160
|
+
exit
|
|
161
|
+
end
|
|
162
|
+
Dir.chdir(transdir) if transdir
|
|
163
|
+
else
|
|
164
|
+
@ao_arr_lang_src=
|
|
165
|
+
SiSU_AO::Source.new(
|
|
166
|
+
@opt,
|
|
167
|
+
fn,
|
|
168
|
+
:po4a
|
|
169
|
+
).get # ao file drawn here
|
|
170
|
+
@ao_arr_lang_trans=nil
|
|
171
|
+
end
|
|
172
|
+
SiSU_Po4a::Source::Scroll.new(
|
|
173
|
+
fn,
|
|
174
|
+
@ao_arr_lang_src,
|
|
175
|
+
@ao_arr_lang_trans,
|
|
176
|
+
@@md_src,
|
|
177
|
+
@@md_trn,
|
|
178
|
+
wrap_width
|
|
179
|
+
).songsheet
|
|
180
|
+
end
|
|
181
|
+
def read
|
|
182
|
+
begin
|
|
183
|
+
src={}
|
|
184
|
+
src[:pth]=@opt.f_pth[:pth]
|
|
185
|
+
src[:files]=if @opt.fns =~ /\.(?:(?:-|ssm\.)sst|ssm)$/
|
|
186
|
+
@opt.fns=@opt.fns.gsub(/\.ssm\.sst$/,'.ssm')
|
|
187
|
+
SiSU_Assemble::CompositeFileList.new(@opt).read
|
|
188
|
+
else
|
|
189
|
+
[@opt.fns]
|
|
190
|
+
end
|
|
191
|
+
md=SiSU_Param::Parameters.new(@opt).get
|
|
192
|
+
env=SiSU_Env::InfoEnv.new(@opt.fns)
|
|
193
|
+
file=SiSU_Env::FileOp.new(md)
|
|
194
|
+
Po4aCfg.new(@opt,file).po4a_cfg
|
|
195
|
+
wrap_width=wrap_width_set(md,env)
|
|
196
|
+
src[:files].each do |fn|
|
|
197
|
+
process_file(md,env,file,wrap_width,fn)
|
|
198
|
+
end
|
|
199
|
+
rescue
|
|
200
|
+
SiSU_Errors::Rescued.new($!,$@,@opt.selections.str,@opt.fns).location do
|
|
201
|
+
__LINE__.to_s + ':' + __FILE__
|
|
202
|
+
end
|
|
203
|
+
ensure
|
|
204
|
+
end
|
|
205
|
+
end
|
|
206
|
+
private
|
|
207
|
+
class Scroll <Source
|
|
208
|
+
include SiSU_Po4aUtils
|
|
209
|
+
@@endnotes={ para: [], end: [] }
|
|
210
|
+
def initialize(fn,data_src,data_trn,md_src,md_trn,wrap_width)
|
|
211
|
+
@fn,@data_src,@data_trn,@md_src,@md_trn,@wrap_width=
|
|
212
|
+
fn, data_src, data_trn, md_src, md_trn, wrap_width
|
|
213
|
+
@md=(md_trn.nil?) \
|
|
214
|
+
? md_src
|
|
215
|
+
: md_trn
|
|
216
|
+
@tab="\t"
|
|
217
|
+
@@endnotes_=(@md.opt.selections.str =~/--endnote/) \
|
|
218
|
+
? true
|
|
219
|
+
: false # --footnote
|
|
220
|
+
@pot={
|
|
221
|
+
body: [],
|
|
222
|
+
open: [],
|
|
223
|
+
close: [],
|
|
224
|
+
head: [],
|
|
225
|
+
metadata: [],
|
|
226
|
+
tail: []
|
|
227
|
+
}
|
|
228
|
+
end
|
|
229
|
+
def br
|
|
230
|
+
(@md.opt.selections.str =~/--dos/) ? "\r\n" : "\n" # --unix
|
|
231
|
+
end
|
|
232
|
+
def songsheet
|
|
233
|
+
fn=@fn
|
|
234
|
+
pot=pot_markup(@data_src,@data_trn)
|
|
235
|
+
publish(fn,pot)
|
|
236
|
+
end
|
|
237
|
+
def pot_structure_wrap(desc,orig,trans,indent=0,hang=0)
|
|
238
|
+
SiSU_Po4aUtils::Wrap.new(
|
|
239
|
+
@md,
|
|
240
|
+
orig,
|
|
241
|
+
trans,
|
|
242
|
+
desc,
|
|
243
|
+
@wrap_width,
|
|
244
|
+
indent,
|
|
245
|
+
hang
|
|
246
|
+
)
|
|
247
|
+
end
|
|
248
|
+
def wrap_endnotes(orig_notes='',trn_notes='')
|
|
249
|
+
nt=@@endnotes_ ? 'endnote' : 'footnote'
|
|
250
|
+
@fn=0
|
|
251
|
+
a_l=orig_notes.length
|
|
252
|
+
0.upto(a_l-1) do |i|
|
|
253
|
+
@fn=if orig_notes[i].to_s =~/^\^~([\d*+]+)/ # provides endnote number within paragraph
|
|
254
|
+
@fn += 1
|
|
255
|
+
else @fn
|
|
256
|
+
end
|
|
257
|
+
d="#{nt} #{@fn}"
|
|
258
|
+
mark="^~ "
|
|
259
|
+
instruct=s_mark=''
|
|
260
|
+
if @md.opt.act[:maintenance][:set]==:on
|
|
261
|
+
instruct=%{\n# footnotes, the preferred sisu markup for a footnote is~{this is a footnote}~ } \
|
|
262
|
+
+ %{however, for translation a footnote reference marker in the text~^ } \
|
|
263
|
+
+ %{with a set of notes following the paragraph starting on a newline with "^~ this is a footnote", } \
|
|
264
|
+
+ %{is easier to deal with, if possible these should be converted back to~{inline notes}~}
|
|
265
|
+
s_mark="\n# " + %{"\\n\\n#{mark}...\\n\\n"}
|
|
266
|
+
end
|
|
267
|
+
desc="#{d}#{s_mark}#{instruct}"
|
|
268
|
+
orig=(orig_notes[i].to_s =~/^\^~[\d*+]+/) \
|
|
269
|
+
? (orig_notes[i].to_s.gsub(/^\^~[\d*+]+/,'^~'))
|
|
270
|
+
: orig_notes[i].to_s
|
|
271
|
+
trans=if trn_notes.is_a?(Array) \
|
|
272
|
+
and trn_notes.length==orig_notes.length
|
|
273
|
+
(trn_notes[i].to_s =~/^\^~[\d*+]+/) \
|
|
274
|
+
? (trn_notes[i].to_s.gsub(/^\^~[\d*+]+/,'^~'))
|
|
275
|
+
: trn_notes[i].to_s
|
|
276
|
+
else ''
|
|
277
|
+
end
|
|
278
|
+
util=pot_structure_wrap(desc,orig,trans)
|
|
279
|
+
wrap=util.line_wrap
|
|
280
|
+
wrap=if wrap =~ /^\s*\^~[\d*+]+\s+.+?\s*\Z/m
|
|
281
|
+
wrap.gsub(/^\s*(\^~[\d*+]+)\s+(.+?)\s*\Z/m, <<GSUB
|
|
282
|
+
\\1 \\2
|
|
283
|
+
GSUB
|
|
284
|
+
)
|
|
285
|
+
else
|
|
286
|
+
wrap.gsub(/^(.+)\Z/m, <<GSUB
|
|
287
|
+
\\1
|
|
288
|
+
GSUB
|
|
289
|
+
)
|
|
290
|
+
end
|
|
291
|
+
@@endnotes[:para] << wrap
|
|
292
|
+
@@endnotes[:end] << '' << wrap
|
|
293
|
+
end
|
|
294
|
+
@@endnotes[:para].each {|e| @pot[:body] << e << br}
|
|
295
|
+
@@endnotes[:para]=[]
|
|
296
|
+
@@endnotes
|
|
297
|
+
end
|
|
298
|
+
def pot_metadata_src
|
|
299
|
+
@po4a_identify_type='type: SiSU doc' #'type: Plain text'
|
|
300
|
+
meta_src=SiSU_Metadata::Summary.new(@md_src)
|
|
301
|
+
w=[]
|
|
302
|
+
w << [
|
|
303
|
+
"#. #{@po4a_identify_type} - metadata: title",
|
|
304
|
+
"#: en/#{@md.fns}:#{SiSU_Po4aUtils::PotNumber.new.num}",
|
|
305
|
+
'msgid ""',
|
|
306
|
+
meta_src.metadata_tags.title.main,
|
|
307
|
+
meta_src.metadata_tags.title.sub,
|
|
308
|
+
meta_src.metadata_tags.title.edition,
|
|
309
|
+
meta_src.metadata_tags.title.note,
|
|
310
|
+
meta_src.metadata_tags.title.short,
|
|
311
|
+
meta_src.metadata_tags.title.language,
|
|
312
|
+
meta_src.metadata_tags.title.language_char,
|
|
313
|
+
'msgstr ""',
|
|
314
|
+
]
|
|
315
|
+
w << [
|
|
316
|
+
"#. #{@po4a_identify_type} - metadata: creator",
|
|
317
|
+
"#: en/#{@md.fns}:#{SiSU_Po4aUtils::PotNumber.new.num}",
|
|
318
|
+
'msgid ""',
|
|
319
|
+
meta_src.metadata_tags.creator.head,
|
|
320
|
+
meta_src.metadata_tags.creator.author,
|
|
321
|
+
meta_src.metadata_tags.creator.contributor,
|
|
322
|
+
meta_src.metadata_tags.creator.illustrator,
|
|
323
|
+
meta_src.metadata_tags.creator.photographer,
|
|
324
|
+
meta_src.metadata_tags.creator.translator,
|
|
325
|
+
meta_src.metadata_tags.creator.audio,
|
|
326
|
+
meta_src.metadata_tags.creator.digitized_by,
|
|
327
|
+
meta_src.metadata_tags.creator.prepared_by,
|
|
328
|
+
'msgstr ""',
|
|
329
|
+
]
|
|
330
|
+
w << [
|
|
331
|
+
"#. #{@po4a_identify_type} - metadata: rights",
|
|
332
|
+
"#: en/#{@md.fns}:#{SiSU_Po4aUtils::PotNumber.new.num}",
|
|
333
|
+
'msgid ""',
|
|
334
|
+
meta_src.metadata_tags.rights.head,
|
|
335
|
+
meta_src.metadata_tags.rights.copyright.text,
|
|
336
|
+
meta_src.metadata_tags.rights.copyright.translation,
|
|
337
|
+
meta_src.metadata_tags.rights.copyright.illustrations,
|
|
338
|
+
meta_src.metadata_tags.rights.copyright.photographs,
|
|
339
|
+
meta_src.metadata_tags.rights.copyright.digitization,
|
|
340
|
+
meta_src.metadata_tags.rights.copyright.audio,
|
|
341
|
+
meta_src.metadata_tags.rights.license,
|
|
342
|
+
'msgstr ""',
|
|
343
|
+
]
|
|
344
|
+
w << [
|
|
345
|
+
"#. #{@po4a_identify_type} - metadata: classify",
|
|
346
|
+
"#: en/#{@md.fns}:#{SiSU_Po4aUtils::PotNumber.new.num}",
|
|
347
|
+
'msgid ""',
|
|
348
|
+
meta_src.metadata_tags.classify.head,
|
|
349
|
+
meta_src.metadata_tags.classify.subject,
|
|
350
|
+
meta_src.metadata_tags.classify.topic_register,
|
|
351
|
+
meta_src.metadata_tags.classify.loc,
|
|
352
|
+
meta_src.metadata_tags.classify.dewey,
|
|
353
|
+
#meta_src.metadata_tags.notes.relation,
|
|
354
|
+
#meta_src.metadata_tags.notes.type,
|
|
355
|
+
#meta_src.metadata_tags.identifier.oclc,
|
|
356
|
+
#meta_src.metadata_tags.identifier.isbn,
|
|
357
|
+
'msgstr ""',
|
|
358
|
+
]
|
|
359
|
+
w << [
|
|
360
|
+
"#. #{@po4a_identify_type} - metadata: date",
|
|
361
|
+
"#: en/#{@md.fns}:#{SiSU_Po4aUtils::PotNumber.new.num}",
|
|
362
|
+
'msgid ""',
|
|
363
|
+
meta_src.metadata_tags.date.head,
|
|
364
|
+
meta_src.metadata_tags.date.added_to_site,
|
|
365
|
+
meta_src.metadata_tags.date.available,
|
|
366
|
+
meta_src.metadata_tags.date.created,
|
|
367
|
+
meta_src.metadata_tags.date.issued,
|
|
368
|
+
meta_src.metadata_tags.date.modified,
|
|
369
|
+
meta_src.metadata_tags.date.published,
|
|
370
|
+
meta_src.metadata_tags.date.valid,
|
|
371
|
+
'msgstr ""',
|
|
372
|
+
]
|
|
373
|
+
w << [
|
|
374
|
+
"#. #{@po4a_identify_type} - processing, make instruction",
|
|
375
|
+
"#: en/#{@md.fns}:#{SiSU_Po4aUtils::PotNumber.new.num}",
|
|
376
|
+
'msgid ""',
|
|
377
|
+
meta_src.processing_tags.make.language,
|
|
378
|
+
meta_src.processing_tags.make.headings,
|
|
379
|
+
meta_src.processing_tags.make.num_top,
|
|
380
|
+
meta_src.processing_tags.make.breaks,
|
|
381
|
+
meta_src.processing_tags.make.emphasis,
|
|
382
|
+
meta_src.processing_tags.make.bold,
|
|
383
|
+
meta_src.processing_tags.make.italics,
|
|
384
|
+
meta_src.processing_tags.make.texpdf_font,
|
|
385
|
+
'msgstr ""',
|
|
386
|
+
]
|
|
387
|
+
w.each do |y|
|
|
388
|
+
z=''
|
|
389
|
+
y.each do |x|
|
|
390
|
+
if x
|
|
391
|
+
z += x + "\n" if x =~/^#|^msg(?:id|str)/
|
|
392
|
+
z += %{"#{x}"\n} if x =~/^@\S+?:(?: |$)/
|
|
393
|
+
z += %{"#{x}"\n} if x =~/^\s+:\S+?: /
|
|
394
|
+
end
|
|
395
|
+
end
|
|
396
|
+
@pot[:metadata] << z << br
|
|
397
|
+
#puts z unless z.empty?
|
|
398
|
+
end
|
|
399
|
+
end
|
|
400
|
+
def pot_metadata_src_trn
|
|
401
|
+
@po4a_identify_type='type: SiSU doc'
|
|
402
|
+
#@po4a_identify_type='type: Plain text'
|
|
403
|
+
meta_src=SiSU_Metadata::Summary.new(@md_src)
|
|
404
|
+
meta_trn=SiSU_Metadata::Summary.new(@md_trn)
|
|
405
|
+
w=[]
|
|
406
|
+
w << [
|
|
407
|
+
"#. #{@po4a_identify_type} - metadata: title",
|
|
408
|
+
"#: en/#{@md.fns}:#{SiSU_Po4aUtils::PotNumber.new.num}",
|
|
409
|
+
'msgid ""',
|
|
410
|
+
meta_src.metadata_tags.title.main,
|
|
411
|
+
meta_src.metadata_tags.title.sub,
|
|
412
|
+
meta_src.metadata_tags.title.edition,
|
|
413
|
+
meta_src.metadata_tags.title.note,
|
|
414
|
+
meta_src.metadata_tags.title.short,
|
|
415
|
+
meta_src.metadata_tags.title.language,
|
|
416
|
+
meta_src.metadata_tags.title.language_char,
|
|
417
|
+
'msgstr ""',
|
|
418
|
+
meta_trn.metadata_tags.title.main,
|
|
419
|
+
meta_trn.metadata_tags.title.sub,
|
|
420
|
+
meta_trn.metadata_tags.title.edition,
|
|
421
|
+
meta_trn.metadata_tags.title.note,
|
|
422
|
+
meta_trn.metadata_tags.title.short,
|
|
423
|
+
meta_trn.metadata_tags.title.language,
|
|
424
|
+
meta_trn.metadata_tags.title.language_char,
|
|
425
|
+
]
|
|
426
|
+
w << [
|
|
427
|
+
"#. #{@po4a_identify_type} - metadata: creator",
|
|
428
|
+
"#: en/#{@md.fns}:#{SiSU_Po4aUtils::PotNumber.new.num}",
|
|
429
|
+
'msgid ""',
|
|
430
|
+
meta_src.metadata_tags.creator.head,
|
|
431
|
+
meta_src.metadata_tags.creator.author,
|
|
432
|
+
meta_src.metadata_tags.creator.contributor,
|
|
433
|
+
meta_src.metadata_tags.creator.illustrator,
|
|
434
|
+
meta_src.metadata_tags.creator.photographer,
|
|
435
|
+
meta_src.metadata_tags.creator.translator,
|
|
436
|
+
meta_src.metadata_tags.creator.audio,
|
|
437
|
+
meta_src.metadata_tags.creator.digitized_by,
|
|
438
|
+
meta_src.metadata_tags.creator.prepared_by,
|
|
439
|
+
'msgstr ""',
|
|
440
|
+
meta_trn.metadata_tags.creator.head,
|
|
441
|
+
meta_trn.metadata_tags.creator.author,
|
|
442
|
+
meta_trn.metadata_tags.creator.contributor,
|
|
443
|
+
meta_trn.metadata_tags.creator.illustrator,
|
|
444
|
+
meta_trn.metadata_tags.creator.photographer,
|
|
445
|
+
meta_trn.metadata_tags.creator.translator,
|
|
446
|
+
meta_trn.metadata_tags.creator.audio,
|
|
447
|
+
meta_trn.metadata_tags.creator.digitized_by,
|
|
448
|
+
meta_trn.metadata_tags.creator.prepared_by,
|
|
449
|
+
]
|
|
450
|
+
w << [
|
|
451
|
+
"#. #{@po4a_identify_type} - metadata: rights",
|
|
452
|
+
"#: en/#{@md.fns}:#{SiSU_Po4aUtils::PotNumber.new.num}",
|
|
453
|
+
'msgid ""',
|
|
454
|
+
meta_src.metadata_tags.rights.head,
|
|
455
|
+
meta_src.metadata_tags.rights.copyright.text,
|
|
456
|
+
meta_src.metadata_tags.rights.copyright.translation,
|
|
457
|
+
meta_src.metadata_tags.rights.copyright.illustrations,
|
|
458
|
+
meta_src.metadata_tags.rights.copyright.photographs,
|
|
459
|
+
meta_src.metadata_tags.rights.copyright.digitization,
|
|
460
|
+
meta_src.metadata_tags.rights.copyright.audio,
|
|
461
|
+
meta_src.metadata_tags.rights.license,
|
|
462
|
+
'msgstr ""',
|
|
463
|
+
meta_trn.metadata_tags.rights.head,
|
|
464
|
+
meta_trn.metadata_tags.rights.copyright.text,
|
|
465
|
+
meta_trn.metadata_tags.rights.copyright.translation,
|
|
466
|
+
meta_trn.metadata_tags.rights.copyright.illustrations,
|
|
467
|
+
meta_trn.metadata_tags.rights.copyright.photographs,
|
|
468
|
+
meta_trn.metadata_tags.rights.copyright.digitization,
|
|
469
|
+
meta_trn.metadata_tags.rights.copyright.audio,
|
|
470
|
+
meta_trn.metadata_tags.rights.license,
|
|
471
|
+
]
|
|
472
|
+
w << [
|
|
473
|
+
"#. #{@po4a_identify_type} - metadata: classify",
|
|
474
|
+
"#: en/#{@md.fns}:#{SiSU_Po4aUtils::PotNumber.new.num}",
|
|
475
|
+
'msgid ""',
|
|
476
|
+
meta_src.metadata_tags.classify.head,
|
|
477
|
+
meta_src.metadata_tags.classify.subject,
|
|
478
|
+
meta_src.metadata_tags.classify.topic_register,
|
|
479
|
+
meta_src.metadata_tags.classify.loc,
|
|
480
|
+
meta_src.metadata_tags.classify.dewey,
|
|
481
|
+
#meta_src.metadata_tags.notes.relation,
|
|
482
|
+
#meta_src.metadata_tags.notes.type,
|
|
483
|
+
#meta_src.metadata_tags.identifier.oclc,
|
|
484
|
+
#meta_src.metadata_tags.identifier.isbn,
|
|
485
|
+
'msgstr ""',
|
|
486
|
+
meta_trn.metadata_tags.classify.head,
|
|
487
|
+
meta_trn.metadata_tags.classify.subject,
|
|
488
|
+
meta_trn.metadata_tags.classify.topic_register,
|
|
489
|
+
meta_trn.metadata_tags.classify.loc,
|
|
490
|
+
meta_trn.metadata_tags.classify.dewey,
|
|
491
|
+
#meta_trn.metadata_tags.notes.relation,
|
|
492
|
+
#meta_trn.metadata_tags.notes.type,
|
|
493
|
+
#meta_trn.metadata_tags.identifier.oclc,
|
|
494
|
+
#meta_trn.metadata_tags.identifier.isbn,
|
|
495
|
+
]
|
|
496
|
+
w << [
|
|
497
|
+
"#. #{@po4a_identify_type} - metadata: date",
|
|
498
|
+
"#: en/#{@md.fns}:#{SiSU_Po4aUtils::PotNumber.new.num}",
|
|
499
|
+
'msgid ""',
|
|
500
|
+
meta_src.metadata_tags.date.head,
|
|
501
|
+
meta_src.metadata_tags.date.added_to_site,
|
|
502
|
+
meta_src.metadata_tags.date.available,
|
|
503
|
+
meta_src.metadata_tags.date.created,
|
|
504
|
+
meta_src.metadata_tags.date.issued,
|
|
505
|
+
meta_src.metadata_tags.date.modified,
|
|
506
|
+
meta_src.metadata_tags.date.published,
|
|
507
|
+
meta_src.metadata_tags.date.valid,
|
|
508
|
+
'msgstr ""',
|
|
509
|
+
meta_trn.metadata_tags.date.head,
|
|
510
|
+
meta_trn.metadata_tags.date.added_to_site,
|
|
511
|
+
meta_trn.metadata_tags.date.available,
|
|
512
|
+
meta_trn.metadata_tags.date.created,
|
|
513
|
+
meta_trn.metadata_tags.date.issued,
|
|
514
|
+
meta_trn.metadata_tags.date.modified,
|
|
515
|
+
meta_trn.metadata_tags.date.published,
|
|
516
|
+
meta_trn.metadata_tags.date.valid,
|
|
517
|
+
]
|
|
518
|
+
w << [
|
|
519
|
+
"#. #{@po4a_identify_type} - processing, make instruction",
|
|
520
|
+
"#: en/#{@md.fns}:#{SiSU_Po4aUtils::PotNumber.new.num}",
|
|
521
|
+
'msgid ""',
|
|
522
|
+
meta_src.processing_tags.make.language,
|
|
523
|
+
meta_src.processing_tags.make.headings,
|
|
524
|
+
meta_src.processing_tags.make.num_top,
|
|
525
|
+
meta_src.processing_tags.make.breaks,
|
|
526
|
+
meta_src.processing_tags.make.emphasis,
|
|
527
|
+
meta_src.processing_tags.make.bold,
|
|
528
|
+
meta_src.processing_tags.make.italics,
|
|
529
|
+
meta_src.processing_tags.make.texpdf_font,
|
|
530
|
+
'msgstr ""',
|
|
531
|
+
meta_trn.processing_tags.make.language,
|
|
532
|
+
meta_trn.processing_tags.make.headings,
|
|
533
|
+
meta_trn.processing_tags.make.num_top,
|
|
534
|
+
meta_trn.processing_tags.make.breaks,
|
|
535
|
+
meta_trn.processing_tags.make.emphasis,
|
|
536
|
+
meta_trn.processing_tags.make.bold,
|
|
537
|
+
meta_trn.processing_tags.make.italics,
|
|
538
|
+
meta_trn.processing_tags.make.texpdf_font,
|
|
539
|
+
]
|
|
540
|
+
w.each do |y|
|
|
541
|
+
z=''
|
|
542
|
+
y.each do |x|
|
|
543
|
+
if x
|
|
544
|
+
z += x + "\n" if x =~/^#|^msg(?:id|str)/
|
|
545
|
+
z += %{"#{x}"\n} if x =~/^@\S+?:(?: |$)/
|
|
546
|
+
z += %{"#{x}"\n} if x =~/^\s+:\S+?: /
|
|
547
|
+
end
|
|
548
|
+
end
|
|
549
|
+
@pot[:metadata] << z << br
|
|
550
|
+
#puts z unless z.empty?
|
|
551
|
+
end
|
|
552
|
+
end
|
|
553
|
+
def auto_translate?(set_to=nil)
|
|
554
|
+
@@auto_translation_=
|
|
555
|
+
if @md.opt.act[:po4a_lang_trans][:set]==:on
|
|
556
|
+
set_to \
|
|
557
|
+
? set_to
|
|
558
|
+
: @@auto_translation_
|
|
559
|
+
else :skip
|
|
560
|
+
end
|
|
561
|
+
end
|
|
562
|
+
def auto_translation(src_txt,markup=:src) # check for an appropriate request flag
|
|
563
|
+
auto_translate?(:skip)
|
|
564
|
+
begin
|
|
565
|
+
src_txt_clean=clean_text(src_txt,markup)
|
|
566
|
+
src_txt_clean=src_txt_clean.
|
|
567
|
+
gsub(/\n/,' ').
|
|
568
|
+
gsub(/"/,'\"').
|
|
569
|
+
gsub(/([()])/,'\\\\\1')
|
|
570
|
+
trans=''
|
|
571
|
+
unless auto_translate? == :skip
|
|
572
|
+
require 'timeout'
|
|
573
|
+
Timeout::timeout(60) {
|
|
574
|
+
trans=`trans -b -no-ansi en:#{@md.opt.f_pth[:lng_is]} #{src_txt_clean}`.strip
|
|
575
|
+
unless trans.empty?
|
|
576
|
+
trans + ' {[G.Tr]}http://translate.google.com'
|
|
577
|
+
end
|
|
578
|
+
}
|
|
579
|
+
end
|
|
580
|
+
trans
|
|
581
|
+
rescue
|
|
582
|
+
auto_translate?(:skip)
|
|
583
|
+
p 'timeout issues with translation, skip remaining'
|
|
584
|
+
end
|
|
585
|
+
end
|
|
586
|
+
def pot_structure
|
|
587
|
+
def heading(dob_src='',notes_s='',dob_trn='',notes_t='') #% used to extract the structure of a document
|
|
588
|
+
lv=n=n3=nil
|
|
589
|
+
lv=dob_src.ln
|
|
590
|
+
n=lv - 1
|
|
591
|
+
n3=lv + 2
|
|
592
|
+
util=nil
|
|
593
|
+
fn=(dob_src.name=~/[a-z\d]/i) ? dob_src.name : ''
|
|
594
|
+
mark="#{dob_src.lv}~#{fn} "
|
|
595
|
+
d="#{dob_src.is.to_s} (level #{dob_src.lv})"
|
|
596
|
+
instruct=s_mark=''
|
|
597
|
+
if @md.opt.act[:maintenance][:set]==:on
|
|
598
|
+
instruct=%{\n# markup for headings is marker at the start of the line/object, } \
|
|
599
|
+
+ %{indicating the heading level, and if provided an associated name tag, } \
|
|
600
|
+
+ %{this heading is "#{mark}"}
|
|
601
|
+
s_mark="\n# " + %{"\\n\\n#{mark}...\\n\\n"}
|
|
602
|
+
end
|
|
603
|
+
desc="#{d}#{s_mark}#{instruct}"
|
|
604
|
+
orig="#{s_mark}#{dob_src.obj}"
|
|
605
|
+
trans=((dob_trn=='') \
|
|
606
|
+
|| (dob_src.obj == dob_trn.obj)) \
|
|
607
|
+
? ''
|
|
608
|
+
: "#{s_mark}#{dob_trn.obj}"
|
|
609
|
+
if @md.opt.f_pth[:lng_is] !=@md.opt.lng_base \
|
|
610
|
+
and trans.empty? \
|
|
611
|
+
and auto_translate?
|
|
612
|
+
trans=auto_translation(dob_src.obj,:src)
|
|
613
|
+
end
|
|
614
|
+
util=pot_structure_wrap(desc,orig,trans)
|
|
615
|
+
wrapped=util.line_wrap
|
|
616
|
+
@pot[:body] << wrapped << br # main text, contents, body KEEP
|
|
617
|
+
if @@endnotes[:para] \
|
|
618
|
+
and notes_s.length > 0 \
|
|
619
|
+
and not @@endnotes_
|
|
620
|
+
@pot[:body] << br
|
|
621
|
+
wrap_endnotes(notes_s,notes_t)
|
|
622
|
+
elsif @@endnotes[:para] \
|
|
623
|
+
and @@endnotes_
|
|
624
|
+
@pot[:body] << br*2
|
|
625
|
+
end
|
|
626
|
+
end
|
|
627
|
+
def para(dob_src='',notes_s='',dob_trn='',notes_t='') #% used to extract the structure of a document
|
|
628
|
+
util=nil
|
|
629
|
+
wrapped=if dob_src.indent =~/[1-9]/ \
|
|
630
|
+
and dob_src.indent == dob_src.hang
|
|
631
|
+
s_mark=desc=orig=trans=''
|
|
632
|
+
if dob_src.bullet_
|
|
633
|
+
mark="_#{dob_src.indent}* "
|
|
634
|
+
d="#{dob_src.is.to_s}: indent #{dob_src.indent}, bullet"
|
|
635
|
+
instruct=s_mark=''
|
|
636
|
+
if @md.opt.act[:maintenance][:set]==:on
|
|
637
|
+
instruct=%{\n# markup for indented bullet text is at the start of the line/object, } \
|
|
638
|
+
+ %{an underscore followed by the indent level and an asterisk "#{mark}"}
|
|
639
|
+
s_mark="\n# " + %{"\\n\\n#{mark}...\\n\\n"}
|
|
640
|
+
end
|
|
641
|
+
desc="#{d}#{s_mark}#{instruct}"
|
|
642
|
+
else
|
|
643
|
+
mark="_#{dob_src.indent} "
|
|
644
|
+
d="#{dob_src.is.to_s}: indent #{dob_src.indent}"
|
|
645
|
+
instruct=s_mark=''
|
|
646
|
+
if @md.opt.act[:maintenance][:set]==:on
|
|
647
|
+
instruct=%{\n# markup for indented text is at the start of the line/object, } \
|
|
648
|
+
+ %{an underscore followed by the indent level "#{mark}"}
|
|
649
|
+
s_mark="\n# " + %{"\\n\\n#{mark}...\\n\\n"}
|
|
650
|
+
end
|
|
651
|
+
desc="#{d}#{s_mark}#{instruct}"
|
|
652
|
+
end
|
|
653
|
+
orig="#{s_mark}#{dob_src.obj}"
|
|
654
|
+
trans=((dob_trn=='') \
|
|
655
|
+
|| (dob_src.obj == dob_trn.obj)) \
|
|
656
|
+
? ''
|
|
657
|
+
: "#{s_mark}#{dob_trn.obj}"
|
|
658
|
+
if @md.opt.f_pth[:lng_is] !=@md.opt.lng_base \
|
|
659
|
+
and trans.empty? \
|
|
660
|
+
and auto_translate?
|
|
661
|
+
trans=auto_translation(dob_src.obj,:src)
|
|
662
|
+
end
|
|
663
|
+
util=pot_structure_wrap(desc,orig,trans)
|
|
664
|
+
elsif dob_src.hang =~/[0-9]/ \
|
|
665
|
+
and dob_src.indent != dob_src.hang
|
|
666
|
+
s_mark=desc=orig=trans=''
|
|
667
|
+
mark="_#{dob_src.hang}_#{dob_src.indent} "
|
|
668
|
+
d="#{dob_src.is.to_s}: hang #{dob_src.hang} indent #{dob_src.indent}"
|
|
669
|
+
instruct=s_mark=''
|
|
670
|
+
if @md.opt.act[:maintenance][:set]==:on
|
|
671
|
+
instruct=%{\n# markup for indented text with a first line indented } \
|
|
672
|
+
+ %{to a different level from the rest of the paragraph, } \
|
|
673
|
+
+ %{is at the start of the line/object, } \
|
|
674
|
+
+ %{an underscore and the first indent level } \
|
|
675
|
+
+ %{a second underscore and the indent level for the rest of the paragraph, "#{mark1}"}
|
|
676
|
+
s_mark="\n# " + %{"\\n\\n#{mark}...\\n\\n"}
|
|
677
|
+
end
|
|
678
|
+
desc="#{d}#{s_mark}#{instruct}"
|
|
679
|
+
orig="#{s_mark}#{dob_src.obj}"
|
|
680
|
+
trans=((dob_trn=='') \
|
|
681
|
+
|| (dob_src.obj == dob_trn.obj)) \
|
|
682
|
+
? ''
|
|
683
|
+
: "#{s_mark}#{dob_trn.obj}"
|
|
684
|
+
if @md.opt.f_pth[:lng_is] !=@md.opt.lng_base \
|
|
685
|
+
and trans.empty? \
|
|
686
|
+
and auto_translate?
|
|
687
|
+
trans=auto_translation(dob_src.obj,:src)
|
|
688
|
+
end
|
|
689
|
+
util=pot_structure_wrap(desc,orig,trans)
|
|
690
|
+
else
|
|
691
|
+
s_mark=desc=orig=trans=''
|
|
692
|
+
if dob_src.bullet_
|
|
693
|
+
mark='_* '
|
|
694
|
+
d="#{dob_src.is.to_s}: bullet"
|
|
695
|
+
instruct=s_mark=''
|
|
696
|
+
if @md.opt.act[:maintenance][:set]==:on
|
|
697
|
+
instruct=%{\n# markup for indented text is at the start of the line/object, } \
|
|
698
|
+
+ %{an underscore followed by an asterisk "#{mark}"}
|
|
699
|
+
s_mark="\n# " + %{"\\n\\n#{mark}...\\n\\n"}
|
|
700
|
+
end
|
|
701
|
+
desc="#{d}#{s_mark}#{instruct}"
|
|
702
|
+
orig="#{s_mark}#{dob_src.obj}"
|
|
703
|
+
trans=((dob_trn=='') \
|
|
704
|
+
|| (dob_src.obj == dob_trn.obj)) \
|
|
705
|
+
? ''
|
|
706
|
+
: "#{s_mark}#{dob_trn.obj}"
|
|
707
|
+
if @md.opt.f_pth[:lng_is] !=@md.opt.lng_base \
|
|
708
|
+
and trans.empty? \
|
|
709
|
+
and auto_translate?
|
|
710
|
+
trans=auto_translation(dob_src.obj,:src)
|
|
711
|
+
end
|
|
712
|
+
else
|
|
713
|
+
mark=''
|
|
714
|
+
d=dob_src.is.to_s
|
|
715
|
+
instruct=%{\n# regular paragraph, no special markup}
|
|
716
|
+
if @md.opt.act[:maintenance][:set]==:on
|
|
717
|
+
instruct="\n# "
|
|
718
|
+
s_mark="\n# " + %{"\\n\\n#{mark}...\\n\\n"}
|
|
719
|
+
end
|
|
720
|
+
desc="#{d}#{s_mark}#{instruct}"
|
|
721
|
+
orig=dob_src.obj
|
|
722
|
+
trans=((dob_trn=='') \
|
|
723
|
+
|| (dob_src.obj == dob_trn.obj)) \
|
|
724
|
+
? ''
|
|
725
|
+
: "#{s_mark}#{dob_trn.obj}"
|
|
726
|
+
if @md.opt.f_pth[:lng_is] !=@md.opt.lng_base \
|
|
727
|
+
and trans.empty? \
|
|
728
|
+
and auto_translate?
|
|
729
|
+
trans=auto_translation(dob_src.obj,:src)
|
|
730
|
+
end
|
|
731
|
+
end
|
|
732
|
+
util=pot_structure_wrap(desc,orig,trans)
|
|
733
|
+
end
|
|
734
|
+
wrapped=util.line_wrap
|
|
735
|
+
@pot[:body] << wrapped << br # main text, contents, body KEEP
|
|
736
|
+
if @@endnotes[:para] \
|
|
737
|
+
and notes_s.length > 0 \
|
|
738
|
+
and not @@endnotes_
|
|
739
|
+
@pot[:body] << br
|
|
740
|
+
wrap_endnotes(notes_s,notes_t)
|
|
741
|
+
elsif @@endnotes[:para] \
|
|
742
|
+
and @@endnotes_
|
|
743
|
+
@pot[:body] << br*2
|
|
744
|
+
end
|
|
745
|
+
end
|
|
746
|
+
def block(dob_src='',notes_s='',dob_trn='',notes_t='') #% used to extract the structure of a document
|
|
747
|
+
mark="block{\\n\\n...\\n\\n}block"
|
|
748
|
+
d=dob_src.is.to_s
|
|
749
|
+
instruct=s_mark=''
|
|
750
|
+
if @md.opt.act[:maintenance][:set]==:on
|
|
751
|
+
instruct=%{\n# block text is a text block with an opening and closing marker, } \
|
|
752
|
+
+ %{the content of which may be wrapped}
|
|
753
|
+
s_mark="\n# " + %{"\\n\\n#{mark}\\n\\n"}
|
|
754
|
+
end
|
|
755
|
+
desc="#{d}#{s_mark}#{instruct}"
|
|
756
|
+
orig=dob_src.obj
|
|
757
|
+
trans=((dob_trn=='') \
|
|
758
|
+
|| (dob_src.obj == dob_trn.obj)) \
|
|
759
|
+
? ''
|
|
760
|
+
: "#{s_mark}#{dob_trn.obj}"
|
|
761
|
+
if @md.opt.f_pth[:lng_is] !=@md.opt.lng_base \
|
|
762
|
+
and trans.empty? \
|
|
763
|
+
and auto_translate?
|
|
764
|
+
trans=auto_translation(dob_src.obj,:src)
|
|
765
|
+
end
|
|
766
|
+
util=pot_structure_wrap(desc,orig,trans)
|
|
767
|
+
unwrapped=util.no_line_wrap_block
|
|
768
|
+
@pot[:body] << unwrapped << br
|
|
769
|
+
end
|
|
770
|
+
def group(dob_src='',notes_s='',dob_trn='',notes_t='') #% used to extract the structure of a document
|
|
771
|
+
mark="group{\\n\\n...\\n\\n}group"
|
|
772
|
+
d=dob_src.is.to_s
|
|
773
|
+
instruct=s_mark=''
|
|
774
|
+
if @md.opt.act[:maintenance][:set]==:on
|
|
775
|
+
instruct=%{\n# group text is a text block with an opening and closing marker, } \
|
|
776
|
+
+ %{the content of which may be wrapped}
|
|
777
|
+
s_mark="\n# " + %{"\\n\\n#{mark}\\n\\n"}
|
|
778
|
+
end
|
|
779
|
+
desc="#{d}#{s_mark}#{instruct}"
|
|
780
|
+
orig=dob_src.obj
|
|
781
|
+
trans=((dob_trn=='') \
|
|
782
|
+
|| (dob_src.obj == dob_trn.obj)) \
|
|
783
|
+
? ''
|
|
784
|
+
: "#{s_mark}#{dob_trn.obj}"
|
|
785
|
+
if @md.opt.f_pth[:lng_is] !=@md.opt.lng_base \
|
|
786
|
+
and trans.empty? \
|
|
787
|
+
and auto_translate?
|
|
788
|
+
trans=auto_translation(dob_src.obj,:src)
|
|
789
|
+
end
|
|
790
|
+
util=pot_structure_wrap(desc,orig,trans)
|
|
791
|
+
unwrapped=util.no_line_wrap_block
|
|
792
|
+
@pot[:body] << unwrapped << br
|
|
793
|
+
end
|
|
794
|
+
def verse(dob_src='',notes_s='',dob_trn='',notes_t='') #% used to extract the structure of a document
|
|
795
|
+
mark="poem{\n\nverse\n\nverse\n\n...\n\n}poem"
|
|
796
|
+
d=dob_src.is.to_s
|
|
797
|
+
instruct=s_mark=''
|
|
798
|
+
if @md.opt.act[:maintenance][:set]==:on
|
|
799
|
+
instruct=%{\n# verse are part of the text block described as a poem, } \
|
|
800
|
+
+ %{the first verse is preceeded by an opening marker, } \
|
|
801
|
+
+ %{and the last verse by a closing marker, } \
|
|
802
|
+
+ %{the content of which should remain unwrapped}
|
|
803
|
+
s_mark="\n# " + %{"\\n\\n#{mark}\\n\\n"}
|
|
804
|
+
end
|
|
805
|
+
desc="#{d}#{s_mark}#{instruct}"
|
|
806
|
+
orig=dob_src.obj
|
|
807
|
+
trans=(dob_trn=='') ? '' : dob_trn.obj
|
|
808
|
+
util=pot_structure_wrap(desc,orig,trans)
|
|
809
|
+
unwrapped=util.no_line_wrap_block
|
|
810
|
+
@pot[:body] << unwrapped << br
|
|
811
|
+
end
|
|
812
|
+
def code(dob_src='',notes_s='',dob_trn='',notes_t='') #% used to extract the structure of a document
|
|
813
|
+
mark="code{\\n\\n...\\n\\n}code"
|
|
814
|
+
d=dob_src.is.to_s
|
|
815
|
+
instruct=s_mark=''
|
|
816
|
+
if @md.opt.act[:maintenance][:set]==:on
|
|
817
|
+
instruct=%{\n# codeblocks are a text block with an opening and closing marker, } \
|
|
818
|
+
+ %{the content of which should remain unwrapped}
|
|
819
|
+
s_mark="\n# " + %{"\\n\\n#{mark}\\n\\n"}
|
|
820
|
+
end
|
|
821
|
+
desc="#{d}#{s_mark}#{instruct}"
|
|
822
|
+
orig=dob_src.obj
|
|
823
|
+
trans=(dob_trn=='') ? '' : dob_trn.obj
|
|
824
|
+
util=pot_structure_wrap(desc,orig,trans)
|
|
825
|
+
unwrapped=util.no_line_wrap_block
|
|
826
|
+
@pot[:body] << unwrapped << br
|
|
827
|
+
end
|
|
828
|
+
def table(dob_src='',notes_s='',dob_trn='',notes_t='') #% used to extract the structure of a document
|
|
829
|
+
mark="table{\\n\\n...\\n\\n}table"
|
|
830
|
+
d=dob_src.is.to_s
|
|
831
|
+
instruct=s_mark=''
|
|
832
|
+
if @md.opt.act[:maintenance][:set]==:on
|
|
833
|
+
instruct=%{\n# tables are a text block with an opening and closing marker, } \
|
|
834
|
+
+ %{the content of which should remain unwrapped}
|
|
835
|
+
s_mark="\n# " + %{"\\n\\n#{mark}\\n\\n"}
|
|
836
|
+
end
|
|
837
|
+
desc="#{d}#{s_mark}#{instruct}"
|
|
838
|
+
orig=dob_src.obj
|
|
839
|
+
orig=orig.gsub(/#{Mx[:tc_c]}/,"\n")
|
|
840
|
+
trans=(dob_trn=='') ? '' : dob_trn.obj
|
|
841
|
+
trans=trans.gsub(/#{Mx[:tc_c]}/,"\n")
|
|
842
|
+
util=pot_structure_wrap(desc,orig,trans)
|
|
843
|
+
unwrapped=util.no_line_wrap_block
|
|
844
|
+
@pot[:body] << unwrapped << br
|
|
845
|
+
end
|
|
846
|
+
def idx_markup(idx)
|
|
847
|
+
struct=['={']
|
|
848
|
+
idx.sort.each do |x|
|
|
849
|
+
x.each_with_index do |y,i0|
|
|
850
|
+
case y
|
|
851
|
+
when String
|
|
852
|
+
struct << ';' unless struct[-1] =~/=\{/
|
|
853
|
+
struct << y
|
|
854
|
+
if x[i0+1].class == Hash \
|
|
855
|
+
and x[i0+1][:sub].length > 0
|
|
856
|
+
struct << ':'
|
|
857
|
+
end
|
|
858
|
+
when Hash
|
|
859
|
+
if y[:plus].to_i > 0
|
|
860
|
+
struct << '+' + y[:plus].to_s
|
|
861
|
+
end
|
|
862
|
+
if y[:sub].length > 0
|
|
863
|
+
y[:sub].each_with_index do |z,i1|
|
|
864
|
+
z.each_with_index do |a,i2|
|
|
865
|
+
#p a
|
|
866
|
+
if z.length > 0
|
|
867
|
+
struct << a[0]
|
|
868
|
+
if a[1][:plus].to_i > 0
|
|
869
|
+
struct << '+' + a[1][:plus].to_s
|
|
870
|
+
end
|
|
871
|
+
if (i1 + 1) < y[:sub].length
|
|
872
|
+
struct << '|'
|
|
873
|
+
end
|
|
874
|
+
end
|
|
875
|
+
end
|
|
876
|
+
end
|
|
877
|
+
end
|
|
878
|
+
end
|
|
879
|
+
end
|
|
880
|
+
end
|
|
881
|
+
struct << '}'
|
|
882
|
+
#puts struct.join
|
|
883
|
+
struct.join
|
|
884
|
+
end
|
|
885
|
+
def idx(dob_src='',dob_trn='') #% used for book index but broken as original markup lost, already abstracted, fix
|
|
886
|
+
mark="={ ... }"
|
|
887
|
+
instruct=s_mark=''
|
|
888
|
+
if @md.opt.act[:maintenance][:set]==:on
|
|
889
|
+
instruct=%{\n# the book index should be attached unwrapped to the preceding text block } \
|
|
890
|
+
+ %{(there should be a new line, but no empty line)}
|
|
891
|
+
s_mark="\n# " + %{"\\n#{mark}\\n\\n"}
|
|
892
|
+
end
|
|
893
|
+
d='book-idx'
|
|
894
|
+
desc="#{d}#{s_mark}#{instruct}"
|
|
895
|
+
orig=pot_structure.idx_markup(dob_src.idx) #'={' + dob_src.idx + '}'
|
|
896
|
+
trans=if defined? dob_trn.idx \
|
|
897
|
+
and not dob_trn.idx.nil? \
|
|
898
|
+
and not dob_trn.idx.empty?
|
|
899
|
+
pot_structure.idx_markup(dob_trn.idx) #'={' + dob_trn.idx + '}'
|
|
900
|
+
else ''
|
|
901
|
+
end
|
|
902
|
+
util=pot_structure_wrap(desc,orig,trans)
|
|
903
|
+
unwrapped=util.no_line_wrap_block
|
|
904
|
+
@pot[:body] << unwrapped << br
|
|
905
|
+
end
|
|
906
|
+
self
|
|
907
|
+
end
|
|
908
|
+
def pot_markup(data_src,data_trn)
|
|
909
|
+
#@endnotes,@copen,@pot_contents_close=Array.new(3){[]}
|
|
910
|
+
a_l=if data_trn
|
|
911
|
+
a_l=(data_src.length >= data_trn.length) \
|
|
912
|
+
? data_src.length
|
|
913
|
+
: data_trn.length
|
|
914
|
+
else
|
|
915
|
+
data_src.length
|
|
916
|
+
end
|
|
917
|
+
s,t=0,0
|
|
918
|
+
if @md.fns =~ /\.(?:(?:-|ssm\.)?sst|ssm)$/
|
|
919
|
+
(data_trn.nil?) \
|
|
920
|
+
? pot_metadata_src
|
|
921
|
+
: pot_metadata_src_trn
|
|
922
|
+
end
|
|
923
|
+
0.upto(a_l-1) do |i|
|
|
924
|
+
if data_trn
|
|
925
|
+
unless data_src[s] \
|
|
926
|
+
and data_trn[t]
|
|
927
|
+
break
|
|
928
|
+
end
|
|
929
|
+
if data_src[s].of == :comment \
|
|
930
|
+
and data_trn[t].of == :comment \
|
|
931
|
+
and (data_src[s].is == data_trn[t].is)
|
|
932
|
+
s+=1;t+=1
|
|
933
|
+
next
|
|
934
|
+
end
|
|
935
|
+
if ((data_src[s].is == :comment) \
|
|
936
|
+
|| (data_trn[t].is == :comment)) \
|
|
937
|
+
and (data_src[s].is != data_trn[t].is)
|
|
938
|
+
if data_src[s].is == :comment
|
|
939
|
+
if @md.opt.act[:maintenance][:set]==:on
|
|
940
|
+
puts "src (comment):\n\t" \
|
|
941
|
+
+ data_src[s].obj
|
|
942
|
+
end
|
|
943
|
+
s+=1
|
|
944
|
+
#next if data_src[s].is == :comment
|
|
945
|
+
elsif data_trn[t].is == :comment
|
|
946
|
+
if @md.opt.act[:maintenance][:set]==:on
|
|
947
|
+
puts "trans (comment):\n\t" \
|
|
948
|
+
+ data_trn[t].obj
|
|
949
|
+
end
|
|
950
|
+
t+=1
|
|
951
|
+
#next if data_trn[t].is == :comment
|
|
952
|
+
end
|
|
953
|
+
end
|
|
954
|
+
if ((defined? data_src[s].ocn) \
|
|
955
|
+
&& (data_src[s].ocn.is_a?(Fixnum))) \
|
|
956
|
+
and ((defined? data_trn[t].ocn) \
|
|
957
|
+
&& (data_trn[t].ocn.is_a?(Fixnum))) \
|
|
958
|
+
and (data_src[s].ocn == data_trn[t].ocn)
|
|
959
|
+
@m_s,@m_t=s,t
|
|
960
|
+
elsif ((defined? data_src[s].ocn) \
|
|
961
|
+
&& (data_src[s].ocn.is_a?(Fixnum))) \
|
|
962
|
+
and ((defined? data_trn[t].ocn) \
|
|
963
|
+
&& (data_trn[t].ocn.is_a?(Fixnum))) \
|
|
964
|
+
and (data_src[s].ocn != data_trn[t].ocn)
|
|
965
|
+
p '--- OCN ---'
|
|
966
|
+
p 'mis-match'
|
|
967
|
+
p data_src[s].ocn
|
|
968
|
+
p data_src[s].obj
|
|
969
|
+
p data_trn[t].ocn
|
|
970
|
+
p data_trn[t].obj
|
|
971
|
+
p '---'
|
|
972
|
+
p 'previous match'
|
|
973
|
+
p data_src[@m_s].ocn
|
|
974
|
+
p data_src[@m_s].obj
|
|
975
|
+
p data_trn[@m_t].ocn
|
|
976
|
+
p data_trn[@m_t].obj
|
|
977
|
+
exit
|
|
978
|
+
elsif (((defined? data_src[s].ocn) \
|
|
979
|
+
&& (defined? data_trn[t].ocn)) \
|
|
980
|
+
and data_src[s].ocn.class != data_trn[t].ocn.class)
|
|
981
|
+
p '--- OCN class ---'
|
|
982
|
+
p 'mis-match'
|
|
983
|
+
p data_src[s].ocn if defined? data_src[s].ocn
|
|
984
|
+
p data_src[s].obj
|
|
985
|
+
p data_trn[t].ocn if defined? data_trn[t].ocn
|
|
986
|
+
p data_trn[t].obj
|
|
987
|
+
#p '---'
|
|
988
|
+
#p 'previous match'
|
|
989
|
+
#p data_src[@m_s].ocn
|
|
990
|
+
#p data_src[@m_s].obj
|
|
991
|
+
#p data_trn[@m_t].ocn
|
|
992
|
+
#p data_trn[@m_t].obj
|
|
993
|
+
#elsif (defined? data_src[s].ocn != defined? data_trn[t].ocn) \
|
|
994
|
+
#and (data_src[s].ocn.nil? != data_trn[t].ocn.nil?)
|
|
995
|
+
# p '--- missing OCN? ---'
|
|
996
|
+
# p 'mis-match'
|
|
997
|
+
# p data_src[s].ocn if defined? data_src[s].ocn
|
|
998
|
+
# p data_src[s].obj
|
|
999
|
+
# p data_trn[t].ocn if defined? data_trn[t].ocn
|
|
1000
|
+
# p data_trn[t].obj
|
|
1001
|
+
else
|
|
1002
|
+
end
|
|
1003
|
+
end
|
|
1004
|
+
notes_s,notes_t='',''
|
|
1005
|
+
data_src[s],notes_s=markup(data_src[s])
|
|
1006
|
+
if data_trn
|
|
1007
|
+
data_trn[t],notes_t=markup(data_trn[t])
|
|
1008
|
+
#data_src[s],data_trn[t]=pot_data(data_src[s],notes_s,data_trn[t],notes_t)
|
|
1009
|
+
pot_data(data_src[s],notes_s,data_trn[t],notes_t)
|
|
1010
|
+
else
|
|
1011
|
+
#data_src[s],nul=pot_data(data_src[s],notes_s)
|
|
1012
|
+
pot_data(data_src[s],notes_s)
|
|
1013
|
+
end
|
|
1014
|
+
s+=1;t+=1
|
|
1015
|
+
end
|
|
1016
|
+
@pot #watch
|
|
1017
|
+
end
|
|
1018
|
+
def pot_data(dob_src='',notes_s='',dob_trn='',notes_t='')
|
|
1019
|
+
if dob_src.obj !~/(^#{Rx[:meta]}|#{Mx[:br_eof]}|#{Mx[:br_endnotes]})/
|
|
1020
|
+
if defined? dob_src.ocn \
|
|
1021
|
+
and dob_src.ocn.to_s =~/\d+/
|
|
1022
|
+
paranum=dob_src.ocn.to_s
|
|
1023
|
+
@p_num=SiSU_Po4aUtils::ParagraphNumber.new(paranum)
|
|
1024
|
+
end
|
|
1025
|
+
case dob_src.is
|
|
1026
|
+
when :heading
|
|
1027
|
+
pot_structure.heading(dob_src,notes_s,dob_trn,notes_t)
|
|
1028
|
+
when :para
|
|
1029
|
+
pot_structure.para(dob_src,notes_s,dob_trn,notes_t)
|
|
1030
|
+
when :group
|
|
1031
|
+
pot_structure.group(dob_src,notes_s,dob_trn,notes_t)
|
|
1032
|
+
when :block
|
|
1033
|
+
pot_structure.block(dob_src,notes_s,dob_trn,notes_t)
|
|
1034
|
+
when :verse
|
|
1035
|
+
pot_structure.verse(dob_src,notes_s,dob_trn,notes_t)
|
|
1036
|
+
when :code
|
|
1037
|
+
pot_structure.code(dob_src,notes_s,dob_trn,notes_t)
|
|
1038
|
+
when :table
|
|
1039
|
+
pot_structure.table(dob_src,notes_s,dob_trn,notes_t)
|
|
1040
|
+
end
|
|
1041
|
+
if defined? dob_src.idx \
|
|
1042
|
+
and not dob_src.idx.nil? \
|
|
1043
|
+
and not dob_src.idx.empty?
|
|
1044
|
+
pot_structure.idx(dob_src,dob_trn)
|
|
1045
|
+
end
|
|
1046
|
+
dob_src='' if (dob_src.obj =~/<a name="n\d+">/ \
|
|
1047
|
+
and dob_src.obj =~/^(-\{{2}~\d+|<!e[:_]\d+!>)/) # -endnote
|
|
1048
|
+
if dob_src ## Clean Prepared Text
|
|
1049
|
+
dob_src.obj=dob_src.obj.gsub(/<!.+!>/,' ').
|
|
1050
|
+
gsub(/<:\S+>/,' ') if dob_src ## Clean Prepared Text
|
|
1051
|
+
end
|
|
1052
|
+
end
|
|
1053
|
+
#[dob_src,dob_trn]
|
|
1054
|
+
end
|
|
1055
|
+
def markup(dob)
|
|
1056
|
+
dob,notes=objects.textface_marks_po4a(dob,:separate)
|
|
1057
|
+
[dob,notes]
|
|
1058
|
+
end
|
|
1059
|
+
def publish(fn,pot)
|
|
1060
|
+
content=[]
|
|
1061
|
+
content << pot[:open]
|
|
1062
|
+
content << pot[:head]
|
|
1063
|
+
content << pot[:metadata]
|
|
1064
|
+
content << pot[:body]
|
|
1065
|
+
content << @@endnotes[:end] if @@endnotes_
|
|
1066
|
+
Output.new(fn,content,@md,@process).po4a
|
|
1067
|
+
@@endnotes={ para: [], end: [] }
|
|
1068
|
+
end
|
|
1069
|
+
end
|
|
1070
|
+
class Po4aCfg
|
|
1071
|
+
include SiSU_Composite_Doc_Utils # composite doc, .ssm, extract all related insert files, array of filenames test
|
|
1072
|
+
def initialize(opt,file)
|
|
1073
|
+
@opt,@file=opt,file
|
|
1074
|
+
end
|
|
1075
|
+
def po4a_cfg_filename
|
|
1076
|
+
'po4a.cfg'
|
|
1077
|
+
end
|
|
1078
|
+
def dir
|
|
1079
|
+
def pwd
|
|
1080
|
+
Dir.pwd
|
|
1081
|
+
end
|
|
1082
|
+
def po4a_
|
|
1083
|
+
'po4a/' # ''
|
|
1084
|
+
end
|
|
1085
|
+
def pot
|
|
1086
|
+
po4a_ + 'pot'
|
|
1087
|
+
end
|
|
1088
|
+
def po
|
|
1089
|
+
po4a_ + 'po'
|
|
1090
|
+
end
|
|
1091
|
+
self
|
|
1092
|
+
end
|
|
1093
|
+
def po4a_cfg_file
|
|
1094
|
+
File.open("#{Dir.pwd}/#{po4a_cfg_filename}",'w')
|
|
1095
|
+
end
|
|
1096
|
+
def language
|
|
1097
|
+
def sisu_languages_available
|
|
1098
|
+
Px[:lng_lst]
|
|
1099
|
+
end
|
|
1100
|
+
def translation_languages_selected
|
|
1101
|
+
@opt.act[:po4a_lang_trans][:trn] \
|
|
1102
|
+
? @opt.act[:po4a_lang_trans][:trn]
|
|
1103
|
+
: []
|
|
1104
|
+
end
|
|
1105
|
+
def translation_languages_selected_that_are_available
|
|
1106
|
+
translation_languages_selected & sisu_languages_available
|
|
1107
|
+
end
|
|
1108
|
+
def source_language_selected_str
|
|
1109
|
+
@opt.act[:po4a_lang_trans][:src] \
|
|
1110
|
+
? @opt.act[:po4a_lang_trans][:src]
|
|
1111
|
+
: 'en'
|
|
1112
|
+
end
|
|
1113
|
+
def translation_languages_selected_that_are_available_str
|
|
1114
|
+
translation_languages_selected_that_are_available.join(' ')
|
|
1115
|
+
end
|
|
1116
|
+
def translation_languages_selected_str
|
|
1117
|
+
@opt.act[:po4a_lang_trans][:trn].join(' ')
|
|
1118
|
+
end
|
|
1119
|
+
self
|
|
1120
|
+
end
|
|
1121
|
+
def po4a_cfg
|
|
1122
|
+
doc_import_list=composite_and_imported_filenames_array(@opt.fno)
|
|
1123
|
+
po4a_cfg_arr=[]
|
|
1124
|
+
po4a_cfg_arr \
|
|
1125
|
+
<< "[po4a_langs] #{language.translation_languages_selected_that_are_available_str}"
|
|
1126
|
+
po4a_cfg_arr \
|
|
1127
|
+
<< "[po4a_paths] #{dir.pot}/$master.pot $lang:#{dir.po}/$lang/$master.po"
|
|
1128
|
+
doc_import_list.each do |file_src|
|
|
1129
|
+
file_src_fn=
|
|
1130
|
+
file_src.gsub(/#{language.source_language_selected_str}\//,'')
|
|
1131
|
+
po4a_cfg_arr \
|
|
1132
|
+
<< "[type: text] #{file_src} $lang:$lang/#{file_src_fn}"
|
|
1133
|
+
end
|
|
1134
|
+
file=@file.write_file.po4a_cfg
|
|
1135
|
+
po4a_cfg_arr.each do |txt|
|
|
1136
|
+
puts txt
|
|
1137
|
+
file << txt << "\n"
|
|
1138
|
+
end
|
|
1139
|
+
file.close
|
|
1140
|
+
end
|
|
1141
|
+
end
|
|
1142
|
+
class Output <Source
|
|
1143
|
+
include SiSU_Param
|
|
1144
|
+
include SiSU_Env
|
|
1145
|
+
def initialize(fn,content,md,process=:complete)
|
|
1146
|
+
@fn,@content,@md,@process=fn,content,md,process
|
|
1147
|
+
@file=SiSU_Env::FileOp.new(md,fn)
|
|
1148
|
+
end
|
|
1149
|
+
def po4a #%pot output
|
|
1150
|
+
file_pot=(@md.opt.f_pth[:lng] == @md.opt.lng_base) \
|
|
1151
|
+
? @file.write_file.pot
|
|
1152
|
+
: @file.write_file.po
|
|
1153
|
+
@sisu=[]
|
|
1154
|
+
emptyline=0
|
|
1155
|
+
@content.each do |para| # this is a hack
|
|
1156
|
+
if para.is_a?(Array) \
|
|
1157
|
+
and para.length > 0
|
|
1158
|
+
para.each do |line|
|
|
1159
|
+
if line
|
|
1160
|
+
line=line.gsub(/\s+$/m,'').
|
|
1161
|
+
gsub(/^\A[ ]*\Z/m,'')
|
|
1162
|
+
if line=~/^\A[ ]*\Z/m
|
|
1163
|
+
emptyline+=1
|
|
1164
|
+
else emptyline=0
|
|
1165
|
+
end
|
|
1166
|
+
file_pot.puts line if emptyline < 2 #remove extra line spaces (fix upstream)
|
|
1167
|
+
end
|
|
1168
|
+
end
|
|
1169
|
+
else file_pot.puts para #unix plaintext # /^([*=-]|\.){5}/
|
|
1170
|
+
end
|
|
1171
|
+
end
|
|
1172
|
+
file_pot.close
|
|
1173
|
+
SiSU_Po4aUtils::PotNumber.new.reset
|
|
1174
|
+
po4a_git
|
|
1175
|
+
end
|
|
1176
|
+
def po4a_git
|
|
1177
|
+
unless @md.opt.act[:maintenance][:set]==:on
|
|
1178
|
+
require_relative 'git' # git.rb
|
|
1179
|
+
git=SiSU_Git::Source.new(@md.opt,@process)
|
|
1180
|
+
unless FileTest.directory?(@file.output_path.pot_git.dir)
|
|
1181
|
+
git.create_file_structure_git
|
|
1182
|
+
end
|
|
1183
|
+
if @md.opt.f_pth[:lng] == @md.opt.lng_base
|
|
1184
|
+
FileUtils::cp(
|
|
1185
|
+
@file.place_file.pot.dir,
|
|
1186
|
+
@file.output_path.pot_git.dir
|
|
1187
|
+
)
|
|
1188
|
+
else # naive, work on -->
|
|
1189
|
+
FileUtils::cp(
|
|
1190
|
+
@file.place_file.po.dir,
|
|
1191
|
+
@file.output_path.po_git.dir
|
|
1192
|
+
) #unless FileTest.file?(@file.place_file.po_git.dir)
|
|
1193
|
+
end
|
|
1194
|
+
git.read
|
|
1195
|
+
end
|
|
1196
|
+
end
|
|
1197
|
+
end
|
|
1198
|
+
end
|
|
1199
|
+
end
|
|
1200
|
+
__END__
|
|
1201
|
+
!\|#\|&*\|-\|/\|_\|{\|}\|~\|&#
|
|
1202
|
+
|
|
1203
|
+
tables are problematic, difficult to reconstitute instruction, check
|
|
1204
|
+
|
|
1205
|
+
metadata, move to top? and work on
|
|
1206
|
+
|
|
1207
|
+
footnotes, different types, asterisk, also do you want to have separate
|
|
1208
|
+
paragraphs, or breaks within one block?
|
|
1209
|
+
|
|
1210
|
+
where no ocn appropriately use ~# or -# or indeed 1~name-
|
|
1211
|
+
|
|
1212
|
+
comments in document, what to do about them, not sure they are currently
|
|
1213
|
+
retained in dal, could be quite valuable to keep
|
|
1214
|
+
|
|
1215
|
+
Translate Shell
|
|
1216
|
+
http://www.soimort.org/translate-shell/
|
|
1217
|
+
translate.google.com
|