From 90c65af1050b7ef8027884fe24ce23c9511468c1 Mon Sep 17 00:00:00 2001 From: Ralph Amissah Date: Fri, 30 Apr 2010 23:16:28 -0400 Subject: param_identify_markup, identify version 2 markup --- lib/sisu/v2/dal_doc_str.rb | 4 +- lib/sisu/v2/dal_substitutions_and_insertions.rb | 2 +- lib/sisu/v2/param.rb | 33 +++++++------ lib/sisu/v2/param_identify_markup.rb | 61 +++++++++++++++++-------- 4 files changed, 64 insertions(+), 36 deletions(-) diff --git a/lib/sisu/v2/dal_doc_str.rb b/lib/sisu/v2/dal_doc_str.rb index dc9a55b7..46ae8d3c 100644 --- a/lib/sisu/v2/dal_doc_str.rb +++ b/lib/sisu/v2/dal_doc_str.rb @@ -728,7 +728,7 @@ module SiSU_document_structure_extract @dob end def structure_markup_normalize #needs a bit of thinking - dob=if @md.markup_version.to_f < 0.38 #%convert internal representation, consider making 0.38 structure default ([A-C1-6] instead of [1-9]), requires downstream changes + dob=if @md.markup_version.determined < 0.38 #%convert internal representation, consider making 0.38 structure default ([A-C1-6] instead of [1-9]), requires downstream changes @dob.gsub!(/^[456]~/,'!_') @dob.gsub!(/^3~(\S+)/,"#{Mx[:lv_o]}6:\\1#{Mx[:lv_c]}") @dob.gsub!(/^3~\s+/,"#{Mx[:lv_o]}6:#{Mx[:lv_c]}") @@ -756,7 +756,7 @@ module SiSU_document_structure_extract end end def structure_marks - t_o=if @md.markup_version.to_f < 0.38 + t_o=if @md.markup_version.determined < 0.38 @t_o.gsub!(/^1~(\S+)/,"#{Mx[:lv_o]}1:\\1#{Mx[:lv_c]}") @t_o.gsub!(/^1~\s+/,"#{Mx[:lv_o]}1:#{Mx[:lv_c]}") @t_o.gsub!(/^2~(\S+)/,"#{Mx[:lv_o]}2:\\1#{Mx[:lv_c]}") diff --git a/lib/sisu/v2/dal_substitutions_and_insertions.rb b/lib/sisu/v2/dal_substitutions_and_insertions.rb index c699a17c..e1326232 100644 --- a/lib/sisu/v2/dal_substitutions_and_insertions.rb +++ b/lib/sisu/v2/dal_substitutions_and_insertions.rb @@ -136,7 +136,7 @@ module SiSU_substitute_and_insert data_expand.compact! end data_expand.each do |para| - para=if @md.markup_version.to_f >= 0.38 + para=if @md.markup_version.determined >= 0.38 SiSU_document_structure_extract::Structure.new(@md,para).structure_markup_normalize else SiSU_document_structure_extract::Structure.new(@md,para).structure_marks diff --git a/lib/sisu/v2/param.rb b/lib/sisu/v2/param.rb index fc24501a..c2ee0737 100644 --- a/lib/sisu/v2/param.rb +++ b/lib/sisu/v2/param.rb @@ -870,16 +870,16 @@ module SiSU_Param fns_array=@data.dup skip unless fns_array # consider @markup_version=SiSU_Markup_type::Markup_identify.new(fns_array,@opt).markup_version? #% determine markup version - if fns_array[0] =~ /^(?:% )?(?:SiSU\s+(?:master\s+)?[\d.]*|sisu-[\d.]+)$/ #check markup and markup version - if fns_array[0] =~ /^(?:% )?(?:SiSU\s+(?:master\s+)?|sisu-)[\d.]+$/ #check markup and markup version - @markup_version_declared=fns_array[0].match(/^(?:% )?(?:SiSU\s+(?:master\s+)?|sisu-)([\d.]+)$/)[1] - sm_a,sm_b,sm_c=fns_array[0].match(/^(?:% )?(?:SiSU\s+(?:master\s+)?|sisu-)([0-9]+)?(?:\.([0-9]+))?(?:\.([0-9]+))?$/)[1..3] + if fns_array[0] =~ /^(?:%\s+)?(?:SiSU\s+(?:master\s+)?[\d.]*|sisu-[\d.]+)$/ #check markup and markup version + if fns_array[0] =~ /^(?:%\s+)?(?:SiSU\s+(?:master\s+)?|sisu-)[\d.]+$/ #check markup and markup version + @markup_version_declared=fns_array[0].match(/^(?:%\s+)?(?:SiSU\s+(?:master\s+)?|sisu-)([\d.]+)$/)[1] + sm_a,sm_b,sm_c=fns_array[0].match(/^(?:%\s+)?(?:SiSU\s+(?:master\s+)?|sisu-)([0-9]+)?(?:\.([0-9]+))?(?:\.([0-9]+))?$/)[1..3] sm_c ||=0 sv=(@cmd =~/[VMv]/) ? ("SiSU version (#{@sisu_version[:version]})") : '' s_a,s_b,s_c=@sisu_version[:version].match(/^([0-9]+)?(?:\.([0-9]+))?(?:\.([0-9]+))?(?:\-\S+)?$/)[1..3] - tell=(@markup_version_declared.to_f==@markup_version.to_f) \ - ? SiSU_Screen::Ansi.new(@cmd,"Markup version (#{@markup_version})",sv) \ - : SiSU_Screen::Ansi.new(@cmd,"Markup version declared (#{@markup_version_declared}), determined (#{@markup_version})",sv) + tell=(@markup_version_declared.to_f==@markup_version.determined) \ + ? SiSU_Screen::Ansi.new(@cmd,"Markup version (#{@markup_version.series} version #{@markup_version.determined})",sv) \ + : SiSU_Screen::Ansi.new(@cmd,"Markup version declared (#{@markup_version_declared}), determined (#{@markup_version.series} version #{@markup_version.determined})",sv) ok=if s_a.to_i > sm_a.to_i true elsif s_a.to_i == sm_a.to_i \ @@ -894,7 +894,7 @@ module SiSU_Param if ok tell.txt_green if @cmd =~/[vVM]/ else - tell=SiSU_Screen::Ansi.new(@cmd,"Warning: markup version determined (#{@markup_version}) or markup version declared (#{@markup_version_declared}) is newer than SiSU version (#{@sisu_version[:version]})") + tell=SiSU_Screen::Ansi.new(@cmd,"Warning: markup version determined (#{@markup_version.determined}) or markup version declared (#{@markup_version_declared}) is newer than SiSU version (#{@sisu_version[:version]})") tell.warn unless @cmd =~/q/ end else @@ -902,7 +902,12 @@ module SiSU_Param tell.warn if @cmd =~/[VM]/ end else - tell=SiSU_Screen::Ansi.new(@cmd,'SiSU filetype indicator not provided') + mv=if defined? @markup_version.determined and not @markup_version.determined.nil? + x=@markup_version.determined + "markup version determined #{x}" + else '' + end + tell=SiSU_Screen::Ansi.new(@cmd,'SiSU filetype indicator not provided',mv) tell.warn unless @cmd =~/q/ end @code_flag=false @@ -1017,12 +1022,12 @@ module SiSU_Param if para=~/^:?A~/ if @markup.nil? \ or @markup.empty? - @markup=@markup_version.to_s - elsif @markup !~/0\.38/; @markup=@markup.strip + "; #{@markup_version}" + @markup=@markup_version.determined.to_s + elsif @markup !~/0\.38/; @markup=@markup.strip + "; #{@markup_version.determined}" end end - if (para=~/^:?A~/ and @markup_version >= 0.38) \ - or (para=~/^1~/ and @markup_version < 0.38) + if (para=~/^:?A~/ and @markup_version.determined >= 0.38) \ + or (para=~/^1~/ and @markup_version.determined < 0.38) if @title.nil? @title=para[/^:?[A1]~\S*(.+)$/m,1] @html_title=@title.gsub(/(

