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
data/lib/sisu/xhtml.rb
ADDED
|
@@ -0,0 +1,472 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
=begin
|
|
3
|
+
|
|
4
|
+
* Name: SiSU
|
|
5
|
+
|
|
6
|
+
** Description: documents, structuring, processing, publishing, search
|
|
7
|
+
*** Description: xhtml output logic, flow
|
|
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/xhtml.rb;hb=HEAD>
|
|
55
|
+
|
|
56
|
+
=end
|
|
57
|
+
module SiSU_XHTML
|
|
58
|
+
require_relative 'se_hub_particulars' # se_hub_particulars.rb
|
|
59
|
+
include SiSU_Particulars
|
|
60
|
+
require_relative 'se' # se.rb
|
|
61
|
+
include SiSU_Env
|
|
62
|
+
require_relative 'xml_shared' # xml_shared.rb
|
|
63
|
+
include SiSU_XML_Munge
|
|
64
|
+
require_relative 'xml_format' # xml_format.rb
|
|
65
|
+
include SiSU_XML_Format
|
|
66
|
+
require_relative 'xml_persist' # xml_persist.rb
|
|
67
|
+
require_relative 'rexml' # rexml.rb
|
|
68
|
+
include SiSU_Rexml
|
|
69
|
+
require_relative 'shared_metadata' # shared_metadata.rb
|
|
70
|
+
@@alt_id_count=0
|
|
71
|
+
@@tablefoot=''
|
|
72
|
+
class Source
|
|
73
|
+
def initialize(opt)
|
|
74
|
+
@opt=opt
|
|
75
|
+
@particulars=SiSU_Particulars::CombinedSingleton.instance.get_all(opt)
|
|
76
|
+
end
|
|
77
|
+
def read
|
|
78
|
+
begin
|
|
79
|
+
@env,@md,@ao_array=@particulars.env,@particulars.md,@particulars.ao_array
|
|
80
|
+
unless @opt.act[:quiet][:set]==:on
|
|
81
|
+
tool=if (@opt.act[:verbose_plus][:set]==:on \
|
|
82
|
+
|| @opt.act[:maintenance][:set]==:on)
|
|
83
|
+
"#{@env.program.web_browser} file://#{@md.file.output_path.xhtml.dir}/#{@md.file.base_filename.xhtml}"
|
|
84
|
+
elsif @opt.act[:verbose][:set]==:on
|
|
85
|
+
"#{@env.program.web_browser} file://#{@md.file.output_path.xhtml.dir}/#{@md.file.base_filename.xhtml}"
|
|
86
|
+
else "[#{@opt.f_pth[:lng_is]}] #{@opt.fno}"
|
|
87
|
+
end
|
|
88
|
+
(@opt.act[:verbose][:set]==:on \
|
|
89
|
+
|| @opt.act[:verbose_plus][:set]==:on \
|
|
90
|
+
|| @opt.act[:maintenance][:set]==:on) \
|
|
91
|
+
? SiSU_Screen::Ansi.new(
|
|
92
|
+
@opt.act[:color_state][:set],
|
|
93
|
+
'XHTML',
|
|
94
|
+
tool
|
|
95
|
+
).green_hi_blue
|
|
96
|
+
: SiSU_Screen::Ansi.new(
|
|
97
|
+
@opt.act[:color_state][:set],
|
|
98
|
+
'XHTML',
|
|
99
|
+
tool
|
|
100
|
+
).green_title_hi
|
|
101
|
+
if (@opt.act[:verbose_plus][:set]==:on \
|
|
102
|
+
|| @opt.act[:maintenance][:set]==:on)
|
|
103
|
+
SiSU_Screen::Ansi.new(
|
|
104
|
+
@opt.act[:color_state][:set],
|
|
105
|
+
@opt.fns,
|
|
106
|
+
"/#{@md.file.output_path.xhtml.dir}/#{@md.file.base_filename.xhtml}"
|
|
107
|
+
).flow
|
|
108
|
+
end
|
|
109
|
+
end
|
|
110
|
+
SiSU_XHTML::Source::Songsheet.new(@particulars).song
|
|
111
|
+
rescue
|
|
112
|
+
SiSU_Errors::Rescued.new($!,$@,@opt.selections.str,@opt.fns).location do
|
|
113
|
+
__LINE__.to_s + ':' + __FILE__
|
|
114
|
+
end
|
|
115
|
+
ensure
|
|
116
|
+
SiSU_Env::CreateSite.new(@opt).cp_css
|
|
117
|
+
Dir.chdir(@opt.f_pth[:pth])
|
|
118
|
+
end
|
|
119
|
+
end
|
|
120
|
+
private
|
|
121
|
+
class Songsheet
|
|
122
|
+
def initialize(particulars)
|
|
123
|
+
@env,@md,@ao_array,@particulars=particulars.env,particulars.md,particulars.ao_array,particulars
|
|
124
|
+
@file=SiSU_Env::FileOp.new(@md)
|
|
125
|
+
end
|
|
126
|
+
def song
|
|
127
|
+
begin
|
|
128
|
+
SiSU_XHTML::Source::Scroll.new(@particulars).songsheet
|
|
129
|
+
if (@md.opt.act[:verbose][:set]==:on \
|
|
130
|
+
|| @md.opt.act[:verbose_plus][:set]==:on \
|
|
131
|
+
|| @md.opt.act[:maintenance][:set]==:on)
|
|
132
|
+
SiSU_XHTML::Source::Tidy.new(@md,@file.place_file.xhtml.dir).xml # test wellformedness, comment out when not in use
|
|
133
|
+
end
|
|
134
|
+
SiSU_Rexml::Rexml.new(@md,@file.place_file.xhtml.dir).xml if @md.opt.act[:maintenance][:set]==:on # test rexml parsing, comment out when not in use #debug
|
|
135
|
+
rescue
|
|
136
|
+
SiSU_Errors::Rescued.new($!,$@,@md.opt.selections.str,@md.fns).location do
|
|
137
|
+
__LINE__.to_s + ':' + __FILE__
|
|
138
|
+
end
|
|
139
|
+
ensure
|
|
140
|
+
end
|
|
141
|
+
end
|
|
142
|
+
end
|
|
143
|
+
class Scroll
|
|
144
|
+
require_relative 'xhtml_shared' # xhtml_shared.rb #check already called
|
|
145
|
+
require_relative 'txt_shared' # txt_shared.rb
|
|
146
|
+
include SiSU_TextUtils
|
|
147
|
+
require_relative 'css' # css.rb
|
|
148
|
+
def initialize(particulars)
|
|
149
|
+
@env,@md,@ao_array=particulars.env,particulars.md,particulars.ao_array
|
|
150
|
+
@tab="\t"
|
|
151
|
+
@trans=SiSU_XML_Munge::Trans.new(@md)
|
|
152
|
+
@sys=SiSU_Env::SystemCall.new
|
|
153
|
+
@per=SiSU_XML_Persist::Persist.new
|
|
154
|
+
end
|
|
155
|
+
def songsheet
|
|
156
|
+
begin
|
|
157
|
+
pre
|
|
158
|
+
@data=markup(@ao_array)
|
|
159
|
+
post
|
|
160
|
+
publish
|
|
161
|
+
ensure
|
|
162
|
+
SiSU_XML_Persist::Persist.new.persist_init
|
|
163
|
+
end
|
|
164
|
+
end
|
|
165
|
+
protected
|
|
166
|
+
def embedded_endnotes(dob='')
|
|
167
|
+
dob.obj=dob.obj.gsub(/#{Mx[:en_a_o]}(\d+)\s+(.+?)#{Mx[:en_a_c]}/,
|
|
168
|
+
'<endnote><number>\1</number><note>\2</note></endnote> ').
|
|
169
|
+
gsub(/#{Mx[:en_b_o]}([*+]\d+)\s+(.+?)#{Mx[:en_b_c]}/,
|
|
170
|
+
'<endnote><symbol>\1</symbol><note>\2</note></endnote> ').
|
|
171
|
+
gsub(/#{Mx[:en_a_o]}([*+]+)\s+(.+?)#{Mx[:en_a_c]}/,
|
|
172
|
+
'<endnote><symbol>\1</symbol><note>\2</note></endnote> ')
|
|
173
|
+
end
|
|
174
|
+
def extract_endnotes(dob='')
|
|
175
|
+
notes=dob.obj.scan(/(?:#{Mx[:en_a_o]}|#{Mx[:en_b_o]})([\d*+]+\s+.+?)(?:#{Mx[:en_a_c]}|#{Mx[:en_b_c]})/)
|
|
176
|
+
notes.flatten.each do |e|
|
|
177
|
+
s=e.to_s
|
|
178
|
+
util=SiSU_TextUtils::Wrap.new(s,70)
|
|
179
|
+
wrap=util.line_wrap
|
|
180
|
+
wrap=wrap.gsub(/^(\d+)\s+(.+?)\s*\Z/m, <<WOK
|
|
181
|
+
#{Ax[:tab]*1}<endnote notenumber="\\1">
|
|
182
|
+
#{Ax[:tab]*2}\\1. \\2
|
|
183
|
+
#{Ax[:tab]*1}</endnote>
|
|
184
|
+
WOK
|
|
185
|
+
).
|
|
186
|
+
gsub(/^([*+]\d+)\s+(.+?)\s*\Z/m, <<WOK
|
|
187
|
+
#{Ax[:tab]*1}<endnote symbol="\\1">
|
|
188
|
+
#{Ax[:tab]*2}\\1 \\2
|
|
189
|
+
#{Ax[:tab]*1}</endnote>
|
|
190
|
+
WOK
|
|
191
|
+
).
|
|
192
|
+
gsub(/^([*+]+)\s+(.+?)\s*\Z/m, <<WOK
|
|
193
|
+
#{Ax[:tab]*1}<endnote symbol="\\1.length">
|
|
194
|
+
#{Ax[:tab]*2}\\1 \\2
|
|
195
|
+
#{Ax[:tab]*1}</endnote>
|
|
196
|
+
WOK
|
|
197
|
+
)
|
|
198
|
+
#KEEP alternative presentation of endnotes
|
|
199
|
+
# wrap=wrap.gsub(/^(\d+)\s+(.+?)\s*\Z/m, <<WOK
|
|
200
|
+
##{Ax[:tab]*1}<p class="endnote" notenumber="\\1">
|
|
201
|
+
##{Ax[:tab]*2}\\1. \\2
|
|
202
|
+
##{Ax[:tab]*1}</p>
|
|
203
|
+
#WOK
|
|
204
|
+
#)
|
|
205
|
+
@endnotes << wrap
|
|
206
|
+
end
|
|
207
|
+
end
|
|
208
|
+
def xml_head
|
|
209
|
+
metadata=SiSU_Metadata::Summary.new(@md).xhtml_scroll.metadata
|
|
210
|
+
@per.head << metadata
|
|
211
|
+
end
|
|
212
|
+
def name_tags(dob)
|
|
213
|
+
tags=''
|
|
214
|
+
if defined? dob.tags \
|
|
215
|
+
and dob.tags.length > 0 # insert tags "hypertargets"
|
|
216
|
+
dob.tags.each do |t|
|
|
217
|
+
tags=tags << %{<named id="#{t}" />}
|
|
218
|
+
end
|
|
219
|
+
end
|
|
220
|
+
tags
|
|
221
|
+
end
|
|
222
|
+
def xml_structure(dob,type='norm')
|
|
223
|
+
if dob.is ==:para \
|
|
224
|
+
|| dob.is ==:heading
|
|
225
|
+
named=name_tags(dob)
|
|
226
|
+
if dob.is==:heading
|
|
227
|
+
lv=dob.ln
|
|
228
|
+
dob.ln + 2
|
|
229
|
+
else lv=nil
|
|
230
|
+
end
|
|
231
|
+
extract_endnotes(dob)
|
|
232
|
+
dob.obj=dob.obj.gsub(/#{Mx[:en_a_o]}([\d*+]+)\s+(?:.+?)#{Mx[:en_a_c]}/,'<en>\1</en>'). #footnote/endnote clean
|
|
233
|
+
gsub(/#{Mx[:en_b_o]}([\d*+]+)\s+(?:.+?)#{Mx[:en_b_c]}/,'<en>\1</en>')
|
|
234
|
+
util=SiSU_TextUtils::Wrap.new(dob.obj,70)
|
|
235
|
+
wrapped=util.line_wrap
|
|
236
|
+
@per.body << if defined? dob.ocn
|
|
237
|
+
%{#{Ax[:tab]*0}<object id="#{dob.ocn}">}
|
|
238
|
+
else "#{Ax[:tab]*0}<object>"
|
|
239
|
+
end
|
|
240
|
+
@per.body << %{#{Ax[:tab]*1}<text class="#{type}">#{named}\n#{Ax[:tab]*2}#{wrapped}\n#{Ax[:tab]*1}</text>} unless lv # main text, contents, body KEEP
|
|
241
|
+
@per.body << %{#{Ax[:tab]*1}<text class="h#{lv}">#{named}\n#{Ax[:tab]*2}#{wrapped}\n#{Ax[:tab]*1}</text>} if lv # main text, contents, body KEEP
|
|
242
|
+
@per.body << @endnotes.compact.join if @endnotes.length > 0 # main text, endnotes KEEP
|
|
243
|
+
@per.body << "#{Ax[:tab]*1}<ocn>#{dob.ocn}</ocn>" if defined? dob.ocn
|
|
244
|
+
@per.body << "#{Ax[:tab]*0}</object>"
|
|
245
|
+
@endnotes=[]
|
|
246
|
+
end
|
|
247
|
+
end
|
|
248
|
+
def block_structure(dob)
|
|
249
|
+
named=name_tags(dob)
|
|
250
|
+
dob=@trans.markup_block(dob)
|
|
251
|
+
dob.obj=dob.obj.strip.
|
|
252
|
+
gsub(/#{Mx[:en_a_o]}([\d*+]+)\s+(?:.+?)#{Mx[:en_a_c]}/,'<en>\1</en>'). #footnote/endnote clean
|
|
253
|
+
gsub(/#{Mx[:en_b_o]}([\d*+]+)\s+(?:.+?)#{Mx[:en_b_c]}/,'<en>\1</en>') #footnote/endnote clean
|
|
254
|
+
@per.body << %{#{Ax[:tab]*0}<object id="#{dob.ocn}">}
|
|
255
|
+
@per.body << %{#{Ax[:tab]*1}<ocn>#{dob.ocn}</ocn>}
|
|
256
|
+
@per.body << %{#{Ax[:tab]*1}<text class="block">#{named}#{Ax[:tab]*1}}
|
|
257
|
+
@per.body << %{#{Ax[:tab]*2}#{dob.obj}#{Ax[:tab]*1}}
|
|
258
|
+
@per.body << %{#{Ax[:tab]*1}</text>}
|
|
259
|
+
@per.body << "#{Ax[:tab]*0}</object>"
|
|
260
|
+
end
|
|
261
|
+
def group_structure(dob)
|
|
262
|
+
named=name_tags(dob)
|
|
263
|
+
dob=@trans.markup_group(dob)
|
|
264
|
+
dob.obj=dob.obj.strip.
|
|
265
|
+
gsub(/#{Mx[:en_a_o]}([\d*+]+)\s+(?:.+?)#{Mx[:en_a_c]}/,'<en>\1</en>'). #footnote/endnote clean
|
|
266
|
+
gsub(/#{Mx[:en_b_o]}([\d*+]+)\s+(?:.+?)#{Mx[:en_b_c]}/,'<en>\1</en>') #footnote/endnote clean
|
|
267
|
+
@per.body << %{#{Ax[:tab]*0}<object id="#{dob.ocn}">}
|
|
268
|
+
@per.body << %{#{Ax[:tab]*1}<ocn>#{dob.ocn}</ocn>}
|
|
269
|
+
@per.body << %{#{Ax[:tab]*1}<text class="group">#{named}#{Ax[:tab]*1}}
|
|
270
|
+
@per.body << %{#{Ax[:tab]*2}#{dob.obj}#{Ax[:tab]*1}}
|
|
271
|
+
@per.body << %{#{Ax[:tab]*1}</text>}
|
|
272
|
+
@per.body << "#{Ax[:tab]*0}</object>"
|
|
273
|
+
end
|
|
274
|
+
def poem_structure(dob)
|
|
275
|
+
named=name_tags(dob)
|
|
276
|
+
dob=@trans.markup_group(dob)
|
|
277
|
+
dob.obj=dob.obj.strip
|
|
278
|
+
@per.body << %{#{Ax[:tab]*0}<object id="#{dob.ocn}">}
|
|
279
|
+
@per.body << %{#{Ax[:tab]*1}<ocn>#{dob.ocn}</ocn>}
|
|
280
|
+
@per.body << %{#{Ax[:tab]*1}<text class="verse">#{named}#{Ax[:tab]*1}}
|
|
281
|
+
@per.body << %{#{Ax[:tab]*2}#{dob.obj}#{Ax[:tab]*1}}
|
|
282
|
+
@per.body << %{#{Ax[:tab]*1}</text>}
|
|
283
|
+
@per.body << "#{Ax[:tab]*0}</object>"
|
|
284
|
+
end
|
|
285
|
+
def code_structure(dob)
|
|
286
|
+
named=name_tags(dob)
|
|
287
|
+
dob=@trans.markup_group(dob)
|
|
288
|
+
dob.obj=dob.obj.gsub(/\s\s/,'  ').strip
|
|
289
|
+
@per.body << %{#{Ax[:tab]*0}<object id="#{dob.ocn}">}
|
|
290
|
+
@per.body << %{#{Ax[:tab]*1}<ocn>#{dob.ocn}</ocn>}
|
|
291
|
+
@per.body << %{#{Ax[:tab]*1}<text class="code">#{named}#{Ax[:tab]*1}}
|
|
292
|
+
@per.body << %{#{Ax[:tab]*2}#{dob.obj}#{Ax[:tab]*1}}
|
|
293
|
+
@per.body << %{#{Ax[:tab]*1}</text>}
|
|
294
|
+
@per.body << "#{Ax[:tab]*0}</object>"
|
|
295
|
+
end
|
|
296
|
+
def table_structure(dob)
|
|
297
|
+
named=name_tags(dob)
|
|
298
|
+
table=SiSU_XHTML_Shared::TableXHTML.new(dob)
|
|
299
|
+
@per.body << %{#{Ax[:tab]*0}<object id="#{dob.ocn}">}
|
|
300
|
+
@per.body << %{#{Ax[:tab]*1}<ocn>#{dob.ocn}</ocn>}
|
|
301
|
+
@per.body << %{#{Ax[:tab]*2}#{named}#{table.table.obj}}
|
|
302
|
+
@per.body << "#{Ax[:tab]*0}</object>"
|
|
303
|
+
end
|
|
304
|
+
def markup(data)
|
|
305
|
+
@endnotes=[]
|
|
306
|
+
@rcdc=false
|
|
307
|
+
@level,@cont,@copen,@xml_contents_close=[],[],[],[]
|
|
308
|
+
xml_head
|
|
309
|
+
(0..7).each { |x| @cont[x]=@level[x]=false }
|
|
310
|
+
(4..7).each { |x| @xml_contents_close[x]='' }
|
|
311
|
+
data.each do |dob|
|
|
312
|
+
dob=@trans.char_enc.utf8(dob) if @sys.locale =~/utf-?8/i #% utf8
|
|
313
|
+
dob=@trans.markup(dob)
|
|
314
|
+
if @rcdc==false \
|
|
315
|
+
and (dob.obj =~/~meta/ \
|
|
316
|
+
and dob.obj =~/Document Information/)
|
|
317
|
+
@rcdc=true
|
|
318
|
+
end
|
|
319
|
+
if dob.obj !~/(^#{Rx[:meta]}|#{Mx[:br_eof]}|#{Mx[:br_endnotes]})/
|
|
320
|
+
if defined? dob.ocn #look to move to format section
|
|
321
|
+
ocn=(dob.ocn.to_s =~/\d+/) ? dob.ocn : nil
|
|
322
|
+
@p_num=SiSU_XML_Format::ParagraphNumber.new(@md,ocn)
|
|
323
|
+
end
|
|
324
|
+
if not @rcdc
|
|
325
|
+
x=SiSU_XML_Format::FormatSeg.new(@md,dob)
|
|
326
|
+
if dob.is==:heading
|
|
327
|
+
xml_structure(dob)
|
|
328
|
+
dob.obj=case dob.ln
|
|
329
|
+
when 0 then x.heading_body0
|
|
330
|
+
when 1 then x.heading_body1
|
|
331
|
+
when 2 then x.heading_body2
|
|
332
|
+
when 3 then x.heading_body3
|
|
333
|
+
when 4 then x.heading_body4
|
|
334
|
+
when 5 then x.heading_body5
|
|
335
|
+
when 6 then x.heading_body6
|
|
336
|
+
when 7 then x.heading_body7
|
|
337
|
+
end
|
|
338
|
+
else
|
|
339
|
+
if dob.is ==:verse
|
|
340
|
+
poem_structure(dob)
|
|
341
|
+
elsif dob.is ==:group
|
|
342
|
+
group_structure(dob)
|
|
343
|
+
elsif dob.is ==:block
|
|
344
|
+
block_structure(dob)
|
|
345
|
+
elsif dob.is ==:code
|
|
346
|
+
code_structure(dob)
|
|
347
|
+
elsif dob.is ==:table
|
|
348
|
+
table_structure(dob)
|
|
349
|
+
elsif dob.is ==:para \
|
|
350
|
+
and dob.indent.to_s =~/[1-9]/ \
|
|
351
|
+
and dob.bullet_==true
|
|
352
|
+
xml_structure(dob,"indent_bullet#{dob.indent}")
|
|
353
|
+
elsif dob.is ==:para \
|
|
354
|
+
and dob.indent.to_s =~/[1-9]/ \
|
|
355
|
+
and dob.indent == dob.hang
|
|
356
|
+
xml_structure(dob,"indent#{dob.indent}")
|
|
357
|
+
elsif dob.is==:para \
|
|
358
|
+
and dob.hang.to_s =~/[0-9]/ \
|
|
359
|
+
and dob.indent != dob.hang
|
|
360
|
+
xml_structure(dob,"hang#{dob.hang.to_s}_indent#{dob.indent.to_s}")
|
|
361
|
+
else xml_structure(dob)
|
|
362
|
+
end
|
|
363
|
+
end
|
|
364
|
+
if dob.obj =~/.*<:#>.*$/ #investigate removal
|
|
365
|
+
dob.obj=if dob.obj =~ /#{Mx[:pa_o]}:i[1-9]#{Mx[:pa_c]}/
|
|
366
|
+
txt_obj={ txt: dob }
|
|
367
|
+
format_text=FormatTextObject.new(@md,txt_obj)
|
|
368
|
+
format_text.scr_inden_ocn_e_no_paranum
|
|
369
|
+
end
|
|
370
|
+
end
|
|
371
|
+
else #
|
|
372
|
+
end
|
|
373
|
+
dob.obj=dob.obj.gsub(/#{Mx[:pa_o]}:\S+#{Mx[:pa_c]}/,'') if dob.obj
|
|
374
|
+
end
|
|
375
|
+
end
|
|
376
|
+
6.downto(4) do |x|
|
|
377
|
+
y=x - 1; v=x - 3
|
|
378
|
+
@per.body << "#{Ax[:tab]*5}</content>\n#{Ax[:tab]*y}</contents#{v}>" if @level[x]==true
|
|
379
|
+
end
|
|
380
|
+
3.downto(1) do |x|
|
|
381
|
+
y=x - 1
|
|
382
|
+
@per.body << "#{Ax[:tab]*y}</heading#{x}>" if @level[x]==true
|
|
383
|
+
end
|
|
384
|
+
end
|
|
385
|
+
def pre
|
|
386
|
+
rdf=SiSU_XML_Tags::RDF.new(@md)
|
|
387
|
+
@per.head,@per.body=[],[]
|
|
388
|
+
stylesheet=SiSU_Style::CSS_HeadInfo.new(@md,'xhtml').stylesheet
|
|
389
|
+
encoding=(@sys.locale =~/utf-?8/i) \
|
|
390
|
+
? '<?xml version="1.0" encoding="UTF-8" standalone="no"?>'
|
|
391
|
+
: '<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>'
|
|
392
|
+
@per.open =<<WOK
|
|
393
|
+
#{encoding}
|
|
394
|
+
#{stylesheet.css_head_xml}
|
|
395
|
+
#{rdf.comment_xml}
|
|
396
|
+
<document>
|
|
397
|
+
WOK
|
|
398
|
+
@per.head << %{<head>\n\t<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />}
|
|
399
|
+
@per.body << '<body>'
|
|
400
|
+
end
|
|
401
|
+
def post
|
|
402
|
+
@per.head << '</head>'
|
|
403
|
+
@per.body << '</body>'
|
|
404
|
+
@per.close = '</document>'
|
|
405
|
+
end
|
|
406
|
+
def publish
|
|
407
|
+
content=[]
|
|
408
|
+
content << @per.open << @per.head << @per.body << @per.metadata
|
|
409
|
+
content << @per.tail << @per.close
|
|
410
|
+
content=content.flatten.compact
|
|
411
|
+
Output.new(content,@md).xhtml
|
|
412
|
+
@@xml={}
|
|
413
|
+
end
|
|
414
|
+
end
|
|
415
|
+
class Output
|
|
416
|
+
def initialize(data,md)
|
|
417
|
+
@data,@md=data,md
|
|
418
|
+
@file=SiSU_Env::FileOp.new(@md)
|
|
419
|
+
end
|
|
420
|
+
def xhtml
|
|
421
|
+
SiSU_Env::FileOp.new(@md).mkdir
|
|
422
|
+
filename_xml=@file.write_file.xhtml
|
|
423
|
+
@data.each do |str|
|
|
424
|
+
str=str.gsub(/\A\s+\Z/m,'') #str.gsub(/^\s+$/,'')
|
|
425
|
+
filename_xml.puts str unless str.empty?
|
|
426
|
+
end
|
|
427
|
+
filename_xml.close
|
|
428
|
+
end
|
|
429
|
+
end
|
|
430
|
+
class Tidy
|
|
431
|
+
def initialize(md,file)
|
|
432
|
+
@md,@file=md,file
|
|
433
|
+
@prog=SiSU_Env::InfoProgram.new
|
|
434
|
+
end
|
|
435
|
+
def xml
|
|
436
|
+
if @prog.tidy !=false
|
|
437
|
+
if (@md.opt.act[:verbose_plus][:set]==:on \
|
|
438
|
+
|| @md.opt.act[:maintenance][:set]==:on)
|
|
439
|
+
unless @md.opt.act[:quiet][:set]==:on
|
|
440
|
+
SiSU_Screen::Ansi.new(
|
|
441
|
+
@md.opt.act[:color_state][:set],
|
|
442
|
+
'invert',
|
|
443
|
+
'Using XML Tidy',
|
|
444
|
+
'check document structure'
|
|
445
|
+
).colorize
|
|
446
|
+
tell=SiSU_Screen::Ansi.new(
|
|
447
|
+
@md.opt.act[:color_state][:set],
|
|
448
|
+
'invert',
|
|
449
|
+
'',
|
|
450
|
+
''
|
|
451
|
+
)
|
|
452
|
+
tell.grey_open
|
|
453
|
+
end
|
|
454
|
+
tidyfile='/dev/null' #don't want one or screen output, check for alternative flags
|
|
455
|
+
tidy=SiSU_Env::SystemCall.new(@file,tidyfile)
|
|
456
|
+
tidy.well_formed?
|
|
457
|
+
tell.p_off unless @md.opt.act[:quiet][:set]==:on
|
|
458
|
+
end
|
|
459
|
+
end
|
|
460
|
+
end
|
|
461
|
+
end
|
|
462
|
+
end
|
|
463
|
+
end
|
|
464
|
+
__END__
|
|
465
|
+
** Notes:
|
|
466
|
+
tidy -xml scroll.xhtml >> index.tidy
|
|
467
|
+
<?xml version="1.0"?>
|
|
468
|
+
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
|
469
|
+
<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
|
|
470
|
+
<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>
|
|
471
|
+
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
|
472
|
+
<?xml version="1.0" encoding="UTF-16" standalone="no"?>
|