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,297 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
=begin
|
|
3
|
+
|
|
4
|
+
* Name: SiSU
|
|
5
|
+
|
|
6
|
+
** Description: documents, structuring, processing, publishing, search
|
|
7
|
+
*** po4a
|
|
8
|
+
|
|
9
|
+
** Author: Ralph Amissah
|
|
10
|
+
<ralph@amissah.com>
|
|
11
|
+
<ralph.amissah@gmail.com>
|
|
12
|
+
|
|
13
|
+
** Copyright: (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
|
|
14
|
+
2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 Ralph Amissah,
|
|
15
|
+
All Rights Reserved.
|
|
16
|
+
|
|
17
|
+
** License: GPL 3 or later:
|
|
18
|
+
|
|
19
|
+
SiSU, a framework for document structuring, publishing and search
|
|
20
|
+
|
|
21
|
+
Copyright (C) Ralph Amissah
|
|
22
|
+
|
|
23
|
+
This program is free software: you can redistribute it and/or modify it
|
|
24
|
+
under the terms of the GNU General Public License as published by the Free
|
|
25
|
+
Software Foundation, either version 3 of the License, or (at your option)
|
|
26
|
+
any later version.
|
|
27
|
+
|
|
28
|
+
This program is distributed in the hope that it will be useful, but WITHOUT
|
|
29
|
+
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
|
30
|
+
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
|
31
|
+
more details.
|
|
32
|
+
|
|
33
|
+
You should have received a copy of the GNU General Public License along with
|
|
34
|
+
this program. If not, see <http://www.gnu.org/licenses/>.
|
|
35
|
+
|
|
36
|
+
If you have Internet connection, the latest version of the GPL should be
|
|
37
|
+
available at these locations:
|
|
38
|
+
<http://www.fsf.org/licensing/licenses/gpl.html>
|
|
39
|
+
<http://www.gnu.org/licenses/gpl.html>
|
|
40
|
+
|
|
41
|
+
<http://www.sisudoc.org/sisu/en/manifest/gpl.fsf.html>
|
|
42
|
+
|
|
43
|
+
** SiSU uses:
|
|
44
|
+
* Standard SiSU markup syntax,
|
|
45
|
+
* Standard SiSU meta-markup syntax, and the
|
|
46
|
+
* Standard SiSU object citation numbering and system
|
|
47
|
+
|
|
48
|
+
** Hompages:
|
|
49
|
+
<http://www.jus.uio.no/sisu>
|
|
50
|
+
<http://www.sisudoc.org>
|
|
51
|
+
|
|
52
|
+
** Git
|
|
53
|
+
<http://git.sisudoc.org/gitweb/?p=code/sisu.git;a=summary>
|
|
54
|
+
<http://git.sisudoc.org/gitweb/?p=code/sisu.git;a=blob;f=lib/sisu/src_po4a_shelf_set.rb;hb=HEAD>
|
|
55
|
+
|
|
56
|
+
=end
|
|
57
|
+
module SiSU_Po4aUtils
|
|
58
|
+
class Wrap
|
|
59
|
+
def initialize(md,orig='',trans='',is_desc='',n_char_max=76,n_indent=0,n_hang=nil)
|
|
60
|
+
@md,@orig,@trans,@is_desc,@n_char_max,@n_indent=
|
|
61
|
+
md, orig, trans, is_desc, n_char_max, n_indent
|
|
62
|
+
@n_char_max_extend = n_char_max
|
|
63
|
+
@br="\n"
|
|
64
|
+
@n_hang=n_hang ? n_hang : @n_indent
|
|
65
|
+
@po4a_identify_type='type: SiSU doc'
|
|
66
|
+
#@po4a_identify_type='type: Plain text'
|
|
67
|
+
end
|
|
68
|
+
def line_wrap
|
|
69
|
+
space=' '
|
|
70
|
+
spaces_indent,spaces_hang=
|
|
71
|
+
"#{@br}#{space*@n_indent}",space*@n_hang
|
|
72
|
+
pot,i=[],0
|
|
73
|
+
pot_array=(@trans.empty?) ? [@orig] : [@orig,@trans]
|
|
74
|
+
pot_array.each do |pa|
|
|
75
|
+
line=0
|
|
76
|
+
out=[]
|
|
77
|
+
out[line]=''
|
|
78
|
+
@oldword='' #REMOVE @oldword
|
|
79
|
+
pa=pa.gsub(/<br>/,' <br> ').
|
|
80
|
+
gsub(/#{Mx[:br_nl]}/,"\n\n")
|
|
81
|
+
words=pa.scan(/\n\n|\\\\\\|<br>|\S+/m)
|
|
82
|
+
while words != ''
|
|
83
|
+
word=words.shift
|
|
84
|
+
if not word
|
|
85
|
+
out[line] unless out[line].empty? #check
|
|
86
|
+
break
|
|
87
|
+
elsif word =~/\n\n/
|
|
88
|
+
word="\n"
|
|
89
|
+
@n_char_max_extend = @n_char_max + out[line].length
|
|
90
|
+
line=line
|
|
91
|
+
elsif (out[line].length + word.length) > (@n_char_max_extend - @n_indent) \
|
|
92
|
+
and out[line] =~/\S+/
|
|
93
|
+
@n_char_max_extend = @n_char_max
|
|
94
|
+
out[line].squeeze!(' ')
|
|
95
|
+
line += 1
|
|
96
|
+
end
|
|
97
|
+
if word
|
|
98
|
+
out[line]=if out[line] \
|
|
99
|
+
and out[line] !~/\S+$/m
|
|
100
|
+
"#{out[line]}#{word}"
|
|
101
|
+
elsif out[line] \
|
|
102
|
+
and out[line] =~/\S+/
|
|
103
|
+
"#{out[line]} #{word}"
|
|
104
|
+
else "#{word.strip}"
|
|
105
|
+
end
|
|
106
|
+
end
|
|
107
|
+
@oldword=word if word =~/\S+/
|
|
108
|
+
end
|
|
109
|
+
x=out.join(spaces_indent).gsub(/\A\n+/m,'').insert(0,spaces_hang)
|
|
110
|
+
z=[]
|
|
111
|
+
x.split(/\n/).each do |y|
|
|
112
|
+
y=y.gsub(/"/,'\"')
|
|
113
|
+
y=%{"#{y}"}
|
|
114
|
+
z << y
|
|
115
|
+
end
|
|
116
|
+
pot[i]=z.join("\n")
|
|
117
|
+
i +=1
|
|
118
|
+
pot
|
|
119
|
+
end
|
|
120
|
+
trans=(pot.length == 2) ? pot[1] : ''
|
|
121
|
+
po_str=<<WOK
|
|
122
|
+
#. #{@po4a_identify_type} - #{@is_desc}
|
|
123
|
+
#: en/#{@md.fns}:#{PotNumber.new.num}
|
|
124
|
+
msgid ""
|
|
125
|
+
#{pot[0]}
|
|
126
|
+
msgstr ""
|
|
127
|
+
#{trans}
|
|
128
|
+
WOK
|
|
129
|
+
po_str
|
|
130
|
+
end
|
|
131
|
+
def no_line_wrap_block
|
|
132
|
+
pot,i=[],0
|
|
133
|
+
pot_array=(@trans.empty?) ? [@orig] : [@orig,@trans]
|
|
134
|
+
pot_array.each do |pa|
|
|
135
|
+
z=[]
|
|
136
|
+
pa.split(/\n\n/).each do |y|
|
|
137
|
+
y=y.gsub(/"/,'\"')
|
|
138
|
+
y=%{"#{y}"}
|
|
139
|
+
z << y if not y.empty?
|
|
140
|
+
end
|
|
141
|
+
pot[i]=z.join("\n")
|
|
142
|
+
i +=1
|
|
143
|
+
pot
|
|
144
|
+
end
|
|
145
|
+
trans=(pot.length == 2) ? pot[1] : ''
|
|
146
|
+
po_str=<<WOK
|
|
147
|
+
#. #{@po4a_identify_type} - #{@is_desc}
|
|
148
|
+
#: en/#{@md.fns}:#{PotNumber.new.num}
|
|
149
|
+
#, no-wrap
|
|
150
|
+
msgid ""
|
|
151
|
+
#{pot[0]}
|
|
152
|
+
msgstr ""
|
|
153
|
+
#{trans}
|
|
154
|
+
WOK
|
|
155
|
+
po_str
|
|
156
|
+
end
|
|
157
|
+
def line_wrap_indent1
|
|
158
|
+
@n_indent,@n_hang=2,2
|
|
159
|
+
line_wrap
|
|
160
|
+
end
|
|
161
|
+
def line_wrap_endnote
|
|
162
|
+
@n_indent,@n_hang=4,2
|
|
163
|
+
line_wrap
|
|
164
|
+
end
|
|
165
|
+
def array_wrap
|
|
166
|
+
if @orig.is_a?(Array)
|
|
167
|
+
@arr=[]
|
|
168
|
+
@orig.each do |line|
|
|
169
|
+
@arr << SiSU_TextUtils::Wrap.new(line,@n_char_max,@n_indent,@n_hang).line_wrap
|
|
170
|
+
end
|
|
171
|
+
end
|
|
172
|
+
@arr
|
|
173
|
+
end
|
|
174
|
+
end
|
|
175
|
+
class HeaderScan
|
|
176
|
+
def initialize(md,para)
|
|
177
|
+
@md,@p=md,para
|
|
178
|
+
end
|
|
179
|
+
def extract(tag,tag_content,type,attrib)
|
|
180
|
+
if dc_tag \
|
|
181
|
+
and dc_content
|
|
182
|
+
[dc_tag,dc_content,{dc_tag=>dc_content}]
|
|
183
|
+
else nil
|
|
184
|
+
end
|
|
185
|
+
end
|
|
186
|
+
def header(tag,tag_content,type='',attrib='') #this will break stuff and must be tested thoroughly 20060825
|
|
187
|
+
@tag,@tag_content,@type,@attrib=tag,tag_content,type,attrib
|
|
188
|
+
def label #element
|
|
189
|
+
@tag
|
|
190
|
+
end
|
|
191
|
+
def type
|
|
192
|
+
@type
|
|
193
|
+
end
|
|
194
|
+
def text
|
|
195
|
+
@tag_content
|
|
196
|
+
end
|
|
197
|
+
def info #element text
|
|
198
|
+
@tag_content
|
|
199
|
+
end
|
|
200
|
+
def attribute
|
|
201
|
+
@attrib
|
|
202
|
+
end
|
|
203
|
+
def element
|
|
204
|
+
@tag
|
|
205
|
+
end
|
|
206
|
+
def attrib
|
|
207
|
+
@attrib
|
|
208
|
+
end
|
|
209
|
+
def el
|
|
210
|
+
@tag
|
|
211
|
+
end
|
|
212
|
+
self
|
|
213
|
+
end
|
|
214
|
+
def start_is_match
|
|
215
|
+
case @p
|
|
216
|
+
when /^#{Mx[:meta_o]}(title)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,@md.title.full,'meta','dc') #dc 1
|
|
217
|
+
when /^#{Mx[:meta_o]}(creator|author)#{Mx[:meta_c]}\s*(.+?)$/ then header('creator',$2,'meta','dc') #dc 2
|
|
218
|
+
when /^#{Mx[:meta_o]}(subject)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','dc') #dc 3
|
|
219
|
+
when /^#{Mx[:meta_o]}(description)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','dc') #dc 4
|
|
220
|
+
when /^#{Mx[:meta_o]}(publisher)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','dc') #dc 5
|
|
221
|
+
when /^#{Mx[:meta_o]}(contributor)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','dc') #dc 6
|
|
222
|
+
when /^#{Mx[:meta_o]}(date)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','dc') #dc 7
|
|
223
|
+
when /^#{Mx[:meta_o]}(date\.created)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','extra')
|
|
224
|
+
when /^#{Mx[:meta_o]}(date\.issued)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','extra')
|
|
225
|
+
when /^#{Mx[:meta_o]}(date\.available)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','extra')
|
|
226
|
+
when /^#{Mx[:meta_o]}(date\.valid)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','extra')
|
|
227
|
+
when /^#{Mx[:meta_o]}(date\.modified)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','extra')
|
|
228
|
+
when /^#{Mx[:meta_o]}(type)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','dc') #dc 8
|
|
229
|
+
when /^#{Mx[:meta_o]}(format)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','dc') #dc 9
|
|
230
|
+
when /^#{Mx[:meta_o]}(identifier)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','dc') #dc 10
|
|
231
|
+
when /^#{Mx[:meta_o]}(source)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','dc') #dc 11
|
|
232
|
+
when /^#{Mx[:meta_o]}(language)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','dc') #dc 12
|
|
233
|
+
when /^#{Mx[:meta_o]}(relation)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','dc') #dc 13
|
|
234
|
+
when /^#{Mx[:meta_o]}(coverage)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','dc') #dc 14
|
|
235
|
+
when /^#{Mx[:meta_o]}(rights)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','dc') #dc 15
|
|
236
|
+
when /^#{Mx[:meta_o]}(keywords)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','extra')
|
|
237
|
+
when /^#{Mx[:meta_o]}(copyright)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','extra')
|
|
238
|
+
when /^#{Mx[:meta_o]}(translator|translated_by)#{Mx[:meta_c]}\s*(.+?)$/ then header('translator',$2)
|
|
239
|
+
when /^#{Mx[:meta_o]}(illustrator|illustrated_by)#{Mx[:meta_c]}\s*(.+?)$/ then header('illustrator',$2)
|
|
240
|
+
when /^#{Mx[:meta_o]}(prepared_by)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','extra')
|
|
241
|
+
when /^#{Mx[:meta_o]}(digitized_by)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','extra')
|
|
242
|
+
when /^#{Mx[:meta_o]}(comments?)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','extra')
|
|
243
|
+
when /^#{Mx[:meta_o]}(abstract)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','extra')
|
|
244
|
+
when /^#{Mx[:meta_o]}(tags?)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','extra')
|
|
245
|
+
when /^#{Mx[:meta_o]}(catalogue)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'meta','extra')
|
|
246
|
+
when /^#{Mx[:meta_o]}(class(?:ify)?_loc)#{Mx[:meta_c]}\s*(.+?)$/ then header('classify_loc',$2,'meta','extra')
|
|
247
|
+
when /^#{Mx[:meta_o]}(class(?:ify)?_dewey)#{Mx[:meta_c]}\s*(.+?)$/ then header('classify_dewey',$2,'meta','extra')
|
|
248
|
+
when /^#{Mx[:meta_o]}(class(?:ify)?_pg)#{Mx[:meta_c]}\s*(.+?)$/ then header('classify_pg',$2,'meta','extra')
|
|
249
|
+
when /^#{Mx[:meta_o]}(class(?:ify)?_isbn)#{Mx[:meta_c]}\s*(.+?)$/ then header('classify_isbn',$2,'meta','extra')
|
|
250
|
+
when /^#{Mx[:meta_o]}(toc|structure)#{Mx[:meta_c]}\s*(.+?)$/ then header('structure',$2,'process','instruct')
|
|
251
|
+
when /^#{Mx[:meta_o]}(level|page|markup)#{Mx[:meta_c]}\s*(.+?)$/ then header('markup',$2,'process','instruct')
|
|
252
|
+
when /^#{Mx[:meta_o]}(bold)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'process','instruct')
|
|
253
|
+
when /^#{Mx[:meta_o]}(italics|itali[sz]e)#{Mx[:meta_c]}\s*(.+?)$/ then header('italicize',$2,'process','instruct')
|
|
254
|
+
when /^#{Mx[:meta_o]}(vocabulary|wordlist)#{Mx[:meta_c]}\s*(.+?)$/ then header('vocabulary',$2,'process','instruct')
|
|
255
|
+
when /^#{Mx[:meta_o]}(css|stylesheet)#{Mx[:meta_c]}\s*(.+?)$/ then header('css',$2,'process','instruct')
|
|
256
|
+
when /^#{Mx[:meta_o]}(links)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'process','instruct')
|
|
257
|
+
when /^#{Mx[:meta_o]}(prefix)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'process','instruct') #add a & b
|
|
258
|
+
when /^#{Mx[:meta_o]}(suffix)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'process','instruct')
|
|
259
|
+
when /^#{Mx[:meta_o]}(information)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'process','instruct')
|
|
260
|
+
when /^#{Mx[:meta_o]}(contact)#{Mx[:meta_c]}\s*(.+?)$/ then header($1,$2,'process','instruct')
|
|
261
|
+
when /^#{Mx[:meta_o]}(rcs|cvs)#{Mx[:meta_c]}\s*(.+?)$/ then header('version',$2,'process','instruct')
|
|
262
|
+
else nil
|
|
263
|
+
end
|
|
264
|
+
end
|
|
265
|
+
def dublin
|
|
266
|
+
(@p =~/^#{Mx[:meta_o]}\S+?#{Mx[:meta_c]}/) \
|
|
267
|
+
? start_is_match
|
|
268
|
+
: nil
|
|
269
|
+
end
|
|
270
|
+
def meta
|
|
271
|
+
(@p =~/^#{Mx[:meta_o]}\S+?#{Mx[:meta_c]}/) \
|
|
272
|
+
? start_is_match
|
|
273
|
+
: nil
|
|
274
|
+
end
|
|
275
|
+
end
|
|
276
|
+
class ParagraphNumber
|
|
277
|
+
def initialize(paranum)
|
|
278
|
+
@paranum=/(\d+)/m.match(paranum)[1]
|
|
279
|
+
end
|
|
280
|
+
def display
|
|
281
|
+
@paranum.gsub(/(\d+)/,'#\1')
|
|
282
|
+
end
|
|
283
|
+
end
|
|
284
|
+
class PotNumber
|
|
285
|
+
@@n=0
|
|
286
|
+
def initialize
|
|
287
|
+
@@n +=2
|
|
288
|
+
end
|
|
289
|
+
def num
|
|
290
|
+
@@n
|
|
291
|
+
end
|
|
292
|
+
def reset
|
|
293
|
+
@@n=0
|
|
294
|
+
end
|
|
295
|
+
end
|
|
296
|
+
end
|
|
297
|
+
__END__
|
|
@@ -0,0 +1,893 @@
|
|
|
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_sst_ao_sst.rb;hb=HEAD>
|
|
55
|
+
|
|
56
|
+
=end
|
|
57
|
+
module SiSU_SStm_AO_SStm
|
|
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_share' # src_po4a_share.rb
|
|
64
|
+
require_relative 'src_po4a_sst_ao_sst_set' # src_po4a_sst_ao_sst_set.rb
|
|
65
|
+
include SiSU_Param
|
|
66
|
+
require_relative 'object_munge' # object_munge.rb
|
|
67
|
+
require_relative 'utils_composite' # utils_composite.rb
|
|
68
|
+
require_relative 'utils_response' # utils_response.rb
|
|
69
|
+
class Source
|
|
70
|
+
include SiSU_Object_Munge
|
|
71
|
+
include SiSU_Languages_Selected
|
|
72
|
+
include SiSU_Response
|
|
73
|
+
@@md_src,@@md_master=
|
|
74
|
+
nil, nil
|
|
75
|
+
@@auto_translation_ = :go
|
|
76
|
+
def initialize(opt,fn=nil)
|
|
77
|
+
@opt,@fn=opt,fn
|
|
78
|
+
#unless @opt.fns =~/(.+?\.(?:-|ssm\.)?sst)$/
|
|
79
|
+
# puts "#{@opt.fns} not a processed file type"
|
|
80
|
+
#end
|
|
81
|
+
file_arr=SiSU_Info_Env::InfoEnv.new.
|
|
82
|
+
source_file_processing_array(@opt.fno)
|
|
83
|
+
SiSU_Param::Parameters::Instructions.new(file_arr,@opt).extract
|
|
84
|
+
r=Px[:lng_lst_rgx].gsub(/\|#{language.source_language_selected_str}\|/,'|')
|
|
85
|
+
@lang_regx=%r{(?:#{r})}
|
|
86
|
+
@@todo=if source_language_selected_str == opt.f_pth[:lng]
|
|
87
|
+
:same_file
|
|
88
|
+
else :compare
|
|
89
|
+
end
|
|
90
|
+
if opt.f_pth[:lng]==@opt.lng_base \
|
|
91
|
+
and opt.f_pth[:lng]==source_language_selected_str
|
|
92
|
+
@@md_master=SiSU_Param::Parameters.new(opt).get
|
|
93
|
+
end
|
|
94
|
+
end
|
|
95
|
+
def wrap_width_set(md,env)
|
|
96
|
+
if defined? md.make.plaintext_wrap \
|
|
97
|
+
and md.make.plaintext_wrap
|
|
98
|
+
md.make.plaintext_wrap
|
|
99
|
+
elsif defined? env.plaintext_wrap \
|
|
100
|
+
and env.plaintext_wrap
|
|
101
|
+
#env.plaintext_wrap # 78 use 75
|
|
102
|
+
75
|
|
103
|
+
else 75 #78
|
|
104
|
+
end
|
|
105
|
+
end
|
|
106
|
+
def process_file(md,env,file,wrap_width,fn)
|
|
107
|
+
if source_language_selected_str == @opt.f_pth[:lng]
|
|
108
|
+
@@ao_arr_lang_trans=
|
|
109
|
+
SiSU_AO::Source.new(
|
|
110
|
+
@opt,
|
|
111
|
+
fn,
|
|
112
|
+
:po4a
|
|
113
|
+
).get # ao file drawn here
|
|
114
|
+
end
|
|
115
|
+
@ao_arr_lang_src=
|
|
116
|
+
SiSU_AO::Source.new(
|
|
117
|
+
@opt,
|
|
118
|
+
fn,
|
|
119
|
+
:po4a
|
|
120
|
+
).get # ao file drawn here
|
|
121
|
+
SiSU_SStm_AO_SStm::Source::Scroll.new(
|
|
122
|
+
fn,
|
|
123
|
+
@ao_arr_lang_src,
|
|
124
|
+
@@ao_arr_lang_trans,
|
|
125
|
+
@@md_src,
|
|
126
|
+
@@md_master,
|
|
127
|
+
wrap_width
|
|
128
|
+
).songsheet
|
|
129
|
+
end
|
|
130
|
+
def read_process_src_files
|
|
131
|
+
begin
|
|
132
|
+
src={}
|
|
133
|
+
src[:pth]=@opt.f_pth[:pth]
|
|
134
|
+
src[:files]=if @opt.fns =~ /\.(?:(?:-|ssm\.)sst|ssm)$/
|
|
135
|
+
@opt.fns=@opt.fns.gsub(/\.ssm\.sst$/,'.ssm')
|
|
136
|
+
SiSU_Assemble::CompositeFileList.new(@opt).read
|
|
137
|
+
else
|
|
138
|
+
[@opt.fns]
|
|
139
|
+
end
|
|
140
|
+
md=SiSU_Param::Parameters.new(@opt).get
|
|
141
|
+
env=SiSU_Env::InfoEnv.new(@opt.fns)
|
|
142
|
+
file=SiSU_Env::FileOp.new(md)
|
|
143
|
+
lng=/\/([^\/]+)$/.match(src[:pth])[1]
|
|
144
|
+
if language.source_language_selected_str == lng
|
|
145
|
+
SiSU_Po4a_Project::Po4aDistClean.new(@opt,file).song
|
|
146
|
+
end
|
|
147
|
+
wrap_width=wrap_width_set(md,env)
|
|
148
|
+
lng = /\/([^\/]+)$/.match(src[:pth])[1]
|
|
149
|
+
ans=response?('process files?')
|
|
150
|
+
if ans
|
|
151
|
+
src[:files].each do |fn|
|
|
152
|
+
puts "[#{lng}] #{fn}"
|
|
153
|
+
process_file(md,env,file,wrap_width,fn)
|
|
154
|
+
end
|
|
155
|
+
end
|
|
156
|
+
rescue
|
|
157
|
+
SiSU_Errors::Rescued.new($!,$@,@opt.selections.str,@opt.fns).location do
|
|
158
|
+
__LINE__.to_s + ':' + __FILE__
|
|
159
|
+
end
|
|
160
|
+
ensure
|
|
161
|
+
end
|
|
162
|
+
end
|
|
163
|
+
def read_setup
|
|
164
|
+
begin
|
|
165
|
+
md=SiSU_Param::Parameters.new(@opt).get
|
|
166
|
+
file=SiSU_Env::FileOp.new(md)
|
|
167
|
+
SiSU_Po4a_Project::Po4aCfg.new(@opt,file).song
|
|
168
|
+
SiSU_Po4a_Project::Po4aProject.new(@opt,file).song
|
|
169
|
+
rescue
|
|
170
|
+
SiSU_Errors::Rescued.new($!,$@,@opt.selections.str,@opt.fns).location do
|
|
171
|
+
__LINE__.to_s + ':' + __FILE__
|
|
172
|
+
end
|
|
173
|
+
ensure
|
|
174
|
+
end
|
|
175
|
+
end
|
|
176
|
+
private
|
|
177
|
+
class Scroll <Source
|
|
178
|
+
include SiSU_Po4aUtils
|
|
179
|
+
@@endnotes={ para: [], end: [] }
|
|
180
|
+
def initialize(fn,data_src,data_master,md_src,md_master,wrap_width)
|
|
181
|
+
@fn,@data_src,@data_master,@md_src,@md_master,@wrap_width=
|
|
182
|
+
fn, data_src, data_master, md_src, md_master, wrap_width
|
|
183
|
+
@md=md_src
|
|
184
|
+
@tab="\t"
|
|
185
|
+
@@endnotes_=(@md.opt.selections.str =~/--endnote/) \
|
|
186
|
+
? true
|
|
187
|
+
: false # --footnote
|
|
188
|
+
@pot={
|
|
189
|
+
body: [],
|
|
190
|
+
open: [],
|
|
191
|
+
close: [],
|
|
192
|
+
head: [],
|
|
193
|
+
metadata: [],
|
|
194
|
+
tail: []
|
|
195
|
+
}
|
|
196
|
+
end
|
|
197
|
+
def br
|
|
198
|
+
(@md.opt.selections.str =~/--dos/) ? "\r\n" : "\n" # --unix
|
|
199
|
+
end
|
|
200
|
+
def songsheet
|
|
201
|
+
fn=@fn
|
|
202
|
+
pot=compare_structure_src_trn(@data_src,@data_master,@@todo)
|
|
203
|
+
publish(fn,pot)
|
|
204
|
+
end
|
|
205
|
+
def pot_structure_wrap(orig,trans,indent=0,hang=0)
|
|
206
|
+
SiSU_Po4aUtils::Wrap.new(
|
|
207
|
+
@md,
|
|
208
|
+
orig,
|
|
209
|
+
trans,
|
|
210
|
+
@wrap_width,
|
|
211
|
+
indent,
|
|
212
|
+
hang
|
|
213
|
+
)
|
|
214
|
+
end
|
|
215
|
+
def wrap_endnotes(orig_notes='',trn_notes='')
|
|
216
|
+
#nt=@@endnotes_ ? 'endnote' : 'footnote'
|
|
217
|
+
@fn=0
|
|
218
|
+
a_l=orig_notes.length
|
|
219
|
+
0.upto(a_l-1) do |i|
|
|
220
|
+
@fn=if orig_notes[i].to_s =~/^\^~([\d*+]+)/ # provides endnote number within paragraph
|
|
221
|
+
@fn += 1
|
|
222
|
+
else @fn
|
|
223
|
+
end
|
|
224
|
+
#mark="^~ "
|
|
225
|
+
orig=(orig_notes[i].to_s =~/^\^~[\d*+]+/) \
|
|
226
|
+
? (orig_notes[i].to_s.gsub(/^\^~[\d*+]+/,'^~'))
|
|
227
|
+
: orig_notes[i].to_s
|
|
228
|
+
trans=if trn_notes.is_a?(Array) \
|
|
229
|
+
and trn_notes.length==orig_notes.length
|
|
230
|
+
(trn_notes[i].to_s =~/^\^~[\d*+]+/) \
|
|
231
|
+
? (trn_notes[i].to_s.gsub(/^\^~[\d*+]+/,'^~'))
|
|
232
|
+
: trn_notes[i].to_s
|
|
233
|
+
else ''
|
|
234
|
+
end
|
|
235
|
+
util=pot_structure_wrap(orig,trans)
|
|
236
|
+
wrap=util.line_wrap
|
|
237
|
+
wrap=if wrap =~ /^\s*\^~[\d*+]+\s+.+?\s*\Z/m
|
|
238
|
+
wrap.gsub(/^\s*(\^~[\d*+]+)\s+(.+?)\s*\Z/m, <<GSUB
|
|
239
|
+
\\1 \\2
|
|
240
|
+
GSUB
|
|
241
|
+
)
|
|
242
|
+
else
|
|
243
|
+
wrap.gsub(/^(.+)\Z/m, <<GSUB
|
|
244
|
+
\\1
|
|
245
|
+
GSUB
|
|
246
|
+
)
|
|
247
|
+
end
|
|
248
|
+
@@endnotes[:para] << wrap
|
|
249
|
+
@@endnotes[:end] << '' << wrap
|
|
250
|
+
end
|
|
251
|
+
@@endnotes[:para].each {|e| @pot[:body] << e << br}
|
|
252
|
+
@@endnotes[:para]=[]
|
|
253
|
+
@@endnotes
|
|
254
|
+
end
|
|
255
|
+
def pot_metadata_src
|
|
256
|
+
@po4a_identify_type='type: SiSU doc' #'type: Plain text'
|
|
257
|
+
meta_src=SiSU_Metadata::Summary.new(@md_src)
|
|
258
|
+
w=[]
|
|
259
|
+
w << [
|
|
260
|
+
meta_src.metadata_tags.title.main,
|
|
261
|
+
meta_src.metadata_tags.title.sub,
|
|
262
|
+
meta_src.metadata_tags.title.edition,
|
|
263
|
+
meta_src.metadata_tags.title.note,
|
|
264
|
+
meta_src.metadata_tags.title.short,
|
|
265
|
+
meta_src.metadata_tags.title.language,
|
|
266
|
+
meta_src.metadata_tags.title.language_char,
|
|
267
|
+
]
|
|
268
|
+
w << [
|
|
269
|
+
meta_src.metadata_tags.creator.head,
|
|
270
|
+
meta_src.metadata_tags.creator.author,
|
|
271
|
+
meta_src.metadata_tags.creator.contributor,
|
|
272
|
+
meta_src.metadata_tags.creator.illustrator,
|
|
273
|
+
meta_src.metadata_tags.creator.photographer,
|
|
274
|
+
meta_src.metadata_tags.creator.translator,
|
|
275
|
+
meta_src.metadata_tags.creator.audio,
|
|
276
|
+
meta_src.metadata_tags.creator.digitized_by,
|
|
277
|
+
meta_src.metadata_tags.creator.prepared_by,
|
|
278
|
+
]
|
|
279
|
+
w << [
|
|
280
|
+
meta_src.metadata_tags.rights.head,
|
|
281
|
+
meta_src.metadata_tags.rights.copyright.text,
|
|
282
|
+
meta_src.metadata_tags.rights.copyright.translation,
|
|
283
|
+
meta_src.metadata_tags.rights.copyright.illustrations,
|
|
284
|
+
meta_src.metadata_tags.rights.copyright.photographs,
|
|
285
|
+
meta_src.metadata_tags.rights.copyright.digitization,
|
|
286
|
+
meta_src.metadata_tags.rights.copyright.audio,
|
|
287
|
+
meta_src.metadata_tags.rights.license,
|
|
288
|
+
]
|
|
289
|
+
w << [
|
|
290
|
+
meta_src.metadata_tags.classify.head,
|
|
291
|
+
meta_src.metadata_tags.classify.subject,
|
|
292
|
+
meta_src.metadata_tags.classify.topic_register,
|
|
293
|
+
meta_src.metadata_tags.classify.loc,
|
|
294
|
+
meta_src.metadata_tags.classify.dewey,
|
|
295
|
+
]
|
|
296
|
+
w << [
|
|
297
|
+
meta_src.metadata_tags.date.head,
|
|
298
|
+
meta_src.metadata_tags.date.added_to_site,
|
|
299
|
+
meta_src.metadata_tags.date.available,
|
|
300
|
+
meta_src.metadata_tags.date.created,
|
|
301
|
+
meta_src.metadata_tags.date.issued,
|
|
302
|
+
meta_src.metadata_tags.date.modified,
|
|
303
|
+
meta_src.metadata_tags.date.published,
|
|
304
|
+
meta_src.metadata_tags.date.valid,
|
|
305
|
+
]
|
|
306
|
+
w << [
|
|
307
|
+
meta_src.processing_tags.make.language,
|
|
308
|
+
meta_src.processing_tags.make.headings,
|
|
309
|
+
meta_src.processing_tags.make.num_top,
|
|
310
|
+
meta_src.processing_tags.make.breaks,
|
|
311
|
+
meta_src.processing_tags.make.emphasis,
|
|
312
|
+
meta_src.processing_tags.make.bold,
|
|
313
|
+
meta_src.processing_tags.make.italics,
|
|
314
|
+
meta_src.processing_tags.make.texpdf_font,
|
|
315
|
+
]
|
|
316
|
+
w.each do |y|
|
|
317
|
+
z=''
|
|
318
|
+
y.each do |x|
|
|
319
|
+
if x
|
|
320
|
+
z += x + "\n" if x =~/^#|^msg(?:id|str)/
|
|
321
|
+
z += %{#{x}\n} if x =~/^@\S+?:(?: |$)/
|
|
322
|
+
z += %{#{x}\n} if x =~/^\s+:\S+?: /
|
|
323
|
+
end
|
|
324
|
+
end
|
|
325
|
+
@pot[:metadata] << z << br
|
|
326
|
+
#puts z unless z.empty?
|
|
327
|
+
end
|
|
328
|
+
end
|
|
329
|
+
def pot_metadata_src_trn
|
|
330
|
+
#@po4a_identify_type='type: Plain text'
|
|
331
|
+
meta_src=SiSU_Metadata::Summary.new(@md_src)
|
|
332
|
+
w=[]
|
|
333
|
+
w << [
|
|
334
|
+
meta_src.metadata_tags.title.main,
|
|
335
|
+
meta_src.metadata_tags.title.sub,
|
|
336
|
+
meta_src.metadata_tags.title.edition,
|
|
337
|
+
meta_src.metadata_tags.title.note,
|
|
338
|
+
meta_src.metadata_tags.title.short,
|
|
339
|
+
meta_src.metadata_tags.title.language,
|
|
340
|
+
meta_src.metadata_tags.title.language_char,
|
|
341
|
+
]
|
|
342
|
+
w << [
|
|
343
|
+
meta_src.metadata_tags.creator.head,
|
|
344
|
+
meta_src.metadata_tags.creator.author,
|
|
345
|
+
meta_src.metadata_tags.creator.contributor,
|
|
346
|
+
meta_src.metadata_tags.creator.illustrator,
|
|
347
|
+
meta_src.metadata_tags.creator.photographer,
|
|
348
|
+
meta_src.metadata_tags.creator.translator,
|
|
349
|
+
meta_src.metadata_tags.creator.audio,
|
|
350
|
+
meta_src.metadata_tags.creator.digitized_by,
|
|
351
|
+
meta_src.metadata_tags.creator.prepared_by,
|
|
352
|
+
]
|
|
353
|
+
w << [
|
|
354
|
+
meta_src.metadata_tags.rights.head,
|
|
355
|
+
meta_src.metadata_tags.rights.copyright.text,
|
|
356
|
+
meta_src.metadata_tags.rights.copyright.translation,
|
|
357
|
+
meta_src.metadata_tags.rights.copyright.illustrations,
|
|
358
|
+
meta_src.metadata_tags.rights.copyright.photographs,
|
|
359
|
+
meta_src.metadata_tags.rights.copyright.digitization,
|
|
360
|
+
meta_src.metadata_tags.rights.copyright.audio,
|
|
361
|
+
meta_src.metadata_tags.rights.license,
|
|
362
|
+
]
|
|
363
|
+
w << [
|
|
364
|
+
meta_src.metadata_tags.classify.head,
|
|
365
|
+
meta_src.metadata_tags.classify.subject,
|
|
366
|
+
meta_src.metadata_tags.classify.topic_register,
|
|
367
|
+
meta_src.metadata_tags.classify.loc,
|
|
368
|
+
meta_src.metadata_tags.classify.dewey,
|
|
369
|
+
]
|
|
370
|
+
w << [
|
|
371
|
+
meta_src.metadata_tags.date.head,
|
|
372
|
+
meta_src.metadata_tags.date.added_to_site,
|
|
373
|
+
meta_src.metadata_tags.date.available,
|
|
374
|
+
meta_src.metadata_tags.date.created,
|
|
375
|
+
meta_src.metadata_tags.date.issued,
|
|
376
|
+
meta_src.metadata_tags.date.modified,
|
|
377
|
+
meta_src.metadata_tags.date.published,
|
|
378
|
+
meta_src.metadata_tags.date.valid,
|
|
379
|
+
]
|
|
380
|
+
w << [
|
|
381
|
+
meta_src.processing_tags.make.language,
|
|
382
|
+
meta_src.processing_tags.make.headings,
|
|
383
|
+
meta_src.processing_tags.make.num_top,
|
|
384
|
+
meta_src.processing_tags.make.breaks,
|
|
385
|
+
meta_src.processing_tags.make.emphasis,
|
|
386
|
+
meta_src.processing_tags.make.bold,
|
|
387
|
+
meta_src.processing_tags.make.italics,
|
|
388
|
+
meta_src.processing_tags.make.texpdf_font,
|
|
389
|
+
]
|
|
390
|
+
w.each do |y|
|
|
391
|
+
z=''
|
|
392
|
+
y.each do |x|
|
|
393
|
+
if x
|
|
394
|
+
z += x + "\n" if x =~/^#|^msg(?:id|str)/
|
|
395
|
+
z += %{#{x}\n} if x =~/^@\S+?:(?: |$)/
|
|
396
|
+
z += %{#{x}\n} if x =~/^\s+:\S+?: /
|
|
397
|
+
end
|
|
398
|
+
end
|
|
399
|
+
@pot[:metadata] << z << br
|
|
400
|
+
#puts z unless z.empty?
|
|
401
|
+
end
|
|
402
|
+
end
|
|
403
|
+
def auto_translate?(set_to=nil)
|
|
404
|
+
@@auto_translation_=
|
|
405
|
+
if @md.opt.act[:po4a_lang_trans][:set]==:on
|
|
406
|
+
set_to \
|
|
407
|
+
? set_to
|
|
408
|
+
: @@auto_translation_
|
|
409
|
+
else :skip
|
|
410
|
+
end
|
|
411
|
+
end
|
|
412
|
+
def auto_translation(src_txt,markup=:src) # check for an appropriate request flag
|
|
413
|
+
auto_translate?(:skip)
|
|
414
|
+
begin
|
|
415
|
+
src_txt_clean=clean_text(src_txt,markup)
|
|
416
|
+
src_txt_clean=src_txt_clean.
|
|
417
|
+
gsub(/\n/,' ').
|
|
418
|
+
gsub(/"/,'\"').
|
|
419
|
+
gsub(/([()])/,'\\\\\1')
|
|
420
|
+
trans=''
|
|
421
|
+
unless auto_translate? == :skip
|
|
422
|
+
require 'timeout'
|
|
423
|
+
Timeout::timeout(60) {
|
|
424
|
+
trans=`trans -b -no-ansi en:#{@md.opt.f_pth[:lng_is]} #{src_txt_clean}`.strip
|
|
425
|
+
unless trans.empty?
|
|
426
|
+
trans + ' {[G.Tr]}http://translate.google.com'
|
|
427
|
+
end
|
|
428
|
+
}
|
|
429
|
+
end
|
|
430
|
+
trans
|
|
431
|
+
rescue
|
|
432
|
+
auto_translate?(:skip)
|
|
433
|
+
p 'timeout issues with translation, skip remaining'
|
|
434
|
+
end
|
|
435
|
+
end
|
|
436
|
+
def pot_structure
|
|
437
|
+
def heading(dob_src='',notes_s='',dob_trn='',notes_t='') #% used to extract the structure of a document
|
|
438
|
+
lv=n=n3=nil
|
|
439
|
+
lv=dob_src.ln
|
|
440
|
+
n=lv - 1
|
|
441
|
+
n3=lv + 2
|
|
442
|
+
util=nil
|
|
443
|
+
fn=(dob_src.name=~/[a-z\d]/i) ? dob_src.name : ''
|
|
444
|
+
mark="#{dob_src.lv}~#{fn} "
|
|
445
|
+
orig="#{mark}#{dob_src.obj}"
|
|
446
|
+
trans=((dob_trn=='') \
|
|
447
|
+
|| (dob_src.obj == dob_trn.obj)) \
|
|
448
|
+
? ''
|
|
449
|
+
: "#{mark}#{dob_trn.obj}"
|
|
450
|
+
if @md.opt.f_pth[:lng_is] !=@md.opt.lng_base \
|
|
451
|
+
and trans.empty? \
|
|
452
|
+
and auto_translate?
|
|
453
|
+
trans=auto_translation(dob_src.obj,:src)
|
|
454
|
+
end
|
|
455
|
+
util=pot_structure_wrap(orig,trans)
|
|
456
|
+
wrapped=util.line_wrap
|
|
457
|
+
@pot[:body] << wrapped << br # main text, contents, body KEEP
|
|
458
|
+
if @@endnotes[:para] \
|
|
459
|
+
and notes_s.length > 0 \
|
|
460
|
+
and not @@endnotes_
|
|
461
|
+
@pot[:body] << br
|
|
462
|
+
wrap_endnotes(notes_s,notes_t)
|
|
463
|
+
elsif @@endnotes[:para] \
|
|
464
|
+
and @@endnotes_
|
|
465
|
+
@pot[:body] << br*2
|
|
466
|
+
end
|
|
467
|
+
end
|
|
468
|
+
def para(dob_src='',notes_s='',dob_trn='',notes_t='') #% used to extract the structure of a document
|
|
469
|
+
util=nil
|
|
470
|
+
wrapped=if dob_src.indent =~/[1-9]/ \
|
|
471
|
+
and dob_src.indent == dob_src.hang
|
|
472
|
+
s_mark=desc=orig=trans=''
|
|
473
|
+
mark=if dob_src.bullet_
|
|
474
|
+
"_#{dob_src.indent}* "
|
|
475
|
+
else
|
|
476
|
+
"_#{dob_src.indent} "
|
|
477
|
+
end
|
|
478
|
+
orig="#{mark}#{dob_src.obj}"
|
|
479
|
+
trans=((dob_trn=='') \
|
|
480
|
+
|| (dob_src.obj == dob_trn.obj)) \
|
|
481
|
+
? ''
|
|
482
|
+
: "#{mark}#{dob_trn.obj}"
|
|
483
|
+
if @md.opt.f_pth[:lng_is] !=@md.opt.lng_base \
|
|
484
|
+
and trans.empty? \
|
|
485
|
+
and auto_translate?
|
|
486
|
+
trans=auto_translation(dob_src.obj,:src)
|
|
487
|
+
end
|
|
488
|
+
util=pot_structure_wrap(orig,trans)
|
|
489
|
+
elsif dob_src.hang =~/[0-9]/ \
|
|
490
|
+
and dob_src.indent != dob_src.hang
|
|
491
|
+
s_mark=desc=orig=trans=''
|
|
492
|
+
mark="_#{dob_src.hang}_#{dob_src.indent} "
|
|
493
|
+
orig="#{mark}#{dob_src.obj}"
|
|
494
|
+
trans=((dob_trn=='') \
|
|
495
|
+
|| (dob_src.obj == dob_trn.obj)) \
|
|
496
|
+
? ''
|
|
497
|
+
: "#{mark}#{dob_trn.obj}"
|
|
498
|
+
if @md.opt.f_pth[:lng_is] !=@md.opt.lng_base \
|
|
499
|
+
and trans.empty? \
|
|
500
|
+
and auto_translate?
|
|
501
|
+
trans=auto_translation(dob_src.obj,:src)
|
|
502
|
+
end
|
|
503
|
+
util=pot_structure_wrap(orig,trans)
|
|
504
|
+
else
|
|
505
|
+
s_mark=desc=orig=trans=''
|
|
506
|
+
if dob_src.bullet_
|
|
507
|
+
mark='_* '
|
|
508
|
+
orig="#{mark}#{dob_src.obj}"
|
|
509
|
+
trans=((dob_trn=='') \
|
|
510
|
+
|| (dob_src.obj == dob_trn.obj)) \
|
|
511
|
+
? ''
|
|
512
|
+
: "#{mark}#{dob_trn.obj}"
|
|
513
|
+
if @md.opt.f_pth[:lng_is] !=@md.opt.lng_base \
|
|
514
|
+
and trans.empty? \
|
|
515
|
+
and auto_translate?
|
|
516
|
+
trans=auto_translation(dob_src.obj,:src)
|
|
517
|
+
end
|
|
518
|
+
else
|
|
519
|
+
mark=''
|
|
520
|
+
orig=dob_src.obj
|
|
521
|
+
trans=((dob_trn=='') \
|
|
522
|
+
|| (dob_src.obj == dob_trn.obj)) \
|
|
523
|
+
? ''
|
|
524
|
+
: "#{mark}#{dob_trn.obj}"
|
|
525
|
+
if @md.opt.f_pth[:lng_is] !=@md.opt.lng_base \
|
|
526
|
+
and trans.empty? \
|
|
527
|
+
and auto_translate?
|
|
528
|
+
trans=auto_translation(dob_src.obj,:src)
|
|
529
|
+
end
|
|
530
|
+
end
|
|
531
|
+
util=pot_structure_wrap(orig,trans)
|
|
532
|
+
end
|
|
533
|
+
wrapped=util.line_wrap
|
|
534
|
+
@pot[:body] << wrapped << br # main text, contents, body KEEP
|
|
535
|
+
if @@endnotes[:para] \
|
|
536
|
+
and notes_s.length > 0 \
|
|
537
|
+
and not @@endnotes_
|
|
538
|
+
@pot[:body] << br
|
|
539
|
+
wrap_endnotes(notes_s,notes_t)
|
|
540
|
+
elsif @@endnotes[:para] \
|
|
541
|
+
and @@endnotes_
|
|
542
|
+
@pot[:body] << br*2
|
|
543
|
+
end
|
|
544
|
+
end
|
|
545
|
+
def block(dob_src='',notes_s='',dob_trn='',notes_t='') #% used to extract the structure of a document
|
|
546
|
+
mark_o ="block{\n\n"
|
|
547
|
+
mark_c ="\n\n}block"
|
|
548
|
+
orig="#{mark_o}#{dob_src.obj}#{mark_c}"
|
|
549
|
+
trans=((dob_trn=='') \
|
|
550
|
+
|| (dob_src.obj == dob_trn.obj)) \
|
|
551
|
+
? ''
|
|
552
|
+
: "#{mark_o}#{dob_trn.obj}#{mark_c}"
|
|
553
|
+
if @md.opt.f_pth[:lng_is] !=@md.opt.lng_base \
|
|
554
|
+
and trans.empty? \
|
|
555
|
+
and auto_translate?
|
|
556
|
+
trans=auto_translation(dob_src.obj,:src)
|
|
557
|
+
end
|
|
558
|
+
util=pot_structure_wrap(orig,trans)
|
|
559
|
+
unwrapped=util.no_line_wrap_block
|
|
560
|
+
@pot[:body] << unwrapped << br
|
|
561
|
+
end
|
|
562
|
+
def group(dob_src='',notes_s='',dob_trn='',notes_t='') #% used to extract the structure of a document
|
|
563
|
+
mark_o ="group{\n\n"
|
|
564
|
+
mark_c ="\n\n}group"
|
|
565
|
+
orig="#{mark_o}#{dob_src.obj}#{mark_c}"
|
|
566
|
+
trans=((dob_trn=='') \
|
|
567
|
+
|| (dob_src.obj == dob_trn.obj)) \
|
|
568
|
+
? ''
|
|
569
|
+
: "#{mark_o}#{dob_trn.obj}#{mark_c}"
|
|
570
|
+
if @md.opt.f_pth[:lng_is] !=@md.opt.lng_base \
|
|
571
|
+
and trans.empty? \
|
|
572
|
+
and auto_translate?
|
|
573
|
+
trans=auto_translation(dob_src.obj,:src)
|
|
574
|
+
end
|
|
575
|
+
util=pot_structure_wrap(orig,trans)
|
|
576
|
+
unwrapped=util.no_line_wrap_block
|
|
577
|
+
@pot[:body] << unwrapped << br
|
|
578
|
+
end
|
|
579
|
+
def verse(dob_src='',notes_s='',dob_trn='',notes_t='') #% used to extract the structure of a document
|
|
580
|
+
mark="poem{\n\nverse\n\nverse\n\n...\n\n}poem"
|
|
581
|
+
instruct=s_mark=''
|
|
582
|
+
if @md.opt.act[:maintenance][:set]==:on
|
|
583
|
+
instruct=%{\n# verse are part of the text block described as a poem, } \
|
|
584
|
+
+ %{the first verse is preceeded by an opening marker, } \
|
|
585
|
+
+ %{and the last verse by a closing marker, } \
|
|
586
|
+
+ %{the content of which should remain unwrapped}
|
|
587
|
+
s_mark="\n# " + %{"\\n\\n#{mark}\\n\\n"}
|
|
588
|
+
end
|
|
589
|
+
orig=dob_src.obj
|
|
590
|
+
trans=(dob_trn=='') \
|
|
591
|
+
? ''
|
|
592
|
+
: dob_trn.obj
|
|
593
|
+
util=pot_structure_wrap(orig,trans)
|
|
594
|
+
unwrapped=util.no_line_wrap_block
|
|
595
|
+
@pot[:body] << unwrapped << br
|
|
596
|
+
end
|
|
597
|
+
def code(dob_src='',notes_s='',dob_trn='',notes_t='') #% used to extract the structure of a document
|
|
598
|
+
mark_o ="code{\n\n"
|
|
599
|
+
mark_c ="\n\n}code"
|
|
600
|
+
orig="#{mark_o}#{dob_src.obj}#{mark_c}"
|
|
601
|
+
trans=(dob_trn=='') \
|
|
602
|
+
? ''
|
|
603
|
+
: "#{mark_o}#{dob_trn.obj}#{mark_c}"
|
|
604
|
+
util=pot_structure_wrap(orig,trans)
|
|
605
|
+
unwrapped=util.no_line_wrap_block
|
|
606
|
+
@pot[:body] << unwrapped << br
|
|
607
|
+
end
|
|
608
|
+
def table(dob_src='',notes_s='',dob_trn='',notes_t='') #% used to extract the structure of a document
|
|
609
|
+
mark_o ="table{\n\n"
|
|
610
|
+
mark_c ="\n\n}table"
|
|
611
|
+
orig="#{mark_o}#{dob_src.obj}#{mark_c}"
|
|
612
|
+
orig=orig.gsub(/#{Mx[:tc_c]}/m,"\n")
|
|
613
|
+
trans=(dob_trn=='') \
|
|
614
|
+
? ''
|
|
615
|
+
: "#{mark_o}#{dob_trn.obj}#{mark_c}"
|
|
616
|
+
trans=trans.gsub(/#{Mx[:tc_c]}/m,"\n")
|
|
617
|
+
util=pot_structure_wrap(orig,trans)
|
|
618
|
+
unwrapped=util.no_line_wrap_block
|
|
619
|
+
@pot[:body] << unwrapped << br
|
|
620
|
+
end
|
|
621
|
+
def idx_markup(idx)
|
|
622
|
+
struct=['={' + "\n "]
|
|
623
|
+
idx.sort.each do |x|
|
|
624
|
+
x.each_with_index do |y,i0|
|
|
625
|
+
case y
|
|
626
|
+
when String
|
|
627
|
+
unless struct[-1] =~/=\{/
|
|
628
|
+
struct << ' ;' + "\n "
|
|
629
|
+
end
|
|
630
|
+
struct << y
|
|
631
|
+
if x[i0+1].class == Hash \
|
|
632
|
+
and x[i0+1][:sub].length > 0
|
|
633
|
+
struct << ' :' + "\n "
|
|
634
|
+
end
|
|
635
|
+
when Hash
|
|
636
|
+
if y[:plus].to_i > 0
|
|
637
|
+
struct << '+' + y[:plus].to_s
|
|
638
|
+
end
|
|
639
|
+
if y[:sub].length > 0
|
|
640
|
+
y[:sub].each_with_index do |z,i1|
|
|
641
|
+
z.each_with_index do |a,i2|
|
|
642
|
+
if z.length > 0
|
|
643
|
+
struct << a[0]
|
|
644
|
+
if a[1][:plus].to_i > 0
|
|
645
|
+
struct << '+' + a[1][:plus].to_s
|
|
646
|
+
end
|
|
647
|
+
if (i1 + 1) < y[:sub].length
|
|
648
|
+
struct << '|'
|
|
649
|
+
end
|
|
650
|
+
end
|
|
651
|
+
end
|
|
652
|
+
end
|
|
653
|
+
end
|
|
654
|
+
end
|
|
655
|
+
end
|
|
656
|
+
end
|
|
657
|
+
struct << "\n" + '}'
|
|
658
|
+
#puts struct.join
|
|
659
|
+
struct.join
|
|
660
|
+
end
|
|
661
|
+
def idx(dob_src='') #% used for book index but broken as original markup lost, already abstracted, fix
|
|
662
|
+
orig=pot_structure.idx_markup(dob_src.idx) #'={' + dob_src.idx + '}'
|
|
663
|
+
util=pot_structure_wrap(orig,'')
|
|
664
|
+
unwrapped=util.no_line_wrap_block
|
|
665
|
+
if @pot[:body][-1] == "\n"
|
|
666
|
+
@pot[:body][-1] = unwrapped #<< br
|
|
667
|
+
@pot[:body] << br
|
|
668
|
+
else # expect to catch all above, problem if wraps, must =~/^=\{/
|
|
669
|
+
@pot[:body] << unwrapped << br # places idx in separate object
|
|
670
|
+
end
|
|
671
|
+
end
|
|
672
|
+
self
|
|
673
|
+
end
|
|
674
|
+
def compare_structure_src_trn(data_src,data_trn,todo)
|
|
675
|
+
#@endnotes,@copen,@pot_contents_close=Array.new(3){[]}
|
|
676
|
+
a_l= data_src.length
|
|
677
|
+
s,t=0,0
|
|
678
|
+
0.upto(a_l-1) do |i|
|
|
679
|
+
if todo==:compare
|
|
680
|
+
unless data_src[s] \
|
|
681
|
+
and data_trn[t]
|
|
682
|
+
break
|
|
683
|
+
end
|
|
684
|
+
if data_src[s].of == :comment \
|
|
685
|
+
and data_trn[t].of == :comment \
|
|
686
|
+
and (data_src[s].is == data_trn[t].is)
|
|
687
|
+
s+=1;t+=1
|
|
688
|
+
next
|
|
689
|
+
end
|
|
690
|
+
if ((data_src[s].is == :comment) \
|
|
691
|
+
|| (data_trn[t].is == :comment)) \
|
|
692
|
+
and (data_src[s].is != data_trn[t].is)
|
|
693
|
+
if data_src[s].is == :comment
|
|
694
|
+
if @md.opt.act[:maintenance][:set]==:on
|
|
695
|
+
puts "src (comment):\n\t" \
|
|
696
|
+
+ data_src[s].obj
|
|
697
|
+
end
|
|
698
|
+
s+=1
|
|
699
|
+
#next if data_src[s].is == :comment
|
|
700
|
+
elsif data_trn[t].is == :comment
|
|
701
|
+
if @md.opt.act[:maintenance][:set]==:on
|
|
702
|
+
puts "trans (comment):\n\t" \
|
|
703
|
+
+ data_trn[t].obj
|
|
704
|
+
end
|
|
705
|
+
t+=1
|
|
706
|
+
#next if data_trn[t].is == :comment
|
|
707
|
+
end
|
|
708
|
+
end
|
|
709
|
+
if ((defined? data_src[s].ocn) \
|
|
710
|
+
&& (data_src[s].ocn.is_a?(Fixnum))) \
|
|
711
|
+
and ((defined? data_trn[t].ocn) \
|
|
712
|
+
&& (data_trn[t].ocn.is_a?(Fixnum))) \
|
|
713
|
+
and (data_src[s].ocn == data_trn[t].ocn)
|
|
714
|
+
@m_s,@m_t=s,t
|
|
715
|
+
elsif ((defined? data_src[s].ocn) \
|
|
716
|
+
&& (data_src[s].ocn.is_a?(Fixnum))) \
|
|
717
|
+
and ((defined? data_trn[t].ocn) \
|
|
718
|
+
&& (data_trn[t].ocn.is_a?(Fixnum))) \
|
|
719
|
+
and (data_src[s].ocn != data_trn[t].ocn)
|
|
720
|
+
p '--- OCN ---'
|
|
721
|
+
p 'mis-match'
|
|
722
|
+
p data_src[s].ocn if defined? data_src[s].ocn
|
|
723
|
+
p data_src[s].obj if defined? data_src[s].obj
|
|
724
|
+
p data_trn[t].ocn if defined? data_trn[t].ocn
|
|
725
|
+
p data_trn[t].obj if defined? data_trn[t].obj
|
|
726
|
+
p '---'
|
|
727
|
+
p 'previous match'
|
|
728
|
+
p data_src[@m_s].ocn if defined? data_src[@m_s].ocn
|
|
729
|
+
p data_src[@m_s].obj if defined? data_src[@m_s].obj
|
|
730
|
+
p data_trn[@m_t].ocn if defined? data_trn[@m_t].ocn
|
|
731
|
+
p data_trn[@m_t].obj if defined? data_trn[@m_s].obj
|
|
732
|
+
exit
|
|
733
|
+
elsif (((defined? data_src[s].ocn) \
|
|
734
|
+
&& (defined? data_trn[t].ocn)) \
|
|
735
|
+
and data_src[s].ocn.class != data_trn[t].ocn.class)
|
|
736
|
+
p '--- OCN class ---'
|
|
737
|
+
p 'mis-match'
|
|
738
|
+
p data_src[s].ocn if defined? data_src[s].ocn
|
|
739
|
+
p data_src[s].obj if defined? data_src[s].obj
|
|
740
|
+
p data_trn[t].ocn if defined? data_trn[t].ocn
|
|
741
|
+
p data_trn[t].obj if defined? data_trn[t].obj
|
|
742
|
+
#p '---'
|
|
743
|
+
#p 'previous match'
|
|
744
|
+
#p data_src[@m_s].ocn
|
|
745
|
+
#p data_src[@m_s].obj
|
|
746
|
+
#p data_trn[@m_t].ocn
|
|
747
|
+
#p data_trn[@m_t].obj
|
|
748
|
+
#elsif (defined? data_src[s].ocn != defined? data_trn[t].ocn) \
|
|
749
|
+
#and (data_src[s].ocn.nil? != data_trn[t].ocn.nil?)
|
|
750
|
+
# p '--- missing OCN? ---'
|
|
751
|
+
# p 'mis-match'
|
|
752
|
+
# p data_src[s].ocn if defined? data_src[s].ocn
|
|
753
|
+
# p data_src[s].obj
|
|
754
|
+
# p data_trn[t].ocn if defined? data_trn[t].ocn
|
|
755
|
+
# p data_trn[t].obj
|
|
756
|
+
else
|
|
757
|
+
end
|
|
758
|
+
end
|
|
759
|
+
notes_s=''
|
|
760
|
+
data_src[s],notes_s=markup(data_src[s])
|
|
761
|
+
data_src[s],nul=pot_data(data_src[s],notes_s)
|
|
762
|
+
s+=1;t+=1
|
|
763
|
+
end
|
|
764
|
+
@pot #watch
|
|
765
|
+
end
|
|
766
|
+
def pot_data(dob_src='',notes_s)
|
|
767
|
+
if dob_src.obj !~/(^#{Rx[:meta]}|#{Mx[:br_eof]}|#{Mx[:br_endnotes]})/
|
|
768
|
+
if defined? dob_src.ocn \
|
|
769
|
+
and dob_src.ocn.to_s =~/\d+/
|
|
770
|
+
paranum=dob_src.ocn.to_s
|
|
771
|
+
@p_num=SiSU_Po4aUtils::ParagraphNumber.new(paranum)
|
|
772
|
+
end
|
|
773
|
+
case dob_src.is
|
|
774
|
+
when :heading
|
|
775
|
+
pot_structure.heading(dob_src,notes_s)
|
|
776
|
+
when :para
|
|
777
|
+
pot_structure.para(dob_src,notes_s)
|
|
778
|
+
when :group
|
|
779
|
+
pot_structure.group(dob_src,notes_s)
|
|
780
|
+
when :block
|
|
781
|
+
pot_structure.block(dob_src,notes_s)
|
|
782
|
+
when :verse
|
|
783
|
+
pot_structure.verse(dob_src,notes_s)
|
|
784
|
+
when :code
|
|
785
|
+
pot_structure.code(dob_src,notes_s)
|
|
786
|
+
when :table
|
|
787
|
+
pot_structure.table(dob_src,notes_s)
|
|
788
|
+
end
|
|
789
|
+
if defined? dob_src.idx \
|
|
790
|
+
and not dob_src.idx.nil? \
|
|
791
|
+
and not dob_src.idx.empty?
|
|
792
|
+
pot_structure.idx(dob_src)
|
|
793
|
+
end
|
|
794
|
+
#if dob_src ## Clean Prepared Text
|
|
795
|
+
# dob_src.obj=dob_src.obj.gsub(/<!.+!>/,' ').
|
|
796
|
+
# gsub(/<:\S+>/,' ') if dob_src ## Clean Prepared Text
|
|
797
|
+
#end
|
|
798
|
+
end
|
|
799
|
+
#[dob_src,dob_trn]
|
|
800
|
+
end
|
|
801
|
+
def markup(dob)
|
|
802
|
+
dob,notes=objects.textface_marks_po4a(dob,:separate)
|
|
803
|
+
[dob,notes]
|
|
804
|
+
end
|
|
805
|
+
def publish(fn,pot)
|
|
806
|
+
content=[]
|
|
807
|
+
content << pot[:open]
|
|
808
|
+
content << pot[:head]
|
|
809
|
+
content << pot[:metadata]
|
|
810
|
+
content << pot[:body]
|
|
811
|
+
content << @@endnotes[:end] if @@endnotes_
|
|
812
|
+
Output.new(fn,content,@md,@process).po4a
|
|
813
|
+
@@endnotes={ para: [], end: [] }
|
|
814
|
+
end
|
|
815
|
+
end
|
|
816
|
+
class Output <Source
|
|
817
|
+
include SiSU_Param
|
|
818
|
+
include SiSU_Env
|
|
819
|
+
def initialize(fn,content,md,process=:complete)
|
|
820
|
+
@fn,@content,@md,@process=fn,content,md,process
|
|
821
|
+
@file=SiSU_Env::FileOp.new(md,fn)
|
|
822
|
+
end
|
|
823
|
+
def po4a #%pot output
|
|
824
|
+
file_pot=@file.write_file.po4a_sst
|
|
825
|
+
#file_pot=(@md.opt.f_pth[:lng] == @md.opt.lng_base) \
|
|
826
|
+
#? @file.write_file.pot
|
|
827
|
+
#: @file.write_file.po
|
|
828
|
+
@sisu=[]
|
|
829
|
+
emptyline=0
|
|
830
|
+
@content.each do |para| # this is a hack
|
|
831
|
+
if para.is_a?(Array) \
|
|
832
|
+
and para.length > 0
|
|
833
|
+
para.each do |line|
|
|
834
|
+
if line
|
|
835
|
+
line=line.gsub(/\s+$/m,'').
|
|
836
|
+
gsub(/^\A[ ]*\Z/m,'')
|
|
837
|
+
if line=~/^\A[ ]*\Z/m
|
|
838
|
+
emptyline+=1
|
|
839
|
+
else emptyline=0
|
|
840
|
+
end
|
|
841
|
+
file_pot.puts line if emptyline < 2 #remove extra line spaces (fix upstream)
|
|
842
|
+
end
|
|
843
|
+
end
|
|
844
|
+
else file_pot.puts para #unix plaintext # /^([*=-]|\.){5}/
|
|
845
|
+
end
|
|
846
|
+
end
|
|
847
|
+
file_pot.close
|
|
848
|
+
SiSU_Po4aUtils::PotNumber.new.reset
|
|
849
|
+
#po4a_git
|
|
850
|
+
end
|
|
851
|
+
def po4a_git
|
|
852
|
+
unless @md.opt.act[:maintenance][:set]==:on
|
|
853
|
+
require_relative 'git' # git.rb
|
|
854
|
+
git=SiSU_Git::Source.new(@md.opt,@process)
|
|
855
|
+
unless FileTest.directory?(@file.output_path.pot_git.dir)
|
|
856
|
+
git.create_file_structure_git
|
|
857
|
+
end
|
|
858
|
+
if @md.opt.f_pth[:lng] == @md.opt.lng_base
|
|
859
|
+
FileUtils::cp(
|
|
860
|
+
@file.place_file.pot.dir,
|
|
861
|
+
@file.output_path.pot_git.dir
|
|
862
|
+
)
|
|
863
|
+
else # naive, work on -->
|
|
864
|
+
FileUtils::cp(
|
|
865
|
+
@file.place_file.po.dir,
|
|
866
|
+
@file.output_path.po_git.dir
|
|
867
|
+
) #unless FileTest.file?(@file.place_file.po_git.dir)
|
|
868
|
+
end
|
|
869
|
+
git.read
|
|
870
|
+
end
|
|
871
|
+
end
|
|
872
|
+
end
|
|
873
|
+
end
|
|
874
|
+
end
|
|
875
|
+
__END__
|
|
876
|
+
REMOVE
|
|
877
|
+
!\|#\|&*\|-\|/\|_\|{\|}\|~\|&#
|
|
878
|
+
|
|
879
|
+
tables are problematic, difficult to reconstitute instruction, check
|
|
880
|
+
|
|
881
|
+
metadata, move to top? and work on
|
|
882
|
+
|
|
883
|
+
footnotes, different types, asterisk, also do you want to have separate
|
|
884
|
+
paragraphs, or breaks within one block?
|
|
885
|
+
|
|
886
|
+
where no ocn appropriately use ~# or -# or indeed 1~name-
|
|
887
|
+
|
|
888
|
+
comments in document, what to do about them, not sure they are currently
|
|
889
|
+
retained in dal, could be quite valuable to keep
|
|
890
|
+
|
|
891
|
+
Translate Shell
|
|
892
|
+
http://www.soimort.org/translate-shell/
|
|
893
|
+
translate.google.com
|