From cf1ec2346fbe9d0c54d887eb7cd79588dcf3606b Mon Sep 17 00:00:00 2001 From: Ralph Amissah Date: Fri, 5 Sep 2014 23:17:24 -0400 Subject: v5 v6: ao_numbering, provide more information on duplicate numbering before stop --- lib/sisu/v5/ao_numbering.rb | 23 +++++++++++++---------- lib/sisu/v6/ao_numbering.rb | 23 +++++++++++++---------- 2 files changed, 26 insertions(+), 20 deletions(-) (limited to 'lib') diff --git a/lib/sisu/v5/ao_numbering.rb b/lib/sisu/v5/ao_numbering.rb index b4ff7f0b..f9257e6a 100644 --- a/lib/sisu/v5/ao_numbering.rb +++ b/lib/sisu/v5/ao_numbering.rb @@ -314,11 +314,11 @@ module SiSU_AO_Numbering possible_seg_name.to_s end end - def auto_seg_name(possible_seg_name,heading_num_is,lv,type) + def auto_seg_name(possible_seg_name,heading_num_is,dob,type) prefix=case type when :auto then Mx[:segname_prefix_auto_num_provide] when :extract then Mx[:segname_prefix_auto_num_extract] - else '_'*lv.to_i #should not occur + else '_'*dob.lv.to_i #should not occur end if possible_seg_name =~/^[0-9]+?\.$/m #!~/[.,:-]+/ possible_seg_name=possible_seg_name. @@ -326,35 +326,38 @@ module SiSU_AO_Numbering end chosen_seg_name=if possible_seg_name.to_s =~/^[0-9]+[.]?$/m \ and possible_seg_name.to_i <= heading_num_is.to_i \ - and lv == '1' + and dob.lv == '1' prefix + leading_zeros_fixed_width_number(possible_seg_name) elsif possible_seg_name.to_s =~/^[0-9]+[.,:-]*$/m \ - and lv == '1' + and dob.lv == '1' possible_seg_name=possible_seg_name.to_s. gsub(/(?:[:,-]|\W)/,'.'). gsub(/\.$/,'') prefix + possible_seg_name elsif possible_seg_name.to_s =~ /^[0-9]+[.,:-][0-9]+[.,:-]*$/m \ - and lv == '2' + and dob.lv == '2' possible_seg_name=possible_seg_name.to_s. gsub(/(?:[:,-]|\W)/,'.'). gsub(/\.$/,'') prefix + possible_seg_name elsif possible_seg_name.to_s =~ /^[0-9]+[.,:-][0-9]+[.,:-][0-9][\d.,:-]*$/m \ - and lv == '3' + and dob.lv == '3' possible_seg_name=possible_seg_name.to_s. gsub(/(?:[:,-]|\W)/,'.'). gsub(/\.$/,'') prefix + possible_seg_name - else Mx[:segname_prefix_auto_num_other]*lv.to_i + possible_seg_name.to_s + else + Mx[:segname_prefix_auto_num_other]*dob.lv.to_i \ + + possible_seg_name.to_s end @chosen_seg_names << chosen_seg_name if @chosen_seg_names.compact.uniq.length == @chosen_seg_names.compact.length #checks that all auto given seg names are unique chosen_seg_name else - SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:green).mark("duplicated auto segment name: #{type} #{chosen_seg_name} - #{@chosen_seg_names}; manually name level 1 segments '1~given_name'") + SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:green). + mark("duplicated auto segment name: #{type} #{chosen_seg_name} - #{@chosen_seg_names}; manually name level 1 segments '1~given_name'\n #{@md.fns}\n #{dob.obj}") exit end end @@ -396,7 +399,7 @@ module SiSU_AO_Numbering and dob.obj =~/^\s*(?:\S+\s+)?([0-9][0-9.,:-]*)/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,heading_num_is,dob.lv,:extract) + auto_seg_name(possible_seg_name,heading_num_is,dob,:extract) possible_seg_name=possible_seg_name. gsub(/(?:[:,-]|\W)/,'.'). gsub(/\.$/,'') @@ -421,7 +424,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,heading_num_is,dob.lv,:auto) + auto_seg_name(art_filename_auto,heading_num_is,dob,:auto) 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 a96df577..7a4e4cee 100644 --- a/lib/sisu/v6/ao_numbering.rb +++ b/lib/sisu/v6/ao_numbering.rb @@ -314,11 +314,11 @@ module SiSU_AO_Numbering possible_seg_name.to_s end end - def auto_seg_name(possible_seg_name,heading_num_is,lv,type) + def auto_seg_name(possible_seg_name,heading_num_is,dob,type) prefix=case type when :auto then Mx[:segname_prefix_auto_num_provide] when :extract then Mx[:segname_prefix_auto_num_extract] - else '_'*lv.to_i #should not occur + else '_'*dob.lv.to_i #should not occur end if possible_seg_name =~/^[0-9]+?\.$/m #!~/[.,:-]+/ possible_seg_name=possible_seg_name. @@ -326,35 +326,38 @@ module SiSU_AO_Numbering end chosen_seg_name=if possible_seg_name.to_s =~/^[0-9]+[.]?$/m \ and possible_seg_name.to_i <= heading_num_is.to_i \ - and lv == '1' + and dob.lv == '1' prefix + leading_zeros_fixed_width_number(possible_seg_name) elsif possible_seg_name.to_s =~/^[0-9]+[.,:-]*$/m \ - and lv == '1' + and dob.lv == '1' possible_seg_name=possible_seg_name.to_s. gsub(/(?:[:,-]|\W)/,'.'). gsub(/\.$/,'') prefix + possible_seg_name elsif possible_seg_name.to_s =~ /^[0-9]+[.,:-][0-9]+[.,:-]*$/m \ - and lv == '2' + and dob.lv == '2' possible_seg_name=possible_seg_name.to_s. gsub(/(?:[:,-]|\W)/,'.'). gsub(/\.$/,'') prefix + possible_seg_name elsif possible_seg_name.to_s =~ /^[0-9]+[.,:-][0-9]+[.,:-][0-9][\d.,:-]*$/m \ - and lv == '3' + and dob.lv == '3' possible_seg_name=possible_seg_name.to_s. gsub(/(?:[:,-]|\W)/,'.'). gsub(/\.$/,'') prefix + possible_seg_name - else Mx[:segname_prefix_auto_num_other]*lv.to_i + possible_seg_name.to_s + else + Mx[:segname_prefix_auto_num_other]*dob.lv.to_i \ + + possible_seg_name.to_s end @chosen_seg_names << chosen_seg_name if @chosen_seg_names.compact.uniq.length == @chosen_seg_names.compact.length #checks that all auto given seg names are unique chosen_seg_name else - SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:green).mark("duplicated auto segment name: #{type} #{chosen_seg_name} - #{@chosen_seg_names}; manually name level 1 segments '1~given_name'") + SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:green). + mark("duplicated auto segment name: #{type} #{chosen_seg_name} - #{@chosen_seg_names}; manually name level 1 segments '1~given_name'\n #{@md.fns}\n #{dob.obj}") exit end end @@ -396,7 +399,7 @@ module SiSU_AO_Numbering and dob.obj =~/^\s*(?:\S+\s+)?([0-9][0-9.,:-]*)/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,heading_num_is,dob.lv,:extract) + auto_seg_name(possible_seg_name,heading_num_is,dob,:extract) possible_seg_name=possible_seg_name. gsub(/(?:[:,-]|\W)/,'.'). gsub(/\.$/,'') @@ -421,7 +424,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,heading_num_is,dob.lv,:auto) + auto_seg_name(art_filename_auto,heading_num_is,dob,:auto) 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