aboutsummaryrefslogtreecommitdiffhomepage
path: root/lib/sisu/v6/ao_numbering.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/sisu/v6/ao_numbering.rb')
-rw-r--r--lib/sisu/v6/ao_numbering.rb45
1 files changed, 29 insertions, 16 deletions
diff --git a/lib/sisu/v6/ao_numbering.rb b/lib/sisu/v6/ao_numbering.rb
index d6faf3a6..755db795 100644
--- a/lib/sisu/v6/ao_numbering.rb
+++ b/lib/sisu/v6/ao_numbering.rb
@@ -81,15 +81,19 @@ module SiSU_AO_Numbering
end
end
def numbering_song
- data=@data
- data=number_plaintext_para(data)
- data=auto_number_heading_ie_title(data.compact) #tr issue
- data=ocn(data.compact) #watch
- data=xml(data.compact)
- data=minor_numbering(data.compact)
- data,tags_map,ocn_html_seg_map=name_para_seg_filename(data)
- data=set_heading_top(data) unless @md.set_heading_top
- [data,tags_map,ocn_html_seg_map]
+ begin
+ data=@data
+ data=number_plaintext_para(data)
+ data=auto_number_heading_ie_title(data.compact) #tr issue
+ data=ocn(data.compact) #watch
+ data=xml(data.compact)
+ data=minor_numbering(data.compact)
+ data,tags_map,ocn_html_seg_map=name_para_seg_filename(data)
+ data=set_heading_top(data) unless @md.set_heading_top
+ [data,tags_map,ocn_html_seg_map]
+ ensure
+ @@segments_count=0
+ end
end
def set_tags(tags,tag)
tags=if not tag.empty? \
@@ -190,7 +194,10 @@ module SiSU_AO_Numbering
if dob.ln==no1
dob.name="#{title_no}" if not dob.name
dob.tags=set_tags(dob.tags,title_no)
- tag=dob.obj.gsub(/(Article|Clause|Section|Chapter)\s+/,"\\1_#{title_no}").downcase
+ tag=dob.obj.
+ gsub(/(Article|Clause|Section|Chapter)\s+/,
+ "\\1_#{title_no}").
+ downcase
tag=heading_tag_clean(tag)
dob.tags=set_tags(dob.tags,tag)
dob.obj=(dob.obj =~/(Article|Clause|Section)\s+/) \
@@ -293,7 +300,7 @@ module SiSU_AO_Numbering
@tuned_file=@tuned_file.flatten
end
def leading_zeros_fixed_width_number(possible_seg_name)
- if possible_seg_name =~/^([\d]+?\.|[\d]+)$/m #!~/[.,:-]+/
+ if possible_seg_name =~/^([0-9]+?\.|[0-9]+)$/m #!~/[.,:-]+/
possible_seg_name=possible_seg_name.
gsub(/\.$/,'')
nl=possible_seg_name.to_s.length
@@ -308,15 +315,20 @@ module SiSU_AO_Numbering
possible_seg_name.to_s
end
end
- def auto_seg_name(possible_seg_name)
- if possible_seg_name =~/^([\d]+?\.|[\d]+)$/m #!~/[.,:-]+/
+ def auto_seg_name(possible_seg_name,heading_num_is)
+ if possible_seg_name =~/^[0-9]+?\.$/m #!~/[.,:-]+/
+ possible_seg_name=possible_seg_name.
+ gsub(/\.$/,'')
+ end
+ if possible_seg_name =~/^[0-9]+$/m \
+ and possible_seg_name.to_i <= heading_num_is.to_i
leading_zeros_fixed_width_number(possible_seg_name)
elsif possible_seg_name =~/^[\d.,:-]+$/m
possible_seg_name=possible_seg_name.
gsub(/(?:[:,-]|\W)/,'.').
gsub(/\.$/,'')
#Mx[:auto_seg_prefix] + possible_seg_name
- else possible_seg_name
+ else possible_seg_name.to_s
end
end
def name_para_seg_filename(data) #segment naming, remaining
@@ -347,6 +359,7 @@ module SiSU_AO_Numbering
if dob.is==:heading \
&& dob.ln \
and dob.ln.to_s =~/^[456]/
+ heading_num_is=/^\d+:(\d+);\d/m.match(dob.node)[1]
if dob.ln==4 \
and not dob.name \
and not @md.set_heading_seg
@@ -356,7 +369,7 @@ module SiSU_AO_Numbering
and dob.obj =~/^\s*(?:\S+\s+)?([\d.,:-]+)/m #heading starts with a recognised numeric or word followed by a recognised numeric construct, use that as name
possible_seg_name=$1
possible_seg_name=
- auto_seg_name(possible_seg_name)
+ auto_seg_name(possible_seg_name,heading_num_is)
possible_seg_name=possible_seg_name.
gsub(/(?:[:,-]|\W)/,'.').
gsub(/\.$/,'')
@@ -381,7 +394,7 @@ module SiSU_AO_Numbering
if dob.ln==4 \
and not dob.name #if still no segment name, provide a numerical one
possible_seg_name=
- auto_seg_name(art_filename_auto)
+ auto_seg_name(art_filename_auto,heading_num_is)
if @md.seg_names.is_a?(Array) \
and not @md.seg_names.include?(possible_seg_name)
dob.name=possible_seg_name