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.
- checksums.yaml +7 -0
- data/bin/sisu +367 -0
- data/bin/sisugem +367 -0
- data/data/sisu/image/arrow_next_red.png +0 -0
- data/data/sisu/image/arrow_prev_red.png +0 -0
- data/data/sisu/image/arrow_up_red.png +0 -0
- data/data/sisu/image/b_bluebell.png +0 -0
- data/data/sisu/image/b_doc.png +0 -0
- data/data/sisu/image/b_epub.png +0 -0
- data/data/sisu/image/b_home.png +0 -0
- data/data/sisu/image/b_info.png +0 -0
- data/data/sisu/image/b_odf.png +0 -0
- data/data/sisu/image/b_pdf.png +0 -0
- data/data/sisu/image/b_search.png +0 -0
- data/data/sisu/image/b_toc.png +0 -0
- data/data/sisu/image/bullet_08.png +0 -0
- data/data/sisu/image/bullet_09.png +0 -0
- data/data/sisu/image/bullet_10.png +0 -0
- data/data/sisu/image/bullet_11.png +0 -0
- data/data/sisu/image/bullet_12.png +0 -0
- data/data/sisu/image/bullet_doc.png +0 -0
- data/data/sisu/image/bullet_red.png +0 -0
- data/data/sisu/image/dot_clear.png +0 -0
- data/data/sisu/image/dot_white.png +0 -0
- data/data/sisu/image/gplv3.png +0 -0
- data/data/sisu/image/gplv3_free_software.png +0 -0
- data/data/sisu/image/next.png +0 -0
- data/data/sisu/image/previous.png +0 -0
- data/data/sisu/image/rb7.ico +0 -0
- data/data/sisu/image/sisu.png +0 -0
- data/data/sisu/image/toctoc.png +0 -0
- data/data/sisu/version.yml +5 -0
- data/lib/sisu.rb +94 -0
- data/lib/sisu/air.rb +80 -0
- data/lib/sisu/ao.rb +590 -0
- data/lib/sisu/ao_character_check.rb +102 -0
- data/lib/sisu/ao_composite.rb +286 -0
- data/lib/sisu/ao_doc_objects.rb +565 -0
- data/lib/sisu/ao_doc_str.rb +2269 -0
- data/lib/sisu/ao_endnotes.rb +136 -0
- data/lib/sisu/ao_expand_insertions.rb +514 -0
- data/lib/sisu/ao_hash_digest.rb +174 -0
- data/lib/sisu/ao_idx.rb +422 -0
- data/lib/sisu/ao_images.rb +187 -0
- data/lib/sisu/ao_metadata.rb +86 -0
- data/lib/sisu/ao_misc_arrange.rb +207 -0
- data/lib/sisu/ao_numbering.rb +720 -0
- data/lib/sisu/ao_persist.rb +194 -0
- data/lib/sisu/ao_references.rb +502 -0
- data/lib/sisu/ao_syntax.rb +640 -0
- data/lib/sisu/cgi.rb +84 -0
- data/lib/sisu/cgi_pgsql.rb +270 -0
- data/lib/sisu/cgi_sql_common.rb +986 -0
- data/lib/sisu/cgi_sqlite.rb +244 -0
- data/lib/sisu/conf.rb +287 -0
- data/lib/sisu/constants.rb +388 -0
- data/lib/sisu/css.rb +3484 -0
- data/lib/sisu/db_columns.rb +1997 -0
- data/lib/sisu/db_create.rb +689 -0
- data/lib/sisu/db_dbi.rb +90 -0
- data/lib/sisu/db_drop.rb +207 -0
- data/lib/sisu/db_import.rb +877 -0
- data/lib/sisu/db_indexes.rb +146 -0
- data/lib/sisu/db_load_tuple.rb +323 -0
- data/lib/sisu/db_remove.rb +182 -0
- data/lib/sisu/db_select.rb +230 -0
- data/lib/sisu/db_sqltxt.rb +173 -0
- data/lib/sisu/db_tests.rb +114 -0
- data/lib/sisu/dbi.rb +166 -0
- data/lib/sisu/dbi_discrete.rb +206 -0
- data/lib/sisu/digests.rb +306 -0
- data/lib/sisu/dp.rb +1606 -0
- data/lib/sisu/dp_identify_markup.rb +161 -0
- data/lib/sisu/dp_make.rb +668 -0
- data/lib/sisu/embedded.rb +149 -0
- data/lib/sisu/errors.rb +84 -0
- data/lib/sisu/generic_parts.rb +131 -0
- data/lib/sisu/git.rb +277 -0
- data/lib/sisu/html.rb +775 -0
- data/lib/sisu/html_concordance.rb +391 -0
- data/lib/sisu/html_format.rb +1348 -0
- data/lib/sisu/html_harvest.rb +109 -0
- data/lib/sisu/html_harvest_author_format.rb +111 -0
- data/lib/sisu/html_harvest_authors.rb +466 -0
- data/lib/sisu/html_harvest_topics.rb +893 -0
- data/lib/sisu/html_lite_shared.rb +324 -0
- data/lib/sisu/html_manifest.rb +1032 -0
- data/lib/sisu/html_minitoc.rb +230 -0
- data/lib/sisu/html_parts.rb +437 -0
- data/lib/sisu/html_persist.rb +237 -0
- data/lib/sisu/html_promo.rb +440 -0
- data/lib/sisu/html_scroll.rb +235 -0
- data/lib/sisu/html_segments.rb +716 -0
- data/lib/sisu/html_shared.rb +62 -0
- data/lib/sisu/html_table.rb +64 -0
- data/lib/sisu/html_tune.rb +301 -0
- data/lib/sisu/hub.rb +277 -0
- data/lib/sisu/hub_actions.rb +1122 -0
- data/lib/sisu/hub_loop_markup_files.rb +170 -0
- data/lib/sisu/hub_options.rb +1695 -0
- data/lib/sisu/i18n.rb +702 -0
- data/lib/sisu/manpage.rb +377 -0
- data/lib/sisu/manpage_format.rb +85 -0
- data/lib/sisu/object_munge.rb +307 -0
- data/lib/sisu/prog_text_translation.rb +1702 -0
- data/lib/sisu/qrcode.rb +754 -0
- data/lib/sisu/relaxng.rb +1153 -0
- data/lib/sisu/remote.rb +246 -0
- data/lib/sisu/rexml.rb +148 -0
- data/lib/sisu/se.rb +158 -0
- data/lib/sisu/se_cleanoutput.rb +145 -0
- data/lib/sisu/se_clear.rb +105 -0
- data/lib/sisu/se_createsite.rb +273 -0
- data/lib/sisu/se_css.rb +221 -0
- data/lib/sisu/se_date.rb +92 -0
- data/lib/sisu/se_db.rb +214 -0
- data/lib/sisu/se_envcall.rb +326 -0
- data/lib/sisu/se_file_op.rb +2758 -0
- data/lib/sisu/se_filemap.rb +247 -0
- data/lib/sisu/se_get_init.rb +238 -0
- data/lib/sisu/se_hub_particulars.rb +234 -0
- data/lib/sisu/se_info_env.rb +2179 -0
- data/lib/sisu/se_info_port.rb +70 -0
- data/lib/sisu/se_info_system.rb +202 -0
- data/lib/sisu/se_load.rb +108 -0
- data/lib/sisu/se_processing.rb +659 -0
- data/lib/sisu/se_programs.rb +394 -0
- data/lib/sisu/se_remotes.rb +553 -0
- data/lib/sisu/se_standardise_lang.rb +176 -0
- data/lib/sisu/se_version.rb +174 -0
- data/lib/sisu/shared_images.rb +137 -0
- data/lib/sisu/shared_markup_alt.rb +336 -0
- data/lib/sisu/shared_metadata.rb +1361 -0
- data/lib/sisu/shared_sem.rb +156 -0
- data/lib/sisu/sisu_thor_lib.rb +407 -0
- data/lib/sisu/sitemaps.rb +224 -0
- data/lib/sisu/src_kdissert_share.rb +102 -0
- data/lib/sisu/src_po4a_share.rb +309 -0
- data/lib/sisu/src_po4a_shelf.rb +1217 -0
- data/lib/sisu/src_po4a_shelf_set.rb +297 -0
- data/lib/sisu/src_po4a_sst_ao_sst.rb +893 -0
- data/lib/sisu/src_po4a_sst_ao_sst_set.rb +284 -0
- data/lib/sisu/src_po4a_sstm.rb +135 -0
- data/lib/sisu/src_shared.rb +347 -0
- data/lib/sisu/src_sisupod_make.rb +171 -0
- data/lib/sisu/src_sisupod_sstm.rb +109 -0
- data/lib/sisu/sst_convert_markup.rb +323 -0
- data/lib/sisu/sst_do_inline_footnotes.rb +440 -0
- data/lib/sisu/sst_from_xml.rb +178 -0
- data/lib/sisu/sst_identify_markup.rb +482 -0
- data/lib/sisu/sst_to_s_xml_sax.rb +471 -0
- data/lib/sisu/termsheet.rb +163 -0
- data/lib/sisu/texinfo.rb +430 -0
- data/lib/sisu/texinfo_format.rb +541 -0
- data/lib/sisu/texpdf.rb +1162 -0
- data/lib/sisu/texpdf_format.rb +1689 -0
- data/lib/sisu/texpdf_parts.rb +235 -0
- data/lib/sisu/txt_asciidoc.rb +354 -0
- data/lib/sisu/txt_asciidoc_decorate.rb +207 -0
- data/lib/sisu/txt_markdown.rb +389 -0
- data/lib/sisu/txt_markdown_decorate.rb +207 -0
- data/lib/sisu/txt_orgmode.rb +376 -0
- data/lib/sisu/txt_orgmode_decorate.rb +186 -0
- data/lib/sisu/txt_output.rb +86 -0
- data/lib/sisu/txt_plain.rb +410 -0
- data/lib/sisu/txt_plain_decorate.rb +189 -0
- data/lib/sisu/txt_read.rb +109 -0
- data/lib/sisu/txt_rst.rb +371 -0
- data/lib/sisu/txt_rst_decorate.rb +186 -0
- data/lib/sisu/txt_shared.rb +241 -0
- data/lib/sisu/txt_textile.rb +367 -0
- data/lib/sisu/txt_textile_decorate.rb +186 -0
- data/lib/sisu/update.rb +141 -0
- data/lib/sisu/urls.rb +696 -0
- data/lib/sisu/utils.rb +232 -0
- data/lib/sisu/utils_composite.rb +115 -0
- data/lib/sisu/utils_response.rb +114 -0
- data/lib/sisu/utils_screen_text_color.rb +472 -0
- data/lib/sisu/utils_spell.rb +99 -0
- data/lib/sisu/webrick.rb +191 -0
- data/lib/sisu/wikispeak.rb +375 -0
- data/lib/sisu/xhtml.rb +472 -0
- data/lib/sisu/xhtml_epub2.rb +890 -0
- data/lib/sisu/xhtml_epub2_concordance.rb +322 -0
- data/lib/sisu/xhtml_epub2_format.rb +2272 -0
- data/lib/sisu/xhtml_epub2_persist.rb +278 -0
- data/lib/sisu/xhtml_epub2_segments.rb +599 -0
- data/lib/sisu/xhtml_epub2_tune.rb +330 -0
- data/lib/sisu/xhtml_parts.rb +183 -0
- data/lib/sisu/xhtml_shared.rb +62 -0
- data/lib/sisu/xhtml_table.rb +97 -0
- data/lib/sisu/xml_docbook5.rb +376 -0
- data/lib/sisu/xml_dom.rb +624 -0
- data/lib/sisu/xml_fictionbook2.rb +389 -0
- data/lib/sisu/xml_format.rb +865 -0
- data/lib/sisu/xml_md_oai_pmh_dc.rb +229 -0
- data/lib/sisu/xml_odf_odt.rb +887 -0
- data/lib/sisu/xml_odf_odt_format.rb +674 -0
- data/lib/sisu/xml_parts.rb +191 -0
- data/lib/sisu/xml_persist.rb +126 -0
- data/lib/sisu/xml_sax.rb +521 -0
- data/lib/sisu/xml_scaffold_structure_collapsed.rb +198 -0
- data/lib/sisu/xml_scaffold_structure_sisu.rb +201 -0
- data/lib/sisu/xml_shared.rb +665 -0
- data/lib/sisu/xml_tables.rb +261 -0
- data/lib/sisu/zap.rb +90 -0
- metadata +251 -0
|
@@ -0,0 +1,720 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
=begin
|
|
3
|
+
|
|
4
|
+
* Name: SiSU
|
|
5
|
+
|
|
6
|
+
** Description: documents, structuring, processing, publishing, search
|
|
7
|
+
*** system environment, resource control and configuration details
|
|
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/ao_numbering.rb;hb=HEAD>
|
|
55
|
+
|
|
56
|
+
=end
|
|
57
|
+
module SiSU_AO_Numbering
|
|
58
|
+
class Numbering
|
|
59
|
+
attr_accessor :obj,:osp,:ocn,:lv,:name,:index,:comment
|
|
60
|
+
@@segments_count=0
|
|
61
|
+
def initialize(md,data,fnx,process)
|
|
62
|
+
@md,@data,@fnx,@process=md,data,fnx,process
|
|
63
|
+
@obj=@type=@ocn=@lv=@name=@index=@comment=nil
|
|
64
|
+
@chosen_seg_names=[]
|
|
65
|
+
end
|
|
66
|
+
def chosen_seg_names(chosen,chosen_seg_name,dob,md,type)
|
|
67
|
+
@chosen_seg_names=if chosen.compact.uniq.length \
|
|
68
|
+
== chosen.compact.length
|
|
69
|
+
chosen
|
|
70
|
+
else
|
|
71
|
+
if md.opt.act[:maintenance][:set]==:on
|
|
72
|
+
SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:green).
|
|
73
|
+
mark(
|
|
74
|
+
"duplicated auto segment name: #{type} #{chosen}\n" \
|
|
75
|
+
+ "#{chosen}\n" \
|
|
76
|
+
+ " manually name level 1 segments '1~given_name'\n" \
|
|
77
|
+
+ 'filename: ' + md.fns + "\n" \
|
|
78
|
+
+ 'heading text: "' + dob.obj + '"' + "\n" \
|
|
79
|
+
+ 'duplication: "' + chosen_seg_name + '" (level: ' + dob.lv + '; numbering type: ' + type.to_s + ')'
|
|
80
|
+
)
|
|
81
|
+
end
|
|
82
|
+
chosen=chosen[0..-2]
|
|
83
|
+
chosen_seg_name=auto_numbering_exceptions(chosen,md,dob)
|
|
84
|
+
chosen << chosen_seg_name
|
|
85
|
+
end
|
|
86
|
+
end
|
|
87
|
+
def number_of_segments?
|
|
88
|
+
if @@segments_count==0
|
|
89
|
+
@data.each do |dob|
|
|
90
|
+
if dob.is == :heading \
|
|
91
|
+
and dob.lv == '1'
|
|
92
|
+
@@segments_count += 1
|
|
93
|
+
end
|
|
94
|
+
end
|
|
95
|
+
@@segments_count
|
|
96
|
+
else @@segments_count
|
|
97
|
+
end
|
|
98
|
+
end
|
|
99
|
+
def numbering_song
|
|
100
|
+
begin
|
|
101
|
+
data=@data
|
|
102
|
+
data=number_plaintext_para(data)
|
|
103
|
+
data=auto_number_heading_ie_title(data.compact) #tr issue
|
|
104
|
+
data=ocn(data.compact) #watch
|
|
105
|
+
data=xml(data.compact)
|
|
106
|
+
data=minor_numbering(data.compact)
|
|
107
|
+
if @process==:complete
|
|
108
|
+
data,tags_map,ocn_html_seg_map=name_para_seg_filename(data)
|
|
109
|
+
end
|
|
110
|
+
data=set_heading_top(data) unless @md.set_heading_top
|
|
111
|
+
[data,tags_map,ocn_html_seg_map]
|
|
112
|
+
ensure
|
|
113
|
+
@@segments_count=0
|
|
114
|
+
end
|
|
115
|
+
end
|
|
116
|
+
def set_tags(tags,tag)
|
|
117
|
+
tags=if not tag.empty? \
|
|
118
|
+
and tag !~/^\d+$/
|
|
119
|
+
tag=tag.gsub(/[^a-z0-9._-]/,'')
|
|
120
|
+
[tag,tags].flatten
|
|
121
|
+
else tags
|
|
122
|
+
end
|
|
123
|
+
end
|
|
124
|
+
def number_plaintext_para(data)
|
|
125
|
+
@tuned_file=[]
|
|
126
|
+
data.each do |dob|
|
|
127
|
+
if (dob.of !=:block \
|
|
128
|
+
&& dob.of !=:comment \
|
|
129
|
+
&& dob.of !=:layout) \
|
|
130
|
+
&& dob.ocn_ #and dob.obj !~ /#{Mx[:gr_o]}Th|#{Mx[:tc_o]}#{Mx[:tc_p]}#{Mx[:tc_p]}/ #FIX
|
|
131
|
+
dob.obj=dob.obj.gsub(/(.+)\n/,'\1 ') #messy, but idea is that tables should retain breaks
|
|
132
|
+
end
|
|
133
|
+
unless dob.obj.is_a?(Array)
|
|
134
|
+
dob.obj=dob.obj.gsub(/^\s+/,'').
|
|
135
|
+
gsub(/\s$/,"\n")
|
|
136
|
+
end
|
|
137
|
+
@tuned_file << dob
|
|
138
|
+
end
|
|
139
|
+
@tuned_file=@tuned_file.flatten
|
|
140
|
+
end
|
|
141
|
+
def number_sub_heading(dob,num,title_no)
|
|
142
|
+
unless dob.obj =~/\d+\.|(?:chapter|article|section|clause)\s+\d+/i #name selection arbitrary, fix
|
|
143
|
+
dob.obj=case dob.name
|
|
144
|
+
when /-/ then dob.obj.gsub(/^/,"#{title_no} ")
|
|
145
|
+
when /^#/ then dob.obj.gsub(/^/,"#{title_no} ")
|
|
146
|
+
when /^[a-z_\.]+/ then dob.obj.gsub(/^/,"#{title_no} ")
|
|
147
|
+
else
|
|
148
|
+
dob.name=title_no if dob.name=~/^$/ #where title contains title number
|
|
149
|
+
dob.obj.gsub(/^/,"#{title_no} ") if title_no =~/\d+/ #main, where title number is to be provided #watch changed placement
|
|
150
|
+
end
|
|
151
|
+
if @md.toc_lev_limit \
|
|
152
|
+
and @md.toc_lev_limit < num
|
|
153
|
+
dob.obj=dob.obj.gsub(/^/,'!_ ') #bold line, watch
|
|
154
|
+
end
|
|
155
|
+
end
|
|
156
|
+
dob
|
|
157
|
+
end
|
|
158
|
+
def heading_tag_clean(heading_tag)
|
|
159
|
+
heading_tag=heading_tag.
|
|
160
|
+
gsub(/[ ]+/,'_').
|
|
161
|
+
gsub(/["']/,'').
|
|
162
|
+
gsub(/[\/]/,'-').
|
|
163
|
+
gsub(/#{Mx[:fa_bold_o]}|#{Mx[:fa_bold_c]}/,'').
|
|
164
|
+
gsub(/#{Mx[:fa_italics_o]}|#{Mx[:fa_italics_c]}/,'').
|
|
165
|
+
gsub(/#{Mx[:fa_underscore_o]}|#{Mx[:fa_underscore_c]}/,'').
|
|
166
|
+
gsub(/#{Mx[:fa_cite_o]}|#{Mx[:fa_cite_c]}/,'').
|
|
167
|
+
gsub(/#{Mx[:fa_insert_o]}|#{Mx[:fa_insert_c]}/,'').
|
|
168
|
+
gsub(/#{Mx[:fa_strike_o]}|#{Mx[:fa_strike_c]}/,'').
|
|
169
|
+
gsub(/#{Mx[:fa_superscript_o]}|#{Mx[:fa_superscript_c]}/,'').
|
|
170
|
+
gsub(/#{Mx[:fa_subscript_o]}|#{Mx[:fa_subscript_c]}/,'').
|
|
171
|
+
gsub(/#{Mx[:fa_hilite_o]}|#{Mx[:fa_hilite_c]}/,'').
|
|
172
|
+
gsub(/#{Mx[:gl_bullet]}/,'')
|
|
173
|
+
end
|
|
174
|
+
def auto_number_heading_ie_title(data) #also does some segment naming
|
|
175
|
+
if defined? @md.make.num_top \
|
|
176
|
+
and @md.make.num_top \
|
|
177
|
+
and @md.make.num_top !~/^$/
|
|
178
|
+
input||=@md.make.num_top
|
|
179
|
+
end
|
|
180
|
+
num_top=(input ? input.to_i : nil)
|
|
181
|
+
t_no1=t_no2=t_no3=0
|
|
182
|
+
if num_top
|
|
183
|
+
no1=num_top; no2=(num_top + 1); no3=(num_top + 2)
|
|
184
|
+
end
|
|
185
|
+
chapter_number_counter=0
|
|
186
|
+
data=data.compact
|
|
187
|
+
@tuned_file=data.each.map do |dob| #@md.seg_names << [additions to segment names]
|
|
188
|
+
title_no=nil
|
|
189
|
+
if dob.is ==:heading \
|
|
190
|
+
&& dob.autonum_ \
|
|
191
|
+
and defined? @md.make.num_top \
|
|
192
|
+
and @md.make.num_top !~/^$/
|
|
193
|
+
if dob.lv=='1' \
|
|
194
|
+
and dob.obj =~/^#\s|\s#(?:\s|$)/
|
|
195
|
+
chapter_number_counter +=1
|
|
196
|
+
dob.obj=dob.obj.gsub(/^#\s/,"#{chapter_number_counter} ").
|
|
197
|
+
gsub(/#([:,]?\s|[.]?$)/,"#{chapter_number_counter}\\1")
|
|
198
|
+
end
|
|
199
|
+
if dob.ln==no1
|
|
200
|
+
@subnumber=1
|
|
201
|
+
@subnumber=0 if dob.ln==no1
|
|
202
|
+
end
|
|
203
|
+
if dob.ln.to_s =~/^[0-6]/ \
|
|
204
|
+
and not dob.use_ ==:dummy \
|
|
205
|
+
and dob.obj !~/#{Mx[:fa_o]}(?:~#|-#)#{Mx[:fa_c]}/ # <-- fix
|
|
206
|
+
if dob.ln==no1
|
|
207
|
+
t_no1+=1; t_no2=0; t_no3=0
|
|
208
|
+
title_no="#{t_no1}"
|
|
209
|
+
if @md.seg_names.is_a?(Array) \
|
|
210
|
+
and not @md.seg_names.include?(title_no)
|
|
211
|
+
if dob.ln==no1
|
|
212
|
+
dob.name="#{title_no}" if not dob.name
|
|
213
|
+
dob.tags=set_tags(dob.tags,title_no)
|
|
214
|
+
tag=dob.obj.
|
|
215
|
+
gsub(/(Article|Clause|Section|Chapter)\s+/,
|
|
216
|
+
"\\1_#{title_no}").
|
|
217
|
+
downcase
|
|
218
|
+
tag=heading_tag_clean(tag)
|
|
219
|
+
dob.tags=set_tags(dob.tags,tag)
|
|
220
|
+
dob.obj=(dob.obj =~/(Article|Clause|Section)\s+/) \
|
|
221
|
+
? (dob.obj.gsub(/(Article|Clause|Section)\s+/,"\\1 #{title_no} "))
|
|
222
|
+
: (dob.obj.gsub(/^/,"#{title_no}. ")) #fix stop later
|
|
223
|
+
end
|
|
224
|
+
if dob.ln !=no1 \
|
|
225
|
+
and dob.obj =~/^[\d.]+\s/ #fix -> if the title starts with a numbering scheme, do not auto-number, review
|
|
226
|
+
dob.name ="#{title_no}" if not dob.name
|
|
227
|
+
dob.tags=set_tags(dob.tags,title_no)
|
|
228
|
+
dob.obj=dob.obj.gsub(/^/,"#{title_no}. ")
|
|
229
|
+
end
|
|
230
|
+
@md.seg_names << title_no
|
|
231
|
+
end
|
|
232
|
+
if dob.ln!=no1 \
|
|
233
|
+
and dob.name!~/^[a-z_\.]+$/ \
|
|
234
|
+
and dob.obj !~/[A-Z]\.?\s/ #bug -> tmp fix, excludes A. B. C. lettering, but not roman numerals, is arbitrary, review required # not fixed, work on
|
|
235
|
+
dob.tags=set_tags(dob.tags,title_no)
|
|
236
|
+
dob.obj=dob.obj.gsub(/^/i,"#{title_no}. ")
|
|
237
|
+
end
|
|
238
|
+
end
|
|
239
|
+
if dob.ln==no1 #watch because here you change dob.name
|
|
240
|
+
dob.tags=set_tags(dob.tags,"h#{title_no}")
|
|
241
|
+
end
|
|
242
|
+
if dob.ln==no2 #watch because here you change dob.name
|
|
243
|
+
t_no2+=1; t_no3=0
|
|
244
|
+
title_no="#{t_no1}.#{t_no2}"
|
|
245
|
+
dob.tags=set_tags(dob.tags,"h#{title_no}")
|
|
246
|
+
dob=number_sub_heading(dob,no2,title_no)
|
|
247
|
+
end
|
|
248
|
+
if dob.ln==no3 #watch because here you change dob.name
|
|
249
|
+
t_no3+=1
|
|
250
|
+
title_no="#{t_no1}.#{t_no2}.#{t_no3}"
|
|
251
|
+
dob.tags=set_tags(dob.tags,"h#{title_no}")
|
|
252
|
+
dob=number_sub_heading(dob,no3,title_no)
|
|
253
|
+
end
|
|
254
|
+
elsif dob.ln.to_s =~/^[0-6]/ \
|
|
255
|
+
and dob.name =~ /^[\w-]+-/ # endnotes, watch2005# endnotes, watch2005
|
|
256
|
+
dob.tags=set_tags(dob.tags,dob.name)
|
|
257
|
+
dob.name.gsub(/^([a-z_\.]+)-$/,'\1')
|
|
258
|
+
end
|
|
259
|
+
elsif dob.is ==:heading \
|
|
260
|
+
and dob.autonum_ \
|
|
261
|
+
and @md.markup =~/num_extract/ #AS DANGEROUS force enable with document, note already does this type of numbering for cisg, locate and coordinate logic, is currently misplaced in code, chengwei inspired 2004w23/4
|
|
262
|
+
#here lies a bug, as is nil when run from -Dv --update, FIX
|
|
263
|
+
if (dob.name.nil? or dob.name.empty?) \
|
|
264
|
+
and dob.ln.to_s =~/^[0-9]/ \
|
|
265
|
+
and dob.obj =~ /^([\d\.]+)/ #risky (must be unique) consider output to 4~~\d instead of 4~\d
|
|
266
|
+
dob.name=$1
|
|
267
|
+
dob.tags=set_tags(dob.tags,dob.name)
|
|
268
|
+
end
|
|
269
|
+
if @md.toc_lev_limit
|
|
270
|
+
end
|
|
271
|
+
elsif defined? dob.name \
|
|
272
|
+
and dob.name
|
|
273
|
+
dob.tags=set_tags(dob.tags,dob.name)
|
|
274
|
+
end
|
|
275
|
+
dob.tags=dob.tags.uniq if defined? dob.tags
|
|
276
|
+
dob
|
|
277
|
+
end.flatten
|
|
278
|
+
end
|
|
279
|
+
def ocn(data) #and auto segment numbering increment
|
|
280
|
+
@tuned_file=SiSU_AO_DocumentStructureExtract::OCN.new(@md,data,@fnx,@process).ocn
|
|
281
|
+
@tuned_file
|
|
282
|
+
end
|
|
283
|
+
def xml(data)
|
|
284
|
+
@tuned_file=SiSU_AO_DocumentStructureExtract::XML.new(@md,data).dom
|
|
285
|
+
@tuned_file
|
|
286
|
+
end
|
|
287
|
+
def minor_numbering(data) #and auto segment numbering increment
|
|
288
|
+
number_small,letter_small=0,0
|
|
289
|
+
letter=%w( a b c d e f g h i j k l m n o p q r s t u v w x y z )
|
|
290
|
+
@tuned_file=data.each.map do |dob|
|
|
291
|
+
if dob.of ==:heading \
|
|
292
|
+
|| dob.of ==:heading_insert \
|
|
293
|
+
|| dob.of ==:para \
|
|
294
|
+
|| dob.of ==:block
|
|
295
|
+
if dob.is ==:heading \
|
|
296
|
+
and dob.ln.to_s=~/^[0-9]/ #% sub-number system, (baby numbering) reset with any change of major number (more obviously should be placed in number titles, but that is conditionally executed, check and move later)
|
|
297
|
+
number_small,letter_small=0,0
|
|
298
|
+
elsif dob.is ==:para
|
|
299
|
+
if dob.obj =~/^#[ 1]/ \
|
|
300
|
+
and dob.obj !~/^#\s+(?:~#)?$/
|
|
301
|
+
letter_small=0
|
|
302
|
+
number_small=0 if dob.obj =~ /^#1/
|
|
303
|
+
number_small+=1
|
|
304
|
+
dob.obj=dob.obj.gsub(/^#[ 1]/,"#{number_small}. ")
|
|
305
|
+
end
|
|
306
|
+
if dob.obj =~/^_# /
|
|
307
|
+
dob.obj=dob.obj.gsub(/^_# /,"#{letter[letter_small]}. ")
|
|
308
|
+
dob.indent='1'
|
|
309
|
+
letter_small+=1
|
|
310
|
+
end
|
|
311
|
+
end
|
|
312
|
+
end
|
|
313
|
+
dob
|
|
314
|
+
end.flatten
|
|
315
|
+
end
|
|
316
|
+
def leading_zeros_fixed_width_number(possible_seg_name)
|
|
317
|
+
if possible_seg_name.to_s =~/^([0-9]+?\.|[0-9]+)$/m #!~/[.,:-]+/
|
|
318
|
+
possible_seg_name=possible_seg_name.to_s.
|
|
319
|
+
gsub(/\.$/,'')
|
|
320
|
+
nl=possible_seg_name.to_s.length
|
|
321
|
+
zero='0'
|
|
322
|
+
zeros_fixed_width=number_of_segments?.to_s.length
|
|
323
|
+
zero_width=(zeros_fixed_width - nl)
|
|
324
|
+
zero_width == 0 \
|
|
325
|
+
? possible_seg_name.to_s
|
|
326
|
+
: zero*zero_width +
|
|
327
|
+
possible_seg_name.to_s
|
|
328
|
+
end
|
|
329
|
+
end
|
|
330
|
+
def auto_numbering_exceptions(chosen_seg_names_,md,dob)
|
|
331
|
+
number_make=case dob.lv.to_i
|
|
332
|
+
when 1
|
|
333
|
+
@num_exc={
|
|
334
|
+
t1: @num_exc[:t1] += 1,
|
|
335
|
+
t2: 0,
|
|
336
|
+
t3: 0,
|
|
337
|
+
t4: 0
|
|
338
|
+
}
|
|
339
|
+
Mx[:segname_prefix_auto_num_other] + '_' \
|
|
340
|
+
+ @num_exc[:t1].to_s
|
|
341
|
+
when 2
|
|
342
|
+
@num_exc={
|
|
343
|
+
t1: @num_exc[:t1],
|
|
344
|
+
t2: @num_exc[:t2] += 1,
|
|
345
|
+
t3: 0,
|
|
346
|
+
t4: 0
|
|
347
|
+
}
|
|
348
|
+
Mx[:segname_prefix_auto_num_other] + '_' \
|
|
349
|
+
+ @num_exc[:t1].to_s + '_' \
|
|
350
|
+
+ @num_exc[:t2].to_s
|
|
351
|
+
when 3
|
|
352
|
+
@num_exc={
|
|
353
|
+
t1: @num_exc[:t1],
|
|
354
|
+
t2: @num_exc[:t2],
|
|
355
|
+
t3: @num_exc[:t3] += 1,
|
|
356
|
+
t4: 0
|
|
357
|
+
}
|
|
358
|
+
Mx[:segname_prefix_auto_num_other] + '_' \
|
|
359
|
+
+ @num_exc[:t1].to_s + '_' \
|
|
360
|
+
+ @num_exc[:t2].to_s + '_' \
|
|
361
|
+
+ @num_exc[:t3].to_s
|
|
362
|
+
when 4
|
|
363
|
+
@num_exc[:t4] += 1
|
|
364
|
+
@num_exc={
|
|
365
|
+
t1: @num_exc[:t1],
|
|
366
|
+
t2: @num_exc[:t2],
|
|
367
|
+
t3: @num_exc[:t3],
|
|
368
|
+
t4: @num_exc[:t4] += 1
|
|
369
|
+
}
|
|
370
|
+
Mx[:segname_prefix_auto_num_other] + '_' \
|
|
371
|
+
+ @num_exc[:t1].to_s + '_' \
|
|
372
|
+
+ @num_exc[:t2].to_s + '_' \
|
|
373
|
+
+ @num_exc[:t3].to_s + '_' \
|
|
374
|
+
+ @num_exc[:t4].to_s
|
|
375
|
+
end
|
|
376
|
+
end
|
|
377
|
+
def check_that_seg_names_are_unique(chosen_seg_names_,chosen_seg_name,type,md,dob)
|
|
378
|
+
begin
|
|
379
|
+
chosen_seg_names_ << chosen_seg_name
|
|
380
|
+
chosen_seg_names_=chosen_seg_names(chosen_seg_names_,chosen_seg_name,dob,md,type)
|
|
381
|
+
if chosen_seg_names_.compact.uniq.length \
|
|
382
|
+
== chosen_seg_names_.compact.length
|
|
383
|
+
#check that all auto given seg names are unique
|
|
384
|
+
chosen_seg_names_=chosen_seg_names(chosen_seg_names_,chosen_seg_name,dob,md,type)
|
|
385
|
+
chosen_seg_name
|
|
386
|
+
else
|
|
387
|
+
SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:green).
|
|
388
|
+
mark(
|
|
389
|
+
"duplicated auto segment name: #{type} #{chosen_seg_name}\n" \
|
|
390
|
+
+ "#{chosen_seg_names_}\n" \
|
|
391
|
+
+ " manually name level 1 segments '1~given_name'\n" \
|
|
392
|
+
+ 'filename: ' + md.fns + "\n" \
|
|
393
|
+
+ 'heading text: "' + dob.obj + '"' + "\n" \
|
|
394
|
+
+ 'duplication: "' + chosen_seg_name + '" (level: ' + dob.lv + '; numbering type: ' + type.to_s + ')'
|
|
395
|
+
)
|
|
396
|
+
chosen_seg_name=auto_numbering_exceptions(chosen_seg_names_,md,dob)
|
|
397
|
+
check_that_seg_names_are_unique(chosen_seg_names_,chosen_seg_name,:exception,md,dob)
|
|
398
|
+
end
|
|
399
|
+
rescue
|
|
400
|
+
end
|
|
401
|
+
end
|
|
402
|
+
def auto_seg_name(possible_seg_name,heading_num_is,dob,type)
|
|
403
|
+
prefix=case type
|
|
404
|
+
when :auto then Mx[:segname_prefix_auto_num_provide]
|
|
405
|
+
when :extract then Mx[:segname_prefix_auto_num_extract]
|
|
406
|
+
else '_'*dob.lv.to_i #should not occur
|
|
407
|
+
end
|
|
408
|
+
if possible_seg_name =~/^[0-9]+?\.$/m #!~/[.,:-]+/
|
|
409
|
+
possible_seg_name=possible_seg_name.
|
|
410
|
+
gsub(/\.$/,'')
|
|
411
|
+
end
|
|
412
|
+
@chosen_seg_name=
|
|
413
|
+
if dob.lv=='4' \
|
|
414
|
+
and possible_seg_name.to_s =~/^[0-9]+(?:[.,:-][0-9]){3}/m
|
|
415
|
+
possible_seg_name=possible_seg_name.to_s.
|
|
416
|
+
gsub(/(?:[:,-]|\W)/,'.').
|
|
417
|
+
gsub(/\.$/,'')
|
|
418
|
+
prefix + possible_seg_name
|
|
419
|
+
elsif dob.lv=='3' \
|
|
420
|
+
and possible_seg_name.to_s =~/^[0-9]+(?:[.,:-][0-9]){2}/m
|
|
421
|
+
possible_seg_name=possible_seg_name.to_s.
|
|
422
|
+
gsub(/(?:[:,-]|\W)/,'.').
|
|
423
|
+
gsub(/\.$/,'')
|
|
424
|
+
prefix + possible_seg_name
|
|
425
|
+
elsif dob.lv=='2' \
|
|
426
|
+
and possible_seg_name.to_s =~/^[0-9]+(?:[.,:-][0-9]){1}/m
|
|
427
|
+
possible_seg_name=possible_seg_name.to_s.
|
|
428
|
+
gsub(/(?:[:,-]|\W)/,'.').
|
|
429
|
+
gsub(/\.$/,'')
|
|
430
|
+
prefix + possible_seg_name
|
|
431
|
+
elsif dob.lv=='1' \
|
|
432
|
+
and possible_seg_name.to_s =~/^[0-9]+[:,-]?$/m
|
|
433
|
+
if possible_seg_name.to_i <= heading_num_is.to_i
|
|
434
|
+
prefix + leading_zeros_fixed_width_number(possible_seg_name)
|
|
435
|
+
else
|
|
436
|
+
possible_seg_name=possible_seg_name.to_s.
|
|
437
|
+
gsub(/(?:[:,-]|\W)/,'.').
|
|
438
|
+
gsub(/\.$/,'')
|
|
439
|
+
prefix + possible_seg_name
|
|
440
|
+
end
|
|
441
|
+
else
|
|
442
|
+
@chosen_seg_name=auto_numbering_exceptions(@chosen_seg_names,md,dob)
|
|
443
|
+
end
|
|
444
|
+
check_that_seg_names_are_unique(@chosen_seg_names,@chosen_seg_name,type,@md,dob)
|
|
445
|
+
end
|
|
446
|
+
def set_name_and_tags(dob,possible_seg_name)
|
|
447
|
+
if @md.seg_names.is_a?(Array) \
|
|
448
|
+
and not @md.seg_names.include?(possible_seg_name)
|
|
449
|
+
dob.name=possible_seg_name
|
|
450
|
+
dob.tags=set_tags(dob.tags,dob.name)
|
|
451
|
+
@md.seg_names << possible_seg_name
|
|
452
|
+
elsif (@md.opt.act[:verbose_plus][:set]==:on \
|
|
453
|
+
or @md.opt.act[:maintenance][:set]==:on)
|
|
454
|
+
puts 'warn, there may be a conflicting numbering scheme'
|
|
455
|
+
end
|
|
456
|
+
end
|
|
457
|
+
def name_para_seg_filename(data) #segment naming, remaining
|
|
458
|
+
# paragraph name/numbering rules
|
|
459
|
+
# manual naming overrides, manual naming may be
|
|
460
|
+
# alpha-numeric characters mixed,
|
|
461
|
+
# numeric only (a number), if
|
|
462
|
+
# all segments have been named,
|
|
463
|
+
# the numbers used are over 1000 or
|
|
464
|
+
# it is not minded that auto-numbering uses a funny scheme for naming segments (not yet implemented)
|
|
465
|
+
# [for now a warning is printed for such documents on use of maintenance or very-verbose flag]
|
|
466
|
+
# auto-naming takes the form of giving numbers to segments
|
|
467
|
+
# the rules for which are as follows
|
|
468
|
+
# if the title/heading text starts with a numeric, then that is used (1 3.1 3rd etc.)
|
|
469
|
+
# otherwise the level 4 segment number from the embedded document structure info is used
|
|
470
|
+
# if there is none a sequential number is designated, preceded by an underscore
|
|
471
|
+
@tuned_file,@unique_auto_name=[],[]
|
|
472
|
+
tags={}
|
|
473
|
+
@art_filename_auto=0
|
|
474
|
+
@counter=1
|
|
475
|
+
if not @md.seg_autoname_safe \
|
|
476
|
+
and (@md.opt.act[:verbose_plus][:set]==:on \
|
|
477
|
+
|| @md.opt.act[:maintenance][:set]==:on)
|
|
478
|
+
puts 'manual segment names, numbers used as names, risk warning (segmented html)'
|
|
479
|
+
end
|
|
480
|
+
ocn_html_seg=[]
|
|
481
|
+
@num_exc={ t1: 0, t2: 0, t3: 0, t4: 0 }
|
|
482
|
+
data.each do |dob|
|
|
483
|
+
if dob.is==:heading \
|
|
484
|
+
&& dob.ln \
|
|
485
|
+
and dob.ln.to_s =~/^[4-7]/
|
|
486
|
+
heading_num_is=/^\d+:(\d+);\d/m.match(dob.node)[1]
|
|
487
|
+
if dob.ln==4 \
|
|
488
|
+
and not dob.name \
|
|
489
|
+
and not @md.set_heading_seg
|
|
490
|
+
@md.set_heading_seg=true
|
|
491
|
+
end
|
|
492
|
+
if dob.name !~/^\S+/ \
|
|
493
|
+
and dob.ln.to_s =~/^[5-7]/ \
|
|
494
|
+
and dob.obj =~/^\s*(?:\S+\s+)?([0-9]+(?:[.,:-][0-9])+)/m
|
|
495
|
+
#heading starts with a recognised numeric
|
|
496
|
+
#or word followed by a recognised numeric construct,
|
|
497
|
+
#use that as name
|
|
498
|
+
if dob.ln==7 \
|
|
499
|
+
and dob.obj =~/^\s*(?:\S+\s+)?([0-9]+(?:[.,:-][0-9]){3})/m
|
|
500
|
+
possible_seg_name=$1.
|
|
501
|
+
gsub(/(?:[:,-]|\W)/,'.').
|
|
502
|
+
gsub(/\.$/,'')
|
|
503
|
+
possible_seg_name=
|
|
504
|
+
auto_seg_name(possible_seg_name,heading_num_is,dob,:extract)
|
|
505
|
+
set_name_and_tags(dob,possible_seg_name)
|
|
506
|
+
elsif dob.ln==6 \
|
|
507
|
+
and dob.obj =~/^\s*(?:\S+\s+)?([0-9]+(?:[.,:-][0-9]){2})/m
|
|
508
|
+
possible_seg_name=$1.
|
|
509
|
+
gsub(/(?:[:,-]|\W)/,'.').
|
|
510
|
+
gsub(/\.$/,'')
|
|
511
|
+
possible_seg_name=
|
|
512
|
+
auto_seg_name(possible_seg_name,heading_num_is,dob,:extract)
|
|
513
|
+
set_name_and_tags(dob,possible_seg_name)
|
|
514
|
+
elsif dob.ln==5 \
|
|
515
|
+
and dob.obj =~/^\s*(?:\S+\s+)?([0-9]+(?:[.,:-][0-9]){1})/m
|
|
516
|
+
possible_seg_name=$1.
|
|
517
|
+
gsub(/(?:[:,-]|\W)/,'.').
|
|
518
|
+
gsub(/\.$/,'')
|
|
519
|
+
possible_seg_name=
|
|
520
|
+
auto_seg_name(possible_seg_name,heading_num_is,dob,:extract)
|
|
521
|
+
set_name_and_tags(dob,possible_seg_name)
|
|
522
|
+
end
|
|
523
|
+
end
|
|
524
|
+
if dob.ln==4
|
|
525
|
+
if dob.name !~/^\S+/ \
|
|
526
|
+
and dob.obj =~/^\s*(?:\S+\s+)?([0-9]+)/m
|
|
527
|
+
#heading starts with a recognised numeric
|
|
528
|
+
#or word followed by a recognised numeric construct,
|
|
529
|
+
#use that as name
|
|
530
|
+
possible_seg_name=$1
|
|
531
|
+
possible_seg_name=
|
|
532
|
+
auto_seg_name(possible_seg_name,heading_num_is,dob,:extract)
|
|
533
|
+
set_name_and_tags(dob,possible_seg_name)
|
|
534
|
+
end
|
|
535
|
+
if dob.name
|
|
536
|
+
#extract segment name from embedded document structure info
|
|
537
|
+
if @md.seg_names.is_a?(Array) \
|
|
538
|
+
and not @md.seg_names.include?(dob.name)
|
|
539
|
+
dob.tags=set_tags(dob.tags,dob.name)
|
|
540
|
+
@md.seg_names << dob.name
|
|
541
|
+
end
|
|
542
|
+
else
|
|
543
|
+
#if no segment name,
|
|
544
|
+
#provide a numerical one
|
|
545
|
+
@art_filename_auto+=1
|
|
546
|
+
possible_seg_name=
|
|
547
|
+
auto_seg_name(@art_filename_auto,heading_num_is,dob,:auto)
|
|
548
|
+
if @md.seg_names.is_a?(Array) \
|
|
549
|
+
and not @md.seg_names.include?(possible_seg_name)
|
|
550
|
+
dob.name=possible_seg_name
|
|
551
|
+
dob.tags=set_tags(dob.tags,dob.name)
|
|
552
|
+
@md.seg_names << possible_seg_name
|
|
553
|
+
else puts 'segment name (numbering) error'
|
|
554
|
+
end
|
|
555
|
+
end
|
|
556
|
+
if not dob.name #should not occur
|
|
557
|
+
puts "e r r o r -\t#{__FILE__}::#{__LINE__}\n#{dob.inspect}"
|
|
558
|
+
end
|
|
559
|
+
end
|
|
560
|
+
end
|
|
561
|
+
if (dob.is ==:heading \
|
|
562
|
+
|| dob.is ==:heading_insert) \
|
|
563
|
+
&& dob.ln==4
|
|
564
|
+
@seg=dob.name
|
|
565
|
+
end
|
|
566
|
+
@tuned_file << if dob.is==:heading \
|
|
567
|
+
&& (@md.pagenew || @md.pagebreak || @md.pageline)
|
|
568
|
+
m=dob.ln.to_s
|
|
569
|
+
dob_tmp=[]
|
|
570
|
+
if @md.pagenew.inspect =~/#{m}/
|
|
571
|
+
dob_tmp <<
|
|
572
|
+
SiSU_AO_DocumentStructure::ObjectLayout.new.break(Hx[:br_page_new]) <<
|
|
573
|
+
dob
|
|
574
|
+
elsif @md.pagebreak.inspect =~/#{m}/
|
|
575
|
+
dob_tmp <<
|
|
576
|
+
SiSU_AO_DocumentStructure::ObjectLayout.new.break(Hx[:br_page]) <<
|
|
577
|
+
dob
|
|
578
|
+
elsif @md.pageline.inspect =~/#{m}/
|
|
579
|
+
dob_tmp <<
|
|
580
|
+
SiSU_AO_DocumentStructure::ObjectLayout.new.break(Hx[:br_page_line]) <<
|
|
581
|
+
dob
|
|
582
|
+
end
|
|
583
|
+
unless dob_tmp.length > 0; dob
|
|
584
|
+
else dob_tmp
|
|
585
|
+
end
|
|
586
|
+
else dob
|
|
587
|
+
end
|
|
588
|
+
if defined? dob.ocn \
|
|
589
|
+
and dob.ocn
|
|
590
|
+
@segname=((dob.is==:heading || dob.is==:heading_insert) && dob.ln==4 && (defined? dob.name)) \
|
|
591
|
+
? (dob.name)
|
|
592
|
+
: @segname
|
|
593
|
+
tags["#{dob.ocn}"]={ segname: @segname }
|
|
594
|
+
ocn_html_seg[dob.ocn]=if (dob.is==:heading || dob.is==:heading_insert)
|
|
595
|
+
if dob.ln =~/[0-3]/
|
|
596
|
+
{
|
|
597
|
+
seg: nil,
|
|
598
|
+
level: dob.ln,
|
|
599
|
+
}
|
|
600
|
+
#elsif dob.ln =~/[4-6]/
|
|
601
|
+
else
|
|
602
|
+
{
|
|
603
|
+
seg: @seg,
|
|
604
|
+
level: dob.ln,
|
|
605
|
+
}
|
|
606
|
+
end
|
|
607
|
+
else
|
|
608
|
+
{
|
|
609
|
+
seg: @seg,
|
|
610
|
+
level: nil,
|
|
611
|
+
}
|
|
612
|
+
end
|
|
613
|
+
end
|
|
614
|
+
dob.tags=dob.tags.uniq if defined? dob.tags
|
|
615
|
+
if defined? dob.tags \
|
|
616
|
+
and dob.tags.length > 0
|
|
617
|
+
#@segname=((dob.is=='heading'|| dob.is=='heading_insert') && dob.ln==4 && (defined? dob.name)) \
|
|
618
|
+
#? (dob.name) \
|
|
619
|
+
#: @segname
|
|
620
|
+
dob.tags.each do |y|
|
|
621
|
+
tags[y]={ ocn: dob.ocn.to_s, segname: @segname }
|
|
622
|
+
end
|
|
623
|
+
end
|
|
624
|
+
dob
|
|
625
|
+
end
|
|
626
|
+
ocn_html_seg.each_with_index do |ocn,i|
|
|
627
|
+
if ocn \
|
|
628
|
+
and ocn[:level].to_s=~/[1-3]/
|
|
629
|
+
(1..4).each do |x|
|
|
630
|
+
if ocn_html_seg[i+x] \
|
|
631
|
+
and ocn_html_seg[i+x][:level]==4
|
|
632
|
+
ocn[:seg]=ocn_html_seg[i+x][:seg]
|
|
633
|
+
end
|
|
634
|
+
end
|
|
635
|
+
end
|
|
636
|
+
end
|
|
637
|
+
if @md.seg_names.length > 0
|
|
638
|
+
@md.set_heading_seg=true
|
|
639
|
+
end
|
|
640
|
+
tuned_file=@tuned_file.flatten
|
|
641
|
+
[tuned_file,tags,ocn_html_seg]
|
|
642
|
+
end
|
|
643
|
+
def set_heading_top(data) #% make sure no false positives
|
|
644
|
+
unless @md.set_heading_top
|
|
645
|
+
if (@md.opt.act[:verbose_plus][:set]==:on \
|
|
646
|
+
or @md.opt.act[:maintenance][:set]==:on)
|
|
647
|
+
puts "\tdocument contains no top level heading, (will have to manufacture one)"
|
|
648
|
+
end
|
|
649
|
+
@tuned_file=[]
|
|
650
|
+
data.each do |t_o|
|
|
651
|
+
unless @md.set_heading_top
|
|
652
|
+
if t_o !~/^(?:#{Rx[:meta]}|@\S+:)\s/m \
|
|
653
|
+
and t_o !~/\A\s*\Z/m
|
|
654
|
+
@md.set_heading_top=true
|
|
655
|
+
if defined? @md.title \
|
|
656
|
+
and @md.title \
|
|
657
|
+
and defined? @md.title.full \
|
|
658
|
+
and defined? @md.creator \
|
|
659
|
+
and @md.creator
|
|
660
|
+
head=@md.title.main \
|
|
661
|
+
? ([@lv='1',@obj=@md.title.main])
|
|
662
|
+
: ([@lv='1',@obj='[no title provided]'])
|
|
663
|
+
@tuned_file << head
|
|
664
|
+
end
|
|
665
|
+
end
|
|
666
|
+
end
|
|
667
|
+
@tuned_file << t_o
|
|
668
|
+
end
|
|
669
|
+
@tuned_file=@tuned_file.flatten
|
|
670
|
+
end
|
|
671
|
+
end
|
|
672
|
+
def set_heading_seg(data) #% make sure no false positives
|
|
673
|
+
unless @md.set_heading_seg
|
|
674
|
+
if (@md.opt.act[:verbose_plus][:set]==:on \
|
|
675
|
+
or @md.opt.act[:maintenance][:set]==:on)
|
|
676
|
+
puts "\tdocument contains no segment level, (will have to manufacture one)"
|
|
677
|
+
end
|
|
678
|
+
@tuned_file=[]
|
|
679
|
+
data.each do |dob|
|
|
680
|
+
unless @md.set_heading_seg
|
|
681
|
+
if defined? dob.ln and dob.ln.to_s !~/^[0-3]/m \
|
|
682
|
+
and dob.obj !~/\A\s*\Z/m \
|
|
683
|
+
and dob.is !=:layout
|
|
684
|
+
@md.set_heading_seg=true
|
|
685
|
+
head=@md.title.main \
|
|
686
|
+
? (dob.ln,dob.name,dob.obj=4,'seg',@md.title.main)
|
|
687
|
+
: (dob.ln,dob.name,dob.obj=4,'seg','[segment]')
|
|
688
|
+
@tuned_file << head
|
|
689
|
+
end
|
|
690
|
+
end
|
|
691
|
+
@tuned_file << dob
|
|
692
|
+
end
|
|
693
|
+
@tuned_file=@tuned_file.flatten
|
|
694
|
+
end
|
|
695
|
+
end
|
|
696
|
+
def set_header_title(data) #% make sure no false positives
|
|
697
|
+
unless @md.set_header_title
|
|
698
|
+
if (@md.opt.act[:verbose_plus][:set]==:on \
|
|
699
|
+
or @md.opt.act[:maintenance][:set]==:on)
|
|
700
|
+
puts "\t no document title provided, (will have to manufacture one)"
|
|
701
|
+
end
|
|
702
|
+
@tuned_file=[]
|
|
703
|
+
data.each do |t_o|
|
|
704
|
+
unless @md.set_header_title
|
|
705
|
+
if t_o !~/^%{1,2}\s/m \
|
|
706
|
+
and t_o !~/\A\s*\Z/m
|
|
707
|
+
@tuned_file <<
|
|
708
|
+
"#{Mx[:meta_o]}title#{Mx[:meta_c]} #{@md.heading_seg_first}"
|
|
709
|
+
@md.title.main=@md.heading_seg_first
|
|
710
|
+
@md.set_header_title=true
|
|
711
|
+
end
|
|
712
|
+
end
|
|
713
|
+
@tuned_file << t_o
|
|
714
|
+
end
|
|
715
|
+
@tuned_file=@tuned_file.flatten
|
|
716
|
+
end
|
|
717
|
+
end
|
|
718
|
+
end
|
|
719
|
+
end
|
|
720
|
+
__END__
|