From 6d345eaef2cf02fd5b4a97cc87513ce0aa081d44 Mon Sep 17 00:00:00 2001 From: Ralph Amissah Date: Thu, 14 Feb 2008 02:55:46 +0000 Subject: enable identification of new markup --- lib/sisu/v0/help.rb | 11 ++-- lib/sisu/v0/sst_identify_markup.rb | 126 ++++++++++++++++++++++++------------- 2 files changed, 88 insertions(+), 49 deletions(-) (limited to 'lib') diff --git a/lib/sisu/v0/help.rb b/lib/sisu/v0/help.rb index c4037431..35448cd6 100644 --- a/lib/sisu/v0/help.rb +++ b/lib/sisu/v0/help.rb @@ -1548,14 +1548,17 @@ WOK sisu --help header sisu --help structure [sisu --help heading] - for older standard markup: - sisu --help example37 + to check markup version in file: + sisu --identify [filename].sst + + for brief descriptive summary of markup history + sisu --query-history + or if for a particular version + sisu --query-0.38 for markup: sisu --help example38 - sisu-0.38 is provided with 0.38 markup samples - sample marked up documents are provided in directory: #{@cX.green}sisu-examples/sample/document_samples_sisu_markup/#{@cX.off} and online diff --git a/lib/sisu/v0/sst_identify_markup.rb b/lib/sisu/v0/sst_identify_markup.rb index 403ad329..0f60b916 100644 --- a/lib/sisu/v0/sst_identify_markup.rb +++ b/lib/sisu/v0/sst_identify_markup.rb @@ -113,7 +113,7 @@ WOK or cont[0] =~ /^(?:%\s+)?sisu-([0-9](?:\.[0-9]+){1,2})/ @declared_markup=$1 end - @flag_57,@flag_38=false,false + @flat_65,@flag_57,@flag_38=false,false,false cont.each_with_index do |y,i| if y =~/^(?:0\{?~links?|@links?:)\s/ \ and f =~/(?:\.sst|\.ssm|\.ssi|\.s[123])/ @@ -121,55 +121,81 @@ WOK else ' (post 0.20.4 header links)' end end - if @flag_57 \ - or y =~/^:?A~\?? @title/ - version='0.57' - markup=Markup_inform.new(version,'0.57' + oldlinks,@declared_markup,@declared_type) - @flag_57=true - break + unless @flag_38 + if (y =~/^:?A~/ and f =~/(?:\.sst|\.ssm|\.ssi)/) + version='0.38' + markup=Markup_inform.new(version,'0.38' + oldlinks,@declared_markup,@declared_type) + @flag_38=true + end end - if @flag_38 \ - or (y =~/^:?A~/ and f =~/(?:\.sst|\.ssm|\.ssi)/) - version='0.38' - markup=Markup_inform.new(version,'0.38' + oldlinks,@declared_markup,@declared_type) - @flag_38=true - break if i >= 200 - if y =~ /(?:~{\*+|~\[\*|~\[\+)\s/ - version='0.42' - markup=Markup_inform.new(version,'0.42' + oldlinks,@declared_markup,@declared_type) + if @flag_38 + if @flag_65 \ + or y =~/[a-z+][:;]\{.+?\}[:;][a-z+]/ + version='0.65' + markup=Markup_inform.new(version,'0.65' + oldlinks,@declared_markup,@declared_type) + @flag_65=true break end end - if (y =~/^1~/ and f =~/(?:\.sst|\.ssm|\.ssi)/) \ - and not @flag_38 - version='0.37' - markup=Markup_inform.new(version,'0.37 is substantially 0.16 - 0.36 markup with new file-extension' + oldlinks,@declared_markup,@declared_type) - break - end - if y =~/^1~/ \ - and f =~/\.([rs])([123])/ \ - and not @flag_38 - t,n=$1,$2 - version='0.16' - instruct=if t =~/r/ - " (change file extension from .#{t}#{n} to .ssm)" - else " (change file extension from .#{t}#{n} to .sst)" + end + unless @flag_65 + cont.each_with_index do |y,i| + if y =~/^(?:0\{?~links?|@links?:)\s/ \ + and f =~/(?:\.sst|\.ssm|\.ssi|\.s[123])/ + links=unless y =~/\{.+?\}\S+/; oldlinks=' (pre 0.20.4 header links)' + else ' (post 0.20.4 header links)' + end end - markup=Markup_inform.new(version,'0.16 - 0.36' + instruct + links,@declared_markup,@declared_type) - break - end - if y =~/^0\{~/ \ - and not @flag_38 - version='0.1' - markup=Markup_inform.new(version,'0.1 - 0.15',@declared_markup,@declared_type) - break - end - if y =~/^0\{{3}/ \ - and not @flag_38 - markup=Markup_inform.new('circa. 1997','old, check date',@declared_markup,@declared_type) - break + if @flag_57 \ + or (y =~/^:?A~\?? @title/ and f =~/(?:\.sst|\.ssm|\.ssi)/) + version='0.57' + markup=Markup_inform.new(version,'0.57' + oldlinks,@declared_markup,@declared_type) + @flag_57=true + break + end + if @flag_38 \ + or (y =~/^:?A~/ and f =~/(?:\.sst|\.ssm|\.ssi)/) + version='0.38' + markup=Markup_inform.new(version,'0.38' + oldlinks,@declared_markup,@declared_type) + @flag_38=true + break if i >= 200 + if y =~ /(?:~{\*+|~\[\*|~\[\+)\s/ + version='0.42' + markup=Markup_inform.new(version,'0.42' + oldlinks,@declared_markup,@declared_type) + break + end + end + if (y =~/^1~/ and f =~/(?:\.sst|\.ssm|\.ssi)/) \ + and not @flag_38 + version='0.37' + markup=Markup_inform.new(version,'0.37 is substantially 0.16 - 0.36 markup with new file-extension' + oldlinks,@declared_markup,@declared_type) + break + end + if y =~/^1~/ \ + and f =~/\.([rs])([123])/ \ + and not @flag_38 + t,n=$1,$2 + version='0.16' + instruct=if t =~/r/ + " (change file extension from .#{t}#{n} to .ssm)" + else " (change file extension from .#{t}#{n} to .sst)" + end + markup=Markup_inform.new(version,'0.16 - 0.36' + instruct + links,@declared_markup,@declared_type) + break + end + if y =~/^0\{~/ \ + and not @flag_38 + version='0.1' + markup=Markup_inform.new(version,'0.1 - 0.15',@declared_markup,@declared_type) + break + end + if y =~/^0\{{3}/ \ + and not @flag_38 + markup=Markup_inform.new('circa. 1997','old, check date',@declared_markup,@declared_type) + break + end + markup='Not a recognised file type ' end - markup='Not a recognised file type ' end markup else Markup_history.new(@opt).help_query @@ -218,6 +244,14 @@ WOK def initialize(opt) @opt=opt end + def sisu_0_65 + < Date: Thu, 14 Feb 2008 03:00:29 +0000 Subject: for now render new markup syntax inactive --- lib/sisu/v0/dal.rb | 1 + lib/sisu/v0/dal_syntax.rb | 1 + lib/sisu/v0/shared_sem.rb | 110 +++++++++++++++++++++++++++++++++++++++ lib/sisu/v0/sst_to_s_xml_dom.rb | 2 + lib/sisu/v0/sst_to_s_xml_node.rb | 2 + lib/sisu/v0/sst_to_s_xml_sax.rb | 2 + 6 files changed, 118 insertions(+) create mode 100644 lib/sisu/v0/shared_sem.rb (limited to 'lib') diff --git a/lib/sisu/v0/dal.rb b/lib/sisu/v0/dal.rb index e31dba69..5edc77be 100644 --- a/lib/sisu/v0/dal.rb +++ b/lib/sisu/v0/dal.rb @@ -65,6 +65,7 @@ module SiSU_DAL require "#{SiSU_lib}/dal_syntax" require "#{SiSU_lib}/dal_doc_str" require "#{SiSU_lib}/i18n" + require "#{SiSU_lib}/shared_sem" include SiSU_Env include SiSU_Param include SiSU_Viz diff --git a/lib/sisu/v0/dal_syntax.rb b/lib/sisu/v0/dal_syntax.rb index 4224973d..a6c48af0 100644 --- a/lib/sisu/v0/dal_syntax.rb +++ b/lib/sisu/v0/dal_syntax.rb @@ -109,6 +109,7 @@ module Syntax end def pre(line) line=line.dup + line=SiSU_sem::Tags.new(line).rm.all if line =~/\{(?:t|table)(?:~h)?\s*c?[\d; ]*\}/; line.gsub!(/(\n)/,';;\1') #markup for alternative tables end line diff --git a/lib/sisu/v0/shared_sem.rb b/lib/sisu/v0/shared_sem.rb new file mode 100644 index 00000000..da989999 --- /dev/null +++ b/lib/sisu/v0/shared_sem.rb @@ -0,0 +1,110 @@ +=begin + + * Name: SiSU + + * Description: a framework for document structuring, publishing and search + Sematic tags + + * Author: Ralph Amissah + + * Copyright: (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, + 2007, + 2008 Ralph Amissah All Rights Reserved. + + * License: GPL 3 or later: + + SiSU, a framework for document structuring, publishing and search + + Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, + 2007 Ralph Amissah + + This program is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by the Free + Software Foundation, either version 3 of the License, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + more details. + + You should have received a copy of the GNU General Public License along with + this program. If not, see . + + If you have Internet connection, the latest version of the GPL should be + available at these locations: + + + + + + + + * SiSU uses: + * Standard SiSU markup syntax, + * Standard SiSU meta-markup syntax, and the + * Standard SiSU object citation numbering and system + + * Hompages: + + + + * Download: + + + * Ralph Amissah + + + + ** Description: system environment, resource control and configuration details + +=end +module SiSU_sem + class Tags + def initialize(para) + @para=para + end + def rgx + def each_csc + /[a-z]+[:;]\{|\}[:;][a-z]+/ + end + def each_c + /[a-z]+:\{|\}:[a-z]+/ + end + def each_sc + /[a-z]+;\{|\};[a-z]+/ + end + def pair_csc + /(([a-z]+)(?::\{(.+?)\}:\2|;\{(.+?)\};\2))/ + #/(([a-z]+);\{(.+?)\};\2)/ + #/(([a-z]+)([:;])\{(.+?)\}\3\2)/ + end + def pair_c + /(([a-z]+):\{(.+?)\}:\2)/ + end + def pair_sc + /(([a-z]+);\{.+?\};\2)/ + end + def whole_csc_ae + /(([a-z]+)(?::\[(.+?)\]:\2|;\[(.+?)\];\2))/ + end + self + end + def rm + def sem_marker_parts + @para.gsub!(rgx.each_csc,'') + @para + end + def sem_marker_added_extra_parts + @para.gsub!(rgx.whole_csc_ae,'') + @para + end + def all + sem_marker_parts + sem_marker_added_extra_parts + end + self + end + end +end +__END__ diff --git a/lib/sisu/v0/sst_to_s_xml_dom.rb b/lib/sisu/v0/sst_to_s_xml_dom.rb index 355cef2b..a1c81532 100644 --- a/lib/sisu/v0/sst_to_s_xml_dom.rb +++ b/lib/sisu/v0/sst_to_s_xml_dom.rb @@ -66,6 +66,7 @@ module SiSU_simple_xml_model_dom include SiSU_Env require "#{SiSU_lib}/dal_doc_str" require "#{SiSU_lib}/shared_xml" + require "#{SiSU_lib}/shared_sem" require "#{SiSU_lib}/xml_format" include SiSU_XML_format include SiSU_XML_munge @@ -355,6 +356,7 @@ WOK (0..6).each { |x| @cont[x]=@level[x]=false } (4..6).each { |x| @xml_contents_close[x]='' } data.each do |para| + para=SiSU_sem::Tags.new(para).rm.all wordlist=para.scan(/\S+|\n/) #\n needed for tables, check though added 2005w17 para=tidywords(wordlist).join(' ').strip para.gsub!(/<[-~]#>/,'') diff --git a/lib/sisu/v0/sst_to_s_xml_node.rb b/lib/sisu/v0/sst_to_s_xml_node.rb index 346b48fa..b6d7c9b2 100644 --- a/lib/sisu/v0/sst_to_s_xml_node.rb +++ b/lib/sisu/v0/sst_to_s_xml_node.rb @@ -67,6 +67,7 @@ module SiSU_simple_xml_model_node require "#{SiSU_lib}/dal_syntax" require "#{SiSU_lib}/dal_doc_str" require "#{SiSU_lib}/shared_xml" + require "#{SiSU_lib}/shared_sem" require "#{SiSU_lib}/xml_format" include SiSU_XML_format include SiSU_XML_munge @@ -398,6 +399,7 @@ WOK @data=@data.join.split("\n\n") @data=SiSU_document_structure::Code.new(@md,@data).code @data.each do |para| + para=SiSU_sem::Tags.new(para).rm.all data << SiSU_document_structure::Structure.new(@md,para).structure end data=Syntax::Markup.new(@md,data).songsheet diff --git a/lib/sisu/v0/sst_to_s_xml_sax.rb b/lib/sisu/v0/sst_to_s_xml_sax.rb index 0528bc09..5e4eb5ea 100644 --- a/lib/sisu/v0/sst_to_s_xml_sax.rb +++ b/lib/sisu/v0/sst_to_s_xml_sax.rb @@ -66,6 +66,7 @@ module SiSU_simple_xml_model_sax include SiSU_Env require "#{SiSU_lib}/dal_doc_str" require "#{SiSU_lib}/shared_xml" + require "#{SiSU_lib}/shared_sem" require "#{SiSU_lib}/xml_format" include SiSU_XML_format include SiSU_XML_munge @@ -261,6 +262,7 @@ WOK data << SiSU_document_structure::Structure.new(@md,para).structure end data.each do |para| + para=SiSU_sem::Tags.new(para).rm.all para=@trans.markup_light(para) @trans.char_enc.utf8(para) if @sys.locale =~/utf-?8/i #% utf8 if para =~/\A(?:@|0~)(\S+?):?\s+(.+?)\Z/m # for headers -- cgit v1.2.3