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,278 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
=begin
|
|
3
|
+
|
|
4
|
+
* Name: SiSU
|
|
5
|
+
|
|
6
|
+
** Description: documents, structuring, processing, publishing, search
|
|
7
|
+
*** html segment generation, processing
|
|
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_epub2_persist.rb;hb=HEAD>
|
|
55
|
+
|
|
56
|
+
=end
|
|
57
|
+
module SiSU_XHTML_EPUB2_Persist
|
|
58
|
+
class Persist
|
|
59
|
+
@@persist=nil
|
|
60
|
+
attr_accessor :is0,:is1,:is2,:is3,:is4,:heading0,:heading1,:heading2,:heading3,:heading4, :title, :nav, :tocband_banner, :tocband_bannerless, :headings, :heading_endnotes, :main, :endnote_all, :tail, :credits, :heading_idx, :idx, :seg_endnotes, :seg_endnotes_array, :closed, :get_hash_fn, :get_hash_to, :seg_subtoc, :seg_subtoc_array, :fn, :seg_name ,:seg_name_x,:seg_name_x_tracker
|
|
61
|
+
def initialize(args=nil)
|
|
62
|
+
@@persist=args=(args ? args : (@@persist || persist_init_hash_values))
|
|
63
|
+
@is0=args[:is0]
|
|
64
|
+
@is1=args[:is1]
|
|
65
|
+
@is2=args[:is2]
|
|
66
|
+
@is3=args[:is3]
|
|
67
|
+
@is4=args[:is4]
|
|
68
|
+
@heading0=args[:heading0]
|
|
69
|
+
@heading1=args[:heading1]
|
|
70
|
+
@heading2=args[:heading2]
|
|
71
|
+
@heading3=args[:heading3]
|
|
72
|
+
@heading4=args[:heading4]
|
|
73
|
+
@title=args[:title]
|
|
74
|
+
@nav=args[:nav]
|
|
75
|
+
@tocband_banner=args[:tocband_banner]
|
|
76
|
+
@tocband_bannerless=args[:tocband_bannerless]
|
|
77
|
+
@headings=args[:headings]
|
|
78
|
+
@heading_endnotes=args[:heading_endnotes]
|
|
79
|
+
@main=args[:main]
|
|
80
|
+
@endnote_all=args[:endnote_all]
|
|
81
|
+
@tail=args[:tail]
|
|
82
|
+
@credits=args[:credits]
|
|
83
|
+
#@heading_idx=args[:heading_idx]
|
|
84
|
+
@idx=args[:idx]
|
|
85
|
+
@seg_endnotes=args[:seg_endnotes]
|
|
86
|
+
@seg_endnotes_array=args[:seg_endnotes_array]
|
|
87
|
+
@closed=args[:closed]
|
|
88
|
+
@get_hash_to=args[:get_hash_to]
|
|
89
|
+
@get_hash_fn=args[:get_hash_fn]
|
|
90
|
+
@seg_subtoc=args[:seg_subtoc]
|
|
91
|
+
@seg_subtoc_array=args[:seg_subtoc_array]
|
|
92
|
+
@fn=args[:fn]
|
|
93
|
+
@seg_name=args[:seg_name]
|
|
94
|
+
@seg_name_x=args[:seg_name_x]
|
|
95
|
+
@seg_name_x_tracker=args[:seg_name_x_tracker]
|
|
96
|
+
end
|
|
97
|
+
def is0
|
|
98
|
+
@is0
|
|
99
|
+
end
|
|
100
|
+
def is1
|
|
101
|
+
@is1
|
|
102
|
+
end
|
|
103
|
+
def is2
|
|
104
|
+
@is2
|
|
105
|
+
end
|
|
106
|
+
def is3
|
|
107
|
+
@is3
|
|
108
|
+
end
|
|
109
|
+
def is4
|
|
110
|
+
@is4
|
|
111
|
+
end
|
|
112
|
+
def heading0
|
|
113
|
+
@heading0
|
|
114
|
+
end
|
|
115
|
+
def heading1
|
|
116
|
+
@heading1
|
|
117
|
+
end
|
|
118
|
+
def heading2
|
|
119
|
+
@heading2
|
|
120
|
+
end
|
|
121
|
+
def heading3
|
|
122
|
+
@heading3
|
|
123
|
+
end
|
|
124
|
+
def heading4
|
|
125
|
+
@heading4
|
|
126
|
+
end
|
|
127
|
+
def title
|
|
128
|
+
@title
|
|
129
|
+
end
|
|
130
|
+
def nav
|
|
131
|
+
@nav
|
|
132
|
+
end
|
|
133
|
+
def tocband_banner
|
|
134
|
+
@tocband_banner
|
|
135
|
+
end
|
|
136
|
+
def tocband_bannerless
|
|
137
|
+
@tocband_bannerless
|
|
138
|
+
end
|
|
139
|
+
def headings
|
|
140
|
+
@headings
|
|
141
|
+
end
|
|
142
|
+
def heading_endnotes
|
|
143
|
+
@heading_endnotes
|
|
144
|
+
end
|
|
145
|
+
def main
|
|
146
|
+
@main
|
|
147
|
+
end
|
|
148
|
+
def endnote_all
|
|
149
|
+
@endnote_all
|
|
150
|
+
end
|
|
151
|
+
def tail
|
|
152
|
+
@tail
|
|
153
|
+
end
|
|
154
|
+
def credits
|
|
155
|
+
@credits
|
|
156
|
+
end
|
|
157
|
+
def heading_idx
|
|
158
|
+
@heading_idx
|
|
159
|
+
end
|
|
160
|
+
def idx
|
|
161
|
+
@idx
|
|
162
|
+
end
|
|
163
|
+
def seg_endnotes
|
|
164
|
+
@seg_endnotes
|
|
165
|
+
end
|
|
166
|
+
def seg_endnotes_array
|
|
167
|
+
@seg_endnotes_array
|
|
168
|
+
end
|
|
169
|
+
def closed
|
|
170
|
+
@closed
|
|
171
|
+
end
|
|
172
|
+
def get_hash_to
|
|
173
|
+
@get_hash_to
|
|
174
|
+
end
|
|
175
|
+
def get_hash_fn
|
|
176
|
+
@get_hash_fn
|
|
177
|
+
end
|
|
178
|
+
def seg_subtoc
|
|
179
|
+
@seg_subtoc
|
|
180
|
+
end
|
|
181
|
+
def seg_subtoc_array
|
|
182
|
+
@seg_subtoc_array
|
|
183
|
+
end
|
|
184
|
+
def fn
|
|
185
|
+
@fn
|
|
186
|
+
end
|
|
187
|
+
def seg_name
|
|
188
|
+
@seg_name
|
|
189
|
+
end
|
|
190
|
+
def seg_name_x
|
|
191
|
+
@seg_name_x
|
|
192
|
+
end
|
|
193
|
+
def seg_name_x_tracker
|
|
194
|
+
@seg_name_x_tracker
|
|
195
|
+
end
|
|
196
|
+
def persist_init_hash_values
|
|
197
|
+
{
|
|
198
|
+
is0: 0,
|
|
199
|
+
is1: 0,
|
|
200
|
+
is2: 0,
|
|
201
|
+
is3: 0,
|
|
202
|
+
is4: 0,
|
|
203
|
+
heading0: '',
|
|
204
|
+
heading1: '',
|
|
205
|
+
heading2: '',
|
|
206
|
+
heading3: '',
|
|
207
|
+
heading4: '',
|
|
208
|
+
tocband_banner: [],
|
|
209
|
+
tocband_bannerless: [],
|
|
210
|
+
title: [],
|
|
211
|
+
nav: [],
|
|
212
|
+
headings: [],
|
|
213
|
+
main: [],
|
|
214
|
+
idx: [],
|
|
215
|
+
tail: [],
|
|
216
|
+
credits: [],
|
|
217
|
+
endnote_all: [],
|
|
218
|
+
heading_endnotes: '',
|
|
219
|
+
seg_endnotes: {},
|
|
220
|
+
seg_endnotes_array: [],
|
|
221
|
+
closed: [],
|
|
222
|
+
get_hash_fn: '',
|
|
223
|
+
get_hash_to: '',
|
|
224
|
+
seg_subtoc: {},
|
|
225
|
+
seg_subtoc_array: [],
|
|
226
|
+
fn: '',
|
|
227
|
+
seg_name: [],
|
|
228
|
+
seg_name_x: [],
|
|
229
|
+
seg_name_x_tracker: 0,
|
|
230
|
+
}
|
|
231
|
+
end
|
|
232
|
+
def persist_init
|
|
233
|
+
@@persist=nil
|
|
234
|
+
Persist.new(persist_init_hash_values)
|
|
235
|
+
end
|
|
236
|
+
end
|
|
237
|
+
class PersistTOC
|
|
238
|
+
@@persist=nil
|
|
239
|
+
attr_accessor :seg,:seg_mini,:scr,:ncx,:opf
|
|
240
|
+
def initialize(args=nil)
|
|
241
|
+
@@persist=args=(args ? args : (@@persist || persist_init_hash_values))
|
|
242
|
+
@seg=args[:seg]
|
|
243
|
+
@seg_mini=args[:seg_mini]
|
|
244
|
+
@scr=args[:scr]
|
|
245
|
+
@ncx=args[:ncx]
|
|
246
|
+
@opf=args[:opf]
|
|
247
|
+
end
|
|
248
|
+
def seg
|
|
249
|
+
@seg
|
|
250
|
+
end
|
|
251
|
+
def seg_mini
|
|
252
|
+
@seg_mini
|
|
253
|
+
end
|
|
254
|
+
def scr
|
|
255
|
+
@scr
|
|
256
|
+
end
|
|
257
|
+
def ncx
|
|
258
|
+
@ncx
|
|
259
|
+
end
|
|
260
|
+
def opf
|
|
261
|
+
@opf
|
|
262
|
+
end
|
|
263
|
+
def persist_init_hash_values
|
|
264
|
+
{
|
|
265
|
+
seg: [],
|
|
266
|
+
seg_mini: [],
|
|
267
|
+
scr: [],
|
|
268
|
+
ncx: [],
|
|
269
|
+
opf: [],
|
|
270
|
+
}
|
|
271
|
+
end
|
|
272
|
+
def persist_init
|
|
273
|
+
@@persist=nil
|
|
274
|
+
PersistTOC.new(persist_init_hash_values)
|
|
275
|
+
end
|
|
276
|
+
end
|
|
277
|
+
end
|
|
278
|
+
__END__
|
|
@@ -0,0 +1,599 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
=begin
|
|
3
|
+
|
|
4
|
+
* Name: SiSU
|
|
5
|
+
|
|
6
|
+
** Description: documents, structuring, processing, publishing, search
|
|
7
|
+
*** epub segment generation, processing
|
|
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_epub2_segments.rb;hb=HEAD>
|
|
55
|
+
|
|
56
|
+
=end
|
|
57
|
+
module SiSU_XHTML_EPUB2_Seg
|
|
58
|
+
require_relative 'xhtml_shared' # xhtml_shared.rb
|
|
59
|
+
require_relative 'xhtml_epub2' # xhtml_epub2.rb
|
|
60
|
+
require_relative 'xhtml_epub2_persist' # xhtml_epub2_persist.rb
|
|
61
|
+
require_relative 'shared_metadata' # shared_metadata.rb
|
|
62
|
+
class Output
|
|
63
|
+
def initialize(md,outputfile,per,type='')
|
|
64
|
+
@md, @output_epub_cont_seg,@per,@type=
|
|
65
|
+
md,outputfile, per, type
|
|
66
|
+
end
|
|
67
|
+
def output
|
|
68
|
+
if @per.title =~/\S/
|
|
69
|
+
filename_seg=[]
|
|
70
|
+
filename_seg \
|
|
71
|
+
<< @per.title \
|
|
72
|
+
<< @per.nav
|
|
73
|
+
if @type=='endnotes'
|
|
74
|
+
@per.headings=[] #watch
|
|
75
|
+
txt_obj={ txt: 'Endnotes', ocn_display: ''}
|
|
76
|
+
format_seg=SiSU_XHTML_EPUB2_Format::FormatSeg.new(@md,txt_obj)
|
|
77
|
+
@per.headings \
|
|
78
|
+
<< format_seg.title_heading1
|
|
79
|
+
filename_seg \
|
|
80
|
+
<< @per.heading_endnotes \
|
|
81
|
+
<< @per.headings \
|
|
82
|
+
<< %{\n<div class="content">\n} \
|
|
83
|
+
<< @per.endnote_all \
|
|
84
|
+
<< '</div>'
|
|
85
|
+
elsif @type=='idx'
|
|
86
|
+
@per.headings=[]
|
|
87
|
+
txt_obj={ txt: 'Index', ocn_display: ''}
|
|
88
|
+
format_seg=SiSU_XHTML_EPUB2_Format::FormatSeg.new(@md,txt_obj)
|
|
89
|
+
@per.headings << format_seg.title_heading1
|
|
90
|
+
filename_seg \
|
|
91
|
+
<< @per.heading_idx \
|
|
92
|
+
<< @per.headings \
|
|
93
|
+
<< %{\n<div class="content">\n} \
|
|
94
|
+
<< @per.idx \
|
|
95
|
+
<< '</div>'
|
|
96
|
+
elsif @type=='metadata'
|
|
97
|
+
metadata=SiSU_Metadata::Summary.new(@md).xhtml_display.metadata
|
|
98
|
+
@per.headings=[]
|
|
99
|
+
txt_obj={ txt: 'Metadata', ocn_display: ''}
|
|
100
|
+
format_seg=SiSU_XHTML_EPUB2_Format::FormatSeg.new(@md,txt_obj)
|
|
101
|
+
@per.headings \
|
|
102
|
+
<< format_seg.title_heading1
|
|
103
|
+
filename_seg \
|
|
104
|
+
<< @per.heading_idx \
|
|
105
|
+
<< @per.headings \
|
|
106
|
+
<< %{\n<div class="content">\n} \
|
|
107
|
+
<< metadata \
|
|
108
|
+
<< '</div>'
|
|
109
|
+
elsif @type=='sisu_manifest'
|
|
110
|
+
env=SiSU_Env::InfoEnv.new(@md.fns)
|
|
111
|
+
path_and_name,url_and_name= \
|
|
112
|
+
"#{env.path.output}/#{@md.fnb}/sisu_manifest.html",
|
|
113
|
+
"#{env.url.root}/#{@md.fnb}/sisu_manifest.html"
|
|
114
|
+
manifest=if FileTest.file?("#{path_and_name}")==true
|
|
115
|
+
<<WOK
|
|
116
|
+
<p>A list of available output types may be available at the following url:</p>
|
|
117
|
+
<p><a href="#{url_and_name}">#{url_and_name}</a></p>
|
|
118
|
+
WOK
|
|
119
|
+
else ''
|
|
120
|
+
end
|
|
121
|
+
@per.headings=[]
|
|
122
|
+
txt_obj={ txt: 'Manifest', ocn_display: ''}
|
|
123
|
+
format_seg=SiSU_XHTML_EPUB2_Format::FormatSeg.new(@md,txt_obj)
|
|
124
|
+
@per.headings \
|
|
125
|
+
<< format_seg.title_heading1
|
|
126
|
+
filename_seg \
|
|
127
|
+
<< @per.heading_idx \
|
|
128
|
+
<< @per.headings \
|
|
129
|
+
<< %{\n<div class="content">\n} \
|
|
130
|
+
<< manifest \
|
|
131
|
+
<< '</div>'
|
|
132
|
+
else
|
|
133
|
+
filename_seg \
|
|
134
|
+
<< @per.headings \
|
|
135
|
+
<< @per.main \
|
|
136
|
+
<< "\n</div>\n"
|
|
137
|
+
end
|
|
138
|
+
filename_seg \
|
|
139
|
+
<< @per.tail \
|
|
140
|
+
<< @per.nav \
|
|
141
|
+
<< @per.closed
|
|
142
|
+
filename_seg=filename_seg.flatten.compact #watch
|
|
143
|
+
filename_seg.each do |str|
|
|
144
|
+
unless str =~/\A\s*\Z/
|
|
145
|
+
@output_epub_cont_seg \
|
|
146
|
+
<< str.strip
|
|
147
|
+
end
|
|
148
|
+
end
|
|
149
|
+
@output_epub_cont_seg.close
|
|
150
|
+
end
|
|
151
|
+
end
|
|
152
|
+
end
|
|
153
|
+
class Seg
|
|
154
|
+
@@seg_name=[]
|
|
155
|
+
@@seg_url=''
|
|
156
|
+
@@tracker=0
|
|
157
|
+
attr_reader :seg_name_x,:seg_name_x_tracker
|
|
158
|
+
def initialize(md='',data='')
|
|
159
|
+
@md,@data=md,data
|
|
160
|
+
@per=SiSU_XHTML_EPUB2_Persist::Persist.new
|
|
161
|
+
@seg_name_x=@per.seg_name_x=(@@seg_name || [])
|
|
162
|
+
@seg_name_x_tracker=@per.seg_name_x_tracker=(@@tracker || 0)
|
|
163
|
+
@make=SiSU_Env::ProcessingSettings.new(@md) if @md
|
|
164
|
+
end
|
|
165
|
+
def songsheet
|
|
166
|
+
begin
|
|
167
|
+
data=get_subtoc_endnotes(@data,@per)
|
|
168
|
+
data=articles(data,@per)
|
|
169
|
+
SiSU_XHTML_EPUB2_Seg::Seg.new.cleanup(@md,@per) # (((( added ))))
|
|
170
|
+
#### (((( END )))) ####
|
|
171
|
+
rescue
|
|
172
|
+
SiSU_Errors::Rescued.new($!,$@,@md.opt.selections.str,@md.fns).location do
|
|
173
|
+
__LINE__.to_s + ':' + __FILE__
|
|
174
|
+
end
|
|
175
|
+
ensure
|
|
176
|
+
SiSU_XHTML_EPUB2_Persist::Persist.new.persist_init
|
|
177
|
+
@@seg_name=@per.seg_name=[]
|
|
178
|
+
end
|
|
179
|
+
end
|
|
180
|
+
protected
|
|
181
|
+
def articles(data,per)
|
|
182
|
+
@per=per
|
|
183
|
+
tracking,newfile=0,0
|
|
184
|
+
printed_endnote_seg='n'
|
|
185
|
+
idx_xhtml=nil
|
|
186
|
+
if @md.book_idx
|
|
187
|
+
idx_xhtml=SiSU_Particulars::CombinedSingleton.
|
|
188
|
+
instance.get_idx_xhtml(@md).xhtml_idx
|
|
189
|
+
idx_xhtml.each do |x|
|
|
190
|
+
@per.idx << x
|
|
191
|
+
end
|
|
192
|
+
@per.heading_idx=''
|
|
193
|
+
end
|
|
194
|
+
data.each do |dob|
|
|
195
|
+
if (dob.is == :heading \
|
|
196
|
+
|| dob.is == :heading_insert) \
|
|
197
|
+
&& dob.ln == 4
|
|
198
|
+
@@seg_name << dob.name
|
|
199
|
+
@per.seg_name = @@seg_name
|
|
200
|
+
dob.name
|
|
201
|
+
end
|
|
202
|
+
end
|
|
203
|
+
@per.seg_name_x=@per.seg_name
|
|
204
|
+
@per.seg_name.length
|
|
205
|
+
testforartnum=@per.seg_name_x
|
|
206
|
+
if (@md.opt.act[:verbose][:set]==:on \
|
|
207
|
+
|| @md.opt.act[:verbose_plus][:set]==:on \
|
|
208
|
+
|| @md.opt.act[:maintenance][:set]==:on)
|
|
209
|
+
SiSU_Screen::Ansi.new(
|
|
210
|
+
@md.opt.act[:color_state][:set],
|
|
211
|
+
@per.seg_name.length
|
|
212
|
+
)
|
|
213
|
+
end
|
|
214
|
+
SiSU_Particulars::CombinedSingleton.
|
|
215
|
+
instance.get_map_nametags(@md).nametags_map #p map_nametags
|
|
216
|
+
data.each do |dob|
|
|
217
|
+
#if defined? dob.obj \
|
|
218
|
+
#and dob.obj =~/href="#{Xx[:segment]}#+\S+?"/
|
|
219
|
+
# ##Consider: remove, reinstate earlier?
|
|
220
|
+
# #while dob.obj =~/href="#{Xx[:segment]}#+(\S+?)"/
|
|
221
|
+
# # m=$1
|
|
222
|
+
# # if map_nametags[m][:segname]
|
|
223
|
+
# # dob.obj=dob.obj.sub(/href="#{Xx[:segment]}#+(\S+?)"/,%{href="#{map_nametags[m][:segname]}#{Sfx[:html]}#\\1"})
|
|
224
|
+
# # else
|
|
225
|
+
# # p "NOT FOUND name_tags: #{m}"
|
|
226
|
+
# # dob.obj=dob.obj.sub(/href="#{Xx[:segment]}#+(\S+?)"/,%{href="#\\1"}) # not satisfactory
|
|
227
|
+
# # end
|
|
228
|
+
# #end
|
|
229
|
+
#end
|
|
230
|
+
if (dob.is==:heading \
|
|
231
|
+
|| dob.is==:heading_insert) \
|
|
232
|
+
&& dob.ln==4
|
|
233
|
+
@per.heading4=dob.obj
|
|
234
|
+
@per.is4=newfile=1
|
|
235
|
+
end
|
|
236
|
+
if (dob.is==:heading \
|
|
237
|
+
|| dob.is==:heading_insert) \
|
|
238
|
+
&& dob.ln==3
|
|
239
|
+
@per.heading3=dob.obj
|
|
240
|
+
@per.is4,@per.is3=0,1
|
|
241
|
+
end
|
|
242
|
+
if (dob.is==:heading \
|
|
243
|
+
|| dob.is==:heading_insert) \
|
|
244
|
+
&& dob.ln==2
|
|
245
|
+
@per.heading2=dob.obj
|
|
246
|
+
@per.is4,@per.is3,@per.is2=0,0,1
|
|
247
|
+
end
|
|
248
|
+
if (dob.is==:heading \
|
|
249
|
+
|| dob.is==:heading_insert) \
|
|
250
|
+
&& dob.ln==1
|
|
251
|
+
@per.heading1=dob.obj
|
|
252
|
+
@per.is4,@per.is3,@per.is2,@per.is1=0,0,0,1
|
|
253
|
+
end
|
|
254
|
+
if (dob.is==:heading \
|
|
255
|
+
|| dob.is==:heading_insert) \
|
|
256
|
+
&& dob.ln==0
|
|
257
|
+
@per.heading0=dob.obj
|
|
258
|
+
@per.is4,@per.is3,@per.is2,@per.is1,@per.is0=0,0,0,0,1
|
|
259
|
+
end
|
|
260
|
+
if (@per.is0 && !@per.is1 && !@per.is2 && !@per.is3 && !@per.is4)
|
|
261
|
+
if not (dob.is==:heading \
|
|
262
|
+
|| dob.is==:heading_insert) \
|
|
263
|
+
&& dob.ln==0
|
|
264
|
+
$_ #; check
|
|
265
|
+
end
|
|
266
|
+
end
|
|
267
|
+
if @per.is4==1
|
|
268
|
+
dir_epub_cont="#{@md.env.processing_path.epub}/#{Ep[:d_oebps]}"
|
|
269
|
+
if newfile==1 \
|
|
270
|
+
or dob.obj =~/^#{Mx[:br_endnotes]}|^#{Mx[:br_eof]}/
|
|
271
|
+
newfile=0
|
|
272
|
+
if (dob.is==:heading \
|
|
273
|
+
|| dob.is==:heading_insert) \
|
|
274
|
+
&& dob.ln==4
|
|
275
|
+
if tracking != 0
|
|
276
|
+
tail(@md,@per)
|
|
277
|
+
#SiSU_XHTML_EPUB2_Seg::Seg.new(@md,@per).tail
|
|
278
|
+
segfilename="#{dir_epub_cont}/#{@per.seg_name_x[tracking-1]}#{Sfx[:epub_xhtml]}"
|
|
279
|
+
output_epub_cont_seg=File.new(segfilename,'w') if @per.seg_name_x[tracking-1]
|
|
280
|
+
if dob.is==:heading \
|
|
281
|
+
or @per.seg_name_x[tracking-1] !~/endnotes|book_index|metadata/
|
|
282
|
+
SiSU_XHTML_EPUB2_Seg::Output.new(@md,output_epub_cont_seg,@per).output
|
|
283
|
+
elsif dob.is==:heading_insert
|
|
284
|
+
if @per.seg_name_x[tracking-1]=='endnotes'
|
|
285
|
+
SiSU_XHTML_EPUB2_Seg::Output.new(@md,output_epub_cont_seg,@per,'endnotes').output
|
|
286
|
+
elsif @per.seg_name_x[tracking-1]=='book_index'
|
|
287
|
+
SiSU_XHTML_EPUB2_Seg::Output.new(@md,output_epub_cont_seg,@per,'idx').output
|
|
288
|
+
@per.idx=[]
|
|
289
|
+
elsif @per.seg_name_x[tracking-1]=='metadata' # navigation bug FIX
|
|
290
|
+
SiSU_XHTML_EPUB2_Seg::Output.new(@md,output_epub_cont_seg,@per,'metadata').output
|
|
291
|
+
else puts "#{__FILE__}::#{__LINE__}"
|
|
292
|
+
end
|
|
293
|
+
else puts "#{__FILE__}::#{__LINE__}"
|
|
294
|
+
end
|
|
295
|
+
SiSU_XHTML_EPUB2_Seg::Seg.new.reinitialise(per)
|
|
296
|
+
heading_art(dob)
|
|
297
|
+
head(dob)
|
|
298
|
+
if @per.seg_name_x[tracking] =='metadata'
|
|
299
|
+
segfilename="#{dir_epub_cont}/#{@per.seg_name_x[tracking]}#{Sfx[:epub_xhtml]}"
|
|
300
|
+
output_epub_cont_seg=File.new(segfilename,'w')
|
|
301
|
+
SiSU_XHTML_EPUB2_Seg::Output.new(@md,output_epub_cont_seg,@per,'metadata').output
|
|
302
|
+
SiSU_XHTML_EPUB2_Seg::Seg.new.reinitialise(per)
|
|
303
|
+
#BUG navigation bug with items following metadata, and occurring before manifest, this becomes a bug ... work area for book index, FIX
|
|
304
|
+
end
|
|
305
|
+
#@output_epub_cont_seg.closed #%(((( EOF )))) -->
|
|
306
|
+
end
|
|
307
|
+
if tracking==0
|
|
308
|
+
heading_art(dob)
|
|
309
|
+
head(dob)
|
|
310
|
+
end
|
|
311
|
+
end
|
|
312
|
+
tracking=tracking+1
|
|
313
|
+
end
|
|
314
|
+
if (dob.is==:heading \
|
|
315
|
+
|| dob.is==:heading_insert) \
|
|
316
|
+
&& dob.ln==4 \
|
|
317
|
+
&& dob.name
|
|
318
|
+
@per.get_hash_to=dob.name
|
|
319
|
+
@per.get_hash_fn=dob.name
|
|
320
|
+
end
|
|
321
|
+
if dob.obj.is_a?(String)
|
|
322
|
+
markup(dob)
|
|
323
|
+
elsif dob.obj.is_a?(Array)
|
|
324
|
+
dob.obj.each do |pg|
|
|
325
|
+
markup(pg)
|
|
326
|
+
end
|
|
327
|
+
end
|
|
328
|
+
if testforartnum[tracking-1] =~/endnote/
|
|
329
|
+
if printed_endnote_seg=='n'
|
|
330
|
+
printed_endnote_seg='y'
|
|
331
|
+
end
|
|
332
|
+
end
|
|
333
|
+
end
|
|
334
|
+
end
|
|
335
|
+
data
|
|
336
|
+
end
|
|
337
|
+
def heading_art(dob)
|
|
338
|
+
@per.title=SiSU_XHTML_EPUB2_Format::HeadSeg.new(@md).head
|
|
339
|
+
end
|
|
340
|
+
def head(dob)
|
|
341
|
+
clean=/<!.*?!>|<:.*?>$/
|
|
342
|
+
@p_num ||= ''
|
|
343
|
+
if @per.is0==1
|
|
344
|
+
if defined? @md.creator.author \
|
|
345
|
+
and @md.creator.author
|
|
346
|
+
@author=%{<b>#{@md.creator.author}</b>\n}
|
|
347
|
+
end
|
|
348
|
+
@p_num=SiSU_XHTML_EPUB2_Format::ParagraphNumber.new(@md,dob.ocn)
|
|
349
|
+
txt_obj={ txt: @per.heading0, ocn_display: @p_num.ocn_display }
|
|
350
|
+
format_seg=SiSU_XHTML_EPUB2_Format::FormatSeg.new(@md,txt_obj)
|
|
351
|
+
@per.headings << format_seg.title_heading0.gsub(clean,'')
|
|
352
|
+
@per.heading0=@per.heading0.
|
|
353
|
+
gsub(/#{$ep[:hsp]}<a name="-[\d*+]+" href="#_[\d*+]+">#{$ep[:hsp]}<sup>[\d*+]+<\/sup>#{$ep[:hsp]}<\/a>/,'')
|
|
354
|
+
end
|
|
355
|
+
if @per.is1==1
|
|
356
|
+
@p_num=SiSU_XHTML_EPUB2_Format::ParagraphNumber.new(@md,dob.ocn)
|
|
357
|
+
txt_obj={ txt: @per.heading1, ocn_display: @p_num.ocn_display }
|
|
358
|
+
format_seg=SiSU_XHTML_EPUB2_Format::FormatSeg.new(@md,txt_obj)
|
|
359
|
+
@per.headings << format_seg.title_heading1.gsub(clean,'')
|
|
360
|
+
@per.heading1=@per.heading1.
|
|
361
|
+
gsub(/#{$ep[:hsp]}<a name="-[\d*+]+" href="#_[\d*+]+">#{$ep[:hsp]}<sup>[\d*+]+<\/sup>#{$ep[:hsp]}<\/a>/,'')
|
|
362
|
+
end
|
|
363
|
+
if @per.is2==1
|
|
364
|
+
heading2=@per.heading2
|
|
365
|
+
@p_num=SiSU_XHTML_EPUB2_Format::ParagraphNumber.new(@md,dob.ocn)
|
|
366
|
+
txt_obj={ txt: heading2, ocn_display: @p_num.ocn_display }
|
|
367
|
+
format_seg=SiSU_XHTML_EPUB2_Format::FormatSeg.new(@md,txt_obj)
|
|
368
|
+
@per.headings << format_seg.title_heading2.gsub(clean,'')
|
|
369
|
+
@per.heading2=@per.heading2.
|
|
370
|
+
gsub(/#{$ep[:hsp]}<a name="-[\d*+]+" href="#_[\d*+]+">#{$ep[:hsp]}<sup>[\d*+]+<\/sup>#{$ep[:hsp]}<\/a>/,'')
|
|
371
|
+
end
|
|
372
|
+
if @per.is3==1
|
|
373
|
+
heading3=@per.heading3
|
|
374
|
+
@p_num=SiSU_XHTML_EPUB2_Format::ParagraphNumber.new(@md,dob.ocn)
|
|
375
|
+
txt_obj={ txt: heading3, ocn_display: @p_num.ocn_display }
|
|
376
|
+
format_seg=SiSU_XHTML_EPUB2_Format::FormatSeg.new(@md,txt_obj)
|
|
377
|
+
@per.headings << format_seg.title_heading3.gsub(clean,'')
|
|
378
|
+
@per.heading3=@per.heading3.
|
|
379
|
+
gsub(/#{$ep[:hsp]}<a name="-[\d*+]+" href="#_[\d*+]+">#{$ep[:hsp]}<sup>[\d*+]+<\/sup>#{$ep[:hsp]}<\/a>/,'')
|
|
380
|
+
end
|
|
381
|
+
if @per.is4==1
|
|
382
|
+
heading4=@per.heading4
|
|
383
|
+
@p_num=SiSU_XHTML_EPUB2_Format::ParagraphNumber.new(@md,dob.ocn)
|
|
384
|
+
txt_obj={ txt: heading4, ocn_display: @p_num.ocn_display }
|
|
385
|
+
format_seg=SiSU_XHTML_EPUB2_Format::FormatSeg.new(@md,txt_obj)
|
|
386
|
+
@per.headings \
|
|
387
|
+
<< format_seg.title_heading4.gsub(clean,'')
|
|
388
|
+
end
|
|
389
|
+
@@tracker=@@tracker+1
|
|
390
|
+
end
|
|
391
|
+
def markup(dob)
|
|
392
|
+
@debug=[]
|
|
393
|
+
if dob.is ==:heading \
|
|
394
|
+
|| dob.is ==:heading_insert \
|
|
395
|
+
|| dob.is ==:para
|
|
396
|
+
#extend as necessary FIX
|
|
397
|
+
@p_num=SiSU_XHTML_EPUB2_Format::ParagraphNumber.new(@md,dob.ocn)
|
|
398
|
+
end
|
|
399
|
+
sto=SiSU_XHTML_EPUB2_Format::FormatTextObject.new(@md,dob)
|
|
400
|
+
dob_xhtml=if dob.is==:heading \
|
|
401
|
+
|| dob.is==:heading_insert \
|
|
402
|
+
|| dob.is==:para
|
|
403
|
+
dob_xhtml=if dob.is==:heading \
|
|
404
|
+
or dob.is==:heading_insert
|
|
405
|
+
if dob.ln==4
|
|
406
|
+
sto.seg_heading4 # work on see SplitTextObject
|
|
407
|
+
elsif dob.ln==5
|
|
408
|
+
sto.seg_heading5
|
|
409
|
+
elsif dob.ln==6
|
|
410
|
+
sto.seg_heading6
|
|
411
|
+
elsif dob.ln==7
|
|
412
|
+
sto.seg_heading7
|
|
413
|
+
end
|
|
414
|
+
elsif dob.is==:para
|
|
415
|
+
if dob.indent \
|
|
416
|
+
and dob.hang \
|
|
417
|
+
and dob.indent =~/[0-9]/ \
|
|
418
|
+
and dob.hang =~/[0-9]/
|
|
419
|
+
if dob.bullet_
|
|
420
|
+
(dob.indent =~/[1-9]/) \
|
|
421
|
+
? sto.format('li',"i#{dob.indent}")
|
|
422
|
+
: sto.format('li','bullet')
|
|
423
|
+
elsif dob.indent == dob.hang
|
|
424
|
+
sto.format('p',"i#{dob.indent}")
|
|
425
|
+
elsif dob.indent != dob.hang
|
|
426
|
+
sto.format('p',"h#{dob.hang}i#{dob.indent}")
|
|
427
|
+
else sto.para
|
|
428
|
+
end
|
|
429
|
+
else sto.para
|
|
430
|
+
end
|
|
431
|
+
end
|
|
432
|
+
elsif dob.is ==:block \
|
|
433
|
+
|| dob.is ==:group \
|
|
434
|
+
|| dob.is ==:alt
|
|
435
|
+
sto.para #fix this should be block type specific #FIX
|
|
436
|
+
elsif dob.is==:verse
|
|
437
|
+
sto.verse
|
|
438
|
+
elsif dob.is==:code
|
|
439
|
+
sto.code
|
|
440
|
+
elsif dob.is==:table
|
|
441
|
+
sto.table
|
|
442
|
+
elsif dob.is==:break
|
|
443
|
+
sto.break
|
|
444
|
+
end
|
|
445
|
+
if @md.flag_separate_endnotes # may need to revisit, check
|
|
446
|
+
dob.obj=dob.obj.gsub(/"\s+href="##{Mx[:note_ref]}(\d+)">/,
|
|
447
|
+
%{" href=\"endnotes#{Sfx[:epub_xhtml]}##{Mx[:note_ref]}\\1">})
|
|
448
|
+
#endnote- twice #removed file type
|
|
449
|
+
end
|
|
450
|
+
if (dob.is ==:heading \
|
|
451
|
+
|| dob.is==:heading_insert \
|
|
452
|
+
|| dob.is==:para) \
|
|
453
|
+
&& (not dob.ocn or dob.ocn.to_s.empty?)
|
|
454
|
+
format_seg=SiSU_XHTML_EPUB2_Format::FormatSeg.new(@md,dob)
|
|
455
|
+
end
|
|
456
|
+
if (dob.is==:heading \
|
|
457
|
+
|| dob.is==:heading_insert \
|
|
458
|
+
|| dob.is==:para) \
|
|
459
|
+
and dob.note_
|
|
460
|
+
#dob.obj =~/<a href="#note_ref\d+"> <sup id=/ #endnote- note-
|
|
461
|
+
format_seg=SiSU_XHTML_EPUB2_Format::FormatSeg.new(@md,dob)
|
|
462
|
+
dob.obj=format_seg.no_paranum
|
|
463
|
+
end
|
|
464
|
+
if (dob.is==:heading \
|
|
465
|
+
|| dob.is==:heading_insert) \
|
|
466
|
+
and dob.ln==4
|
|
467
|
+
@per.main << %{\n<div class="content">\n}
|
|
468
|
+
@per.main << dob_xhtml
|
|
469
|
+
if @make.build.segsubtoc?
|
|
470
|
+
@per.main << @per.seg_subtoc[@per.get_hash_fn]
|
|
471
|
+
#% insertion of sub-toc
|
|
472
|
+
end
|
|
473
|
+
else
|
|
474
|
+
@per.main << dob_xhtml
|
|
475
|
+
end
|
|
476
|
+
end
|
|
477
|
+
def tail(md,per)
|
|
478
|
+
@md,@per=md,per
|
|
479
|
+
format_head_seg=SiSU_XHTML_EPUB2_Format::HeadSeg.new(@md)
|
|
480
|
+
if @md.flag_auto_endnotes \
|
|
481
|
+
and @per.seg_endnotes[@per.get_hash_fn]
|
|
482
|
+
@per.tail << %{\n<div class="content">\n<div class="endnote">\n}
|
|
483
|
+
if @per.seg_endnotes[@per.get_hash_fn].flatten.length > 0
|
|
484
|
+
@per.tail << format_head_seg.endnote_mark
|
|
485
|
+
@per.tail << @per.seg_endnotes[@per.get_hash_fn].flatten
|
|
486
|
+
#endnotes deposited at end of individual segments ||@|EXTRACTION OF ENDNOTES|
|
|
487
|
+
end
|
|
488
|
+
@per.tail << '</div>'
|
|
489
|
+
@per.tail << '</div>' #this div closes div class content
|
|
490
|
+
end
|
|
491
|
+
@per.closed=[]
|
|
492
|
+
@per.closed << format_head_seg.xhtml_close
|
|
493
|
+
end
|
|
494
|
+
def reinitialise(per)
|
|
495
|
+
per.headings,per.main,per.tail,per.credits=Array.new(4){[]}
|
|
496
|
+
end
|
|
497
|
+
def cleanup(md,per)
|
|
498
|
+
reinitialise(per)
|
|
499
|
+
@@tracker=0
|
|
500
|
+
@per.seg_endnotes,@per.seg_subtoc={},{}
|
|
501
|
+
@per.seg_endnotes_array,@per.seg_subtoc_array=[],[]
|
|
502
|
+
per.endnote_all=[]
|
|
503
|
+
end
|
|
504
|
+
def get_subtoc_endnotes(data,per) #get endnotes & sub-table of contents subtoc
|
|
505
|
+
@per=per
|
|
506
|
+
data.each do |dob|
|
|
507
|
+
dob.obj=dob.obj.gsub(/<a name=\"h\d.*?\">(.+?)<\/a>/mi,'\1')
|
|
508
|
+
if @md.flag_auto_endnotes
|
|
509
|
+
if (dob.is==:heading \
|
|
510
|
+
|| dob.is==:heading_insert) \
|
|
511
|
+
&& dob.ln.to_s =~/^[1-4]/ \
|
|
512
|
+
and not @per.fn.to_s.empty?
|
|
513
|
+
@per.seg_endnotes[@per.fn]=[]
|
|
514
|
+
@per.seg_endnotes[@per.fn] << @per.seg_endnotes_array
|
|
515
|
+
@per.seg_endnotes_array=[] if dob.ln==4
|
|
516
|
+
end
|
|
517
|
+
if (dob.is==:heading \
|
|
518
|
+
|| dob.is==:heading_insert) \
|
|
519
|
+
&& dob.ln==4
|
|
520
|
+
#% EXTRACTION OF SUB-TOCs & SEGMENT NAME, after EXTRACTION OF ENDNOTES & SUB-TOCs
|
|
521
|
+
@per.seg_subtoc[@per.fn]=@per.seg_subtoc_array
|
|
522
|
+
@per.seg_subtoc_array=[]
|
|
523
|
+
if dob.name \
|
|
524
|
+
and dob.obj
|
|
525
|
+
@per.fn=dob.name
|
|
526
|
+
else
|
|
527
|
+
@per.fn=(dob.name =~/\S+/) \
|
|
528
|
+
? dob.name
|
|
529
|
+
: ''
|
|
530
|
+
end
|
|
531
|
+
end
|
|
532
|
+
end
|
|
533
|
+
if dob.is==:heading \
|
|
534
|
+
&& dob.ln.to_s =~/^[5-7]/
|
|
535
|
+
case dob.ln
|
|
536
|
+
when 5
|
|
537
|
+
format_seg=SiSU_XHTML_EPUB2_Format::FormatSeg.new(@md,dob)
|
|
538
|
+
subtoc=format_seg.subtoc_lev5 #keep and make available, this is the subtoc
|
|
539
|
+
when 6
|
|
540
|
+
format_seg=SiSU_XHTML_EPUB2_Format::FormatSeg.new(@md,dob)
|
|
541
|
+
subtoc=format_seg.subtoc_lev6 #keep and make available, this is the subtoc
|
|
542
|
+
when 7
|
|
543
|
+
format_seg=SiSU_XHTML_EPUB2_Format::FormatSeg.new(@md,dob)
|
|
544
|
+
subtoc=format_seg.subtoc_lev7 #keep and make available, this is the subtoc
|
|
545
|
+
end
|
|
546
|
+
@per.seg_subtoc_array << subtoc
|
|
547
|
+
end
|
|
548
|
+
if @md.flag_auto_endnotes
|
|
549
|
+
ast,pls='*','+'
|
|
550
|
+
if dob.obj =~/(?:#{Mx[:en_a_o]}|#{Mx[:en_b_o]})(?:\d|#{ast}|#{pls})+ / \
|
|
551
|
+
and dob.is !=:code # endnote-
|
|
552
|
+
endnote_array=[]
|
|
553
|
+
if dob.obj=~/#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}/m
|
|
554
|
+
endnote_array << dob.obj.scan(/#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}/m)
|
|
555
|
+
end
|
|
556
|
+
if dob.obj=~/#{Mx[:en_b_o]}#{ast}\d+\s.+?#{Mx[:en_b_c]}/m
|
|
557
|
+
endnote_array \
|
|
558
|
+
<< dob.obj.scan(/#{Mx[:en_b_o]}#{ast}\d+\s.+?#{Mx[:en_b_c]}/m)
|
|
559
|
+
end
|
|
560
|
+
if dob.obj=~/#{Mx[:en_b_o]}#{pls}\d+\s.+?#{Mx[:en_b_c]}/m
|
|
561
|
+
endnote_array \
|
|
562
|
+
<< dob.obj.scan(/#{Mx[:en_b_o]}#{pls}\d+\s.+?#{Mx[:en_b_c]}/m)
|
|
563
|
+
end
|
|
564
|
+
endnote_array=endnote_array.flatten #.compact #check compacting
|
|
565
|
+
endnote_array.each do |note|
|
|
566
|
+
note_match=note.dup
|
|
567
|
+
note_match_seg=note.dup
|
|
568
|
+
e_n=note_match_seg[/(?:#{Mx[:en_a_o]}(?:\d|#{ast}|#{pls})+|#{Mx[:en_b_o]}(?:#{ast}|#{pls})\d+)\s+(.+?)(?:#{Mx[:en_a_c]}|#{Mx[:en_b_c]})/m,1]
|
|
569
|
+
try=e_n.split(/<br(?: \/)?>/)
|
|
570
|
+
try.each do |e|
|
|
571
|
+
txt_obj={ txt: e }
|
|
572
|
+
format_seg=SiSU_XHTML_EPUB2_Format::FormatSeg.new(@md,txt_obj)
|
|
573
|
+
note_match=if e =~/#{Mx[:pa_o]}i[1-9]#{Mx[:pa_c]}/
|
|
574
|
+
format_seg.endnote_body_indent
|
|
575
|
+
else format_seg.endnote_body
|
|
576
|
+
end
|
|
577
|
+
@per.seg_endnotes_array << note_match
|
|
578
|
+
end
|
|
579
|
+
try.join('<br \/>')
|
|
580
|
+
#% creation of separate end segment/page of all endnotes referenced back to reference segment
|
|
581
|
+
m=/(?:#{Mx[:en_a_o]}(?:\d|#{ast}|#{pls})+|#{Mx[:en_b_o]}(?:#{ast}|#{pls})\d+)\s+(.+?href=")(##{Mx[:note_ref]}(?:\d|_a|_b)+".+)(?:#{Mx[:en_a_c]}|#{Mx[:en_b_c]})/mi
|
|
582
|
+
endnote_part_a=note_match_seg[m,1]
|
|
583
|
+
endnote_part_b=note_match_seg[m,2]
|
|
584
|
+
txt_obj={
|
|
585
|
+
endnote_part_a: endnote_part_a,
|
|
586
|
+
endnote_part_b: endnote_part_b
|
|
587
|
+
}
|
|
588
|
+
format_seg=SiSU_XHTML_EPUB2_Format::FormatSeg.new(@md,txt_obj)
|
|
589
|
+
note_match_all_seg=format_seg.endnote_seg_body(@per.fn) #BUG WATCH 200408
|
|
590
|
+
@per.endnote_all << note_match_all_seg
|
|
591
|
+
end
|
|
592
|
+
dob.obj=dob.obj.gsub(/(?:#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}|#{Mx[:en_b_o]}.+?#{Mx[:en_b_c]})\s*/m,' ')
|
|
593
|
+
end
|
|
594
|
+
end
|
|
595
|
+
end
|
|
596
|
+
end
|
|
597
|
+
end
|
|
598
|
+
end
|
|
599
|
+
__END__
|