sisu 7.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (207) hide show
  1. checksums.yaml +7 -0
  2. data/bin/sisu +367 -0
  3. data/bin/sisugem +367 -0
  4. data/data/sisu/image/arrow_next_red.png +0 -0
  5. data/data/sisu/image/arrow_prev_red.png +0 -0
  6. data/data/sisu/image/arrow_up_red.png +0 -0
  7. data/data/sisu/image/b_bluebell.png +0 -0
  8. data/data/sisu/image/b_doc.png +0 -0
  9. data/data/sisu/image/b_epub.png +0 -0
  10. data/data/sisu/image/b_home.png +0 -0
  11. data/data/sisu/image/b_info.png +0 -0
  12. data/data/sisu/image/b_odf.png +0 -0
  13. data/data/sisu/image/b_pdf.png +0 -0
  14. data/data/sisu/image/b_search.png +0 -0
  15. data/data/sisu/image/b_toc.png +0 -0
  16. data/data/sisu/image/bullet_08.png +0 -0
  17. data/data/sisu/image/bullet_09.png +0 -0
  18. data/data/sisu/image/bullet_10.png +0 -0
  19. data/data/sisu/image/bullet_11.png +0 -0
  20. data/data/sisu/image/bullet_12.png +0 -0
  21. data/data/sisu/image/bullet_doc.png +0 -0
  22. data/data/sisu/image/bullet_red.png +0 -0
  23. data/data/sisu/image/dot_clear.png +0 -0
  24. data/data/sisu/image/dot_white.png +0 -0
  25. data/data/sisu/image/gplv3.png +0 -0
  26. data/data/sisu/image/gplv3_free_software.png +0 -0
  27. data/data/sisu/image/next.png +0 -0
  28. data/data/sisu/image/previous.png +0 -0
  29. data/data/sisu/image/rb7.ico +0 -0
  30. data/data/sisu/image/sisu.png +0 -0
  31. data/data/sisu/image/toctoc.png +0 -0
  32. data/data/sisu/version.yml +5 -0
  33. data/lib/sisu.rb +94 -0
  34. data/lib/sisu/air.rb +80 -0
  35. data/lib/sisu/ao.rb +590 -0
  36. data/lib/sisu/ao_character_check.rb +102 -0
  37. data/lib/sisu/ao_composite.rb +286 -0
  38. data/lib/sisu/ao_doc_objects.rb +565 -0
  39. data/lib/sisu/ao_doc_str.rb +2269 -0
  40. data/lib/sisu/ao_endnotes.rb +136 -0
  41. data/lib/sisu/ao_expand_insertions.rb +514 -0
  42. data/lib/sisu/ao_hash_digest.rb +174 -0
  43. data/lib/sisu/ao_idx.rb +422 -0
  44. data/lib/sisu/ao_images.rb +187 -0
  45. data/lib/sisu/ao_metadata.rb +86 -0
  46. data/lib/sisu/ao_misc_arrange.rb +207 -0
  47. data/lib/sisu/ao_numbering.rb +720 -0
  48. data/lib/sisu/ao_persist.rb +194 -0
  49. data/lib/sisu/ao_references.rb +502 -0
  50. data/lib/sisu/ao_syntax.rb +640 -0
  51. data/lib/sisu/cgi.rb +84 -0
  52. data/lib/sisu/cgi_pgsql.rb +270 -0
  53. data/lib/sisu/cgi_sql_common.rb +986 -0
  54. data/lib/sisu/cgi_sqlite.rb +244 -0
  55. data/lib/sisu/conf.rb +287 -0
  56. data/lib/sisu/constants.rb +388 -0
  57. data/lib/sisu/css.rb +3484 -0
  58. data/lib/sisu/db_columns.rb +1997 -0
  59. data/lib/sisu/db_create.rb +689 -0
  60. data/lib/sisu/db_dbi.rb +90 -0
  61. data/lib/sisu/db_drop.rb +207 -0
  62. data/lib/sisu/db_import.rb +877 -0
  63. data/lib/sisu/db_indexes.rb +146 -0
  64. data/lib/sisu/db_load_tuple.rb +323 -0
  65. data/lib/sisu/db_remove.rb +182 -0
  66. data/lib/sisu/db_select.rb +230 -0
  67. data/lib/sisu/db_sqltxt.rb +173 -0
  68. data/lib/sisu/db_tests.rb +114 -0
  69. data/lib/sisu/dbi.rb +166 -0
  70. data/lib/sisu/dbi_discrete.rb +206 -0
  71. data/lib/sisu/digests.rb +306 -0
  72. data/lib/sisu/dp.rb +1606 -0
  73. data/lib/sisu/dp_identify_markup.rb +161 -0
  74. data/lib/sisu/dp_make.rb +668 -0
  75. data/lib/sisu/embedded.rb +149 -0
  76. data/lib/sisu/errors.rb +84 -0
  77. data/lib/sisu/generic_parts.rb +131 -0
  78. data/lib/sisu/git.rb +277 -0
  79. data/lib/sisu/html.rb +775 -0
  80. data/lib/sisu/html_concordance.rb +391 -0
  81. data/lib/sisu/html_format.rb +1348 -0
  82. data/lib/sisu/html_harvest.rb +109 -0
  83. data/lib/sisu/html_harvest_author_format.rb +111 -0
  84. data/lib/sisu/html_harvest_authors.rb +466 -0
  85. data/lib/sisu/html_harvest_topics.rb +893 -0
  86. data/lib/sisu/html_lite_shared.rb +324 -0
  87. data/lib/sisu/html_manifest.rb +1032 -0
  88. data/lib/sisu/html_minitoc.rb +230 -0
  89. data/lib/sisu/html_parts.rb +437 -0
  90. data/lib/sisu/html_persist.rb +237 -0
  91. data/lib/sisu/html_promo.rb +440 -0
  92. data/lib/sisu/html_scroll.rb +235 -0
  93. data/lib/sisu/html_segments.rb +716 -0
  94. data/lib/sisu/html_shared.rb +62 -0
  95. data/lib/sisu/html_table.rb +64 -0
  96. data/lib/sisu/html_tune.rb +301 -0
  97. data/lib/sisu/hub.rb +277 -0
  98. data/lib/sisu/hub_actions.rb +1122 -0
  99. data/lib/sisu/hub_loop_markup_files.rb +170 -0
  100. data/lib/sisu/hub_options.rb +1695 -0
  101. data/lib/sisu/i18n.rb +702 -0
  102. data/lib/sisu/manpage.rb +377 -0
  103. data/lib/sisu/manpage_format.rb +85 -0
  104. data/lib/sisu/object_munge.rb +307 -0
  105. data/lib/sisu/prog_text_translation.rb +1702 -0
  106. data/lib/sisu/qrcode.rb +754 -0
  107. data/lib/sisu/relaxng.rb +1153 -0
  108. data/lib/sisu/remote.rb +246 -0
  109. data/lib/sisu/rexml.rb +148 -0
  110. data/lib/sisu/se.rb +158 -0
  111. data/lib/sisu/se_cleanoutput.rb +145 -0
  112. data/lib/sisu/se_clear.rb +105 -0
  113. data/lib/sisu/se_createsite.rb +273 -0
  114. data/lib/sisu/se_css.rb +221 -0
  115. data/lib/sisu/se_date.rb +92 -0
  116. data/lib/sisu/se_db.rb +214 -0
  117. data/lib/sisu/se_envcall.rb +326 -0
  118. data/lib/sisu/se_file_op.rb +2758 -0
  119. data/lib/sisu/se_filemap.rb +247 -0
  120. data/lib/sisu/se_get_init.rb +238 -0
  121. data/lib/sisu/se_hub_particulars.rb +234 -0
  122. data/lib/sisu/se_info_env.rb +2179 -0
  123. data/lib/sisu/se_info_port.rb +70 -0
  124. data/lib/sisu/se_info_system.rb +202 -0
  125. data/lib/sisu/se_load.rb +108 -0
  126. data/lib/sisu/se_processing.rb +659 -0
  127. data/lib/sisu/se_programs.rb +394 -0
  128. data/lib/sisu/se_remotes.rb +553 -0
  129. data/lib/sisu/se_standardise_lang.rb +176 -0
  130. data/lib/sisu/se_version.rb +174 -0
  131. data/lib/sisu/shared_images.rb +137 -0
  132. data/lib/sisu/shared_markup_alt.rb +336 -0
  133. data/lib/sisu/shared_metadata.rb +1361 -0
  134. data/lib/sisu/shared_sem.rb +156 -0
  135. data/lib/sisu/sisu_thor_lib.rb +407 -0
  136. data/lib/sisu/sitemaps.rb +224 -0
  137. data/lib/sisu/src_kdissert_share.rb +102 -0
  138. data/lib/sisu/src_po4a_share.rb +309 -0
  139. data/lib/sisu/src_po4a_shelf.rb +1217 -0
  140. data/lib/sisu/src_po4a_shelf_set.rb +297 -0
  141. data/lib/sisu/src_po4a_sst_ao_sst.rb +893 -0
  142. data/lib/sisu/src_po4a_sst_ao_sst_set.rb +284 -0
  143. data/lib/sisu/src_po4a_sstm.rb +135 -0
  144. data/lib/sisu/src_shared.rb +347 -0
  145. data/lib/sisu/src_sisupod_make.rb +171 -0
  146. data/lib/sisu/src_sisupod_sstm.rb +109 -0
  147. data/lib/sisu/sst_convert_markup.rb +323 -0
  148. data/lib/sisu/sst_do_inline_footnotes.rb +440 -0
  149. data/lib/sisu/sst_from_xml.rb +178 -0
  150. data/lib/sisu/sst_identify_markup.rb +482 -0
  151. data/lib/sisu/sst_to_s_xml_sax.rb +471 -0
  152. data/lib/sisu/termsheet.rb +163 -0
  153. data/lib/sisu/texinfo.rb +430 -0
  154. data/lib/sisu/texinfo_format.rb +541 -0
  155. data/lib/sisu/texpdf.rb +1162 -0
  156. data/lib/sisu/texpdf_format.rb +1689 -0
  157. data/lib/sisu/texpdf_parts.rb +235 -0
  158. data/lib/sisu/txt_asciidoc.rb +354 -0
  159. data/lib/sisu/txt_asciidoc_decorate.rb +207 -0
  160. data/lib/sisu/txt_markdown.rb +389 -0
  161. data/lib/sisu/txt_markdown_decorate.rb +207 -0
  162. data/lib/sisu/txt_orgmode.rb +376 -0
  163. data/lib/sisu/txt_orgmode_decorate.rb +186 -0
  164. data/lib/sisu/txt_output.rb +86 -0
  165. data/lib/sisu/txt_plain.rb +410 -0
  166. data/lib/sisu/txt_plain_decorate.rb +189 -0
  167. data/lib/sisu/txt_read.rb +109 -0
  168. data/lib/sisu/txt_rst.rb +371 -0
  169. data/lib/sisu/txt_rst_decorate.rb +186 -0
  170. data/lib/sisu/txt_shared.rb +241 -0
  171. data/lib/sisu/txt_textile.rb +367 -0
  172. data/lib/sisu/txt_textile_decorate.rb +186 -0
  173. data/lib/sisu/update.rb +141 -0
  174. data/lib/sisu/urls.rb +696 -0
  175. data/lib/sisu/utils.rb +232 -0
  176. data/lib/sisu/utils_composite.rb +115 -0
  177. data/lib/sisu/utils_response.rb +114 -0
  178. data/lib/sisu/utils_screen_text_color.rb +472 -0
  179. data/lib/sisu/utils_spell.rb +99 -0
  180. data/lib/sisu/webrick.rb +191 -0
  181. data/lib/sisu/wikispeak.rb +375 -0
  182. data/lib/sisu/xhtml.rb +472 -0
  183. data/lib/sisu/xhtml_epub2.rb +890 -0
  184. data/lib/sisu/xhtml_epub2_concordance.rb +322 -0
  185. data/lib/sisu/xhtml_epub2_format.rb +2272 -0
  186. data/lib/sisu/xhtml_epub2_persist.rb +278 -0
  187. data/lib/sisu/xhtml_epub2_segments.rb +599 -0
  188. data/lib/sisu/xhtml_epub2_tune.rb +330 -0
  189. data/lib/sisu/xhtml_parts.rb +183 -0
  190. data/lib/sisu/xhtml_shared.rb +62 -0
  191. data/lib/sisu/xhtml_table.rb +97 -0
  192. data/lib/sisu/xml_docbook5.rb +376 -0
  193. data/lib/sisu/xml_dom.rb +624 -0
  194. data/lib/sisu/xml_fictionbook2.rb +389 -0
  195. data/lib/sisu/xml_format.rb +865 -0
  196. data/lib/sisu/xml_md_oai_pmh_dc.rb +229 -0
  197. data/lib/sisu/xml_odf_odt.rb +887 -0
  198. data/lib/sisu/xml_odf_odt_format.rb +674 -0
  199. data/lib/sisu/xml_parts.rb +191 -0
  200. data/lib/sisu/xml_persist.rb +126 -0
  201. data/lib/sisu/xml_sax.rb +521 -0
  202. data/lib/sisu/xml_scaffold_structure_collapsed.rb +198 -0
  203. data/lib/sisu/xml_scaffold_structure_sisu.rb +201 -0
  204. data/lib/sisu/xml_shared.rb +665 -0
  205. data/lib/sisu/xml_tables.rb +261 -0
  206. data/lib/sisu/zap.rb +90 -0
  207. 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+">&nbsp;<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='&#042;','&#043;'
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__