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
data/lib/sisu/html.rb ADDED
@@ -0,0 +1,775 @@
1
+ # encoding: utf-8
2
+ =begin
3
+
4
+ * Name: SiSU
5
+
6
+ ** Description: documents, structuring, processing, publishing, search
7
+ *** html 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.rb;hb=HEAD>
55
+
56
+ =end
57
+ module SiSU_HTML
58
+ begin
59
+ require 'pstore'
60
+ rescue LoadError
61
+ SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).
62
+ error('pstore NOT FOUND (LoadError)')
63
+ end
64
+ require_relative 'se_hub_particulars' # se_hub_particulars.rb
65
+ include SiSU_Particulars
66
+ require_relative 'html_table' # html_table.rb
67
+ require_relative 'html_parts' # html_parts.rb
68
+ require_relative 'html_format' # html_format.rb
69
+ include SiSU_HTML_Format
70
+ require_relative 'html_segments' # html_segments.rb
71
+ include SiSU_HTML_Seg
72
+ require_relative 'html_scroll' # html_scroll.rb
73
+ require_relative 'html_promo' # html_promo.rb
74
+ include SiSU_HTML_Promo
75
+ require_relative 'html_tune' # html_tune.rb
76
+ include SiSU_HTML_Tune
77
+ class Source
78
+ def initialize(opt)
79
+ @opt=opt
80
+ @particulars=SiSU_Particulars::CombinedSingleton.instance.get_all(opt)
81
+ end
82
+ def read
83
+ begin
84
+ songsheet
85
+ ensure
86
+ SiSU_Env::CreateSite.new(@opt).cp_css
87
+ SiSU_Env::CreateSite.new(@opt).cp_base_images
88
+ Dir.chdir(@opt.f_pth[:pth])
89
+ end
90
+ end
91
+ def songsheet
92
+ begin
93
+ @md=@particulars.md
94
+ @fnb=@md.fnb
95
+ @env=@particulars.env
96
+ primary_output_file=(@opt.act[:html_seg][:set]==:on) \
97
+ ? (@md.file.output_path.html_seg.dir + '/' + @md.file.base_filename.html_segtoc)
98
+ : (@md.file.output_path.html_scroll.dir + '/' + @md.file.base_filename.html_scroll)
99
+ unless @opt.act[:quiet][:set]==:on
100
+ tool=(@opt.act[:verbose][:set]==:on \
101
+ || @opt.act[:verbose_plus][:set]==:on \
102
+ || @opt.act[:maintenance][:set]==:on) \
103
+ ? ("#{@env.program.web_browser} file://#{primary_output_file}")
104
+ : ("[#{@opt.f_pth[:lng_is]}] #{@opt.fno}")
105
+ (@opt.act[:verbose][:set]==:on \
106
+ || @opt.act[:verbose_plus][:set]==:on \
107
+ || @opt.act[:maintenance][:set]==:on) \
108
+ ? SiSU_Screen::Ansi.new(
109
+ @opt.act[:color_state][:set],
110
+ 'HTML',
111
+ tool
112
+ ).green_hi_blue
113
+ : SiSU_Screen::Ansi.new(
114
+ @opt.act[:color_state][:set],
115
+ 'HTML',
116
+ tool
117
+ ).green_title_hi
118
+ if (@opt.act[:verbose_plus][:set]==:on \
119
+ || @opt.act[:maintenance][:set]==:on)
120
+ SiSU_Screen::Ansi.new(
121
+ @opt.act[:color_state][:set],
122
+ @opt.fns,
123
+ "file://#{primary_output_file}"
124
+ ).flow
125
+ end
126
+ end
127
+ data=nil
128
+ tuned_file_array=SiSU_HTML::Source::HTML_Environment.new(@particulars).tuned_file_instructions
129
+ data=tuned_file_array
130
+ if @opt.act[:html_scroll][:set]==:on
131
+ scr_endnotes=SiSU_HTML::Source::Endnotes.new(data,@md).scroll
132
+ end
133
+ toc=SiSU_HTML::Source::Toc.new(@md,data).songsheet
134
+ links_guide=SiSU_HTML::Source::LinksGuide.new(data,@md).toc
135
+ data=tuned_file_array
136
+ scr_toc=SiSU_HTML::Source::ScrollHeadAndSegToc.new(@md,toc,links_guide).in_common #watch
137
+ if @opt.act[:html_seg][:set]==:on
138
+ SiSU_HTML::Source::Seg.new(@md,data).songsheet
139
+ end
140
+ data=tuned_file_array
141
+ if @opt.act[:html_scroll][:set]==:on
142
+ scr=SiSU_HTML::Source::Scroll.new(@md,data,scr_endnotes).songsheet
143
+ scroll=SiSU_HTML::Source::ScrollOutput.new(
144
+ scr_toc,
145
+ scr[:body],
146
+ scr[:metadata],
147
+ scr[:owner_details],
148
+ scr[:tails],
149
+ @md
150
+ ).publish
151
+ SiSU_HTML::Source::Output.new(scroll,@md).scroll
152
+ end
153
+ rescue
154
+ SiSU_Errors::Rescued.new($!,$@,@opt.selections.str,@opt.fns).location do
155
+ __LINE__.to_s + ':' + __FILE__
156
+ end
157
+ ensure
158
+ unless (@opt.act[:verbose_plus][:set]==:on \
159
+ || @opt.act[:maintenance][:set]==:on)
160
+ texfiles=Dir["#{@env.processing_path.tune}/#{@opt.fns}*"]
161
+ texfiles.each do |f|
162
+ if FileTest.file?(f)
163
+ File.unlink(f)
164
+ end
165
+ end
166
+ end
167
+ SiSU_Env::Clear.new(@opt.selections.str,@opt.fns,@md).param_instantiate
168
+ @@flag,@@scr,@@seg,@@seg_endnotes,@@seg_subtoc={},{},{},{},{}
169
+ @@tracker=0
170
+ @@seg_name,@@seg_name_x,@@seg_subtoc_array,@@seg_endnotes_array,@@tablefoot=Array.new(5){[]}
171
+ @@filename_seg,@@seg_url,@@to_lev4,@@get_hash_to,@@get_hash_fn='','','','',''
172
+ end
173
+ end
174
+ private
175
+ class HTML_Environment
176
+ def initialize(particulars)
177
+ @particulars=particulars
178
+ @md,@env=particulars.md,particulars.env
179
+ @env,@css=particulars.env,SiSU_Style::CSS.new
180
+ end
181
+ def tuned_file_instructions
182
+ @tell=SiSU_Screen::Ansi.new(@md.opt.act[:color_state][:set])
183
+ ao_array=@particulars.ao_array # ao file drawn here
184
+ tuned_file_array=SiSU_HTML_Tune::Tune.new(ao_array,@md).songsheet
185
+ tuned_file_array
186
+ end
187
+ end
188
+ class LinksGuide
189
+ @links_guide_toc=[]
190
+ def initialize(data,md)
191
+ @data,@md=data,md
192
+ @links_guide_=SiSU_Env::CreateSite.new(@md.opt).html_quick_ref?
193
+ end
194
+ def toc
195
+ @links_guide_toc=[]
196
+ if @links_guide_
197
+ format_head_toc=SiSU_HTML_Format::HeadToc.new(@md)
198
+ guide_type='horzontal' #values: horizontal or vertical
199
+ @links_guide_toc << format_head_toc.links_guide_open(guide_type)
200
+ if defined? @md.lnk \
201
+ and @md.lnk
202
+ @md.lnk.each do |l|
203
+ if defined? l[:say]
204
+ target=(l[:url] !~/^\.(\.)?\//) \
205
+ ? 'external'
206
+ : '_top'
207
+ s_lnk_url,s_lnk_lnk=l[:url],l[:say]
208
+ txt_obj={
209
+ lnk_url: s_lnk_url,
210
+ lnk_txt: s_lnk_lnk,
211
+ target: target,
212
+ }
213
+ lev_dob_ocn=SiSU_HTML_Format::FormatToc.new(@md,txt_obj)
214
+ @links_guide_toc << lev_dob_ocn.links_guide if s_lnk_lnk
215
+ end
216
+ end
217
+ end
218
+ format_head_toc=SiSU_HTML_Format::HeadToc.new(@md)
219
+ @links_guide_toc << format_head_toc.links_guide_close #(guide_type)
220
+ @links_guide_toc
221
+ else ''
222
+ end
223
+ end
224
+ end
225
+ class Endnotes
226
+ include SiSU_HTML_Format
227
+ def initialize(data,md)
228
+ @data,@md=data,md
229
+ end
230
+ def scroll
231
+ @scr_endnotes=[]
232
+ SiSU_HTML_Format::HeadScroll.new(@md)
233
+ @data.each do |dob|
234
+ pg=dob.dup
235
+ unless pg.is ==:code
236
+ if pg.obj =~/(?:#{Mx[:en_a_o]}|#{Mx[:en_b_o]})[\d*+]+ /
237
+ endnote_array=[]
238
+ if pg.obj=~/#{Mx[:en_a_o]}[\d*+].+?#{Mx[:en_a_c]}/m
239
+ endnote_array = pg.obj.scan(/#{Mx[:en_a_o]}[\d*+]+(.+?)#{Mx[:en_a_c]}/m)
240
+ end
241
+ if pg.obj=~/#{Mx[:en_b_o]}[\d*]+\s.+?#{Mx[:en_b_c]}/m
242
+ endnote_array = pg.obj.scan(/#{Mx[:en_b_o]}[\d*]+(.+?)#{Mx[:en_b_c]}/m)
243
+ end
244
+ if pg.obj=~/#{Mx[:en_b_o]}[\d+]+\s.+?#{Mx[:en_b_c]}/m
245
+ endnote_array = pg.obj.scan(/#{Mx[:en_b_o]}[\d+]+(.+?)#{Mx[:en_b_c]}/m)
246
+ end
247
+ endnote_array.flatten.each do |note|
248
+ txt_obj={ txt: note }
249
+ format_scroll=SiSU_HTML_Format::FormatScroll.new(@md,txt_obj)
250
+ @scr_endnotes << format_scroll.endnote_body
251
+ end
252
+ end
253
+ end
254
+ end
255
+ @scr_endnotes
256
+ end
257
+ end
258
+ class Toc <LinksGuide
259
+ @@toc={ seg: [], seg_mini: [], scr: [] }
260
+ @@seg_url=''
261
+ @@firstseg=nil
262
+ def initialize(md=nil,data='')
263
+ @data,@md=data,md
264
+ @tell=SiSU_Screen::Ansi.new(@md.opt.act[:color_state][:set]) if @md
265
+ end
266
+ def songsheet #extracts toc for scroll & seg
267
+ if (@md.opt.act[:verbose][:set]==:on \
268
+ || @md.opt.act[:verbose_plus][:set]==:on \
269
+ || @md.opt.act[:maintenance][:set]==:on)
270
+ SiSU_Screen::Ansi.new(
271
+ @md.opt.act[:color_state][:set],
272
+ 'Toc'
273
+ ).txt_grey
274
+ end
275
+ toc=nil
276
+ @@firstseg=nil
277
+ @@toc={ seg: [], seg_mini: [], scr: [] }
278
+ @data.each do |dob|
279
+ if dob.is==:heading \
280
+ || dob.is==:heading_insert
281
+ dob_toc=dob.dup
282
+ toc=if dob_toc.is ==:heading \
283
+ || dob.is==:heading_insert
284
+ toc=case dob_toc.ln
285
+ when 0 then SiSU_HTML::Source::Toc.new(@md,dob_toc).level_0
286
+ when 1 then SiSU_HTML::Source::Toc.new(@md,dob_toc).level_1
287
+ when 2 then SiSU_HTML::Source::Toc.new(@md,dob_toc).level_2
288
+ when 3 then SiSU_HTML::Source::Toc.new(@md,dob_toc).level_3
289
+ when 4 then SiSU_HTML::Source::Toc.new(@md,dob_toc).level_4
290
+ when 5 then SiSU_HTML::Source::Toc.new(@md,dob_toc).level_5
291
+ when 6 then SiSU_HTML::Source::Toc.new(@md,dob_toc).level_6
292
+ else nil
293
+ end
294
+ end
295
+ toc.each do |k,d|
296
+ d.gsub!(/(?:#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}|#{Mx[:en_b_o]}.+?#{Mx[:en_b_c]})\s*/m,' ')
297
+ end if toc
298
+ if @@firstseg.nil? \
299
+ and dob.ln==4 \
300
+ and dob.name =~/\S+/
301
+ @@firstseg=dob.name
302
+ end
303
+ if toc
304
+ begin
305
+ @@toc[:seg] << toc[:seg] if toc[:seg]
306
+ @@toc[:seg_mini] << toc[:seg_mini] if toc[:seg_mini]
307
+ @@toc[:scr] << toc[:scr] if toc[:scr]
308
+ rescue
309
+ SiSU_Errors::Rescued.new($!,$@,@md.opt.selections.str,@md.fns).location do
310
+ __LINE__.to_s + ':' + __FILE__
311
+ end
312
+ end
313
+ end
314
+ end
315
+ end
316
+ @md.firstseg=@@firstseg
317
+ @@toc
318
+ end
319
+ def minitoc
320
+ minitoc=@@toc[:seg_mini].join("\n")
321
+ '<div class="toc">' + minitoc + '</div>'
322
+ end
323
+ protected
324
+ def rss #sort all wrong, disabled but kept
325
+ @@toc[:seg] <<<<WOK
326
+ <center>
327
+ <table><tr><td>
328
+ <p><font color="#222222" #{the_font.set_face} size="2">
329
+ (relatively static) RSS feeds for DOCUMENTS:<br>
330
+ <a href="../rssfeed/documents.xml"><img border="0" height="14" width="36" src="../_sisu/image/rss.png" alt="RSS feed"></a>&nbsp;http://www.jus.uio.no/lm/rssfeed/documents.xml<br>
331
+ <a href="../rssfeed/tradelaw.xml"><img border="0" height="14" width="36" src="../_sisu/image/rss.png" alt="RSS feed"></a>&nbsp;http://www.jus.uio.no/lm/rssfeed/tradelaw.xml<br>
332
+ <a href="../rssfeed/environmental.xml"><img border="0" height="14" width="36" src="../_sisu/image/rss.png" alt="RSS feed"></a>&nbsp;http://www.jus.uio.no/lm/rssfeed/environmental.xml<br>
333
+ <center><a href="mailto:info@address.com" target="_top">info@address.com</a></center>
334
+ </font></p>
335
+ </td></tr></table>
336
+ WOK
337
+ end
338
+ #not used -->
339
+ def level_endnotes
340
+ if @md.flag_endnotes
341
+ format_head_scroll=SiSU_HTML_Format::HeadScroll.new(@md)
342
+ @@toc[:scr] << format_head_scroll.toc_endnote
343
+ end
344
+ end
345
+ def level_concordance
346
+ format_head_toc=SiSU_HTML_Format::HeadToc.new(@md)
347
+ @@toc[:seg_mini] << format_head_toc.mini_seg_concordance
348
+ end
349
+ def level_metadata
350
+ format_head_toc=SiSU_HTML_Format::HeadToc.new(@md)
351
+ @@toc[:scr] << format_head_toc.metadata
352
+ @@toc[:seg] << format_head_toc.seg_metadata
353
+ @@toc[:seg_mini] << format_head_toc.mini_seg_metadata
354
+ end
355
+ def level_word_index
356
+ format_head_toc=SiSU_HTML_Format::HeadToc.new(@d0c)
357
+ @@toc[:scr] << format_head_toc.concordance
358
+ @@toc[:seg] << format_head_toc.concordance
359
+ @@toc[:seg_mini] << format_head_toc.mini_concordance
360
+ end
361
+ # <-- not used
362
+ def level_0
363
+ dob=@data
364
+ linkname,link=dob.obj.strip,dob.ocn
365
+ if link \
366
+ and link !~/#/ #% keep eye on link
367
+ SiSU_HTML_Format::ParagraphNumber.new(@md,link)
368
+ end
369
+ title=linkname
370
+ toc={}
371
+ txt_obj={ txt: title }
372
+ format_toc=SiSU_HTML_Format::FormatToc.new(@md,txt_obj)
373
+ toc[:seg]=format_toc.lev0
374
+ toc[:seg_mini]=format_toc.mini_lev0
375
+ title=if dob.ocn ==0 then linkname
376
+ else
377
+ @@toc[:scr] << '<br>'
378
+ %{<b><a href="##{dob.ocn}">#{linkname}</a></b>}
379
+ end
380
+ txt_obj={ txt: title }
381
+ format_toc=SiSU_HTML_Format::FormatToc.new(@md,txt_obj)
382
+ toc[:scr]=format_toc.lev0
383
+ toc
384
+ end
385
+ def level_1
386
+ dob=@data
387
+ linkname,link=dob.obj.strip,dob.ocn
388
+ if link \
389
+ and link !~/#/ #% keep eye on link
390
+ SiSU_HTML_Format::ParagraphNumber.new(@md,link)
391
+ end
392
+ title=if dob.obj !~/^Metadata$/ then linkname
393
+ else
394
+ link='metadata'
395
+ %{<b><a href="#{link}#{@md.lang_code_insert}#{Sfx[:html]}">#{linkname}</a></b>}
396
+ end
397
+ toc={}
398
+ txt_obj={ txt: title }
399
+ format_toc=SiSU_HTML_Format::FormatToc.new(@md,txt_obj)
400
+ toc[:seg]=if dob.name =~/^meta/ \
401
+ and dob.obj =~/Document Information/
402
+ format_toc.lev0
403
+ else format_toc.lev1
404
+ end
405
+ toc[:seg_mini]=if dob.name =~/^meta/ \
406
+ and dob.obj =~/Document Information/
407
+ @md.concord_make \
408
+ ? format_toc.mini_concord_tail
409
+ : format_toc.mini_tail
410
+ else format_toc.mini_lev1
411
+ end
412
+ title=if dob.ocn ==0
413
+ if dob.name =~/^meta/ \
414
+ and dob.obj =~/Document Information/
415
+ %{<a href="#docinfo">#{linkname}</a>}
416
+ else linkname
417
+ end
418
+ else
419
+ @@toc[:scr] << '<br>'
420
+ %{<b><a href="##{dob.ocn}">#{linkname}</a></b>}
421
+ end
422
+ txt_obj={ txt: title }
423
+ format_toc=SiSU_HTML_Format::FormatToc.new(@md,txt_obj)
424
+ toc[:scr]=if dob.obj =~/^Metadata$/ then ''
425
+ elsif txt_obj[:txt] =~/<a href="#">/
426
+ format_toc.lev1.gsub(/<a href="#">|<\/a>/,'')
427
+ else format_toc.lev1
428
+ end
429
+ toc
430
+ end
431
+ def level_2
432
+ dob=@data
433
+ linkname,ocn=dob.obj.strip,dob.ocn
434
+ p_num=if ocn \
435
+ and ocn !~/#/
436
+ SiSU_HTML_Format::ParagraphNumber.new(@md,ocn)
437
+ else nil
438
+ end
439
+ txt_obj={ txt: linkname }
440
+ format_toc=SiSU_HTML_Format::FormatToc.new(@md,txt_obj)
441
+ toc={}
442
+ toc[:seg]=format_toc.lev2
443
+ toc[:seg_mini]=format_toc.mini_lev2
444
+ if p_num
445
+ title=%{#{p_num.goto}#{linkname}</a>}
446
+ txt_obj={ txt: title }
447
+ format_toc=SiSU_HTML_Format::FormatToc.new(@md,txt_obj)
448
+ toc[:scr]=if txt_obj[:txt] =~/<a href="#">/
449
+ format_toc.lev2.gsub(/<a href="#">|<\/a>/,'')
450
+ else format_toc.lev2
451
+ end
452
+ end
453
+ toc
454
+ end
455
+ def level_3
456
+ dob=@data
457
+ linkname,ocn=dob.obj.strip,dob.ocn
458
+ p_num=if ocn \
459
+ and ocn !~/#/
460
+ SiSU_HTML_Format::ParagraphNumber.new(@md,ocn)
461
+ else nil
462
+ end
463
+ txt_obj={ txt: linkname }
464
+ format_toc=SiSU_HTML_Format::FormatToc.new(@md,txt_obj)
465
+ toc={}
466
+ toc[:seg]=format_toc.lev3
467
+ toc[:seg_mini]=format_toc.mini_lev3
468
+ if p_num
469
+ title=%{#{p_num.goto}#{linkname}</a>}
470
+ txt_obj={ txt: title }
471
+ format_toc=SiSU_HTML_Format::FormatToc.new(@md,txt_obj)
472
+ toc[:scr]=if txt_obj[:txt] =~/<a href="#">/
473
+ format_toc.lev3.gsub(/<a href="#">|<\/a>/,'')
474
+ else format_toc.lev3
475
+ end
476
+ end
477
+ toc
478
+ end
479
+ def level_4
480
+ dob=@data
481
+ linkname,ocn=dob.obj.strip,dob.ocn
482
+ p_num=SiSU_HTML_Format::ParagraphNumber.new(@md,ocn) if ocn
483
+ if dob.ln ==4
484
+ fnh={
485
+ fn: dob.name,
486
+ }
487
+ f=@md.file.base_filename.html_seg(fnh)
488
+ seg_link=%{ <a href="#{f}" target="_top">
489
+ #{dob.obj}
490
+ </a> }
491
+ @@seg_url=dob.name
492
+ elsif dob.obj =~/\d+.\d+.\d+.\d+|\d+.\d+.\d+|\d+.\d+|\d+/
493
+ fn,hd=/^(\d+.\d+.\d+.\d+|\d+.\d+.\d+|\d+.\d+|\d+)(.*)/.match(dob.obj)[1,2]
494
+ fnh={
495
+ fn: fn,
496
+ }
497
+ f=@md.file.base_filename.html_seg(fnh)
498
+ seg_link=%{<a href="#{f}" target="_top">#{fn} #{hd}</a> }
499
+ end
500
+ p_num=SiSU_HTML_Format::ParagraphNumber.new(@md,ocn) if ocn
501
+ @file=SiSU_Env::FileOp.new(@md) if @md
502
+ txt_obj=if seg_link=~/sisu_manifest\.html/
503
+ man_link=if @file.output_dir_structure.by_language_code? \
504
+ or @file.output_dir_structure.by_filetype?
505
+ seg_link.gsub(/sisu_manifest\.html/,"../../manifest/#{@file.base_filename.manifest}")
506
+ else seg_link
507
+ end
508
+ { txt: man_link }
509
+ else { txt: seg_link }
510
+ end
511
+ format_toc=SiSU_HTML_Format::FormatToc.new(@md,txt_obj)
512
+ toc={}
513
+ toc[:seg]=format_toc.lev4
514
+ toc[:seg_mini]=format_toc.mini_lev4
515
+ title=%{#{p_num.goto}#{linkname}</a>} if p_num
516
+ txt_obj=if title=~/sisu_manifest.html/
517
+ man_link=title.gsub(/sisu_manifest.html/,"../manifest/#{@file.base_filename.manifest}")
518
+ { txt: man_link }
519
+ else { txt: title }
520
+ end
521
+ format_toc=SiSU_HTML_Format::FormatToc.new(@md,txt_obj)
522
+ toc[:scr]=format_toc.lev4
523
+ toc
524
+ #end
525
+ end
526
+ def level_5
527
+ dob=@data
528
+ linkname,ocn=dob.obj.strip,dob.ocn
529
+ toc={}
530
+ if ocn \
531
+ and ocn !~/#/
532
+ fnh={
533
+ fn: @@seg_url,
534
+ }
535
+ f=@md.file.base_filename.html_seg(fnh)
536
+ p_num=SiSU_HTML_Format::ParagraphNumber.new(@md,ocn)
537
+ lnk_n_txt=%{ <a href="#{f}##{ocn}">
538
+ #{linkname}
539
+ </a>}
540
+ txt_obj={ txt: lnk_n_txt }
541
+ format_toc=SiSU_HTML_Format::FormatToc.new(@md,txt_obj)
542
+ toc[:seg]=format_toc.lev5
543
+ toc[:seg_mini]=format_toc.mini_lev5
544
+ title=%{#{p_num.goto}#{linkname}</a>}
545
+ txt_obj={ txt: title }
546
+ format_toc=SiSU_HTML_Format::FormatToc.new(@md,txt_obj)
547
+ toc[:scr]=format_toc.lev5
548
+ end
549
+ toc
550
+ end
551
+ def level_6
552
+ dob=@data
553
+ linkname,ocn=dob.obj.strip,dob.ocn
554
+ toc={}
555
+ if ocn \
556
+ and ocn !~/#/
557
+ fnh={
558
+ fn: @@seg_url,
559
+ }
560
+ f=@md.file.base_filename.html_seg(fnh)
561
+ p_num=SiSU_HTML_Format::ParagraphNumber.new(@md,ocn)
562
+ lnk_n_txt=%{ <a href="#{f}##{ocn}">
563
+ #{linkname}
564
+ </a>}
565
+ txt_obj={ txt: lnk_n_txt }
566
+ format_toc=SiSU_HTML_Format::FormatToc.new(@md,txt_obj)
567
+ toc[:seg]=format_toc.lev6
568
+ toc[:seg_mini]=format_toc.mini_lev6
569
+ title=%{#{p_num.goto}#{linkname}</a>}
570
+ txt_obj={ txt: title }
571
+ format_toc=SiSU_HTML_Format::FormatToc.new(@md,txt_obj)
572
+ toc[:scr]=format_toc.lev6
573
+ end
574
+ toc
575
+ end
576
+ def level_crosslink
577
+ dob=@data
578
+ dob=if dob !~/^4~!/
579
+ dob.gsub(/^4~!\s+(\S+)\s+(.+)/,
580
+ %{<table><tr><td width =\"80\"></td>
581
+ <td><a href="http://\\1" target="_top">
582
+ #{@png.crosslink_ext}
583
+ &nbsp;&nbsp;\\2
584
+ <\/a>
585
+ </td></tr></table>
586
+ })
587
+ else
588
+ dob.gsub(/^4~!\s+(\S+)\s+(.+)/,
589
+ %{<table><tr><td width ="80">
590
+ </td><td>
591
+ <a href="\\1" target="_top">
592
+ #{@png.crosslink}
593
+ &nbsp;&nbsp;\\2
594
+ <\/a>
595
+ </td></tr></table>
596
+ })
597
+ end
598
+ end
599
+ end
600
+ class ScrollHeadAndSegToc < Toc
601
+ include SiSU_Parts_HTML
602
+ def initialize(md='',toc='',links_guide_toc='')
603
+ @md,@toc,@links_guide_toc=md,toc,links_guide_toc
604
+ @make=SiSU_Env::ProcessingSettings.new(@md)
605
+ end
606
+ def in_common
607
+ toc_shared=[]
608
+ @segtoc=[]
609
+ if (@md.opt.act[:verbose][:set]==:on \
610
+ || @md.opt.act[:verbose_plus][:set]==:on \
611
+ || @md.opt.act[:maintenance][:set]==:on)
612
+ SiSU_Screen::Ansi.new(
613
+ @md.opt.act[:color_state][:set],
614
+ 'Scroll & Segtoc'
615
+ ).txt_grey
616
+ end
617
+ format_head_toc=SiSU_HTML_Format::HeadToc.new(@md)
618
+ dochead=format_head_toc.head
619
+ dochead=dochead.gsub(/toc\.(html)/,'doc.\1') #kludge
620
+ toc_shared << dochead
621
+ @segtoc << format_head_toc.head
622
+ if @make.build.html_top_band?
623
+ toc_shared << format_head_toc.scroll_head_navigation_band
624
+ end
625
+ if defined? @md.rights.all
626
+ rights=format_head_toc.rights.all
627
+ rights=SiSU_HTML_Tune::CleanHTML.new(rights).clean
628
+ end
629
+ if @md.prefix_b
630
+ prefix_b=format_head_toc.notes.prefix_b
631
+ prefix_b=SiSU_HTML_Tune::CleanHTML.new(prefix_b).clean
632
+ end
633
+ if @make.build.html_top_band?
634
+ @segtoc << format_head_toc.seg_head_navigation_band
635
+ end
636
+ toc_shared << format_head_toc.scroll_head_title_banner_open
637
+ @segtoc << format_head_toc.seg_head_title_banner_open
638
+ tmp_head=nil
639
+ doc_title_endnote=@md.title.full.gsub(/(\*+)/,
640
+ '<sup><a href="#endnotes">\1</a></sup>')
641
+ tmp_head=doc_title_endnote + "\n"
642
+ txt_obj={ txt: tmp_head }
643
+ format_txt_obj=SiSU_HTML_Format::FormatTextObject.new(@md,txt_obj)
644
+ toc_shared << format_txt_obj.center_bold
645
+ @segtoc << format_txt_obj.center_bold
646
+ if defined? @md.creator.author
647
+ creator=SiSU_HTML_Tune::CleanHTML.new(@md.creator.author).clean_for_html
648
+ creator_endnote=creator.gsub(/(\*+)/,
649
+ %{&nbsp;<sup><a href="#notes">\\1</a></sup>})
650
+ tmp_head=creator_endnote + "\n"
651
+ txt_obj={ txt: tmp_head }
652
+ format_txt_obj=SiSU_HTML_Format::FormatTextObject.new(@md,txt_obj)
653
+ toc_shared << format_txt_obj.center_bold
654
+ @segtoc << format_txt_obj.center_bold
655
+ end
656
+ toc_shared << "#{the_table_close*1}\n"
657
+ @segtoc << "#{the_table_close*1}\n"
658
+ tmp_head=nil
659
+ if @md.prefix_a
660
+ tmp_head ||= %{<p>#{@md.prefix_a}\n}
661
+ toc_shared << tmp_head.dup
662
+ @segtoc << tmp_head.dup
663
+ end
664
+ tmp_head=nil
665
+ toc_shared << @links_guide_toc
666
+ if defined? @md.rights.all #and ? @md.rights.all
667
+ toc_shared << rights
668
+ end
669
+ if defined? @md.prefix_b
670
+ toc_shared << prefix_b
671
+ end
672
+ if @make.build.toc? #Table of Contents added/appended here
673
+ toc_shared << @toc[:scr]
674
+ end
675
+ @segtoc << @links_guide_toc
676
+ @segtoc << @toc[:seg]
677
+ if defined? @md.rights.all \
678
+ and not @md.rights.all.empty?
679
+ @segtoc << rights
680
+ end
681
+ @segtoc << prefix_b if @md.prefix_b
682
+ #Segtoc tail added here
683
+ @segtoc << "</p>\n" #bugfix sort later DEBUGNOW
684
+ @segtoc << @seg_toc_band_bottom
685
+ @segtoc << format_head_toc.seg_navigation_tail << format_head_toc.html_close
686
+ @segtoc=@segtoc.flatten.compact #watch
687
+ if @md.opt.act[:html_seg][:set]==:on
688
+ SiSU_HTML::Source::Output.new(@segtoc,@md).segtoc
689
+ end
690
+ @segtoc=[]
691
+ @toc[:scr],@toc[:seg]=[],[]
692
+ toc_shared
693
+ end
694
+ end
695
+ class Table < SiSU_HTML_Table::TableHTML
696
+ end
697
+ class Scroll < SiSU_HTML_Scroll::Scroll
698
+ end
699
+ class ScrollOutput
700
+ def initialize(scr_toc,scr_body,scr_metadata,scr_owner_details,scr_tails,md)
701
+ @scr_toc,@scr_body,@scr_metadata,@scr_owner_details,@scr_tails,@md=scr_toc,scr_body,scr_metadata,scr_owner_details,scr_tails,md
702
+ end
703
+ def publish
704
+ scroll=[]
705
+ scroll << @scr_toc << '<div class="scroll">' << @scr_body << @scr_endnotes << @scr_owner_details << '</div>' << @scr_tails
706
+ scroll=scroll.flatten.compact #watch
707
+ end
708
+ end
709
+ class Seg < SiSU_HTML_Seg::Seg
710
+ end
711
+ class Output
712
+ def initialize(data='',md='')
713
+ @data,@md=data,md
714
+ @file=SiSU_Env::FileOp.new(md)
715
+ @o_str ||=SiSU_Env::ProcessingSettings.new(md).output_dir_structure
716
+ end
717
+ def scroll
718
+ if @md.opt.act[:html_scroll][:set]==:on
719
+ begin
720
+ @filename_html_scroll=@file.write_file.html_scroll
721
+ @data.each do |para|
722
+ para=para.strip.
723
+ gsub(/<:.+?>/,'').
724
+ gsub(Xx[:html_relative2],@file.path_rel_links.html_scroll_2).
725
+ gsub(Xx[:html_relative1],@file.path_rel_links.html_scroll_1).
726
+ #gsub(/#{Xx[:html_relative]}/,@file.path_rel_links.html_scroll).
727
+ gsub(/#{Rx[:mx_fa_clean]}/,'')
728
+ unless para =~/\A\s*\Z/
729
+ @filename_html_scroll.puts para,"\n"
730
+ end
731
+ end
732
+ rescue
733
+ SiSU_Errors::Rescued.new($!,$@,@md.opt.selections.str,@md.fns).location do
734
+ __LINE__.to_s + ':' + __FILE__
735
+ end
736
+ ensure
737
+ @filename_html_scroll.close
738
+ end
739
+ end
740
+ end
741
+ def segtoc
742
+ if @md.opt.act[:html_seg][:set]==:on
743
+ begin
744
+ @filename_html_segtoc=@file.write_file.html_segtoc
745
+ @data.each do |para|
746
+ para=para.strip.
747
+ gsub(/<!.+?!>/,'').
748
+ gsub(Xx[:html_relative2],@file.path_rel_links.html_seg_2).
749
+ gsub(Xx[:html_relative1],@file.path_rel_links.html_seg_1)
750
+ unless para =~/\A\s*\Z/
751
+ @filename_html_segtoc.puts para,"\n"
752
+ end
753
+ end
754
+ rescue
755
+ SiSU_Errors::Rescued.new($!,$@,@md.opt.selections.str,@md.fns).location do
756
+ __LINE__.to_s + ':' + __FILE__
757
+ end
758
+ ensure
759
+ @filename_html_segtoc.close
760
+ pwd_set=Dir.pwd
761
+ idx_lnk=(@o_str.dump_or_redirect?) \
762
+ ? @file.base_filename.manifest
763
+ : @file.base_filename.html_segtoc
764
+ mlnk=@file.base_filename.html_seg_index
765
+ Dir.chdir(@file.output_path.html_seg.dir)
766
+ FileUtils::rm_f(mlnk)
767
+ FileUtils::ln_s(idx_lnk,mlnk)
768
+ Dir.chdir(pwd_set)
769
+ end
770
+ end
771
+ end
772
+ end
773
+ end
774
+ end
775
+ __END__