From 618c5f11c5f799510478f2d403e01e656da935c3 Mon Sep 17 00:00:00 2001 From: Ralph Amissah Date: Fri, 4 Jul 2014 13:49:02 -0400 Subject: v5 v6: ao, fix, re: seg numbering, fixed width, leading zeros (new in 5.4.3) * provisional fix (check related issues against 5.4.2) --- lib/sisu/v5/ao_numbering.rb | 45 +++++++++++++++++++++++++++++---------------- lib/sisu/v6/ao_numbering.rb | 45 +++++++++++++++++++++++++++++---------------- 2 files changed, 58 insertions(+), 32 deletions(-) (limited to 'lib') diff --git a/lib/sisu/v5/ao_numbering.rb b/lib/sisu/v5/ao_numbering.rb index c4b6558f..9fbaaab5 100644 --- a/lib/sisu/v5/ao_numbering.rb +++ b/lib/sisu/v5/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 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 -- cgit v1.2.3