sisu 7.0.0

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