|

|
|
)/,'') @@ -1130,7 +1135,7 @@ module SiSU_Param end @topic_register_array.sort! end - if @markup_version.to_f >= 0.38 #convert values in headers to internal representation + if @markup_version.determined >= 0.38 #convert values in headers to internal representation translated=[] translate_list=[@pagenew,@pagebreak,@num_top,@toc_lev_limit] translate_list.each do |t| diff --git a/lib/sisu/v2/param_identify_markup.rb b/lib/sisu/v2/param_identify_markup.rb index 0f0f40a0..97b6d888 100644 --- a/lib/sisu/v2/param_identify_markup.rb +++ b/lib/sisu/v2/param_identify_markup.rb @@ -60,85 +60,108 @@ =end module SiSU_Markup_type class Markup_identify - @@fns,@@version_determined,@@version_declared,@@declared_doc_type='','','','[text?]' - attr_accessor :version_determined,:version_declared,:declared_doc_type + @@version={} + @@fns,@@version[:determined],@@version[:declared],@@declared_doc_type='','','','[text?]' + attr_accessor :version,:declared_doc_type def initialize(content,opt) @cont,@opt=content,opt end def identify - @version_determined,@version_declared,@declared_doc_type=@@version_determined,@@version_declared,@@declared_doc_type + @version,@declared_doc_type=@@version,@@declared_doc_type if @opt.fns != @@fns if @cont[0] =~ /^(?:%\s+)?SiSU\s+(text|master|insert)\s+([0-9](?:\.[0-9]+){1,2})/ \ or @cont[0] =~ /^(?:%\s+)?sisu-([0-9](?:\.[0-9]+){1,2})/ - @declared_doc_type,@version_declared=$1,$2 + @declared_doc_type,@version[:declared]=$1,$2 elsif @cont[0] =~ /^(?:%\s+)?SiSU\s+([0-9](?:\.[0-9]+){1,2})/ \ or @cont[0] =~ /^(?:%\s+)?sisu-([0-9](?:\.[0-9]+){1,2})/ - @version_declared=$1 + @version[:declared]=$1 end - @flag_66,@flag_57,@flag_38=false,false,false + @flag_2_0,@flag_66,@flag_57,@flag_38=false,false,false,false @cont.each_with_index do |y,i| if y =~/^(?:0\{?~links?|@links?:)\s/ links=unless y =~/\{.+?\}\S+/; oldlinks=' (pre 0.20.4 header links)' else ' (post 0.20.4 header links)' end end + if y =~/^@make:|^@classify|^\s\s?:\S+?:\s+\S/ + version=2.0.to_f + @version[:determined]=version + @flag_2_0=true + break + end unless @flag_38 if y =~/^:?A~/ - version=0.38 - @version_determined=version + version=0.38.to_f + @version[:determined]=version @flag_38=true end end if @flag_38 if @flag_69 \ or y =~/^=\{.+?\}\s*$/ - version=0.69 + version=0.69.to_f @flag_69=true - @version_determined=version + @version[:determined]=version break end if @flag_66 \ or y =~/[:;]\{.+?\}[:;][a-z+]/ - version='0.66' + version=0.66.to_f @flag_66=true - @version_determined=version + @version[:determined]=version break end end end @flag_57,@flag_38=false,false - unless @flag_66 or @flag_69 + unless @flag_2_0 \ + or @flag_66 \ + or @flag_69 @cont.each_with_index do |y,i| if @flag_57 \ or y =~/^:?A~\?? @title/ - @version_determined=0.57 + @version[:determined]=0.57.to_f @flag_57=true break end if @flag_38 \ or y =~/^:?A~/ - @version_determined=0.38 + @version[:determined]=0.38.to_f @flag_38=true break if i >= 200 if y =~ /(?:~{\*+|~\[\*|~\[\+)\s/ - @version_determined=0.42 #0.38 can safely be treated as 0.42 + @version[:determined]=0.42 #0.38 can safely be treated as 0.42 break end end if y =~/^0~/ \ and not @flag_38 - @version_determined=0.16 + @version[:determined]=0.16.to_f break end end end @@fns=@opt.fns - @@version_determined,@@version_declared,@@declared_doc_type=@version_determined,@version_declared,@declared_doc_type + @@version,@@declared_doc_type=@version,@declared_doc_type end self end def markup_version? - identify.version_determined.to_f + def determined + identify.version[:determined].to_f + end + def series + s=case identify.version[:determined].to_s + when /^[01]\./; '1.0' + when /^[2]\./; '2.0' + else '2.0' + end + "series #{s}" + end + def declared + identify.version[:declared].to_f + end + self end end end -- cgit v1.2.3