# encoding: utf-8
=begin
* Name: SiSU
* Description: a framework for document structuring, publishing and search
* Author: Ralph Amissah
* Copyright: (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
2007, 2008, 2009, 2010, 2011, 2012, 2013 Ralph Amissah, All Rights Reserved.
* License: GPL 3 or later:
SiSU, a framework for document structuring, publishing and search
Copyright (C) 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:
* Git
* Ralph Amissah
** 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
=end
module SiSU_Markup
class MarkupInform
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
MarkupHistory.new(@version).query
end
end
class MarkupIdentify
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=MarkupInform.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=MarkupInform.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=MarkupInform.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=MarkupInform.new(version,'0.1 - 0.15',@declared_markup,@declared_type)
break
end
if y =~/^0\{{3}/ \
and not @flag_38
markup=MarkupInform.new('circa. 1997','old, check date',@declared_markup,@declared_type)
break
end
markup='Not a recognised file type '
end
end
markup
else MarkupHistory.new(@opt).help_query
end
end
def determine_markup_version
if @opt.fns.nil? \
or @opt.fns.empty?
MarkupHistory.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
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 %{"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
(defined? markup.version) \
? markup.version
: 'markup type/version not determined'
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 MarkupHistory
def initialize(opt)
@opt=opt
end
def sisu_3_0
<
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::MarkupIdentify.new(x).markup_version?
end