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,471 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
=begin
|
|
3
|
+
|
|
4
|
+
* Name: SiSU
|
|
5
|
+
|
|
6
|
+
** Description: documents, structuring, processing, publishing, search
|
|
7
|
+
*** simple xml representation (sax style)
|
|
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/sst_to_s_xml_sax.rb;hb=HEAD>
|
|
55
|
+
|
|
56
|
+
=end
|
|
57
|
+
module SiSU_SimpleXML_ModelSax
|
|
58
|
+
require_relative 'se_hub_particulars' # se_hub_particulars.rb
|
|
59
|
+
include SiSU_Particulars
|
|
60
|
+
require_relative 'dp' # dp.rb
|
|
61
|
+
include SiSU_Param
|
|
62
|
+
require_relative 'se' # se.rb
|
|
63
|
+
include SiSU_Env
|
|
64
|
+
require_relative 'ao_doc_str' # ao_doc_str.rb
|
|
65
|
+
require_relative 'xml_shared' # xml_shared.rb
|
|
66
|
+
include SiSU_XML_Munge
|
|
67
|
+
require_relative 'shared_sem' # shared_sem.rb
|
|
68
|
+
require_relative 'xml_format' # xml_format.rb
|
|
69
|
+
include SiSU_XML_Format
|
|
70
|
+
require_relative 'rexml' # rexml.rb
|
|
71
|
+
include SiSU_Rexml
|
|
72
|
+
@@alt_id_count=0
|
|
73
|
+
@@tablefoot=''
|
|
74
|
+
class Convert
|
|
75
|
+
@@fns=nil
|
|
76
|
+
def initialize(opt)
|
|
77
|
+
@opt=opt
|
|
78
|
+
@particulars=SiSU_Particulars::CombinedSingleton.instance.get_env_md(opt)
|
|
79
|
+
end
|
|
80
|
+
def read
|
|
81
|
+
begin
|
|
82
|
+
@md=@particulars.md #bug, relies on info persistence, assumes -m has previously been run
|
|
83
|
+
@env=@particulars.env
|
|
84
|
+
SiSU_Screen::Ansi.new(
|
|
85
|
+
@opt.act[:color_state][:set],
|
|
86
|
+
'invert',
|
|
87
|
+
'XML SAX',
|
|
88
|
+
"#{@md.fns} -> #{@md.fn[:sxs]}"
|
|
89
|
+
).colorize unless @opt.act[:quiet][:set]==:on
|
|
90
|
+
if (@opt.act[:verbose_plus][:set]==:on \
|
|
91
|
+
|| @opt.act[:maintenance][:set]==:on)
|
|
92
|
+
SiSU_Screen::Ansi.new(
|
|
93
|
+
@opt.act[:color_state][:set],
|
|
94
|
+
@opt.fns,
|
|
95
|
+
"#{Dir.pwd}/#{@md.fn[:sxs]}"
|
|
96
|
+
).flow
|
|
97
|
+
end
|
|
98
|
+
unless @@fns==@opt.fns
|
|
99
|
+
@@fns=@opt.fns
|
|
100
|
+
@@fns_array=[]
|
|
101
|
+
end
|
|
102
|
+
@fns_array=if @@fns_array.empty?; read_fnm
|
|
103
|
+
else @@fns_array.dup #check
|
|
104
|
+
end
|
|
105
|
+
SiSU_SimpleXML_ModelSax::Convert::Songsheet.new(@fns_array,@particulars).songsheet
|
|
106
|
+
rescue
|
|
107
|
+
SiSU_Errors::Rescued.new($!,$@,@opt.cmd,@opt.fns).location do
|
|
108
|
+
__LINE__.to_s + ':' + __FILE__
|
|
109
|
+
end
|
|
110
|
+
ensure #file closed in songsheet
|
|
111
|
+
end
|
|
112
|
+
end
|
|
113
|
+
def read_fnm
|
|
114
|
+
ao=[]
|
|
115
|
+
if FileTest.file?("#{Dir.pwd}/#{@opt.fns}")
|
|
116
|
+
ao=IO.readlines("#{Dir.pwd}/#{@opt.fns}","\n\n")
|
|
117
|
+
else STDERR.puts 'Error'
|
|
118
|
+
end
|
|
119
|
+
end
|
|
120
|
+
private
|
|
121
|
+
class Songsheet
|
|
122
|
+
def initialize(data,particulars)
|
|
123
|
+
@data,@particulars,@env,@md=data,particulars,particulars.env,particulars.md
|
|
124
|
+
end
|
|
125
|
+
def songsheet
|
|
126
|
+
begin
|
|
127
|
+
SiSU_SimpleXML_ModelSax::Convert::Scroll.new(@data,@particulars).songsheet
|
|
128
|
+
if (@md.opt.act[:verbose][:set]==:on \
|
|
129
|
+
|| @md.opt.act[:verbose_plus][:set]==:on \
|
|
130
|
+
|| @md.opt.act[:maintenance][:set]==:on)
|
|
131
|
+
SiSU_SimpleXML_ModelSax::Convert::Tidy.new(@md,@env).xml # test wellformedness, comment out when not in use
|
|
132
|
+
end
|
|
133
|
+
SiSU_Rexml::Rexml.new(@md,@md.fn[:sxs]).xml if @md.opt.act[:maintenance][:set]==:on # test rexml parsing, comment out when not in use #debug
|
|
134
|
+
rescue
|
|
135
|
+
SiSU_Errors::Rescued.new($!,$@,@md.opt.cmd,@md.fns).location do
|
|
136
|
+
__LINE__.to_s + ':' + __FILE__
|
|
137
|
+
end
|
|
138
|
+
ensure
|
|
139
|
+
end
|
|
140
|
+
end
|
|
141
|
+
end
|
|
142
|
+
class Scroll
|
|
143
|
+
require_relative 'txt_shared' # txt_shared.rb
|
|
144
|
+
require_relative 'css' # css.rb
|
|
145
|
+
include SiSU_TextUtils
|
|
146
|
+
@@xml={ body: [], open: [], close: [], head: [] }
|
|
147
|
+
def initialize(data='',particulars='')
|
|
148
|
+
@data,@env,@md=data,particulars.env,particulars.md
|
|
149
|
+
@regx=/^(?:#{Mx[:mk_o]}:p[bn]#{Mx[:mk_c]}\s*)?(?:#{Mx[:lv_o]}[1-9]:(\S*)#{Mx[:lv_c]})?(.+)/
|
|
150
|
+
@tab="\t"
|
|
151
|
+
if @md
|
|
152
|
+
@trans=SiSU_XML_Munge::Trans.new(@md)
|
|
153
|
+
end
|
|
154
|
+
@sys=SiSU_Env::SystemCall.new
|
|
155
|
+
end
|
|
156
|
+
def songsheet
|
|
157
|
+
pre
|
|
158
|
+
markup
|
|
159
|
+
post
|
|
160
|
+
publish
|
|
161
|
+
end
|
|
162
|
+
protected
|
|
163
|
+
def embedded_endnotes(para='')
|
|
164
|
+
para.gsub!(/~\{(.+?)\}~/,'<endnote symbol="norm">\1</endnote> ')
|
|
165
|
+
para.gsub!(/~\[([*+])\s+(.+?)\]~/,'<endnote symbol="\1">\2</endnote> ')
|
|
166
|
+
end
|
|
167
|
+
def xml_head(meta)
|
|
168
|
+
txt=meta.text
|
|
169
|
+
txt.gsub!(/\/{(.+?)}\//,'<i>\1</i>')
|
|
170
|
+
txt.gsub!(/[*!]{(.+?)}[*!]/,'<b>\1</b>')
|
|
171
|
+
txt.gsub!(/_{(.+?)}_/,'<u>\1</u>')
|
|
172
|
+
txt.gsub!(/-{(.+?)}-/,'<del>\1</del>')
|
|
173
|
+
txt.gsub!(/<br(?: \/)?>/,'<br />')
|
|
174
|
+
txt.gsub!(/ & /,' and ')
|
|
175
|
+
@@xml[:head] <<<<WOK
|
|
176
|
+
#{@tab}<header class="#{meta.attrib}">
|
|
177
|
+
#{@tab*2}<#{meta.el}>
|
|
178
|
+
#{@tab*3}#{txt}
|
|
179
|
+
#{@tab*2}</#{meta.el}>
|
|
180
|
+
#{@tab}</header>
|
|
181
|
+
WOK
|
|
182
|
+
end
|
|
183
|
+
def xml_sc(md='')
|
|
184
|
+
sc=if @md.sc_info
|
|
185
|
+
<<WOK
|
|
186
|
+
<source_control>
|
|
187
|
+
<sc class="sourcefile">
|
|
188
|
+
#{@md.sc_filename}
|
|
189
|
+
</sc>
|
|
190
|
+
<sc class="number">
|
|
191
|
+
#{@md.sc_number}
|
|
192
|
+
</sc>
|
|
193
|
+
<sc class="date">
|
|
194
|
+
#{@md.sc_date}
|
|
195
|
+
</sc>
|
|
196
|
+
</source_control>
|
|
197
|
+
WOK
|
|
198
|
+
else ''
|
|
199
|
+
end
|
|
200
|
+
@@xml[:sc]=sc
|
|
201
|
+
end
|
|
202
|
+
def xml_structure(para='',lv='',hname='') #extracted endnotes
|
|
203
|
+
lv=lv.to_i
|
|
204
|
+
lv=nil if lv==0
|
|
205
|
+
embedded_endnotes(para)
|
|
206
|
+
if para[@regx]
|
|
207
|
+
paragraph="#{para[@regx,2]}"
|
|
208
|
+
util=SiSU_TextUtils::Wrap.new(paragraph,70)
|
|
209
|
+
wrapped=util.line_wrap
|
|
210
|
+
end
|
|
211
|
+
@@xml[:body] << "#{@tab*0}<object>" if para[@regx]
|
|
212
|
+
@@xml[:body] << "#{@tab*1}" << "\n" if para[@regx]
|
|
213
|
+
@@xml[:body] << if lv; %{#{@tab*1}<text class="h#{lv}">\n#{@tab*2}#{wrapped}\n#{@tab*1}</text>\n} << "\n"
|
|
214
|
+
elsif wrapped =~/\A%%?\s+/; %{<!--\n#{@tab*1}<text class="comment">\n#{@tab*2}#{wrapped}\n#{@tab*1}</text>\n-->\n} # comments
|
|
215
|
+
else %{#{@tab*1}<text class="norm">\n#{@tab*2}#{wrapped}\n#{@tab*1}</text>\n} # main text, contents, body KEEP
|
|
216
|
+
end
|
|
217
|
+
@@xml[:body] << "#{@endnotes}" if @endnotes # main text, endnotes KEEP
|
|
218
|
+
@@xml[:body] << "#{@tab*0}</object>" << "\n" if para[@regx]
|
|
219
|
+
@endnotes=[]
|
|
220
|
+
end
|
|
221
|
+
def block_structure(para='')
|
|
222
|
+
para.gsub!(/<:block(?:-end)?>/,'')
|
|
223
|
+
para.strip!
|
|
224
|
+
@@xml[:body] << %{#{@tab*0}<object>}
|
|
225
|
+
@@xml[:body] << %{#{@tab*1}<text class="block">#{@tab*1}\n}
|
|
226
|
+
@@xml[:body] << %{#{@tab*2}#{para}#{@tab*1}\n}
|
|
227
|
+
@@xml[:body] << %{#{@tab*1}</text>\n}
|
|
228
|
+
@@xml[:body] << "#{@tab*0}</object>"
|
|
229
|
+
end
|
|
230
|
+
def group_structure(para='')
|
|
231
|
+
para.gsub!(/<:group(?:-end)?>/,'')
|
|
232
|
+
para.strip!
|
|
233
|
+
@@xml[:body] << %{#{@tab*0}<object>}
|
|
234
|
+
@@xml[:body] << %{#{@tab*1}<text class="group">#{@tab*1}\n}
|
|
235
|
+
@@xml[:body] << %{#{@tab*2}#{para}#{@tab*1}\n}
|
|
236
|
+
@@xml[:body] << %{#{@tab*1}</text>\n}
|
|
237
|
+
@@xml[:body] << "#{@tab*0}</object>"
|
|
238
|
+
end
|
|
239
|
+
def poem_structure(para='')
|
|
240
|
+
para.gsub!(/<:verse(?:-end)?>/,'')
|
|
241
|
+
para.strip!
|
|
242
|
+
@@xml[:body] << %{#{@tab*0}<object>}
|
|
243
|
+
@@xml[:body] << %{#{@tab*1}<text class="verse">#{@tab*1}\n}
|
|
244
|
+
@@xml[:body] << %{#{@tab*2}#{para}#{@tab*1}\n}
|
|
245
|
+
@@xml[:body] << %{#{@tab*1}</text>\n}
|
|
246
|
+
@@xml[:body] << "#{@tab*0}</object>" << "\n"
|
|
247
|
+
end
|
|
248
|
+
def code_structure(para='')
|
|
249
|
+
para.gsub!(/<:code(?:-end)?>/,'')
|
|
250
|
+
para.strip!
|
|
251
|
+
@@xml[:body] << %{#{@tab*0}<object>}
|
|
252
|
+
@@xml[:body] << %{#{@tab*1}<text class="code">#{@tab*1}\n}
|
|
253
|
+
@@xml[:body] << %{#{@tab*2}#{para}#{@tab*1}\n}
|
|
254
|
+
@@xml[:body] << %{#{@tab*1}</text>\n}
|
|
255
|
+
@@xml[:body] << "#{@tab*0}</object>" << "\n"
|
|
256
|
+
end
|
|
257
|
+
def table_structure(table='') #tables
|
|
258
|
+
@@xml[:body] << %{#{@tab*0}<object>}
|
|
259
|
+
@@xml[:body] << %{#{@tab*1}#{table}\n#{@tab*1}\n} # unless lv # main text, contents, body KEEP
|
|
260
|
+
@@xml[:body] << "#{@tab*0}</object>" << "\n" #if para[@regx]
|
|
261
|
+
@endnotes=[]
|
|
262
|
+
end
|
|
263
|
+
def tidywords(wordlist)
|
|
264
|
+
wordlist.each do |x|
|
|
265
|
+
x.gsub!(/&/,'&') unless x =~/&\S+;/
|
|
266
|
+
end
|
|
267
|
+
end
|
|
268
|
+
def xml_clean(para)
|
|
269
|
+
para.gsub!(/#{Mx[:gl_o]}[1-9]:\S*?#{Mx[:gl_c]}/,'') #Danger, watch
|
|
270
|
+
para
|
|
271
|
+
end
|
|
272
|
+
def markup
|
|
273
|
+
data=[]
|
|
274
|
+
xml_sc(@md)
|
|
275
|
+
@endnotes,@level,@cont,@copen,@xml_contents_close=[],[],[],[],[]
|
|
276
|
+
@rcdc=false
|
|
277
|
+
(0..6).each { |x| @cont[x]=@level[x]=false }
|
|
278
|
+
(4..6).each { |x| @xml_contents_close[x]='' }
|
|
279
|
+
@data.each do |para|
|
|
280
|
+
data << SiSU_AO_DocumentStructureExtract::Structure.new(@md,para).structure #takes on Mx marks
|
|
281
|
+
end
|
|
282
|
+
data.each do |para|
|
|
283
|
+
if para !~/^\s*(?:%+ |<:code>)/
|
|
284
|
+
if @md.sem_tag and para =~/[:;]\{|\}[:;]/
|
|
285
|
+
para=@trans.xml_semantic_tags(para)
|
|
286
|
+
end
|
|
287
|
+
if para =~/[:;]\{|\}[:;]/
|
|
288
|
+
para=SiSU_Sem::Tags.new(para,@md).rm.all
|
|
289
|
+
end
|
|
290
|
+
end
|
|
291
|
+
para=@trans.markup_light(para)
|
|
292
|
+
@trans.char_enc.utf8(para) if @sys.locale =~/utf-?8/i #% utf8
|
|
293
|
+
para.gsub!(/^@(\S+?):/,"#{Mx[:lv_o]}@\\1#{Mx[:lv_c]}")
|
|
294
|
+
if para =~/\A#{Mx[:lv_o]}@(\S+?)#{Mx[:lv_c]}\s*(.+?)\Z/m # for headers
|
|
295
|
+
d_meta=SiSU_TextUtils::HeaderScan.new(@md,para).meta
|
|
296
|
+
if d_meta; xml_head(d_meta)
|
|
297
|
+
end
|
|
298
|
+
end
|
|
299
|
+
para='' if para=~/#{Mx[:lv_o]}@\S+?#{Mx[:lv_c]}/
|
|
300
|
+
if @rcdc==false \
|
|
301
|
+
and (para =~/~metadata/ or para =~/^1~meta\s+Document Information/)
|
|
302
|
+
@rcdc=true
|
|
303
|
+
end
|
|
304
|
+
if para !~/(^@\S+?:|^\s*$|<ENDNOTES>|<EOF>)/
|
|
305
|
+
@sto=SiSU_text_parts::SplitTextObject.new(@md,para).lev_segname_para
|
|
306
|
+
unless @rcdc
|
|
307
|
+
SiSU_XML_Format::FormatScroll.new(@md,@sto.text) if @sto.format =~/i[1-9]|ordinary/
|
|
308
|
+
case @sto.format
|
|
309
|
+
when /^(1):(\S*)/
|
|
310
|
+
xml_clean(para)
|
|
311
|
+
xml_structure(para,$1,$2)
|
|
312
|
+
para=@sto.lev_para_ocn.heading_body1
|
|
313
|
+
when /^(2):(\S*)/
|
|
314
|
+
xml_clean(para)
|
|
315
|
+
xml_structure(para,$1,$2)
|
|
316
|
+
para=@sto.lev_para_ocn.heading_body2
|
|
317
|
+
when /^(3):(\S*)/
|
|
318
|
+
xml_clean(para)
|
|
319
|
+
xml_structure(para,$1,$2)
|
|
320
|
+
para=@sto.lev_para_ocn.heading_body3
|
|
321
|
+
when /^(4):(\S*)/ # work on see SplitTextObject
|
|
322
|
+
xml_clean(para)
|
|
323
|
+
xml_structure(para,$1,$2)
|
|
324
|
+
para=@sto.lev_para_ocn.heading_body4
|
|
325
|
+
when /^(5):(\S*)/
|
|
326
|
+
xml_clean(para)
|
|
327
|
+
xml_structure(para,$1,$2)
|
|
328
|
+
para=@sto.lev_para_ocn.heading_body5
|
|
329
|
+
when /^(6):(\S*)/
|
|
330
|
+
xml_clean(para)
|
|
331
|
+
xml_structure(para,$1,$2)
|
|
332
|
+
para=@sto.lev_para_ocn.heading_body6
|
|
333
|
+
else
|
|
334
|
+
if para =~ /<:verse>/
|
|
335
|
+
para=poem_structure(para)
|
|
336
|
+
elsif para =~ /<:group>/
|
|
337
|
+
para=group_structure(para)
|
|
338
|
+
elsif para =~ /<:code>/
|
|
339
|
+
para.gsub!(/</,'<')
|
|
340
|
+
para.gsub!(/>/,'>')
|
|
341
|
+
para=code_structure(para)
|
|
342
|
+
elsif para =~/<!Th?.+/ # tables come as single block #work area 2005w13
|
|
343
|
+
table=SiSU_Tables::TableXML.new(para)
|
|
344
|
+
para=table.table_split
|
|
345
|
+
para=table_structure(para)
|
|
346
|
+
else xml_structure(para,nil,nil)
|
|
347
|
+
end
|
|
348
|
+
end
|
|
349
|
+
if para =~/<a name="n\d+">/ \
|
|
350
|
+
and para =~/^(-\{{2}~\d+|<!e[:_]\d+!>)/ # -endnote
|
|
351
|
+
para=''
|
|
352
|
+
end
|
|
353
|
+
if para =~/.*<:#>.*$/
|
|
354
|
+
para=case para
|
|
355
|
+
when /<:i1>/
|
|
356
|
+
format_text=FormatTextObject.new(para,'')
|
|
357
|
+
format_text.scr_inden_ocn_e_no_paranum
|
|
358
|
+
when /<:i2>/
|
|
359
|
+
format_text=FormatTextObject.new(para,'')
|
|
360
|
+
format_text.scr_inden_ocn_e_no_paranum
|
|
361
|
+
end
|
|
362
|
+
end
|
|
363
|
+
if para =~/<:center>/
|
|
364
|
+
one,two=/(.*)<:center>(.*)/.match(para)[1,2]
|
|
365
|
+
format_text=FormatTextObject.new(one,two)
|
|
366
|
+
para=format_text.center
|
|
367
|
+
end
|
|
368
|
+
end
|
|
369
|
+
para.gsub!(/<:\S+?>/,'')
|
|
370
|
+
para.gsub!(/<!.+!>/,'') ## Clean Prepared Text #bugwatch reinstate
|
|
371
|
+
para
|
|
372
|
+
end
|
|
373
|
+
para
|
|
374
|
+
end
|
|
375
|
+
6.downto(4) do |x|
|
|
376
|
+
y=x - 1; v=x - 3
|
|
377
|
+
@@xml[:body] << "#{@tab*5}</content>\n#{@tab*y}</contents#{v}>\n" if @level[x]==true
|
|
378
|
+
end
|
|
379
|
+
3.downto(1) do |x|
|
|
380
|
+
y=x - 1
|
|
381
|
+
@@xml[:body] << "#{@tab*y}</heading#{x}>\n" if @level[x]==true
|
|
382
|
+
end
|
|
383
|
+
end
|
|
384
|
+
def pre
|
|
385
|
+
rdf=SiSU_XML_Tags::RDF.new(@md)
|
|
386
|
+
dir=SiSU_Env::InfoEnv.new
|
|
387
|
+
@@xml[:head],@@xml[:body]=[],[]
|
|
388
|
+
css=SiSU_Env::CSS_Select.new(@md).xml_sax
|
|
389
|
+
encoding=if @sys.locale =~/utf-?8/i then '<?xml version="1.0" encoding="UTF-8" standalone="no"?>'
|
|
390
|
+
else '<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>'
|
|
391
|
+
end
|
|
392
|
+
@@xml[:open] =<<WOK
|
|
393
|
+
#{encoding}
|
|
394
|
+
<?xml-stylesheet type="text/css" href="../#{dir.path.style}/#{css}"?>
|
|
395
|
+
#{rdf.comment_xml_sax}
|
|
396
|
+
<document>
|
|
397
|
+
WOK
|
|
398
|
+
@@xml[:head] << "<head>\n"
|
|
399
|
+
@@xml[:body] << "<body>\n"
|
|
400
|
+
end
|
|
401
|
+
def post
|
|
402
|
+
@@xml[:head] << @@xml[:sc]
|
|
403
|
+
@@xml[:head] << "</head>\n"
|
|
404
|
+
@@xml[:body] << "</body>\n"
|
|
405
|
+
@@xml[:close] = "</document>\n"
|
|
406
|
+
end
|
|
407
|
+
def publish
|
|
408
|
+
content=[]
|
|
409
|
+
content << @@xml[:open] << @@xml[:head] << @@xml[:body] << @@xml[:metadata]
|
|
410
|
+
content << @@xml[:owner_details] if @md.stmp =~/\w\w/
|
|
411
|
+
content << @@xml[:tail] << @@xml[:close]
|
|
412
|
+
Output.new(content.join,@md).xml
|
|
413
|
+
@@xml={}
|
|
414
|
+
end
|
|
415
|
+
end
|
|
416
|
+
class Output
|
|
417
|
+
def initialize(data,md)
|
|
418
|
+
@data,@md=data,md
|
|
419
|
+
end
|
|
420
|
+
def xml
|
|
421
|
+
@sisu=[]
|
|
422
|
+
@data.each do |para|
|
|
423
|
+
para.gsub!(/<:\S+?>/,'')
|
|
424
|
+
para.gsub!(/<!.+?!>/,'')
|
|
425
|
+
para="#{para}\n" unless para.empty?
|
|
426
|
+
@sisu << para
|
|
427
|
+
end
|
|
428
|
+
new_file_data=@sisu.join
|
|
429
|
+
@sisu=new_file_data.scan(/.+/)
|
|
430
|
+
SiSU_Env::FileOp.new(@md).mkdir
|
|
431
|
+
filename_sxm=SiSU_Env::FileOp.new(@md,@md.fn[:sxs]).mkfile_pwd
|
|
432
|
+
if filename_sxm.is_a?(File)
|
|
433
|
+
@sisu.each {|para| filename_sxm.puts para}
|
|
434
|
+
filename_sxm.close
|
|
435
|
+
else puts 'file not created, is directory writable?'
|
|
436
|
+
end
|
|
437
|
+
end
|
|
438
|
+
end
|
|
439
|
+
class Tidy
|
|
440
|
+
def initialize(md,dir)
|
|
441
|
+
@md,@env=md,dir
|
|
442
|
+
@prog=SiSU_Env::InfoProgram.new
|
|
443
|
+
end
|
|
444
|
+
def xml
|
|
445
|
+
if @prog.tidy !=false #note values can be other than true
|
|
446
|
+
if (@md.opt.act[:verbose_plus][:set]==:on \
|
|
447
|
+
|| @md.opt.act[:maintenance][:set]==:on)
|
|
448
|
+
SiSU_Screen::Ansi.new(
|
|
449
|
+
@md.opt.act[:color_state][:set],
|
|
450
|
+
'invert',
|
|
451
|
+
'Using XML Tidy',
|
|
452
|
+
'check document structure'
|
|
453
|
+
).colorize unless @md.opt.act[:quiet][:set]==:on
|
|
454
|
+
SiSU_Screen::Ansi.new(
|
|
455
|
+
@md.opt.act[:color_state][:set],
|
|
456
|
+
'',
|
|
457
|
+
'',
|
|
458
|
+
'check document structure'
|
|
459
|
+
)
|
|
460
|
+
tell.grey_open unless @md.opt.act[:quiet][:set]==:on
|
|
461
|
+
tidyfile='/dev/null' #don't want one or screen output, check for alternative flags
|
|
462
|
+
tidy =SiSU_Env::SystemCall.new("#{Dir.pwd}/#{@md.fn[:sxs]}",tidyfile)
|
|
463
|
+
tidy.well_formed?
|
|
464
|
+
tell.p_off unless @md.opt.act[:quiet][:set]==:on
|
|
465
|
+
end
|
|
466
|
+
end
|
|
467
|
+
end
|
|
468
|
+
end
|
|
469
|
+
end
|
|
470
|
+
end
|
|
471
|
+
__END__
|