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,235 @@
1
+ # encoding: utf-8
2
+ =begin
3
+
4
+ * Name: SiSU
5
+
6
+ ** Description: documents, structuring, processing, publishing, search
7
+ *** html scroll 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/html_scroll.rb;hb=HEAD>
55
+
56
+ =end
57
+ module SiSU_HTML_Scroll
58
+ require_relative 'html_shared' # html_shared.rb
59
+ require_relative 'html' # html.rb
60
+ require_relative 'shared_metadata' # shared_metadata.rb
61
+ require_relative 'html_promo' # html_promo.rb
62
+ class Scroll
63
+ def initialize(md='',data='',endnotes='')
64
+ @md,@data,@endnotes=md,data,endnotes
65
+ end
66
+ def songsheet
67
+ begin
68
+ scr=SiSU_HTML_Scroll::Scroll.new(@md,@data,@endnotes).markup
69
+ scr[:tails]=SiSU_HTML_Scroll::Scroll.new(@md).tails
70
+ scr
71
+ rescue
72
+ SiSU_Errors::Rescued.new($!,$@,@md.opt.selections.str,@md.fns).location do
73
+ __LINE__.to_s + ':' + __FILE__
74
+ end
75
+ ensure
76
+ end
77
+ end
78
+ protected
79
+ def markup
80
+ data=@data
81
+ @rcdc=false
82
+ @scr={ body: [], metadata: [], owner_details: [] }
83
+ data.each do |dob|
84
+ dob.obj=dob.obj.gsub(/#{@md.file.output_path.html_seg.rel_image}/m,
85
+ @md.file.output_path.html_scroll.rel_image)
86
+ if defined? dob.name and dob.name =~/^meta/ \
87
+ and dob.obj =~/Document Information/
88
+ dob.obj=dob.obj.
89
+ gsub(/(Document Information(?: \(metadata\))?)/,
90
+ '\1<a name="docinfo"></a>')
91
+ end
92
+ if dob.obj =~/^Metadata$/ \
93
+ and dob.lv =='B'
94
+ dob.obj=dob.obj.gsub(/Metadata/,'') #dob.obj=''
95
+ end
96
+ if defined? dob.name \
97
+ and dob.name =~/^metadata/ \
98
+ and dob.lv =='1' \
99
+ and dob.obj =~/SiSU Metadata, document information/
100
+ @rcdc=true
101
+ end
102
+ dob.obj=dob.obj.gsub(/href="[a-z0-9._-]+(#\S+?")/m,'href="\1'). # internal document links
103
+ gsub(/href="#{Xx[:segment]}/m,'href="')
104
+ if dob.obj !~/(^#{Rx[:meta]}|#{Mx[:br_eof]})/
105
+ unless dob.is ==:code
106
+ dob.obj=dob.obj.
107
+ gsub(/(?:#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}|#{Mx[:en_b_o]}.+?#{Mx[:en_b_c]})\s*/m,' ')
108
+ end
109
+ if defined? dob.ocn
110
+ @p_num=SiSU_HTML_Format::ParagraphNumber.new(@md,dob.ocn)
111
+ end
112
+ sto=SiSU_HTML_Format::FormatTextObject.new(@md,dob)
113
+ para_html=if dob.is==:heading
114
+ x=if dob.ln==0
115
+ sto.heading_body0
116
+ elsif dob.ln==1
117
+ sto.heading_body1
118
+ elsif dob.ln==2
119
+ sto.heading_body2
120
+ elsif dob.ln==3
121
+ sto.heading_body3
122
+ elsif dob.ln==4
123
+ sto.heading_body4
124
+ elsif dob.ln==5
125
+ sto.heading_body5
126
+ elsif dob.ln==6
127
+ sto.heading_body6
128
+ elsif dob.ln==7
129
+ sto.heading_body7
130
+ end
131
+ elsif dob.is==:break \
132
+ and dob.from==:markup
133
+ '<br><hr width=90% /><br>'
134
+ elsif dob.is==:heading_insert
135
+ x=if dob.ln==0
136
+ unless dob.obj.empty?
137
+ sto.heading_body0
138
+ end
139
+ elsif dob.ln==1
140
+ unless dob.obj.empty?
141
+ sto.heading_body1
142
+ end
143
+ elsif dob.ln==2
144
+ unless dob.obj.empty?
145
+ sto.heading_body2
146
+ end
147
+ elsif dob.ln==3
148
+ unless dob.obj.empty?
149
+ sto.heading_body3
150
+ end
151
+ elsif dob.ln==4 \
152
+ and dob.obj !~/^(?:Endnotes|Index|Metadata|Manifest)$/
153
+ unless dob.obj.empty?
154
+ sto.heading_body4
155
+ end
156
+ elsif dob.ln==4 \
157
+ and dob.obj=='Endnotes'
158
+ sto.heading_body4
159
+ @endnotes.join("\n")
160
+ elsif dob.ln==4 \
161
+ and dob.obj=='Index'
162
+ sto.heading_body4
163
+ book_idx=SiSU_Particulars::CombinedSingleton.
164
+ instance.get_idx_html(@md.opt).html_idx
165
+ book_idx.each do |y| #takes book index prepared for segments & strips segment identifying info
166
+ y.gsub!(/<a href="\S+?\.html#(\d+)">(\1(?:-\d+)?)<\/a>/,
167
+ '<a href="#\1">\2</a>')
168
+ end
169
+ book_idx.join("\n")
170
+ elsif dob.ln==5
171
+ unless dob.obj.empty?
172
+ sto.heading_body5
173
+ end
174
+ elsif dob.ln==6
175
+ unless dob.obj.empty?
176
+ sto.heading_body6
177
+ end
178
+ elsif dob.ln==7
179
+ unless dob.obj.empty?
180
+ sto.heading_body7
181
+ end
182
+ end
183
+ elsif dob.is==:para
184
+ if dob.indent \
185
+ and dob.hang \
186
+ and dob.indent =~/[0-9]/ \
187
+ and dob.hang =~/[0-9]/
188
+ if dob.bullet_
189
+ (dob.indent =~/[1-9]/) \
190
+ ? sto.format('li',"i#{dob.indent}")
191
+ : sto.format('li','bullet')
192
+ elsif dob.indent == dob.hang
193
+ sto.format('p',"i#{dob.indent}")
194
+ elsif dob.indent != dob.hang
195
+ sto.format('p',"h#{dob.hang}i#{dob.indent}")
196
+ else sto.para
197
+ end
198
+ else sto.para
199
+ end
200
+ elsif dob.is==:block
201
+ sto.block
202
+ elsif dob.is==:group
203
+ sto.group
204
+ elsif dob.is==:alt
205
+ sto.alt
206
+ elsif dob.is==:verse
207
+ sto.verse
208
+ elsif dob.is==:code
209
+ sto.code
210
+ elsif dob.is==:table
211
+ sto.table
212
+ elsif dob.is==:break
213
+ end
214
+ if dob =~/<a name="n\d+">/ \
215
+ and dob =~/^(?:\^~\d+\s|<!e[:_]\d+!>)/ # hmmm re-adjusted 200507, for alt endnote which should again be matched ^~ ... not in response to problem though
216
+ dob=''
217
+ end
218
+ unless @rcdc
219
+ @scr[:body] << para_html unless para_html =~/\A\s*\Z/
220
+ end
221
+ end
222
+ end
223
+ @scr
224
+ end
225
+ def tails
226
+ scr_tail=[]
227
+ format_head_scroll=SiSU_HTML_Format::HeadToc.new(@md)
228
+ scr_tail \
229
+ << format_head_scroll.scroll_tail \
230
+ << format_head_scroll.html_close
231
+ scr_tail
232
+ end
233
+ end
234
+ end
235
+ __END__
@@ -0,0 +1,716 @@
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/html_segments.rb;hb=HEAD>
55
+
56
+ =end
57
+ module SiSU_HTML_Seg
58
+ require_relative 'html_shared' # html_shared.rb
59
+ require_relative 'html' # html.rb
60
+ require_relative 'html_persist' # html_persist.rb
61
+ require_relative 'html_promo' # html_promo.rb
62
+ require_relative 'shared_metadata' # shared_metadata.rb
63
+ class Output
64
+ def initialize(md,outputfile,per,minitoc,type='')
65
+ @md, @output_seg_file,@per,@minitoc,@type=
66
+ md,outputfile, per,minitoc, type
67
+ @title_banner_=SiSU_Env::CreateSite.new(@md.opt).html_seg_title_banner?
68
+ @file=SiSU_Env::FileOp.new(@md)
69
+ @make=SiSU_Env::ProcessingSettings.new(@md)
70
+ @cl=(@make.build.html_minitoc?) \
71
+ ? 'content'
72
+ : 'content0'
73
+ end
74
+ def output
75
+ if @per.title =~/\S/
76
+ filename_seg=[]
77
+ if @make.build.html_top_band?
78
+ filename_seg \
79
+ << @per.title \
80
+ << @per.tocband_banner
81
+ else
82
+ filename_seg \
83
+ << @per.title
84
+ end
85
+ if @type=='endnotes'
86
+ @per.headings=[]
87
+ format_head_seg=SiSU_HTML_Format::HeadSeg.new(@md)
88
+ if @title_banner_
89
+ @per.headings \
90
+ << format_head_seg.
91
+ title_banner(@md.title.main,@md.title.sub,@author)
92
+ end
93
+ txt_obj={ txt: 'Endnotes', ocn_display: '' }
94
+ format_seg=SiSU_HTML_Format::FormatSeg.new(@md,txt_obj)
95
+ @per.headings \
96
+ << format_seg.title_heading1
97
+ filename_seg \
98
+ << @per.heading_endnotes \
99
+ << @minitoc << @per.headings \
100
+ << %{\n<div class="#{@cl}">\n} \
101
+ << @per.endnote_all \
102
+ << '</div>' # << '</div>'
103
+ elsif @type=='idx'
104
+ @per.headings=[]
105
+ format_head_seg=SiSU_HTML_Format::HeadSeg.new(@md)
106
+ if @title_banner_
107
+ @per.headings \
108
+ << format_head_seg.
109
+ title_banner(@md.title.main,@md.title.sub,@author)
110
+ end
111
+ txt_obj={ txt: 'Index', ocn_display: '' }
112
+ format_seg=SiSU_HTML_Format::FormatSeg.new(@md,txt_obj)
113
+ @per.headings << format_seg.title_heading1
114
+ filename_seg \
115
+ << @per.heading_idx \
116
+ << @minitoc << @per.headings \
117
+ << %{\n<div class="#{@cl}">\n} \
118
+ << @per.idx \
119
+ << '</div>' # << '</div>'
120
+ elsif @type=='metadata'
121
+ metadata=SiSU_Metadata::Summary.new(@md).html_display.metadata
122
+ @per.headings=[]
123
+ format_head_seg=SiSU_HTML_Format::HeadSeg.new(@md)
124
+ if @title_banner_
125
+ @per.headings \
126
+ << format_head_seg.
127
+ title_banner(@md.title.main,@md.title.sub,@author)
128
+ end
129
+ txt_obj={ txt: 'Metadata', ocn_display: '' }
130
+ format_seg=SiSU_HTML_Format::FormatSeg.new(@md,txt_obj)
131
+ @per.headings \
132
+ << format_seg.title_heading1
133
+ filename_seg \
134
+ << @per.heading_idx \
135
+ << @minitoc \
136
+ << @per.headings \
137
+ << %{\n<div class="#{@cl}">\n} \
138
+ << metadata \
139
+ << '</div>' # << '</div>'
140
+ else
141
+ if @make.build.html_top_band?
142
+ filename_seg \
143
+ << @minitoc \
144
+ << @per.headings \
145
+ << @per.main \
146
+ << "\n</div>\n"
147
+ else
148
+ filename_seg \
149
+ << @minitoc \
150
+ << @per.main \
151
+ << "\n</div>\n"
152
+ end
153
+ end
154
+ filename_seg <<=if @make.build.html_top_band?
155
+ @per.tail \
156
+ << @per.tocband_bannerless \
157
+ << @per.credits
158
+ else
159
+ @per.tail \
160
+ << @per.credits
161
+ end
162
+ filename_seg=filename_seg.flatten.compact #watch
163
+ filename_seg.each do |str|
164
+ unless str =~/\A\s*\Z/
165
+ str=str.strip.
166
+ gsub(Xx[:html_relative2],
167
+ @file.path_rel_links.html_seg_2).
168
+ gsub(Xx[:html_relative1],
169
+ @file.path_rel_links.html_seg_1)
170
+ @output_seg_file << str
171
+ end
172
+ end
173
+ @output_seg_file.close
174
+ end
175
+ end
176
+ end
177
+ class Seg
178
+ @@seg_url=''
179
+ @@tracker=0
180
+ @@seg_name=[]
181
+ attr_reader :seg_name_x,:seg_name_x_tracker
182
+ def initialize(md=nil,data='')
183
+ @md,@data=md,data
184
+ @per=SiSU_HTML_Persist::Persist.new
185
+ @seg_name_x=@per.seg_name_x=(@@seg_name || [])
186
+ @seg_name_x_tracker=@per.seg_name_x_tracker=(@@tracker || 0)
187
+ @env=SiSU_Env::InfoEnv.new(@md.fns) if @md
188
+ if @md
189
+ @make=SiSU_Env::ProcessingSettings.new(@md)
190
+ @cl=(@make.build.html_minitoc?) \
191
+ ? 'content'
192
+ : 'content0'
193
+ else @cl='content'
194
+ end
195
+ if @md
196
+ @title_banner_=SiSU_Env::CreateSite.new(@md.opt).html_seg_title_banner?
197
+ end
198
+ end
199
+ def songsheet
200
+ begin
201
+ @minitoc=SiSU_HTML::Source::Toc.new(@md,@data).minitoc
202
+ @per=SiSU_HTML_Persist::Persist.new
203
+ data=get_subtoc_endnotes(@data,@per)
204
+ data=articles(data,@per)
205
+ cleanup(@md,@per) # (((( added ))))
206
+ #### (((( END )))) ####
207
+ rescue
208
+ SiSU_Errors::Rescued.new($!,$@,@md.opt.selections.str,@md.fns).location do
209
+ __LINE__.to_s + ':' + __FILE__
210
+ end
211
+ ensure
212
+ SiSU_HTML_Persist::Persist.new.persist_init
213
+ @@seg_name=@per.seg_name=[]
214
+ end
215
+ end
216
+ protected
217
+ def articles(data,per)
218
+ @per=per
219
+ tracking,newfile=0,0
220
+ printed_endnote_seg='n'
221
+ idx_html=nil
222
+ if @md.book_idx
223
+ #my_make_source_file=SiSU_Env::CreateFile.new(@md.fns)
224
+ idx_html=SiSU_Particulars::CombinedSingleton.
225
+ instance.get_idx_html(@md.opt).html_idx
226
+ idx_html.each do |x|
227
+ @per.idx << x
228
+ end
229
+ @per.heading_idx=''
230
+ end
231
+ data.each do |dob|
232
+ if (dob.is == :heading \
233
+ || dob.is == :heading_insert) \
234
+ && dob.ln == 4
235
+ @@seg_name << dob.name
236
+ @per.seg_name = @@seg_name
237
+ dob.name
238
+ end
239
+ end
240
+ @per.seg_name_x=@per.seg_name
241
+ @per.seg_name.length
242
+ testforartnum=@per.seg_name_x
243
+ if (@md.opt.act[:verbose][:set]==:on \
244
+ || @md.opt.act[:verbose_plus][:set]==:on \
245
+ || @md.opt.act[:maintenance][:set]==:on)
246
+ SiSU_Screen::Ansi.new(
247
+ @md.opt.act[:color_state][:set],
248
+ @per.seg_name.length
249
+ ).segmented
250
+ end
251
+ map_nametags=SiSU_Particulars::CombinedSingleton.
252
+ instance.get_map_nametags(@md).nametags_map #p map_nametags
253
+ data.each do |dob|
254
+ if defined? dob.obj \
255
+ and dob.obj =~/href="#{Xx[:segment]}#+\S+?"/
256
+ while dob.obj =~/href="#{Xx[:segment]}#+(\S+?)"/
257
+ m=$1
258
+ if map_nametags[m] \
259
+ and map_nametags[m][:segname]
260
+ inf=SiSU_Env::FileOp.new(@md) if @md
261
+ lng=(inf.output_dir_structure.by_language_code?) \
262
+ ? ''
263
+ : '.' + @md.opt.lng
264
+ dob.obj.sub!(/href="#{Xx[:segment]}#+(\S+?)"/,
265
+ %{href="#{map_nametags[m][:segname]}#{lng}#{Sfx[:html]}#\\1"})
266
+ else
267
+ p "NOT FOUND name_tags: #{m}"
268
+ dob.obj.sub!(/href="#{Xx[:segment]}#+(\S+?)"/,
269
+ %{href="#\\1"}) # not satisfactory
270
+ end
271
+ end
272
+ end
273
+ if (dob.is==:heading \
274
+ || dob.is==:heading_insert) \
275
+ && dob.ln==4
276
+ @per.heading4=dob.obj
277
+ @per.is4=newfile=1
278
+ end
279
+ if (dob.is==:heading \
280
+ || dob.is==:heading_insert) \
281
+ && dob.ln==3
282
+ @per.heading3=dob.obj
283
+ @per.is4,@per.is3=0,1
284
+ end
285
+ if (dob.is==:heading \
286
+ || dob.is==:heading_insert) \
287
+ && dob.ln==2
288
+ @per.heading2=dob.obj
289
+ @per.is4,@per.is3,@per.is2=0,0,1
290
+ end
291
+ if (dob.is==:heading \
292
+ || dob.is==:heading_insert) \
293
+ && dob.ln==1
294
+ @per.heading1=dob.obj
295
+ @per.is4,@per.is3,@per.is2,@per.is1=0,0,0,1
296
+ end
297
+ if (dob.is==:heading \
298
+ || dob.is==:heading_insert) \
299
+ && dob.ln==0
300
+ @per.heading0=dob.obj
301
+ @per.is4,@per.is3,@per.is2,@per.is1,@per.is0=0,0,0,0,1
302
+ end
303
+ if (@per.is1 && !@per.is2 && !@per.is3 && !@per.is4)
304
+ if not (dob.is==:heading \
305
+ || dob.is==:heading_insert) \
306
+ && dob.ln==0
307
+ $_ #; check
308
+ end
309
+ end
310
+ if @per.is4==1
311
+ if newfile==1 \
312
+ or dob.obj =~/^#{Mx[:br_endnotes]}|^#{Mx[:br_eof]}/
313
+ newfile=0
314
+ if (dob.is==:heading \
315
+ || dob.is==:heading_insert) \
316
+ && dob.ln==4
317
+ if tracking != 0
318
+ @file=SiSU_Env::FileOp.new(@md)
319
+ unless FileTest.directory?(@file.output_path.html_seg.dir)
320
+ FileUtils::mkdir_p(@file.output_path.html_seg.dir) \
321
+ if File.writable?("#{@file.output_path.base.dir}/.")
322
+ end
323
+ tail(@md,@per)
324
+ #SiSU_HTML_Seg::Seg.new(@md,@per).tail
325
+ fnh={
326
+ fn: @per.seg_name_x[tracking-1],
327
+ }
328
+ fn=@md.file.base_filename.html_seg(fnh)
329
+ segfilename="#{@file.output_path.html_seg.dir}/#{fn}"
330
+ output_seg_file=File.new(segfilename,'w') if @per.seg_name_x[tracking-1]
331
+ minitoc=(@make.build.html_minitoc?) ? @minitoc : ''
332
+ if dob.is==:heading \
333
+ || (@per.seg_name_x[tracking-1] !~/endnotes|book_index|metadata/)
334
+ SiSU_HTML_Seg::Output.new(@md,output_seg_file,@per,minitoc).output
335
+ elsif dob.is==:heading_insert
336
+ if @per.seg_name_x[tracking-1]=='endnotes'
337
+ SiSU_HTML_Seg::Output.new(@md,output_seg_file,@per,minitoc,'endnotes').output
338
+ elsif @per.seg_name_x[tracking-1]=='book_index'
339
+ SiSU_HTML_Seg::Output.new(@md,output_seg_file,@per,minitoc,'idx').output
340
+ @per.idx=[]
341
+ elsif @per.seg_name_x[tracking-1]=='metadata'
342
+ SiSU_HTML_Seg::Output.new(@md,output_seg_file,@per,minitoc,'metadata').output
343
+ else puts "#{__FILE__}::#{__LINE__}"
344
+ end
345
+ else puts "#{__FILE__}::#{__LINE__}"
346
+ end
347
+ SiSU_HTML_Seg::Seg.new.reinitialise(per)
348
+ #per=persist_init
349
+ heading_art(dob)
350
+ head(dob)
351
+ #keep use for last segment, eg if metadata is last segment
352
+ if @per.seg_name_x[tracking] =='metadata' # this is for metadata
353
+ fnh={
354
+ fn: @per.seg_name_x[tracking],
355
+ }
356
+ fn=@md.file.base_filename.html_seg(fnh)
357
+ segfilename="#{@file.output_path.html_seg.dir}/#{fn}"
358
+ output_seg_file=File.new(segfilename,'w')
359
+ SiSU_HTML_Seg::Output.new(@md,output_seg_file,@per,minitoc,'metadata').output
360
+ #per=persist_init
361
+ Seg.new.reinitialise(per)
362
+ end
363
+ end
364
+ if tracking==0
365
+ heading_art(dob)
366
+ head(dob)
367
+ end
368
+ end
369
+ tracking=tracking+1
370
+ end
371
+ if (dob.is==:heading \
372
+ || dob.is==:heading_insert) \
373
+ && dob.ln==4 \
374
+ && dob.name
375
+ @per.get_hash_to=dob.name
376
+ @per.get_hash_fn=dob.name
377
+ end
378
+ if dob.obj.is_a?(String)
379
+ markup(dob)
380
+ elsif dob.obj.is_a?(Array)
381
+ dob.obj.each do |pg|
382
+ markup(pg)
383
+ end
384
+ end
385
+ if testforartnum[tracking-1] =~/endnote/
386
+ if printed_endnote_seg=='n'
387
+ printed_endnote_seg='y'
388
+ end
389
+ end
390
+ end
391
+ end
392
+ data
393
+ end
394
+ def heading_art(dob)
395
+ format_head_seg=SiSU_HTML_Format::HeadSeg.new(@md)
396
+ @per.dot_nav=if (@make.build.html_navigation?) \
397
+ && (@make.build.html_navigation_bar?)
398
+ x=if (dob.is==:heading \
399
+ || dob.is==:heading_insert) \
400
+ && (dob.ln.to_s =~/^[0-7]/)
401
+ x=if @@tracker < @per.seg_name.length-1
402
+ format_head_seg.dot_control_pre_next
403
+ else
404
+ format_head_seg.dot_control_pre
405
+ end
406
+ else @per.dot_nav
407
+ end
408
+ else @per.dot_nav=''
409
+ end
410
+ ads=SiSU_HTML_Promo::Ad.new(@md)
411
+ @per.title=format_head_seg.head_seg << ads.div.major
412
+ end
413
+ def head(dob)
414
+ clean=/<!.*?!>|<:.*?>/
415
+ format_head_seg=SiSU_HTML_Format::HeadSeg.new(@md)
416
+ if @make.build.html_navigation?
417
+ if @@tracker < @per.seg_name.length-1
418
+ @per.segtocband=if @@tracker==0
419
+ format_head_seg.toc_next2
420
+ else
421
+ format_head_seg.toc_pre_next2
422
+ end
423
+ else @per.segtocband=format_head_seg.toc_pre2
424
+ end
425
+ else @per.segtocband=''
426
+ end
427
+ @p_num ||= ''
428
+ if @per.is0==1
429
+ @author=%{<b>#{@md.author}</b>\n} if @md.author.to_s =~/\S/
430
+ @per.tocband_banner \
431
+ << format_head_seg.navigation_band(@per.segtocband,@per.dot_nav)
432
+ @per.tocband_bannerless \
433
+ << '<br>' \
434
+ << format_head_seg.navigation_band_bottom(@per.segtocband,@per.dot_nav)
435
+ if @title_banner_
436
+ @per.headings \
437
+ << format_head_seg.title_banner(@md.title.main,@md.title.sub,@author).gsub(clean,'')
438
+ end
439
+ ocn=(@per.heading0[/.+?#{Mx[:id_o]}~(\d+);(?:[oh]|[0-6]:)\d+;\w\d+#{Mx[:id_c]}#{Mx[:id_o]}#{@dp}:#{@dp}#{Mx[:id_c]}$/]) \
440
+ ? $1
441
+ : ''
442
+ @p_num=SiSU_HTML_Format::ParagraphNumber.new(@md,ocn)
443
+ txt_obj={ txt: @per.heading0, ocn_display: @p_num.ocn_display }
444
+ format_seg=SiSU_HTML_Format::FormatSeg.new(@md,txt_obj)
445
+ @per.headings \
446
+ << format_seg.title_heading0.gsub(clean,'')
447
+ @per.heading0=@per.heading0.
448
+ gsub(/&nbsp;<a name="-[\d*+]+" href="#_[\d*+]+">&nbsp;<sup>[\d*+]+<\/sup>&nbsp;<\/a>/,'')
449
+ end
450
+ if @per.is1==1
451
+ heading1=@per.heading1
452
+ ocn=(heading1[/.+?#{Mx[:id_o]}~(\d+);(?:[oh]|[0-6]:)\d+;\w\d+#{Mx[:id_c]}#{Mx[:id_o]}#{@dp}:#{@dp}#{Mx[:id_c]}$/]) \
453
+ ? $1
454
+ : ''
455
+ @p_num=SiSU_HTML_Format::ParagraphNumber.new(@md,ocn)
456
+ txt_obj={ txt: heading1, ocn_display: @p_num.ocn_display }
457
+ format_seg=SiSU_HTML_Format::FormatSeg.new(@md,txt_obj)
458
+ @per.headings \
459
+ << format_seg.title_heading1.gsub(clean,'')
460
+ @per.heading1=@per.heading1.
461
+ gsub(/&nbsp;<a name="-[\d*+]+" href="#_[\d*+]+">&nbsp;<sup>[\d*+]+<\/sup>&nbsp;<\/a>/,'')
462
+ end
463
+ if @per.is2==1
464
+ heading2=@per.heading2
465
+ ocn=(heading2[/.+?#{Mx[:id_o]}~(\d+);(?:[oh]|[0-6]:)\d+;\w\d+#{Mx[:id_c]}#{Mx[:id_o]}#{@dp}:#{@dp}#{Mx[:id_c]}$/]) \
466
+ ? $1
467
+ : ''
468
+ @p_num=SiSU_HTML_Format::ParagraphNumber.new(@md,ocn)
469
+ txt_obj={ txt: heading2, ocn_display: @p_num.ocn_display }
470
+ format_seg=SiSU_HTML_Format::FormatSeg.new(@md,txt_obj)
471
+ @per.headings \
472
+ << format_seg.title_heading2.gsub(clean,'')
473
+ @per.heading2=@per.heading2.
474
+ gsub(/&nbsp;<a name="-[\d*+]+" href="#_[\d*+]+">&nbsp;<sup>[\d*+]+<\/sup>&nbsp;<\/a>/,'')
475
+ end
476
+ if @per.is3==1
477
+ heading3=@per.heading3
478
+ ocn=(heading3[/.+?#{Mx[:id_o]}~(\d+);(?:[oh]|[0-6]:)\d+;\w\d+#{Mx[:id_c]}#{Mx[:id_o]}#{@dp}:#{@dp}#{Mx[:id_c]}$/]) \
479
+ ? $1
480
+ : ''
481
+ @p_num=SiSU_HTML_Format::ParagraphNumber.new(@md,ocn)
482
+ txt_obj={ txt: heading3, ocn_display: @p_num.ocn_display }
483
+ format_seg=SiSU_HTML_Format::FormatSeg.new(@md,txt_obj)
484
+ @per.headings \
485
+ << format_seg.title_heading3.gsub(clean,'')
486
+ @per.heading3=@per.heading3.
487
+ gsub(/&nbsp;<a name="-[\d*+]+" href="#_[\d*+]+">&nbsp;<sup>[\d*+]+<\/sup>&nbsp;<\/a>/,'')
488
+ end
489
+ if @per.is4==1
490
+ heading4=@per.heading4
491
+ ocn=(heading4[/.+?#{Mx[:id_o]}~(\d+);(?:[oh]|[0-6]:)\d+;\w\d+#{Mx[:id_c]}#{Mx[:id_o]}#{@dp}:#{@dp}#{Mx[:id_c]}$/]) \
492
+ ? $1
493
+ : ''
494
+ @p_num=SiSU_HTML_Format::ParagraphNumber.new(@md,ocn)
495
+ txt_obj={ txt: heading4, ocn_display: @p_num.ocn_display }
496
+ format_seg=SiSU_HTML_Format::FormatSeg.new(@md,txt_obj)
497
+ @per.headings \
498
+ << format_seg.title_heading4.gsub(clean,'')
499
+ end
500
+ @@tracker=@@tracker+1
501
+ end
502
+ def markup(dob)
503
+ @debug=[]
504
+ SiSU_HTML_Format::HeadSeg.new(@md)
505
+ if dob.is !=:meta
506
+ if dob.is==:heading \
507
+ || dob.is==:heading_insert \
508
+ || dob.is == :para
509
+ @p_num=SiSU_HTML_Format::ParagraphNumber.new(@md,dob.ocn)
510
+ end
511
+ sto=SiSU_HTML_Format::FormatTextObject.new(@md,dob)
512
+ dob_html=if dob.is == :heading \
513
+ || dob.is==:heading_insert \
514
+ || dob.is==:para
515
+ dob_html=if dob.is==:heading \
516
+ || dob.is==:heading_insert
517
+ if dob.ln==4
518
+ sto.seg_heading4
519
+ elsif dob.ln==5
520
+ sto.seg_heading5
521
+ elsif dob.ln==6
522
+ sto.seg_heading6
523
+ elsif dob.ln==7
524
+ sto.seg_heading6
525
+ end
526
+ elsif dob.is==:para
527
+ if dob.indent \
528
+ and dob.hang \
529
+ and dob.indent =~/[0-9]/ \
530
+ and dob.hang =~/[0-9]/
531
+ if dob.bullet_
532
+ if dob.indent =~/[1-9]/
533
+ sto.format('li',"i#{dob.indent}")
534
+ else
535
+ sto.format('li','bullet')
536
+ end
537
+ elsif dob.indent == dob.hang
538
+ sto.format('p',"i#{dob.indent}")
539
+ elsif dob.indent != dob.hang
540
+ sto.format('p',"h#{dob.hang}i#{dob.indent}")
541
+ else sto.para
542
+ end
543
+ else sto.para
544
+ end
545
+ end
546
+ elsif dob.is==:block
547
+ sto.block
548
+ elsif dob.is==:group
549
+ sto.group
550
+ elsif dob.is==:alt
551
+ sto.alt
552
+ elsif dob.is==:verse
553
+ sto.verse
554
+ elsif dob.is==:code
555
+ sto.code
556
+ elsif dob.is==:table
557
+ sto.table
558
+ elsif dob.is==:break \
559
+ and dob.from==:markup
560
+ '<br><hr width=90% /><br>'
561
+ end
562
+ if @md.flag_separate_endnotes
563
+ dob.obj=dob.obj.gsub(/"\s+href="#(#{Mx[:note]}\d+)">/,%{" href=\"endnotes#{Sfx[:html]}#\\1">}) #endnote- twice #removed file type
564
+ end
565
+ if (dob.is==:heading \
566
+ || dob.is==:heading_insert \
567
+ || dob.is==:para) \
568
+ && (not dob.ocn \
569
+ || (dob.ocn.to_s.empty?))
570
+ format_seg=SiSU_HTML_Format::FormatSeg.new(@md,dob)
571
+ end
572
+ dob.obj=dob.obj.gsub(/\s*(-\{{2}~\d+|<:e[:_]\d+>).*/,'') #potentially dagerous - removes all paragraphs with <!e_!> #?? workpoint
573
+ if dob.obj =~/<a name="_\d+" href="#-\d+">&nbsp;<sup>/ #endnote- note-
574
+ format_seg=SiSU_HTML_Format::FormatSeg.new(@md,dob)
575
+ dob=format_seg.no_paranum
576
+ end
577
+ if (dob.is==:heading \
578
+ || dob.is==:heading_insert) \
579
+ && dob.ln==4
580
+ @per.main << %{\n<div class="#{@cl}">\n}
581
+ @per.main << dob_html
582
+ if @make.build.segsubtoc?
583
+ @per.main << @per.seg_subtoc[@per.get_hash_fn] #% insertion of sub-toc
584
+ end
585
+ else
586
+ @per.main << dob_html #unless @@flag_alt==true
587
+ end
588
+ end
589
+ end
590
+ def tail(md,per)
591
+ @md,@per=md,per
592
+ format_head_seg=SiSU_HTML_Format::HeadSeg.new(@md)
593
+ if @md.flag_auto_endnotes \
594
+ and @per.seg_endnotes[@per.get_hash_fn]
595
+ @per.tail << %{\n<div class="#{@cl}">\n<div class="endnote">\n}
596
+ if @per.seg_endnotes[@per.get_hash_fn].flatten.length > 0
597
+ @per.tail << format_head_seg.endnote_mark
598
+ @per.tail << @per.seg_endnotes[@per.get_hash_fn].flatten #endnotes deposited at end of individual segments ||@|EXTRACTION OF ENDNOTES|
599
+ end
600
+ @per.tail << '</div>'
601
+ @per.tail << '</div>' #this div closes div class content
602
+ end
603
+ ads=SiSU_HTML_Promo::Ad.new(@md)
604
+ @per.credits \
605
+ << format_head_seg.credit \
606
+ << ads.div.close \
607
+ << ads.display \
608
+ << format_head_seg.html_close
609
+ end
610
+ def reinitialise(per)
611
+ per.title,per.dot_nav,per.tocband_banner,per.tocband_bannerless,per.headings,per.main,per.tail,per.credits=Array.new(8){[]}
612
+ @per.segtocband=nil
613
+ end
614
+ def cleanup(md,per)
615
+ #per=persist_init
616
+ reinitialise(per)
617
+ @@tracker=0
618
+ @per.seg_endnotes,@per.seg_subtoc={},{}
619
+ @per.seg_endnotes_array,@per.seg_subtoc_array=[],[]
620
+ per.endnote_all=[]
621
+ end
622
+ def get_subtoc_endnotes(data,per) #get endnotes & sub-table of contents subtoc
623
+ @per=per
624
+ data.each do |dob|
625
+ dob.obj=dob.obj.gsub(/<a name=\"h\d.*?\">(.+?)<\/a>/mi,'\1')
626
+ if @md.flag_auto_endnotes
627
+ if (dob.is==:heading \
628
+ || dob.is==:heading_insert) \
629
+ && (dob.ln.to_s =~/^[0-4]/) \
630
+ and not @per.fn.to_s.empty?
631
+ @per.seg_endnotes[@per.fn]=[]
632
+ @per.seg_endnotes[@per.fn] << @per.seg_endnotes_array
633
+ @per.seg_endnotes_array=[] if dob.ln==4
634
+ end
635
+ if (dob.is==:heading \
636
+ || dob.is==:heading_insert) \
637
+ && dob.ln==4 #% EXTRACTION OF SUB-TOCs & SEGMENT NAME, after EXTRACTION OF ENDNOTES & SUB-TOCs
638
+ @per.seg_subtoc[@per.fn]=@per.seg_subtoc_array
639
+ @per.seg_subtoc_array=[]
640
+ if dob.name \
641
+ and dob.obj
642
+ @per.fn=dob.name
643
+ else
644
+ if dob.name =~/\S+/
645
+ @per.fn=dob.name
646
+ else @per.fn=''
647
+ end
648
+ end
649
+ end
650
+ end
651
+ if dob.is==:heading \
652
+ && (dob.ln.to_s =~/^[5-7]/)
653
+ case dob.ln
654
+ when 5
655
+ txt_obj={ txt: dob.obj.strip, ocn: dob.ocn }
656
+ format_seg=SiSU_HTML_Format::FormatSeg.new(@md,txt_obj)
657
+ subtoc=format_seg.subtoc_lev5 #keep and make available, this is the subtoc
658
+ when 6
659
+ txt_obj={ txt: dob.obj.strip, ocn: dob.ocn }
660
+ format_seg=SiSU_HTML_Format::FormatSeg.new(@md,txt_obj)
661
+ subtoc=format_seg.subtoc_lev6 #keep and make available, this is the subtoc
662
+ when 7
663
+ txt_obj={ txt: dob.obj.strip, ocn: dob.ocn }
664
+ format_seg=SiSU_HTML_Format::FormatSeg.new(@md,txt_obj)
665
+ subtoc=format_seg.subtoc_lev7 #keep and make available, this is the subtoc
666
+ end
667
+ @per.seg_subtoc_array << subtoc
668
+ end
669
+ if @md.flag_auto_endnotes
670
+ if (dob.obj =~/(?:#{Mx[:en_a_o]}|#{Mx[:en_b_o]})[\d*+]+\s*<a href="##{Mx[:note_ref]}[\d*+]+"/) \
671
+ && dob.is !=:code # endnote-
672
+ endnote_array=[]
673
+ if dob.obj=~/#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}/m
674
+ endnote_array << dob.obj.scan(/#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}/m)
675
+ end
676
+ if dob.obj=~/#{Mx[:en_b_o]}[*]\d+\s.+?#{Mx[:en_b_c]}/m
677
+ endnote_array \
678
+ << dob.obj.scan(/#{Mx[:en_b_o]}[*]\d+\s.+?#{Mx[:en_b_c]}/m)
679
+ end
680
+ if dob.obj=~/#{Mx[:en_b_o]}[+]\d+\s.+?#{Mx[:en_b_c]}/m
681
+ endnote_array \
682
+ << dob.obj.scan(/#{Mx[:en_b_o]}[+]\d+\s.+?#{Mx[:en_b_c]}/m)
683
+ end
684
+ endnote_array=endnote_array.flatten.compact #watch, check compacting
685
+ endnote_array.each do |note|
686
+ note_match=note.dup
687
+ note_match_seg=note.dup
688
+ e_n=note_match_seg[/(?:#{Mx[:en_a_o]}[\d*+]+|#{Mx[:en_b_o]}[*+]\d+)\s+(.+?)(?:#{Mx[:en_a_c]}|#{Mx[:en_b_c]})/m,1]
689
+ try=e_n.split(/<br(?: \/)?>/)
690
+ try.each do |e|
691
+ txt_obj={ txt: e }
692
+ format_seg=SiSU_HTML_Format::FormatSeg.new(@md,txt_obj)
693
+ note_match=if e =~/#{Mx[:pa_o]}i[1-9]#{Mx[:pa_c]}/
694
+ format_seg.endnote_body_indent
695
+ else format_seg.endnote_body
696
+ end
697
+ @per.seg_endnotes_array << note_match
698
+ end
699
+ try.join('<br>')
700
+ #% creation of separate end segment/page of all endnotes referenced back to reference segment
701
+ m=/(?:#{Mx[:en_a_o]}[\d*+]+|#{Mx[:en_b_o]}[*+]\d+)\s+(.+?href=")(##{Mx[:note_ref]}[\d*+]+".+)(?:#{Mx[:en_a_c]}|#{Mx[:en_b_c]})/mi
702
+ endnote_part_a=note_match_seg[m,1]
703
+ endnote_part_b=note_match_seg[m,2]
704
+ txt_obj={ endnote_part_a: endnote_part_a, endnote_part_b: endnote_part_b }
705
+ format_seg=SiSU_HTML_Format::FormatSeg.new(@md,txt_obj)
706
+ note_match_all_seg=format_seg.endnote_seg_body(@per.fn) #BUG WATCH 200408
707
+ @per.endnote_all << note_match_all_seg
708
+ end
709
+ dob.obj=dob.obj.gsub(/(?:#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}|#{Mx[:en_b_o]}.+?#{Mx[:en_b_c]})\s*/m,' ')
710
+ end
711
+ end
712
+ end
713
+ end
714
+ end
715
+ end
716
+ __END__