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.
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__