diff options
author | Ralph Amissah <ralph@amissah.com> | 2014-07-15 18:35:37 -0400 |
---|---|---|
committer | Ralph Amissah <ralph@amissah.com> | 2014-07-15 18:35:37 -0400 |
commit | 03c2846913b0abbbd8f8571ba45e948b00564bdb (patch) | |
tree | 2025ecf4a7d5737153bafc817c29faae470a396b /lib | |
parent | v5 v6: sysenv, general, base_markup_dir_stub (replace pwd_stub) (diff) |
v5 v6: ao_numbering, auto name segment, extract "number" from heading, refine
Diffstat (limited to 'lib')
-rw-r--r-- | lib/sisu/v5/ao_numbering.rb | 40 | ||||
-rw-r--r-- | lib/sisu/v6/ao_numbering.rb | 40 |
2 files changed, 56 insertions, 24 deletions
diff --git a/lib/sisu/v5/ao_numbering.rb b/lib/sisu/v5/ao_numbering.rb index dc6ec4dd..a8304fa3 100644 --- a/lib/sisu/v5/ao_numbering.rb +++ b/lib/sisu/v5/ao_numbering.rb @@ -301,7 +301,7 @@ module SiSU_AO_Numbering @tuned_file=@tuned_file.flatten end def leading_zeros_fixed_width_number(possible_seg_name) - if possible_seg_name =~/^([0-9]+?\.|[0-9]+)$/m #!~/[.,:-]+/ + if possible_seg_name =~/^([0-9]+?\.|[0-9]+)$/m #!~/[.,:-]+/ possible_seg_name=possible_seg_name. gsub(/\.$/,'') nl=possible_seg_name.to_s.length @@ -314,31 +314,47 @@ module SiSU_AO_Numbering possible_seg_name.to_s end end - def auto_seg_name(possible_seg_name,heading_num_is,type) + def auto_seg_name(possible_seg_name,heading_num_is,lv,type) prefix=case type - when :auto then Mx[:segname_prefix_auto_num_provide] + when :auto then Mx[:segname_prefix_auto_num_provide] when :extract then Mx[:segname_prefix_auto_num_extract] - else '_' #should not occur + else '_'*lv.to_i #should not occur end - if possible_seg_name =~/^[0-9]+?\.$/m #!~/[.,:-]+/ + if possible_seg_name =~/^[0-9]+?\.$/m #!~/[.,:-]+/ possible_seg_name=possible_seg_name. gsub(/\.$/,'') end - chosen_seg_name=if possible_seg_name =~/^[0-9]+$/m \ - and possible_seg_name.to_i <= heading_num_is.to_i + chosen_seg_name=if possible_seg_name =~/^[0-9]+[.]?$/m \ + and possible_seg_name.to_i <= heading_num_is.to_i \ + and lv == '1' prefix + leading_zeros_fixed_width_number(possible_seg_name) - elsif possible_seg_name =~/^[0-9][\d.,:-]*$/m + elsif possible_seg_name =~/^[0-9]+[.,:-]*$/m \ + and lv == '1' possible_seg_name=possible_seg_name. gsub(/(?:[:,-]|\W)/,'.'). gsub(/\.$/,'') prefix + possible_seg_name - else prefix + possible_seg_name.to_s + elsif possible_seg_name =~ + /^[0-9]+[.,:-][0-9]+[.,:-]*$/m \ + and lv == '2' + possible_seg_name=possible_seg_name. + gsub(/(?:[:,-]|\W)/,'.'). + gsub(/\.$/,'') + prefix + possible_seg_name + elsif possible_seg_name =~ + /^[0-9]+[.,:-][0-9]+[.,:-][0-9][\d.,:-]*$/m \ + and lv == '3' + possible_seg_name=possible_seg_name. + gsub(/(?:[:,-]|\W)/,'.'). + gsub(/\.$/,'') + prefix + possible_seg_name + else 'x'*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: #{chosen_seg_name}; 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'") exit end end @@ -380,7 +396,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,:extract) + auto_seg_name(possible_seg_name,heading_num_is,dob.lv,:extract) possible_seg_name=possible_seg_name. gsub(/(?:[:,-]|\W)/,'.'). gsub(/\.$/,'') @@ -405,7 +421,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,:auto) + auto_seg_name(art_filename_auto,heading_num_is,dob.lv,: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 5b2137e7..1c5c326e 100644 --- a/lib/sisu/v6/ao_numbering.rb +++ b/lib/sisu/v6/ao_numbering.rb @@ -301,7 +301,7 @@ module SiSU_AO_Numbering @tuned_file=@tuned_file.flatten end def leading_zeros_fixed_width_number(possible_seg_name) - if possible_seg_name =~/^([0-9]+?\.|[0-9]+)$/m #!~/[.,:-]+/ + if possible_seg_name =~/^([0-9]+?\.|[0-9]+)$/m #!~/[.,:-]+/ possible_seg_name=possible_seg_name. gsub(/\.$/,'') nl=possible_seg_name.to_s.length @@ -314,31 +314,47 @@ module SiSU_AO_Numbering possible_seg_name.to_s end end - def auto_seg_name(possible_seg_name,heading_num_is,type) + def auto_seg_name(possible_seg_name,heading_num_is,lv,type) prefix=case type - when :auto then Mx[:segname_prefix_auto_num_provide] + when :auto then Mx[:segname_prefix_auto_num_provide] when :extract then Mx[:segname_prefix_auto_num_extract] - else '_' #should not occur + else '_'*lv.to_i #should not occur end - if possible_seg_name =~/^[0-9]+?\.$/m #!~/[.,:-]+/ + if possible_seg_name =~/^[0-9]+?\.$/m #!~/[.,:-]+/ possible_seg_name=possible_seg_name. gsub(/\.$/,'') end - chosen_seg_name=if possible_seg_name =~/^[0-9]+$/m \ - and possible_seg_name.to_i <= heading_num_is.to_i + chosen_seg_name=if possible_seg_name =~/^[0-9]+[.]?$/m \ + and possible_seg_name.to_i <= heading_num_is.to_i \ + and lv == '1' prefix + leading_zeros_fixed_width_number(possible_seg_name) - elsif possible_seg_name =~/^[0-9][\d.,:-]*$/m + elsif possible_seg_name =~/^[0-9]+[.,:-]*$/m \ + and lv == '1' possible_seg_name=possible_seg_name. gsub(/(?:[:,-]|\W)/,'.'). gsub(/\.$/,'') prefix + possible_seg_name - else prefix + possible_seg_name.to_s + elsif possible_seg_name =~ + /^[0-9]+[.,:-][0-9]+[.,:-]*$/m \ + and lv == '2' + possible_seg_name=possible_seg_name. + gsub(/(?:[:,-]|\W)/,'.'). + gsub(/\.$/,'') + prefix + possible_seg_name + elsif possible_seg_name =~ + /^[0-9]+[.,:-][0-9]+[.,:-][0-9][\d.,:-]*$/m \ + and lv == '3' + possible_seg_name=possible_seg_name. + gsub(/(?:[:,-]|\W)/,'.'). + gsub(/\.$/,'') + prefix + possible_seg_name + else 'x'*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: #{chosen_seg_name}; 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'") exit end end @@ -380,7 +396,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,:extract) + auto_seg_name(possible_seg_name,heading_num_is,dob.lv,:extract) possible_seg_name=possible_seg_name. gsub(/(?:[:,-]|\W)/,'.'). gsub(/\.$/,'') @@ -405,7 +421,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,:auto) + auto_seg_name(art_filename_auto,heading_num_is,dob.lv,:auto) if @md.seg_names.is_a?(Array) \ and not @md.seg_names.include?(possible_seg_name) dob.name=possible_seg_name |