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,229 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
=begin
|
|
3
|
+
|
|
4
|
+
* Name: SiSU
|
|
5
|
+
|
|
6
|
+
** Description: documents, structuring, processing, publishing, search
|
|
7
|
+
*** summary of generated outputs and metadata
|
|
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/xml_md_oai_pmh_dc.rb;hb=HEAD>
|
|
55
|
+
|
|
56
|
+
=end
|
|
57
|
+
module SiSU_XML_Metadata
|
|
58
|
+
require_relative 'se' # se.rb
|
|
59
|
+
include SiSU_Env
|
|
60
|
+
require_relative 'dp' # dp.rb
|
|
61
|
+
include SiSU_Param
|
|
62
|
+
class OAI_PMH
|
|
63
|
+
def initialize(opt)
|
|
64
|
+
@md=SiSU_Param::Parameters.new(opt).get
|
|
65
|
+
@oai_pmh=[]
|
|
66
|
+
end
|
|
67
|
+
def read
|
|
68
|
+
output
|
|
69
|
+
end
|
|
70
|
+
def pre
|
|
71
|
+
<<WOK
|
|
72
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
73
|
+
<oai_dc:dc
|
|
74
|
+
xmlns:oai_dc="http://www.openarchives.org/OAI/2.0/oai_dc/"
|
|
75
|
+
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
|
76
|
+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
|
77
|
+
xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai_dc/
|
|
78
|
+
http://www.openarchives.org/OAI/2.0/oai_dc.xsd">
|
|
79
|
+
WOK
|
|
80
|
+
end
|
|
81
|
+
def body
|
|
82
|
+
if defined? @md.title.full \
|
|
83
|
+
and @md.title.full=~/\S+/ # DublinCore 1 - title
|
|
84
|
+
@oai_pmh << %{ <dc:title xml:lang="en">#{@md.title.full}</dc:title>\n}
|
|
85
|
+
end
|
|
86
|
+
if defined? @md.creator.author \
|
|
87
|
+
and @md.creator.author=~/\S+/ # DublinCore 2 - creator/author (author)
|
|
88
|
+
txt=meta_content_clean(@md.creator.author)
|
|
89
|
+
@oai_pmh << %{ <dc:author>#{txt}</dc:author>\n}
|
|
90
|
+
end
|
|
91
|
+
if defined? @md.classify.subject \
|
|
92
|
+
and @md.classify.subject=~/\S+/ # DublinCore 3 - subject (us library of congress, eric or udc, or schema???)
|
|
93
|
+
txt=meta_content_clean(@md.classify.subject)
|
|
94
|
+
@oai_pmh << %{ <dc:subject>#{txt}</dc:subject>\n}
|
|
95
|
+
end
|
|
96
|
+
if defined? @md.classify.keywords \
|
|
97
|
+
and @md.classify.keywords=~/\S+/
|
|
98
|
+
txt=meta_content_clean(@md.classify.keywords)
|
|
99
|
+
@oai_pmh << %{ <dc:keywords>#{txt}</dc:keywords>\n}
|
|
100
|
+
end
|
|
101
|
+
if @md.publisher # DublinCore 5 - publisher (current copy published by)
|
|
102
|
+
txt=meta_content_clean(@md.publisher)
|
|
103
|
+
@oai_pmh << %{ <dc:publisher>#{txt}</dc:publisher>\n}
|
|
104
|
+
end
|
|
105
|
+
if defined? @md.creator.contributor \
|
|
106
|
+
and @md.creator.contributor=~/\S+/ # DublinCore 6 - contributor
|
|
107
|
+
txt=meta_content_clean(@md.creator.contributor)
|
|
108
|
+
@oai_pmh << %{ <dc:contributor>#{txt}</dc:contributor>\n}
|
|
109
|
+
end
|
|
110
|
+
if defined? @md.date.published \
|
|
111
|
+
and @md.date.published=~/\S+/ # DublinCore 7 - date year-mm-dd
|
|
112
|
+
@oai_pmh << %{ <dc:date>#{@md.date.published}</dc:date>\n}
|
|
113
|
+
end
|
|
114
|
+
if defined? @md.date.created \
|
|
115
|
+
and @md.date.created=~/\S+/ # DublinCore 7 - date.created
|
|
116
|
+
@oai_pmh << %{ <dc:date_created>#{@md.date.created}</dc:date_created>\n}
|
|
117
|
+
end
|
|
118
|
+
if defined? @md.date.issued \
|
|
119
|
+
and @md.date.issued=~/\S+/ # DublinCore 7 - date.issued
|
|
120
|
+
@oai_pmh << %{ <dc:date_issued>#{@md.date.issued}</dc:date_issued>\n}
|
|
121
|
+
end
|
|
122
|
+
if defined? @md.date.available \
|
|
123
|
+
and @md.date.available=~/\S+/ # DublinCore 7 - date.available
|
|
124
|
+
@oai_pmh << %{ <dc:date_available>#{@md.date.available}</dc:date_available>\n}
|
|
125
|
+
end
|
|
126
|
+
if defined? @md.date.valid \
|
|
127
|
+
and @md.date.valid=~/\S+/ # DublinCore 7 - date.valid
|
|
128
|
+
@oai_pmh << %{ <dc:date_valid>#{@md.date.valid}</dc:date_valid>\n}
|
|
129
|
+
end
|
|
130
|
+
if defined? @md.date.modified \
|
|
131
|
+
and @md.date.modified=~/\S+/ # DublinCore 7 - date.modified
|
|
132
|
+
@oai_pmh << %{ <dc:date_modified>#{@md.date.modified}</dc:date_modified>\n}
|
|
133
|
+
end
|
|
134
|
+
if defined? @md.notes.description \
|
|
135
|
+
and @md.notes.description=~/\S+/ # DublinCore 4 - description
|
|
136
|
+
txt=meta_content_clean(@md.notes.description)
|
|
137
|
+
@oai_pmh << %{ <dc:description>#{txt}</dc:description>\n}
|
|
138
|
+
end
|
|
139
|
+
if defined? @md.notes.coverage \
|
|
140
|
+
and @md.notes.coverage=~/\S+/ # DublinCore 14 - coverage
|
|
141
|
+
txt=meta_content_clean(@md.notes.coverage)
|
|
142
|
+
@oai_pmh << %{ <dc:coverage>#{txt}</dc:coverage>\n}
|
|
143
|
+
end
|
|
144
|
+
if defined? @md.notes.relation \
|
|
145
|
+
and @md.notes.relation=~/\S+/ # DublinCore 13 - relation
|
|
146
|
+
txt=meta_content_clean(@md.notes.relation)
|
|
147
|
+
@oai_pmh << %{ <dc:relation>#{txt}</dc:relation>\n}
|
|
148
|
+
end
|
|
149
|
+
if defined? @md.notes.type \
|
|
150
|
+
and @md.notes.type=~/\S+/ # DublinCore 8 - type
|
|
151
|
+
txt=meta_content_clean(@md.notes.type)
|
|
152
|
+
@oai_pmh << %{ <dc:type>#{txt}</dc:type>\n}
|
|
153
|
+
end
|
|
154
|
+
if defined? @md.notes.format \
|
|
155
|
+
and @md.notes.format=~/\S+/ # DublinCore 9 - format
|
|
156
|
+
txt=meta_content_clean(@md.notes.format)
|
|
157
|
+
@oai_pmh << %{ <dc:format>#{txt}</dc:format>\n}
|
|
158
|
+
end
|
|
159
|
+
#if defined? @md.identifier.sisupod \
|
|
160
|
+
#and @md.identifier.sisupod=~/\S+/ # DublinCore 10 - identifier
|
|
161
|
+
# txt=meta_content_clean(@md.identifier.sisupod)
|
|
162
|
+
# @oai_pmh << %{ <dc:identifier>#{txt}</dc:identifier>\n}
|
|
163
|
+
#end
|
|
164
|
+
if defined? @md.original.source \
|
|
165
|
+
and @md.original.source=~/\S+/ # DublinCore 11 - source
|
|
166
|
+
txt=meta_content_clean(@md.original.source)
|
|
167
|
+
@oai_pmh << %{ <dc:source>#{txt}</dc:source>\n}
|
|
168
|
+
end
|
|
169
|
+
if defined? @md.title.language \
|
|
170
|
+
and @md.title.language=~/\S+/ # DublinCore 12 - language (English)
|
|
171
|
+
@oai_pmh << %{ <dc:language>#{@md.title.language}</dc:language>\n}
|
|
172
|
+
end
|
|
173
|
+
if defined? @md.original.language \
|
|
174
|
+
and @md.original.language=~/\S+/
|
|
175
|
+
@oai_pmh << %{ <dc:language>#{@md.original.language}</dc:language>\n}
|
|
176
|
+
end
|
|
177
|
+
if defined? @md.rights.all \
|
|
178
|
+
and @md.rights.all=~/\S+/ # DublinCore 15 - rights
|
|
179
|
+
txt=meta_content_clean(@md.rights.all)
|
|
180
|
+
@oai_pmh << %{ <dc:rights>#{txt}</dc:rights>\n}
|
|
181
|
+
end
|
|
182
|
+
@oai_pmh
|
|
183
|
+
end
|
|
184
|
+
def meta_content_clean(content='')
|
|
185
|
+
unless content.nil?
|
|
186
|
+
content=content.tr('"',"'")
|
|
187
|
+
end
|
|
188
|
+
content
|
|
189
|
+
end
|
|
190
|
+
def post
|
|
191
|
+
'</oai_dc:dc>'
|
|
192
|
+
end
|
|
193
|
+
def output
|
|
194
|
+
SiSU_Env::FileOp.new(@md).mkdir
|
|
195
|
+
oai_pmh=SiSU_Env::FileOp.new(@md,@md.fn[:oai_pmh]).mkfile #implement in param
|
|
196
|
+
oai_pmh << pre
|
|
197
|
+
body.each do |x|
|
|
198
|
+
oai_pmh << x
|
|
199
|
+
end
|
|
200
|
+
oai_pmh << post
|
|
201
|
+
end
|
|
202
|
+
end
|
|
203
|
+
end
|
|
204
|
+
__END__
|
|
205
|
+
http://www.openarchives.org/pmh/
|
|
206
|
+
http://www.openarchives.org/OAI/2.0/openarchivesprotocol.htm#dublincore
|
|
207
|
+
http://es.dublincore.org/documents/usageguide/elements.shtml
|
|
208
|
+
http://dublincore.org/documents/dces/
|
|
209
|
+
see also http://dublincore.org/documents/dcmes-xml/
|
|
210
|
+
#http://www.openarchives.org/OAI/2.0/openarchivesprotocol.htm#dublincore
|
|
211
|
+
#sample implementation, e.g. 2
|
|
212
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
213
|
+
<oai_dc:dc
|
|
214
|
+
xmlns:oai_dc="http://www.openarchives.org/OAI/2.0/oai_dc/"
|
|
215
|
+
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
|
216
|
+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
|
217
|
+
xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai_dc/
|
|
218
|
+
http://www.openarchives.org/OAI/2.0/oai_dc.xsd">
|
|
219
|
+
<dc:title xml:lang="en">Grassmann's space analysis</dc:title>
|
|
220
|
+
<dc:author>Hyde, E. W. (Edward Wyllys)</dc:author>
|
|
221
|
+
<dc:subject>LCSH:Ausdehnungslehre; LCCN QA205.H99</dc:subject>
|
|
222
|
+
<dc:publisher>J. Wiley & Sons</dc:publisher>
|
|
223
|
+
<dc:date>Created: 1906; Available: 1991</dc:date>
|
|
224
|
+
<dc:type>text</dc:type>
|
|
225
|
+
<dc:identifier>http://resolver.library.cornell.edu/math/1796949
|
|
226
|
+
</dc:identifier>
|
|
227
|
+
<dc:language>english</dc:language>
|
|
228
|
+
<dc:rights xml:lang="en">Public Domain</dc:rights>
|
|
229
|
+
</oai_dc:dc>
|
|
@@ -0,0 +1,887 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
=begin
|
|
3
|
+
|
|
4
|
+
* Name: SiSU
|
|
5
|
+
|
|
6
|
+
** Description: documents, structuring, processing, publishing, search
|
|
7
|
+
*** opendocument text 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/odf.rb;hb=HEAD>
|
|
55
|
+
|
|
56
|
+
=end
|
|
57
|
+
module SiSU_XML_ODF_ODT
|
|
58
|
+
require_relative 'se_hub_particulars' # se_hub_particulars.rb
|
|
59
|
+
include SiSU_Particulars
|
|
60
|
+
require_relative 'ao' # ao.rb
|
|
61
|
+
require_relative 'se' # se.rb
|
|
62
|
+
include SiSU_Env
|
|
63
|
+
require_relative 'xml_parts' # xml_parts.rb
|
|
64
|
+
require_relative 'xml_odf_odt_format' # xml_odf_odt_format.rb
|
|
65
|
+
include SiSU_XML_ODF_ODT_Format
|
|
66
|
+
require_relative 'shared_metadata' # shared_metadata.rb
|
|
67
|
+
require_relative 'txt_shared' # txt_shared.rb
|
|
68
|
+
require_relative 'xml_shared' # xml_shared.rb
|
|
69
|
+
include SiSU_XML_Munge
|
|
70
|
+
require_relative 'xml_persist' # xml_persist.rb
|
|
71
|
+
@@alt_id_count,@@alt_id_count=0,0
|
|
72
|
+
class Source
|
|
73
|
+
begin
|
|
74
|
+
require 'zlib'
|
|
75
|
+
require 'find'
|
|
76
|
+
rescue LoadError
|
|
77
|
+
SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).
|
|
78
|
+
error('zlib or find NOT FOUND (LoadError)')
|
|
79
|
+
end
|
|
80
|
+
def initialize(opt)
|
|
81
|
+
@opt=opt
|
|
82
|
+
@particulars=SiSU_Particulars::CombinedSingleton.instance.get_all(opt)
|
|
83
|
+
@@endnotes_para=[]
|
|
84
|
+
end
|
|
85
|
+
def read
|
|
86
|
+
begin
|
|
87
|
+
@md,@env,@ao_array=@particulars.md,@particulars.env,@particulars.ao_array
|
|
88
|
+
unless @opt.act[:quiet][:set]==:on
|
|
89
|
+
tool=(@opt.act[:verbose][:set]==:on \
|
|
90
|
+
|| @opt.act[:verbose_plus][:set]==:on \
|
|
91
|
+
|| @opt.act[:maintenance][:set]==:on) \
|
|
92
|
+
? "#{@env.program.odf_viewer} file://#{@md.file.output_path.odt.dir}/#{@md.file.base_filename.odt}"
|
|
93
|
+
: "[#{@opt.f_pth[:lng_is]}] #{@opt.fno}"
|
|
94
|
+
(@opt.act[:verbose][:set]==:on \
|
|
95
|
+
|| @opt.act[:verbose_plus][:set]==:on \
|
|
96
|
+
|| @opt.act[:maintenance][:set]==:on) \
|
|
97
|
+
? SiSU_Screen::Ansi.new(
|
|
98
|
+
@opt.act[:color_state][:set],
|
|
99
|
+
'Opendocument (ODF:ODT)',
|
|
100
|
+
tool
|
|
101
|
+
).green_hi_blue
|
|
102
|
+
: SiSU_Screen::Ansi.new(
|
|
103
|
+
@opt.act[:color_state][:set],
|
|
104
|
+
'Opendocument (ODF:ODT)',
|
|
105
|
+
tool
|
|
106
|
+
).green_title_hi
|
|
107
|
+
if (@opt.act[:verbose_plus][:set]==:on \
|
|
108
|
+
|| @opt.act[:maintenance][:set]==:on)
|
|
109
|
+
SiSU_Screen::Ansi.new(
|
|
110
|
+
@opt.act[:color_state][:set],
|
|
111
|
+
@opt.fns,
|
|
112
|
+
'file://' \
|
|
113
|
+
+ @md.file.output_path.odt.dir + '/' \
|
|
114
|
+
+ @md.file.base_filename.odt
|
|
115
|
+
).flow
|
|
116
|
+
end
|
|
117
|
+
end
|
|
118
|
+
SiSU_XML_ODF_ODT::Source::Scroll.new(@particulars).songsheet
|
|
119
|
+
rescue
|
|
120
|
+
SiSU_Errors::Rescued.new($!,$@,@opt.selections.str,@opt.fns).location do
|
|
121
|
+
__LINE__.to_s + ':' + __FILE__
|
|
122
|
+
end
|
|
123
|
+
ensure
|
|
124
|
+
Dir.chdir(@opt.f_pth[:pth])
|
|
125
|
+
end
|
|
126
|
+
end
|
|
127
|
+
private
|
|
128
|
+
class Scroll <Source
|
|
129
|
+
require_relative 'txt_shared' # txt_shared.rb
|
|
130
|
+
include SiSU_Parts_XML
|
|
131
|
+
@@img_count=0
|
|
132
|
+
@@docstart=true
|
|
133
|
+
@@fns=nil
|
|
134
|
+
def initialize(particulars)
|
|
135
|
+
@md,@env,@ao_array=particulars.md,particulars.env,particulars.ao_array
|
|
136
|
+
@make=SiSU_Env::ProcessingSettings.new(@md)
|
|
137
|
+
@tab="\t"
|
|
138
|
+
@br=(@md.opt.act[:maintenance][:set]==:on) \
|
|
139
|
+
? '' : ''
|
|
140
|
+
end
|
|
141
|
+
def songsheet
|
|
142
|
+
begin
|
|
143
|
+
@per=SiSU_XML_Persist::Persist.new
|
|
144
|
+
pre
|
|
145
|
+
@data=markup(@ao_array)
|
|
146
|
+
publish
|
|
147
|
+
ensure
|
|
148
|
+
SiSU_XML_Persist::Persist.new.persist_init
|
|
149
|
+
unless (@md.opt.act[:verbose_plus][:set]==:on \
|
|
150
|
+
|| @md.opt.act[:maintenance][:set]==:on)
|
|
151
|
+
if @env.processing_path.odt =~/od[ft]/
|
|
152
|
+
#p "rm -r #{@env.processing_path.odt}" if @md.opt.selections.str =~/v/
|
|
153
|
+
FileUtils::rm_r(@env.processing_path.odf_pth)
|
|
154
|
+
#system("rm -r #{@env.processing_path.odt}")
|
|
155
|
+
end
|
|
156
|
+
end
|
|
157
|
+
end
|
|
158
|
+
end
|
|
159
|
+
def break_line
|
|
160
|
+
(@md.opt.act[:maintenance][:set]==:on) \
|
|
161
|
+
? "\n" : ''
|
|
162
|
+
end
|
|
163
|
+
# Used for extraction of endnotes from paragraphs
|
|
164
|
+
def extract_endnotes(dob='')
|
|
165
|
+
notes=dob.obj.scan(/#{Mx[:en_a_o]}(\d+\s+.+?)#{Mx[:en_a_c]}/)[1] #FIX
|
|
166
|
+
@n=[]
|
|
167
|
+
notes.each do |n| #high cost to deal with <br> appropriately within odf, consider
|
|
168
|
+
n=n.dup.to_s
|
|
169
|
+
if n =~/#{Mx[:br_line]}/
|
|
170
|
+
fix=n.split(/#{Mx[:br_line]}/) #watch #added
|
|
171
|
+
fix.each do |x|
|
|
172
|
+
if x =~/\S+/ then @n << x
|
|
173
|
+
end
|
|
174
|
+
end
|
|
175
|
+
else @n << n
|
|
176
|
+
end
|
|
177
|
+
end
|
|
178
|
+
end
|
|
179
|
+
def odf_book_idx
|
|
180
|
+
if @md.book_idx
|
|
181
|
+
idx_arr=[]
|
|
182
|
+
idx_raw=SiSU_Particulars::CombinedSingleton.
|
|
183
|
+
instance.get_idx_raw(@md.opt).raw_idx
|
|
184
|
+
idx_raw.each do |x|
|
|
185
|
+
x=if x.is_a?(String)
|
|
186
|
+
SiSU_XML_ODF_ODT_Format::FormatBookIndex.new(x).
|
|
187
|
+
book_idx_bookmark
|
|
188
|
+
else nil
|
|
189
|
+
end
|
|
190
|
+
idx_arr << x.strip if x.is_a?(String)
|
|
191
|
+
end
|
|
192
|
+
@per.book_idx=idx_arr.join
|
|
193
|
+
end
|
|
194
|
+
end
|
|
195
|
+
def odf_metadata
|
|
196
|
+
@per.metadata=SiSU_Metadata::Summary.new(@md).
|
|
197
|
+
odf.metadata
|
|
198
|
+
end
|
|
199
|
+
def odf_tail
|
|
200
|
+
manifest="#{@md.file.output_path.manifest.url}/#{@md.file.base_filename.manifest}"
|
|
201
|
+
@per.tail << %{<text:p text:style-name="P_normal">Available document outputs: <br /> <<text:a xl:type="simple" xl:href="#{manifest}">#{manifest}</text:a>></text:p>}
|
|
202
|
+
@per.tail << %{\n<text:p text:style-name="P_normal">SiSU: <<text:a xl:type="simple" xl:href="http://www.jus.uio.no/lm">www.jus.uio.no/sisu</text:a>> and <<text:a xl:type="simple" xl:href="http://www.sisudoc.org">www.sisudoc.org</text:a>></text:p>}
|
|
203
|
+
@per.tail << "\n</office:text></office:body></office:document-content>"
|
|
204
|
+
end
|
|
205
|
+
def set_bookmark_tag(dob)
|
|
206
|
+
SiSU_XML_ODF_ODT_Format::Tags.new.set_bookmark_tag(dob)
|
|
207
|
+
end
|
|
208
|
+
def heading(dob,p_num)
|
|
209
|
+
dob=footnote(dob)
|
|
210
|
+
m=/#{$1}/
|
|
211
|
+
breakpage=''
|
|
212
|
+
if @md.fns \
|
|
213
|
+
and @md.fns != '' \
|
|
214
|
+
and @md.fns !=@@fns
|
|
215
|
+
@@docstart=true
|
|
216
|
+
@@fns=@md.fns
|
|
217
|
+
end
|
|
218
|
+
unless @@docstart
|
|
219
|
+
breakpage=if (@md.pagenew || @md.pagebreak) \
|
|
220
|
+
and (@md.pagenew =~m or @md.pagebreak =~m)
|
|
221
|
+
'<text:p text:style-name="P_normal_page_new"> </text:p>'
|
|
222
|
+
elsif @md.pageline \
|
|
223
|
+
and @md.pageline =~m #fix
|
|
224
|
+
else ''
|
|
225
|
+
end
|
|
226
|
+
end
|
|
227
|
+
@@docstart=false
|
|
228
|
+
if dob.use_ != :dummy
|
|
229
|
+
dob.tmp=dob.obj
|
|
230
|
+
dob.obj=%{#{breakpage}<text:h text:style-name="H_#{dob.ln}" text:outline-level="#{dob.ln}">} \
|
|
231
|
+
+ %{#{p_num[:set_ref]}#{set_bookmark_tag(dob)}#{dob.obj}#{p_num[:display]}</text:h>}
|
|
232
|
+
else dob.tmp,dob.obj='',''
|
|
233
|
+
end
|
|
234
|
+
dob
|
|
235
|
+
end
|
|
236
|
+
def toc(dob,p_num)
|
|
237
|
+
hardspace=(dob.lv =~/[A-D]/i) \
|
|
238
|
+
? '<text:p text:style-name="Standard"/>'
|
|
239
|
+
: ''
|
|
240
|
+
toc_heading=dob.ocn \
|
|
241
|
+
? (%{<text:bookmark-ref text:reference-format="text" text:ref-name="#{dob.ocn}">} \
|
|
242
|
+
+ %{#{dob.tmp}</text:bookmark-ref>})
|
|
243
|
+
: dob.tmp
|
|
244
|
+
dob.obj=%{<text:h text:style-name="H_#{dob.ln}" text:outline-level="#{dob.ln}">} \
|
|
245
|
+
+ %{#{toc_heading}</text:h>#{hardspace}}
|
|
246
|
+
dob
|
|
247
|
+
end
|
|
248
|
+
def image_src(i)
|
|
249
|
+
if @md.fns =~/\.ss[tm]$/ \
|
|
250
|
+
and FileTest.file?("#{@env.path.image_source_include(@md)}/#{i}") #review
|
|
251
|
+
@env.path.image_source_include(@md)
|
|
252
|
+
elsif @md.opt.f_pth[:pth] =~/\/\S+?\/sisupod\/\S+?\/sisupod\/doc/
|
|
253
|
+
pt=/(\/\S+?\/sisupod\/\S+?\/sisupod)\/doc/.match(@md.opt.f_pth[:pth])[1]
|
|
254
|
+
img_src=pt + '/image'
|
|
255
|
+
if FileTest.file?("#{img_src}/#{i}")
|
|
256
|
+
img_src
|
|
257
|
+
else
|
|
258
|
+
SiSU_Screen::Ansi.new(
|
|
259
|
+
@md.opt.act[:color_state][:set],
|
|
260
|
+
"ERROR - image:",
|
|
261
|
+
%{"#{i}" missing},
|
|
262
|
+
"search locations: #{@env.path.image_source_include_local}," \
|
|
263
|
+
+ "#{@env.path.image_source_include_remote} and" \
|
|
264
|
+
+ "#{@env.path.image_source_include}"
|
|
265
|
+
).error2 unless @md.opt.act[:quiet][:set]==:on
|
|
266
|
+
nil
|
|
267
|
+
end
|
|
268
|
+
elsif @md.fns =~/\.ss[tm]$/ \
|
|
269
|
+
and FileTest.file?("#{@env.path.image_source_include_local}/#{i}") #review
|
|
270
|
+
@env.path.image_source_include_local
|
|
271
|
+
elsif @md.fns =~/\.ss[tm]$/ \
|
|
272
|
+
and FileTest.file?("#{@env.path.image_source_sisu_includes(@md)}/#{i}")
|
|
273
|
+
@env.path.image_source_sisu_includes(@md)
|
|
274
|
+
elsif @md.fns =~/\.-ss[tm]$/ \
|
|
275
|
+
and FileTest.file?("#{@env.path.image_source_include_remote}/#{i}")
|
|
276
|
+
@env.path.image_source_include_remote
|
|
277
|
+
else
|
|
278
|
+
SiSU_Screen::Ansi.new(
|
|
279
|
+
@md.opt.act[:color_state][:set],
|
|
280
|
+
"ERROR - image:",
|
|
281
|
+
%{"#{i}" missing},
|
|
282
|
+
"search locations: " \
|
|
283
|
+
+ @env.path.image_source_include_local + ',' \
|
|
284
|
+
+ @env.path.image_source_include_remote + 'and' \
|
|
285
|
+
+ @env.path.image_source_include \
|
|
286
|
+
+ @md.opt.sisu_data_dir?
|
|
287
|
+
).error2 unless @md.opt.act[:quiet][:set]==:on
|
|
288
|
+
nil
|
|
289
|
+
end
|
|
290
|
+
end
|
|
291
|
+
def image_odf(img)
|
|
292
|
+
# copy image to od image directory (unless exists)
|
|
293
|
+
# divide pixel dimension by 37.79485 and retain 3 decimal places
|
|
294
|
+
m=img[1]
|
|
295
|
+
i=/^(\S+?\.(?:png|jpg|gif))/.match(m).captures.join \
|
|
296
|
+
if m =~/^(\S+?\.(?:png|jpg|gif))/
|
|
297
|
+
c=/^\S+?\.(?:png|jpg|gif)\s+.+?"(.*?)"/.match(m).captures.join \
|
|
298
|
+
if m =~/^\S+?\.(?:png|jpg|gif)\s+.+?"(.*?)"/
|
|
299
|
+
w,h=/\s(\d+)x(\d+)/.match(m).captures if m =~/\s\d+x\d+/
|
|
300
|
+
w=(w.to_i/37.79485).to_s
|
|
301
|
+
h=(h.to_i/37.79485).to_s
|
|
302
|
+
h=/([0-9]+\.\d{0,3})/.match(h).captures.join
|
|
303
|
+
w=/([0-9]+\.\d{0,3})/.match(w).captures.join
|
|
304
|
+
image_source=image_src(i)
|
|
305
|
+
if image_source
|
|
306
|
+
if FileTest.file?("#{image_source}/#{i}")
|
|
307
|
+
FileUtils::cp(
|
|
308
|
+
"#{image_source}/#{i}",
|
|
309
|
+
"#{@env.processing_path.odt}/Pictures/#{i}"
|
|
310
|
+
)
|
|
311
|
+
else STDERR.puts %{\t*WARN* did not find image - "#{image_source}/#{i}" [#{__FILE__}:#{__LINE__}]}
|
|
312
|
+
end
|
|
313
|
+
end
|
|
314
|
+
img=if i.to_s =~/jpg|png|gif/ \
|
|
315
|
+
and h.to_s =~/\d/ \
|
|
316
|
+
and w.to_s =~/\d/
|
|
317
|
+
@@img_count +=1
|
|
318
|
+
%{<draw:frame draw:style-name="fr1" draw:name="graphics#{@@img_count}" text:anchor-type="as-char" svg:width="#{w}cm" svg:height="#{h}cm" draw:z-index="2"><draw:image xl:href="Pictures/#{i}" xl:type="simple" xl:show="embed" xl:actuate="onLoad"/></draw:frame>#{c}} #anchor-type: as-char or paragraph or char or ...
|
|
319
|
+
else %{<text:p text:style-name="P_normal">[image omitted]</text:p>}
|
|
320
|
+
end
|
|
321
|
+
end
|
|
322
|
+
def image(dob)
|
|
323
|
+
m=if dob.obj =~/#{Mx[:lnk_o]}[ ]*(.+?)[ ]*#{Mx[:lnk_c]}#{Mx[:url_o]}\S+?#{Mx[:url_c]}/
|
|
324
|
+
dob.obj.scan(/(#{Mx[:lnk_o]}[ ]*(.+?)[ ]*#{Mx[:lnk_c]}#{Mx[:url_o]}(\S+?)#{Mx[:url_c]})/)
|
|
325
|
+
elsif dob.obj =~/#{Mx[:lnk_o]}[ ]*(.+?)[ ]*#{Mx[:lnk_c]}image/
|
|
326
|
+
dob.obj.scan(/(#{Mx[:lnk_o]}[ ]*(.+?)[ ]*#{Mx[:lnk_c]}(image))/)
|
|
327
|
+
else nil
|
|
328
|
+
end
|
|
329
|
+
if m then m.each do |i|
|
|
330
|
+
cont,url=i[1],i[2]
|
|
331
|
+
cont=cont.gsub(/([)(\]\[])/,"\\\\\\1").
|
|
332
|
+
gsub(/([+?])/,"\\\\\\1") # incorrect handling of +
|
|
333
|
+
url=url.gsub(/([+?])/,"\\\\\\1")
|
|
334
|
+
dob.obj=dob.obj.sub(/#{Mx[:lnk_o]}[ ]*#{cont}[ ]*#{Mx[:lnk_c]}image/m,image_odf(i)).
|
|
335
|
+
sub(/#{Mx[:lnk_o]}[ ]*#{cont}[ ]*#{Mx[:lnk_c]}#{Mx[:url_o]}#{url}#{Mx[:url_c]}/m,image_odf(i)).
|
|
336
|
+
sub(/\\([)(\]\[?])/,'\1') #clumsy fix
|
|
337
|
+
end
|
|
338
|
+
m=nil
|
|
339
|
+
end
|
|
340
|
+
dob
|
|
341
|
+
end
|
|
342
|
+
def text_link_odf(txt,url,trail)
|
|
343
|
+
txt=txt.gsub(/(\\\+)/,'+') #this is convoluted, and risky :-(
|
|
344
|
+
url=url.gsub(/(\\\+)/,'+') #this is convoluted, and risky :-(
|
|
345
|
+
map_nametags=SiSU_Particulars::CombinedSingleton.
|
|
346
|
+
instance.get_map_nametags(@md).nametags_map
|
|
347
|
+
t=case url
|
|
348
|
+
when /^https?:/
|
|
349
|
+
%{<text:a xl:type="simple" xl:href="#{url}">#{txt.strip}</text:a>#{trail}}
|
|
350
|
+
when /^:/ # site same document collection html link
|
|
351
|
+
url=url.gsub(/^:/,"#{@env.url.root}/")
|
|
352
|
+
%{<text:a xl:type="simple" xl:href="#{url}">#{txt.strip}</text:a>#{trail}}
|
|
353
|
+
when /^\.\.\// # site same document collection html link
|
|
354
|
+
url=url.gsub(/^\.\.\//,"#{@env.url.root}/")
|
|
355
|
+
%{<text:a xl:type="simple" xl:href="#{url}">#{txt.strip}</text:a>#{trail}}
|
|
356
|
+
else # document internal link
|
|
357
|
+
if map_nametags[url] \
|
|
358
|
+
and map_nametags[url][:segname]
|
|
359
|
+
else p "NOT FOUND name_tags: #{url}"
|
|
360
|
+
end
|
|
361
|
+
t=map_nametags[url] \
|
|
362
|
+
&& map_nametags[url][:segname] \
|
|
363
|
+
? (%{<text:a xl:type="simple" xl:href="#{@env.url.root}/#{@md.fnb}/#{map_nametags[url][:segname]}#{Sfx[:html]}##{url}">} \
|
|
364
|
+
+ %{#{txt.strip}</text:a>#{trail}})
|
|
365
|
+
: %{#{txt.strip}#{trail}}
|
|
366
|
+
end
|
|
367
|
+
t
|
|
368
|
+
end
|
|
369
|
+
def text_link_odf_bookmark(txt,url,trail)
|
|
370
|
+
SiSU_Particulars::CombinedSingleton.instance.get_map_nametags(@md).nametags_map
|
|
371
|
+
%{<text:bookmark-ref text:reference-format="text" text:ref-name="#{url}">#{txt.strip}</text:bookmark-ref>#{trail}}
|
|
372
|
+
end
|
|
373
|
+
def text_link(dob)
|
|
374
|
+
m=dob.obj.scan(/(#{Mx[:lnk_o]}(.+?)#{Mx[:lnk_c]}#{Mx[:url_o]}(\S+?)#{Mx[:url_c]})/) #sort
|
|
375
|
+
if m
|
|
376
|
+
m.each do |i|
|
|
377
|
+
txt,url,trail=i[1],i[2]
|
|
378
|
+
txt=txt.gsub(/([)(\]\[])/,"\\\\\\1").
|
|
379
|
+
gsub(/([+?*])/,"\\\\\\1") # problems with +
|
|
380
|
+
url=url.gsub(/([+?])/,"\\\\\\1") # problems with +
|
|
381
|
+
dob.obj=dob.obj.gsub(/#{Mx[:lnk_o]}[ ]*#{txt}#{Mx[:lnk_c]}#{Mx[:url_o]}#{url}#{Mx[:url_c]}/m,
|
|
382
|
+
text_link_odf(txt,url,trail)). #make sure trailing ']' are not caught in url
|
|
383
|
+
gsub(/\\([)(\]\[?])/,'\1') #clumsy fix
|
|
384
|
+
end
|
|
385
|
+
m=nil
|
|
386
|
+
end
|
|
387
|
+
dob
|
|
388
|
+
end
|
|
389
|
+
def text_link_relative(dob)
|
|
390
|
+
m=dob.obj.scan(/(#{Mx[:lnk_o]}(.+?)#{Mx[:lnk_c]}#{Mx[:rel_o]}(\S+?)#{Mx[:rel_c]})/) #sort
|
|
391
|
+
if m
|
|
392
|
+
m.each do |i|
|
|
393
|
+
txt,url,trail=i[1],i[2]
|
|
394
|
+
txt=txt.gsub(/([)(\]\[])/,"\\\\\\1").
|
|
395
|
+
gsub(/([+?*])/,"\\\\\\1") # problems with +
|
|
396
|
+
url=url.gsub(/([+?])/,"\\\\\\1") # problems with +
|
|
397
|
+
dob.obj=dob.obj.gsub(/#{Mx[:lnk_o]}[ ]*#{txt}#{Mx[:lnk_c]}#{Mx[:rel_o]}#{url}#{Mx[:rel_c]}/m,
|
|
398
|
+
text_link_odf_bookmark(txt,url,trail)). #make sure trailing ']' are not caught in url
|
|
399
|
+
gsub(/\\([)(\]\[?])/,'\1') #clumsy fix
|
|
400
|
+
end
|
|
401
|
+
m=nil
|
|
402
|
+
end
|
|
403
|
+
dob
|
|
404
|
+
end
|
|
405
|
+
def text_link_relative_(dob)
|
|
406
|
+
m=dob.obj.scan(/(#{Mx[:lnk_o]}(.+?)#{Mx[:lnk_c]}#{Mx[:rel_o]}(\S+?)#{Mx[:rel_c]})/) #sort
|
|
407
|
+
if m
|
|
408
|
+
m.each do |i|
|
|
409
|
+
txt,url,trail=i[1],i[2]
|
|
410
|
+
txt=txt.gsub(/([)(\]\[])/,"\\\\\\1")
|
|
411
|
+
dob.obj=dob.obj.gsub(/#{Mx[:lnk_o]}[ ]*#{txt}#{Mx[:lnk_c]}#{Mx[:rel_o]}#{url}#{Mx[:rel_c]}/m,
|
|
412
|
+
text_link_odf(txt,url,trail)). #make sure trailing ']' are not caught in url
|
|
413
|
+
gsub(/\\([)(\]\[?])/,'\1') #clumsy fix
|
|
414
|
+
end
|
|
415
|
+
m=nil
|
|
416
|
+
end
|
|
417
|
+
dob
|
|
418
|
+
end
|
|
419
|
+
def normal(dob,p_num) #P1 - P3
|
|
420
|
+
dob=footnote(dob)
|
|
421
|
+
dob.obj=dob.obj.gsub(/#{Mx[:url_o]}_(\S+?)#{Mx[:url_c]}/,
|
|
422
|
+
'<text:a xl:type="simple" xl:href="\1">\1</text:a>'). #http ftp matches escaped, no decoration
|
|
423
|
+
gsub(/#{Mx[:url_o]}([a-zA-Z0-9._-]+\@\S+?\.[a-zA-Z0-9._-]+)#{Mx[:url_c]}/,
|
|
424
|
+
%{#{the_url_decoration.xml_open}<text:a xl:type="simple" xl:href="mailto:\\1">\\1</text:a>#{the_url_decoration.xml_close}}).
|
|
425
|
+
gsub(/#{Mx[:url_o]}(\S+?)#{Mx[:url_c]}/,
|
|
426
|
+
%{#{the_url_decoration.xml_open}<text:a xl:type="simple" xl:href="\\1">\\1</text:a>#{the_url_decoration.xml_close}}) #http ftp matches with decoration
|
|
427
|
+
dob.obj= if dob.is==:para \
|
|
428
|
+
and dob.indent.to_s =~/[0-9]/ \
|
|
429
|
+
and dob.indent == dob.hang
|
|
430
|
+
%{<text:p text:style-name="P_indent_#{dob.indent}">#{p_num[:set_ref]}#{set_bookmark_tag(dob)}#{dob.obj}#{p_num[:display]}</text:p>}
|
|
431
|
+
elsif dob.is==:para \
|
|
432
|
+
and dob.hang.to_s =~/[0-9]/ \
|
|
433
|
+
and dob.indent != dob.hang
|
|
434
|
+
%{<text:p text:style-name="P_h#{dob.hang}_i#{dob.indent}">#{p_num[:set_ref]}#{set_bookmark_tag(dob)}#{dob.obj}#{p_num[:display]}</text:p>}
|
|
435
|
+
else %{<text:p text:style-name="P_normal">#{p_num[:set_ref]}#{set_bookmark_tag(dob)}#{dob.obj}#{p_num[:display]}</text:p>}
|
|
436
|
+
end
|
|
437
|
+
dob
|
|
438
|
+
end
|
|
439
|
+
def fontface(dob)
|
|
440
|
+
end
|
|
441
|
+
def footnote_urls(str)
|
|
442
|
+
str=str.gsub(/#{Mx[:url_o]}(\S+?)#{Mx[:url_c]}/,
|
|
443
|
+
%{#{the_url_decoration.xml_open}<text:a xl:type="simple" xl:href="\\1">\\1</text:a>#{the_url_decoration.xml_close}})
|
|
444
|
+
str=text_link(str) if str =~/#{Mx[:lnk_o]}.+?#{Mx[:lnk_c]}#{Mx[:url_o]}\S+?#{Mx[:url_c]}/
|
|
445
|
+
str=text_link_relative(str) if str =~/#{Mx[:lnk_o]}.+?#{Mx[:lnk_c]}#{Mx[:rel_o]}\S+?#{Mx[:rel_c]}/
|
|
446
|
+
str
|
|
447
|
+
end
|
|
448
|
+
def footnote(t_o)
|
|
449
|
+
str=if defined? t_o.obj then t_o.obj
|
|
450
|
+
elsif t_o.is_a?(String) then t_o
|
|
451
|
+
end
|
|
452
|
+
if str
|
|
453
|
+
@astx||=10000
|
|
454
|
+
@astxs||=20000
|
|
455
|
+
if str =~/#{Mx[:en_a_o]}\d+\s+/
|
|
456
|
+
str=str.gsub(/#{Mx[:en_a_o]}(\d+)\s+(.+?)#{Mx[:en_a_c]}/,
|
|
457
|
+
'<text:note text:id="ftn\1" text:note-class="footnote"><text:note-citation>\1</text:note-citation><text:note-body><text:p text:style-name="Footnote"> \2</text:p><text:p text:style-name="Footnote"/></text:note-body></text:note>')
|
|
458
|
+
end
|
|
459
|
+
if str =~/#{Mx[:en_a_o]}([*]+)\s+/
|
|
460
|
+
a=$1.gsub(/([*])/,"\\\\\\1")
|
|
461
|
+
str=str.gsub(/#{Mx[:en_a_o]}([*]+)\s+(.+?)#{Mx[:en_a_c]}/,
|
|
462
|
+
%{<text:note text:id="ftn#{@astx.to_s}" text:note-class="footnote"><text:note-citation text:label="\\1">\\1</text:note-citation><text:note-body><text:p text:style-name="Footnote"> \\2</text:p><text:p text:style-name="Footnote"/></text:note-body></text:note>})
|
|
463
|
+
@astxs+=1
|
|
464
|
+
end
|
|
465
|
+
if str=~/#{Mx[:en_a_o]}[*+]+\s/
|
|
466
|
+
asterisk=str.scan(/#{Mx[:en_a_o]}([*+]+)\s+(.+?)#{Mx[:en_a_c]}/)
|
|
467
|
+
asterisk.each do |x|
|
|
468
|
+
a=x[0].gsub(/([*+])/,"\\\\\\1")
|
|
469
|
+
str=group_clean(str)
|
|
470
|
+
str=footnote_urls(str)
|
|
471
|
+
str=str.gsub(/#{Mx[:en_a_o]}(#{a})\s+(.+?)#{Mx[:en_a_c]}/,
|
|
472
|
+
%{<text:note text:id="ftn#{@astx.to_s}" text:note-class="footnote"><text:note-citation text:label="\\1">\\1</text:note-citation><text:note-body><text:p text:style-name="Footnote"> \\2</text:p><text:p text:style-name="Footnote"/></text:note-body></text:note>})
|
|
473
|
+
@astx+=1
|
|
474
|
+
end
|
|
475
|
+
end
|
|
476
|
+
if str=~/#{Mx[:en_b_o]}[*+]\d+\s/
|
|
477
|
+
asterisk=str.scan(/#{Mx[:en_b_o]}([*+]\d+)\s+(.+?)#{Mx[:en_b_c]}/)
|
|
478
|
+
asterisk.each do |x|
|
|
479
|
+
a=x[0].gsub(/([*+])/,"\\\\\\1")
|
|
480
|
+
str=group_clean(str)
|
|
481
|
+
str=footnote_urls(str)
|
|
482
|
+
str=str.gsub(/#{Mx[:en_b_o]}(#{a})\s+(.+?)#{Mx[:en_b_c]}/,
|
|
483
|
+
%{<text:note text:id="ftn#{@astx.to_s}" text:note-class="footnote"><text:note-citation text:label="\\1">\\1</text:note-citation><text:note-body><text:p text:style-name="Footnote"> \\2</text:p><text:p text:style-name="Footnote"/></text:note-body></text:note>})
|
|
484
|
+
@astx+=1
|
|
485
|
+
end
|
|
486
|
+
end
|
|
487
|
+
end
|
|
488
|
+
if defined? t_o.obj then t_o.obj=str
|
|
489
|
+
elsif t_o.is_a?(String) then t_o=str
|
|
490
|
+
end
|
|
491
|
+
t_o
|
|
492
|
+
end
|
|
493
|
+
def group_clean(str)
|
|
494
|
+
str=str.gsub(/&nbsp;| |#{Mx[:nbsp]}/,' ').
|
|
495
|
+
gsub(/</,'<').gsub(/>/,'>').
|
|
496
|
+
gsub(/<(text:span text:style-name="Span_\S+?"|\/text:span)>/,'<\1>'). #works, not ideal
|
|
497
|
+
gsub(/#{Mx[:br_line]}/,'<br />').
|
|
498
|
+
gsub(/<br(?:\s+\/)?>/,'<br />')
|
|
499
|
+
end
|
|
500
|
+
def poem(dob,p_num) #P4 #same as group
|
|
501
|
+
parray=[]
|
|
502
|
+
dob.obj.split(/#{Mx[:br_line]}|#{Mx[:br_nl]}/).each_with_index do |parablock,i|
|
|
503
|
+
set_ref=(i==0) ? "#{p_num[:set_ref]}#{set_bookmark_tag(dob)}" : ''
|
|
504
|
+
parablock=group_clean(parablock)
|
|
505
|
+
parablock=footnote(parablock)
|
|
506
|
+
parray << %{<text:p text:style-name="P_group">#{set_ref}#{parablock}</text:p>} if parablock =~/\S+/
|
|
507
|
+
end
|
|
508
|
+
dob.obj=parray.join \
|
|
509
|
+
+ %{<text:p text:style-name="P_group">#{p_num[:display]}</text:p>} \
|
|
510
|
+
+ '<text:p text:style-name="Standard"/>'
|
|
511
|
+
dob
|
|
512
|
+
end
|
|
513
|
+
def group(dob,p_num) #P4 #same as verse
|
|
514
|
+
parray=[]
|
|
515
|
+
dob.obj=dob.obj.gsub(/#{Mx[:url_o]}_(\S+?)#{Mx[:url_c]}/,
|
|
516
|
+
'<text:a xl:type="simple" xl:href="\1">\1</text:a>'). #http ftp matches escaped, no decoration
|
|
517
|
+
gsub(/#{Mx[:url_o]}([a-zA-Z0-9._-]+\@\S+?\.[a-zA-Z0-9._-]+)#{Mx[:url_c]}/,
|
|
518
|
+
%{#{the_url_decoration.xml_open}<text:a xl:type="simple" xl:href="mailto:\\1">\\1</text:a>#{the_url_decoration.xml_close}}).
|
|
519
|
+
gsub(/#{Mx[:url_o]}(\S+?)#{Mx[:url_c]}/,
|
|
520
|
+
%{#{the_url_decoration.xml_open}<text:a xl:type="simple" xl:href="\\1">\\1</text:a>#{the_url_decoration.xml_close}}) #http ftp matches with decoration
|
|
521
|
+
dob.obj.split(/#{Mx[:br_line]}|#{Mx[:br_nl]}/).each_with_index do |parablock,i|
|
|
522
|
+
set_ref=(i==0) ? "#{p_num[:set_ref]}#{set_bookmark_tag(dob)}" : ''
|
|
523
|
+
parablock=group_clean(parablock)
|
|
524
|
+
parablock=parablock.gsub(/<text:a xl:type="simple" xl:href="(.+?)">/m,
|
|
525
|
+
'<text:a xl:type="simple" xl:href="\1">').
|
|
526
|
+
gsub(/<(\/text:a)>/,'<\1>').
|
|
527
|
+
gsub(/<(text:note text:id=.+?)>/,'<\1>').
|
|
528
|
+
gsub(/<(text:p text:style-name="Footnote")>/,'<\1>').
|
|
529
|
+
gsub(/<(\/?text:(?:note-citation|note-body|note|p))>/,'<\1>')
|
|
530
|
+
parablock=footnote(parablock)
|
|
531
|
+
parray << %{<text:p text:style-name="P_group">#{set_ref}#{parablock}</text:p>} if parablock =~/\S+/
|
|
532
|
+
end
|
|
533
|
+
dob.obj=parray.join \
|
|
534
|
+
+ %{<text:p text:style-name="P_group">#{p_num[:display]}</text:p>} \
|
|
535
|
+
+ '<text:p text:style-name="Standard"/>'
|
|
536
|
+
dob
|
|
537
|
+
end
|
|
538
|
+
def block(dob,p_num) #P4 #same as verse
|
|
539
|
+
parray=[]
|
|
540
|
+
dob.obj=dob.obj.gsub(/#{Mx[:url_o]}_(\S+?)#{Mx[:url_c]}/,
|
|
541
|
+
'<text:a xl:type="simple" xl:href="\1">\1</text:a>'). #http ftp matches escaped, no decoration
|
|
542
|
+
gsub(/#{Mx[:url_o]}([a-zA-Z0-9._-]+\@\S+?\.[a-zA-Z0-9._-]+)#{Mx[:url_c]}/,
|
|
543
|
+
%{#{the_url_decoration.xml_open}<text:a xl:type="simple" xl:href="mailto:\\1">\\1</text:a>#{the_url_decoration.xml_close}}).
|
|
544
|
+
gsub(/#{Mx[:url_o]}(\S+?)#{Mx[:url_c]}/,
|
|
545
|
+
%{#{the_url_decoration.xml_open}<text:a xl:type="simple" xl:href="\\1">\\1</text:a>#{the_url_decoration.xml_close}}) #http ftp matches with decoration
|
|
546
|
+
dob.obj.split(/#{Mx[:br_line]}|#{Mx[:br_nl]}/).each_with_index do |parablock,i|
|
|
547
|
+
set_ref=(i==0) ? "#{p_num[:set_ref]}#{set_bookmark_tag(dob)}" : ''
|
|
548
|
+
parablock=group_clean(parablock)
|
|
549
|
+
parablock=parablock.gsub(/<text:a xl:type="simple" xl:href="(.+?)">/m,
|
|
550
|
+
'<text:a xl:type="simple" xl:href="\1">').
|
|
551
|
+
gsub(/<(\/text:a)>/,'<\1>').
|
|
552
|
+
gsub(/<(text:note text:id=.+?)>/,'<\1>').
|
|
553
|
+
gsub(/<(text:p text:style-name="Footnote")>/,'<\1>').
|
|
554
|
+
gsub(/<(\/?text:(?:note-citation|note-body|note|p))>/,'<\1>')
|
|
555
|
+
parablock=footnote(parablock)
|
|
556
|
+
parray << %{<text:p text:style-name="P_group">#{set_ref}#{parablock}</text:p>} \
|
|
557
|
+
if parablock =~/\S+/
|
|
558
|
+
end
|
|
559
|
+
dob.obj=parray.join \
|
|
560
|
+
+ %{<text:p text:style-name="P_group">#{p_num[:display]}</text:p>} \
|
|
561
|
+
+ '<text:p text:style-name="Standard"/>'
|
|
562
|
+
dob
|
|
563
|
+
end
|
|
564
|
+
def code(dob,p_num) #P5
|
|
565
|
+
if dob.is==:code
|
|
566
|
+
dob.obj=dob.obj.gsub(/\s\s/,'  ')
|
|
567
|
+
parray=[]
|
|
568
|
+
dob.obj.split(/#{Mx[:br_line]}|#{Mx[:br_nl]}/).each_with_index do |parablock,i|
|
|
569
|
+
set_ref=(i==0) ? "#{p_num[:set_ref]}#{set_bookmark_tag(dob)}" : ''
|
|
570
|
+
parablock=group_clean(parablock)
|
|
571
|
+
parablock=parablock.gsub(/^\s*$/,'<br />').
|
|
572
|
+
gsub(/#{Mx[:url_o]}_(\S+?)#{Mx[:url_c]}/,
|
|
573
|
+
'<text:a xl:type="simple" xl:href="\1">\1</text:a>') #http ftp matches escaped, no decoration
|
|
574
|
+
parray << %{<text:p text:style-name="P_code">#{set_ref}#{parablock}</text:p>} if parablock =~/\S+/
|
|
575
|
+
end
|
|
576
|
+
dob.obj=parray.join \
|
|
577
|
+
+ %{<text:p text:style-name="P_group">#{p_num[:display]}</text:p>} \
|
|
578
|
+
+ '<text:p text:style-name="Standard"/>'
|
|
579
|
+
end
|
|
580
|
+
dob
|
|
581
|
+
end
|
|
582
|
+
def table(dob,p_num) #
|
|
583
|
+
if dob.is ==:table
|
|
584
|
+
dob=footnote(dob) #check
|
|
585
|
+
table=SiSU_XML_ODF_ODT_Format::Table.new(@md,dob,p_num)
|
|
586
|
+
dob=table.table
|
|
587
|
+
end
|
|
588
|
+
dob
|
|
589
|
+
end
|
|
590
|
+
def obj_break(dob)
|
|
591
|
+
if dob.is ==:break
|
|
592
|
+
br=SiSU_XML_ODF_ODT_Format::FormatObjBreak.new(@md,dob)
|
|
593
|
+
if dob.obj==Mx[:br_page] \
|
|
594
|
+
or dob.obj==Mx[:br_page_new]
|
|
595
|
+
dob=br.br_page
|
|
596
|
+
elsif dob.obj==Mx[:br_page_line]
|
|
597
|
+
dob=br.br_page_line
|
|
598
|
+
elsif dob.obj==Mx[:br_obj]
|
|
599
|
+
dob=br.obj_sep
|
|
600
|
+
end
|
|
601
|
+
end
|
|
602
|
+
dob
|
|
603
|
+
end
|
|
604
|
+
def odf_structure(md,dob)
|
|
605
|
+
@md,@dob=md,dob
|
|
606
|
+
dob=if dob.is !=:code
|
|
607
|
+
dob=image(dob) if dob.obj =~/#{Mx[:lnk_o]}[ ]*\S+?\.(?:png|jpg|gif)\s.+?#{Mx[:lnk_c]}(?:#{Mx[:url_o]}\S+?#{Mx[:url_c]}|image)/
|
|
608
|
+
dob=text_link(dob) if dob.obj =~/#{Mx[:lnk_o]}.+?#{Mx[:lnk_c]}#{Mx[:url_o]}\S+?#{Mx[:url_c]}/
|
|
609
|
+
dob=text_link_relative(dob) if dob.obj =~/#{Mx[:lnk_o]}.+?#{Mx[:lnk_c]}#{Mx[:rel_o]}\S+?#{Mx[:rel_c]}/
|
|
610
|
+
dob
|
|
611
|
+
else dob
|
|
612
|
+
end
|
|
613
|
+
p_num={ display: '', set_ref: '' }
|
|
614
|
+
if dob.is !~/(^#{Rx[:meta]}|#{Mx[:br_eof]}|#{Mx[:br_endnotes]})/
|
|
615
|
+
if @make.build.odt_ocn?
|
|
616
|
+
if defined? dob.ocn \
|
|
617
|
+
and dob.ocn.is_a?(Fixnum)
|
|
618
|
+
p_num=SiSU_XML_ODF_ODT_Format::ParagraphNumber.new(@make,dob.ocn).set_bookmark_and_display
|
|
619
|
+
end
|
|
620
|
+
end
|
|
621
|
+
end
|
|
622
|
+
if dob.is==:heading
|
|
623
|
+
@per.body << heading(dob,p_num).obj << break_line*2
|
|
624
|
+
if SiSU_Env::ProcessingSettings.new(md).build.toc?
|
|
625
|
+
if dob.lv =~/[A-D1]/i
|
|
626
|
+
@per.toc << toc(dob,p_num).obj
|
|
627
|
+
end
|
|
628
|
+
end
|
|
629
|
+
elsif dob.is ==:verse
|
|
630
|
+
@per.body << poem(dob,p_num).obj << break_line*2
|
|
631
|
+
elsif dob.is==:group
|
|
632
|
+
@per.body << group(dob,p_num).obj << break_line*2
|
|
633
|
+
elsif dob.is==:block
|
|
634
|
+
@per.body << block(dob,p_num).obj << break_line*2
|
|
635
|
+
elsif dob.is==:code
|
|
636
|
+
@per.body << code(dob,p_num).obj << break_line*2
|
|
637
|
+
elsif dob.is==:table #elsif dob.obj =~ /<!Th?¡/u
|
|
638
|
+
@per.body << table(dob,p_num).obj << break_line*2
|
|
639
|
+
elsif dob.is==:break
|
|
640
|
+
@per.body << obj_break(dob).obj << break_line*2
|
|
641
|
+
else
|
|
642
|
+
@per.body << normal(dob,p_num).obj << break_line*2 # main text, contents, body KEEP
|
|
643
|
+
end
|
|
644
|
+
@@endnotes_para=[]
|
|
645
|
+
end
|
|
646
|
+
def tidywords(wordlist)
|
|
647
|
+
wordlist
|
|
648
|
+
end
|
|
649
|
+
def markup(data) # Used for major markup instructions
|
|
650
|
+
#safe_characters=/[^a-zA-Z0-9}{\/?,."';:)(><\-_&!@%~#\]\[*=$| \n+`#{Mx[:tc_p]}]/u
|
|
651
|
+
dir=SiSU_Env::InfoEnv.new(@md.fns)
|
|
652
|
+
dir.path.odt_bld
|
|
653
|
+
@data_mod,@endnotes,@level,@cont,@copen,@odf_contents_close=Array.new(6){[]}
|
|
654
|
+
@rcdc=false
|
|
655
|
+
(0..7).each { |x| @cont[x]=@level[x]=false }
|
|
656
|
+
(4..7).each { |x| @odf_contents_close[x]='' }
|
|
657
|
+
odf_tail #($1,$2)
|
|
658
|
+
bullet=image_src('bullet_09.png')
|
|
659
|
+
if bullet
|
|
660
|
+
if FileTest.file?("#{bullet}/bullet_09.png")
|
|
661
|
+
FileUtils::cp("#{bullet}/bullet_09.png","#{@env.processing_path.odt}/Pictures/.")
|
|
662
|
+
else STDERR.puts %{\t*WARN* did not find image - "#{bullet}/bullet_09.png" [#{__FILE__}:#{__LINE__}]}
|
|
663
|
+
end
|
|
664
|
+
end
|
|
665
|
+
odf_book_idx
|
|
666
|
+
odf_metadata
|
|
667
|
+
data.each do |dob|
|
|
668
|
+
#p dob.obj if dob.obj =~safe_characters and @md.opt.selections.str =~/V/ #KEEP
|
|
669
|
+
dob.obj='' if dob.obj =~/#{Mx[:lv_o]}\d+:.*?#{Mx[:lv_c]}.+?#{Mx[:pa_non_object_dummy_heading]}/ #fix Mx[:lv_o]
|
|
670
|
+
para_array=[]
|
|
671
|
+
dob.obj=dob.obj.gsub(/</,'<').gsub(/>/,'>')
|
|
672
|
+
word=dob.obj.scan(/\S+|\n/)
|
|
673
|
+
if word
|
|
674
|
+
word.each do |w| # _ - / # | : ! ^ ~
|
|
675
|
+
unless dob =~/^(?:#{Rx[:meta]}|%+ )/m
|
|
676
|
+
w=w.gsub(/&#(?:126|152);/,'~'). #126 usual
|
|
677
|
+
gsub(/ /,' ')
|
|
678
|
+
if w !~/(?:&\S{2,7}?;)+/
|
|
679
|
+
w=w.gsub(/&/,'&')
|
|
680
|
+
end
|
|
681
|
+
if w !~/&\S{1,7}?;(?:&\S{1,7}?;)+/ #imperfect
|
|
682
|
+
w=w.gsub(/(&\S{1,7};)+&/,'\1&')
|
|
683
|
+
end
|
|
684
|
+
end
|
|
685
|
+
para_array << w
|
|
686
|
+
end
|
|
687
|
+
dob.obj=para_array.join(' ')
|
|
688
|
+
dob.obj=dob.obj.strip
|
|
689
|
+
end
|
|
690
|
+
if dob.is==:code #{Mx[:gr_o]}code#{Mx[:gr_c]}/ #fix #code-block: angle brackets special characters #fix
|
|
691
|
+
dob.obj=dob.obj.gsub(/(^|[^}])_(?:<|<)/m,'\1<').gsub(/(^|[^}])_(?:>|>)/m,'\1>').
|
|
692
|
+
gsub(/(^|[^}])_(?:<|<)/m,'\1<').gsub(/(^|[^}])_(?:>|>)/m,'\1>')
|
|
693
|
+
end
|
|
694
|
+
if dob.of==:block
|
|
695
|
+
dob.obj=dob.obj.gsub(/#{Mx[:gl_bullet]}/,'● ')
|
|
696
|
+
end
|
|
697
|
+
dob.obj=dob.obj.gsub(/#{Mx[:fa_strike_o]}(.+?)#{Mx[:fa_strike_c]}/,'<del>\1</del>').
|
|
698
|
+
gsub(/#{Mx[:fa_insert_o]}(.+?)#{Mx[:fa_insert_c]}/,'<ins>\1</ins>').
|
|
699
|
+
gsub(/#{Mx[:fa_cite_o]}(.+?)#{Mx[:fa_cite_c]}/,'<cite>\1</cite>').
|
|
700
|
+
gsub(/#{Mx[:tag_o]}\S+?#{Mx[:tag_c]}/,
|
|
701
|
+
'<text:bookmark-start text:name="\1"/><text:bookmark-end text:name="\1"/>'). #check
|
|
702
|
+
gsub(/#{Mx[:mk_o]}#([a-zA-Z]+)#{Mx[:mk_c]}/,'&\1;').
|
|
703
|
+
gsub(/#{Mx[:mk_o]}(#[0-9]+)#{Mx[:mk_c]}/,'&\1;').
|
|
704
|
+
gsub(/#{Mx[:mk_o]}[~-]##{Mx[:mk_c]}/,'')
|
|
705
|
+
if dob.is==:para \
|
|
706
|
+
and dob.bullet_
|
|
707
|
+
dob.obj='<draw:frame draw:style-name="gr1" text:anchor-type="as-char" svg:width="0.22cm" svg:height="0.22cm" draw:z-index="2"><draw:image xl:href="Pictures/bullet_09.png" xl:type="simple" xl:show="embed" xl:actuate="onLoad"/></draw:frame> ' +
|
|
708
|
+
dob.obj
|
|
709
|
+
end
|
|
710
|
+
dob.obj=dob.obj.gsub(/#{Mx[:br_line]}/,'<br />').
|
|
711
|
+
gsub(/©/,'©'). #too arbitrary
|
|
712
|
+
gsub(/.+?<-#>/,''). # remove dummy headings (used by html) #check
|
|
713
|
+
gsub(/#{Mx[:fa_bold_o]}(.+?)#{Mx[:fa_bold_c]}/,
|
|
714
|
+
'<text:span text:style-name="Span_bold">\1</text:span>').
|
|
715
|
+
gsub(/#{Mx[:fa_italics_o]}(.+?)#{Mx[:fa_italics_c]}/,
|
|
716
|
+
'<text:span text:style-name="Span_italic">\1</text:span>').
|
|
717
|
+
gsub(/#{Mx[:fa_underscore_o]}(.+?)#{Mx[:fa_underscore_c]}/,
|
|
718
|
+
'<text:span text:style-name="Span_underscore">\1</text:span>').
|
|
719
|
+
gsub(/#{Mx[:fa_superscript_o]}(.+?)#{Mx[:fa_superscript_c]}/,
|
|
720
|
+
'<text:span text:style-name="Span_superscript">\1</text:span>').
|
|
721
|
+
gsub(/#{Mx[:fa_subscript_o]}(.+?)#{Mx[:fa_subscript_c]}/,
|
|
722
|
+
'<text:span text:style-name="Span_subscript">\1</text:span>').
|
|
723
|
+
gsub(/#{Mx[:fa_monospace_o]}(.+?)#{Mx[:fa_monospace_c]}/,
|
|
724
|
+
'<text:span text:style-name="Span_monospace">\1</text:span>').
|
|
725
|
+
gsub(//u,'-').
|
|
726
|
+
gsub(/ /u, ' '). # space identify
|
|
727
|
+
gsub(/ /u, ' '). # space identify
|
|
728
|
+
gsub(/·/u,'*').
|
|
729
|
+
gsub(/[–—]/u,'-'). #— – chk
|
|
730
|
+
gsub(/ < /i,'<').
|
|
731
|
+
gsub(/\\copy(?:right)?\b/,'©').
|
|
732
|
+
gsub(/\\trademark\b|\\tm\b/,'®').
|
|
733
|
+
gsub(/\44/,'$'). #$ watch
|
|
734
|
+
gsub(/<a href=".+?">(.+?)<\/a>/,'\1').
|
|
735
|
+
gsub(/#{Mx[:mk_o]}name#\S+?#{Mx[:mk_c]}/,'') # remove name links
|
|
736
|
+
wordlist=dob.obj.scan(/\S+/)
|
|
737
|
+
dob.obj=tidywords(wordlist).join(' ').strip
|
|
738
|
+
@rcdc=true if @rcdc==false \
|
|
739
|
+
and (dob.obj =~/~metadata/ \
|
|
740
|
+
or dob =~/#{Mx[:lv_o]}1:meta#{Mx[:lv_x]}\s*Document Information/) #fix Mx[:lv_o]
|
|
741
|
+
if dob.is !~/(^#{Rx[:meta]}|#{Mx[:br_eof]}|#{Mx[:br_endnotes]})/ #check
|
|
742
|
+
if defined? dob.ocn and dob.ocn =~/\d+/
|
|
743
|
+
@p_num=SiSU_XML_ODF_ODT_Format::ParagraphNumber.new(@make,dob.ocn)
|
|
744
|
+
end
|
|
745
|
+
if dob.is ==:heading \
|
|
746
|
+
|| dob.is ==:para \
|
|
747
|
+
|| dob.is ==:group \
|
|
748
|
+
|| dob.is ==:verse \
|
|
749
|
+
|| dob.is ==:code \
|
|
750
|
+
|| dob.is ==:table \
|
|
751
|
+
|| dob.is ==:break
|
|
752
|
+
odf_structure(@md,dob)
|
|
753
|
+
end
|
|
754
|
+
if dob.obj ## Clean Prepared Text
|
|
755
|
+
dob.obj=dob.obj.gsub(/<!.+!>/,' ').
|
|
756
|
+
gsub(/#{Mx[:tc_o]}.+?#{Mx[:tc_c]}/,' ').
|
|
757
|
+
gsub(/<:\S+>/,' ')
|
|
758
|
+
end
|
|
759
|
+
end
|
|
760
|
+
end
|
|
761
|
+
end
|
|
762
|
+
def pre
|
|
763
|
+
table=if @md.flag_tables
|
|
764
|
+
x=<<WOK
|
|
765
|
+
<style:style style:name="Table1" style:family="table"><style:table-properties style:width="16.999cm" table:align="margins"/></style:style>
|
|
766
|
+
<style:style style:name="Table1.A" style:family="table-column"><style:table-column-properties style:column-width="16.999cm" style:rel-column-width="65535*"/></style:style>
|
|
767
|
+
<style:style style:name="Table1.B" style:family="table-column"><style:table-column-properties style:column-width="8.499cm" style:rel-column-width="32767*"/></style:style>
|
|
768
|
+
<style:style style:name="Table1.C" style:family="table-column"><style:table-column-properties style:column-width="5.666cm" style:rel-column-width="21845*"/></style:style>
|
|
769
|
+
<style:style style:name="Table1.D" style:family="table-column"><style:table-column-properties style:column-width="4.349cm" style:rel-column-width="16383*"/></style:style>
|
|
770
|
+
<style:style style:name="Table1.E" style:family="table-column"><style:table-column-properties style:column-width="3.399cm" style:rel-column-width="13107*"/></style:style>
|
|
771
|
+
<style:style style:name="Table1.F" style:family="table-column"><style:table-column-properties style:column-width="2.833cm" style:rel-column-width="10922*"/></style:style>
|
|
772
|
+
<style:style style:name="Table1.G" style:family="table-column"><style:table-column-properties style:column-width="2.428cm" style:rel-column-width="9362*"/></style:style>
|
|
773
|
+
<style:style style:name="Table1.H" style:family="table-column"><style:table-column-properties style:column-width="2.124cm" style:rel-column-width="8191*"/></style:style>
|
|
774
|
+
<style:style style:name="Table2" style:family="table"><style:table-properties style:width="16.999cm" table:align="margins"/></style:style>
|
|
775
|
+
<style:style style:name="Table2.A" style:family="table-column"><style:table-column-properties style:column-width="16.999cm" style:rel-column-width="65535*"/></style:style>
|
|
776
|
+
<style:style style:name="Table2.B" style:family="table-column"><style:table-column-properties style:column-width="8.499cm" style:rel-column-width="32767*"/></style:style>
|
|
777
|
+
<style:style style:name="Table2.C" style:family="table-column"><style:table-column-properties style:column-width="5.666cm" style:rel-column-width="21845*"/></style:style>
|
|
778
|
+
<style:style style:name="Table2.D" style:family="table-column"><style:table-column-properties style:column-width="4.349cm" style:rel-column-width="16383*"/></style:style>
|
|
779
|
+
<style:style style:name="Table2.E" style:family="table-column"><style:table-column-properties style:column-width="3.999cm" style:rel-column-width="13107*"/></style:style>
|
|
780
|
+
<style:style style:name="Table2.F" style:family="table-column"><style:table-column-properties style:column-width="2.833cm" style:rel-column-width="10922*"/></style:style>
|
|
781
|
+
<style:style style:name="Table2.G" style:family="table-column"><style:table-column-properties style:column-width="2.428cm" style:rel-column-width="9362*"/></style:style>
|
|
782
|
+
<style:style style:name="Table2.H" style:family="table-column"><style:table-column-properties style:column-width="2.124cm" style:rel-column-width="8191*"/></style:style>
|
|
783
|
+
<style:style style:name="Table2.I" style:family="table-column"><style:table-column-properties style:column-width="1.8887cm" style:rel-column-width="7281*"/></style:style>
|
|
784
|
+
<style:style style:name="Table2.J" style:family="table-column"><style:table-column-properties style:column-width="1.6999cm" style:rel-column-width="6553*"/></style:style>
|
|
785
|
+
<style:style style:name="Table2.K" style:family="table-column"><style:table-column-properties style:column-width="1.5453cm" style:rel-column-width="5957*"/></style:style>
|
|
786
|
+
<style:style style:name="Table2.L" style:family="table-column"><style:table-column-properties style:column-width="1.416cm" style:rel-column-width="5461*"/></style:style>
|
|
787
|
+
<style:style style:name="Table2.M" style:family="table-column"><style:table-column-properties style:column-width="1.307" style:rel-column-width="5041*"/></style:style>
|
|
788
|
+
<style:style style:name="Table2.N" style:family="table-column"><style:table-column-properties style:column-width="1.214cm" style:rel-column-width="4681*"/></style:style>
|
|
789
|
+
WOK
|
|
790
|
+
x=x.strip
|
|
791
|
+
x=x.gsub(/\n+/m,'') unless @md.opt.act[:maintenance][:set]==:on
|
|
792
|
+
x
|
|
793
|
+
else ''
|
|
794
|
+
end
|
|
795
|
+
x=<<WOK
|
|
796
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
797
|
+
<office:document-content xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:xl="http://www.w3.org/1999/xlink" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0" xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0" xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0" xmlns:ooo="http://openoffice.org/2004/office" xmlns:ooow="http://openoffice.org/2004/writer" xmlns:oooc="http://openoffice.org/2004/calc" xmlns:dom="http://www.w3.org/2001/xml-events" xmlns:xforms="http://www.w3.org/2002/xforms" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:rpt="http://openoffice.org/2005/report" xmlns:of="urn:oasis:names:tc:opendocument:xmlns:of:1.2" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:grddl="http://www.w3.org/2003/g/data-view#" xmlns:tableooo="http://openoffice.org/2009/table" xmlns:field="urn:openoffice:names:experimental:ooo-ms-interop:xmlns:field:1.0" xmlns:formx="urn:openoffice:names:experimental:ooxml-odf-interop:xmlns:form:1.0" xmlns:css3t="http://www.w3.org/TR/css3-text/" office:version="1.2"><office:scripts/>
|
|
798
|
+
<office:font-face-decls><style:font-face style:name="DejaVu Sans Mono" svg:font-family="'DejaVu Sans Mono'" style:font-adornments="Book" style:font-family-generic="modern" style:font-pitch="fixed"/><style:font-face style:name="Inconsolata" svg:font-family="Inconsolata" style:font-adornments="Regular" style:font-pitch="fixed"/><style:font-face style:name="Liberation Mono" svg:font-family="'Liberation Mono'" style:font-adornments="Regular" style:font-family-generic="modern" style:font-pitch="fixed"/><style:font-face style:name="DejaVu Sans" svg:font-family="'DejaVu Sans'" style:font-adornments="ExtraLight" style:font-family-generic="swiss" style:font-pitch="variable"/><style:font-face style:name="Nimbus Sans L" svg:font-family="'Nimbus Sans L'" style:font-pitch="variable"/><style:font-face style:name="Tahoma" svg:font-family="Tahoma, Lucidasans, 'Lucida Sans', 'Arial Unicode MS'" style:font-pitch="variable"/><style:font-face style:name="Nimbus Roman No9 L" svg:font-family="'Nimbus Roman No9 L'" style:font-family-generic="roman" style:font-pitch="variable"/><style:font-face style:name="Bitstream Vera Sans" svg:font-family="'Bitstream Vera Sans'" style:font-family-generic="swiss" style:font-pitch="variable"/></office:font-face-decls>
|
|
799
|
+
<office:automatic-styles>
|
|
800
|
+
#{table}
|
|
801
|
+
<style:style style:name="P_table_cell" style:family="paragraph" style:parent-style-name="Table_Contents"><style:paragraph-properties fo:text-align="justify" style:justify-single-word="false"/></style:style>
|
|
802
|
+
</office:automatic-styles>
|
|
803
|
+
<office:body>
|
|
804
|
+
<office:text text:use-soft-page-breaks="true">
|
|
805
|
+
<office:forms form:automatic-focus="false" form:apply-design-mode="false"/>
|
|
806
|
+
<text:sequence-decls><text:sequence-decl text:display-outline-level="0" text:name="Illustration"/><text:sequence-decl text:display-outline-level="0" text:name="Table"/><text:sequence-decl text:display-outline-level="0" text:name="Text"/><text:sequence-decl text:display-outline-level="0" text:name="Drawing"/></text:sequence-decls>
|
|
807
|
+
WOK
|
|
808
|
+
x=x.strip
|
|
809
|
+
x=x.gsub(/\n+/m,'') unless @md.opt.act[:maintenance][:set]==:on
|
|
810
|
+
@per.head << x
|
|
811
|
+
end
|
|
812
|
+
def publish
|
|
813
|
+
content=[]
|
|
814
|
+
br_pg='<text:p text:style-name="P_normal_page_new"> </text:p>'
|
|
815
|
+
content <<
|
|
816
|
+
@per.head <<
|
|
817
|
+
@per.toc <<
|
|
818
|
+
br_pg <<
|
|
819
|
+
@per.body <<
|
|
820
|
+
@per.book_idx <<
|
|
821
|
+
br_pg <<
|
|
822
|
+
@per.metadata <<
|
|
823
|
+
@per.tail
|
|
824
|
+
SiSU_XML_ODF_ODT::Source::Output.new(content,@md,@env).odf
|
|
825
|
+
@@odf={ head: [], toc: [], body: [], tail: [], book_idx: [], metadata: [] }
|
|
826
|
+
end
|
|
827
|
+
end
|
|
828
|
+
class Output <Source
|
|
829
|
+
def initialize(content,md,env)
|
|
830
|
+
@content,@md,@env=content,md,env
|
|
831
|
+
end
|
|
832
|
+
def odf #%odf output
|
|
833
|
+
env=SiSU_Env::FileOp.new(@md)
|
|
834
|
+
env.mkdir
|
|
835
|
+
header=SiSU_XML_ODF_ODT_Format::ODT_Head_1_2.new(@md)
|
|
836
|
+
filename="#{@env.processing_path.odt}/manifest.rdf"
|
|
837
|
+
od=File.new(filename,'w+')
|
|
838
|
+
od << header.manifest_rdf
|
|
839
|
+
od.close
|
|
840
|
+
filename="#{@env.processing_path.odt}/META-INF/manifest.xml"
|
|
841
|
+
od=File.new(filename,'w+')
|
|
842
|
+
od << header.meta_inf_manifest_xml(@md)
|
|
843
|
+
od.close
|
|
844
|
+
filename="#{@env.processing_path.odt}/meta.xml"
|
|
845
|
+
od=File.new(filename,'w+')
|
|
846
|
+
od << header.meta_xml
|
|
847
|
+
od.close
|
|
848
|
+
filename="#{@env.processing_path.odt}/settings.xml"
|
|
849
|
+
od=File.new(filename,'w+')
|
|
850
|
+
od << header.settings_xml
|
|
851
|
+
od.close
|
|
852
|
+
filename="#{@env.processing_path.odt}/styles.xml"
|
|
853
|
+
od=File.new(filename,'w+')
|
|
854
|
+
od << header.styles_xml
|
|
855
|
+
od.close
|
|
856
|
+
filename="#{@env.processing_path.odt}/mimetype"
|
|
857
|
+
od=File.new(filename,'w+')
|
|
858
|
+
od << header.mimetype
|
|
859
|
+
od.close
|
|
860
|
+
env.make_path(@env.processing_path.odt)
|
|
861
|
+
env.make_path(@md.file.output_path.odt.dir)
|
|
862
|
+
filename="#{@env.processing_path.odt}/content.xml"
|
|
863
|
+
od=File.new(filename,'w+')
|
|
864
|
+
@content.compact.each do |para| # this is a hack
|
|
865
|
+
od.puts para unless para =~/\A\s*\Z/
|
|
866
|
+
end
|
|
867
|
+
od.close
|
|
868
|
+
opendoc=@md.file.base_filename.odt #watch where output by language
|
|
869
|
+
FileUtils::mkdir_p(@md.file.output_path.odt.dir) \
|
|
870
|
+
unless FileTest.directory?(@md.file.output_path.odt.dir)
|
|
871
|
+
if FileTest.directory?(@env.processing_path.odt) \
|
|
872
|
+
and SiSU_Env::SystemCall.new.zip
|
|
873
|
+
pwd=Dir.pwd
|
|
874
|
+
Dir.chdir(@env.processing_path.odt)
|
|
875
|
+
system("
|
|
876
|
+
zip -qr #{opendoc} *
|
|
877
|
+
")
|
|
878
|
+
FileUtils::mv(opendoc, @md.file.place_file.odt.dir)
|
|
879
|
+
Dir.chdir(pwd)
|
|
880
|
+
else
|
|
881
|
+
SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).mark('*EXITED odf* zip program not found') unless SiSU_Env::SystemCall.new.zip
|
|
882
|
+
end
|
|
883
|
+
end
|
|
884
|
+
end
|
|
885
|
+
end
|
|
886
|
+
end
|
|
887
|
+
__END__
|