From 65477054fd798728bf186aa2938727ddddbe86a5 Mon Sep 17 00:00:00 2001 From: Ralph Amissah Date: Tue, 22 May 2007 02:06:46 +0100 Subject: Imported upstream version 0.52.7 --- lib/sisu/0.52/sst_identify_markup.rb | 322 +++++++++++++++++++++++++++++++++++ 1 file changed, 322 insertions(+) create mode 100644 lib/sisu/0.52/sst_identify_markup.rb (limited to 'lib/sisu/0.52/sst_identify_markup.rb') diff --git a/lib/sisu/0.52/sst_identify_markup.rb b/lib/sisu/0.52/sst_identify_markup.rb new file mode 100644 index 00000000..8dbca059 --- /dev/null +++ b/lib/sisu/0.52/sst_identify_markup.rb @@ -0,0 +1,322 @@ +=begin + * Name: modify.rb + * Author: Ralph Amissah + * http://www.jus.uio.no/sisu + * http://www.jus.uio.no/sisu/SiSU/download.html + + * Description: A conversion script for canned substitutions, + a fairly generic simple tool that can be used to store other canned conversions, + used here for altering SiSU markup + + * Copyright (C) 2004, 2006 Ralph Amissah + + * Packaged with: SiSU information Structuring Universe - Structured information, Serialized Units + * SiSU Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007 Ralph Amissah + + * License: GPL 2 or later + + Summary of GPL 2 + + 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 2 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, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + + If you have Internet connection, the latest version of the GPL should be + available at these locations: + http://www.fsf.org/licenses/gpl.html + http://www.gnu.org/copyleft/gpl.html + http://www.jus.uio.no/sisu/gpl2.fsf + + © Ralph Amissah 1997, current 2007. + All Rights Reserved. + + * Ralph Amissah: ralph@amissah.com + ralph.amissah@gmail.com +=end +module SiSU_Markup + class Markup_inform + attr_accessor :version + def initialize(version,message,declared_markup='',declared_type='') + @version,@message,@declared_markup,@declared_type=version,message,declared_markup,declared_type + end + def version + @version + end + def message + @message + end + def declared_version + @declared_markup + end + def declared_type + @declared_type + end + def history + Markup_history.new(@version).query + end + end + class Markup_identify + def initialize(opt) + @opt=opt + @description='This is a script attempts to identify the version of markup used in SiSU (and provides information on changes in markup)' + end + def help + print <= 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 + else Markup_history.new(@opt).help_query + end + end + def determine_markup_version + if @opt.fns.nil? or @opt.fns.empty?; Markup_history.new(@opt).help_identify + end + if File.exist?(@opt.fns) + if @opt.fns =~/\.(?:sst|ssm|ssi|s[123i]|r[123])/ + markup=identify #(@opt.fns) + if defined? markup.version + #if defined? markup and defined? markup.version + unless @opt.cmd =~/q/ + message=unless markup.declared_version.empty? + "#{@opt.fns}\n markup Type Declared as SiSU #{markup.declared_version} #{markup.declared_type}\n appears to be SiSU #{markup.version}" + else + "Markup Type Appears to be SiSU #{markup.version}\n in file #{@opt.fns}" + end + puts message + #puts markup.message + puts %{"sisu --query-#{markup.version}" for a brief description of markup type} + end + end + else puts 'file-type not recognised: ' + @opt.fns + end + else puts 'file not found: ' + @opt.fns + end + if defined? markup.version; markup.version + else 'markup type/version not determined' + end + end + def markup_version? + if @opt.fns.empty? + @opt.files.each do |fns| + @opt.fns=fns + determine_markup_version + end + else determine_markup_version + end + end + end + class Markup_history + def initialize(opt) + @opt=opt + end + def sisu_0_42 + < +f=$* +cf=f[0].to_s +f.shift +match_and_replace=[] +unless f.length > 0; f=Dir.glob("[a-z]*.ss?") #restricted to sisu type files, it need not be +end +puts "SiSU files:" +puts f +f.each do |x| + SiSU_Markup::Markup_identify.new(x).markup_version? +end -- cgit v1.2.3