#!/usr/bin/env ruby =begin * Name: modify.rb * Author: Ralph Amissah * http://www.jus.uio.no/sisu * http://www.jus.uio.no/sisu/SiSU/download * 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 Ralph Amissah * License: GPL 3 or later Summary of GPL 3 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, 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/gpl3.fsf © Ralph Amissah 1997, current 2006. All Rights Reserved. * Ralph Amissah: ralph@amissah.com ralph.amissah@gmail.com * Notes: configure rc in ~/.sisu/sisurc.yaml =end module SiSU_Modify class Convert_markup def initialize(cf,files) @cf,@files=cf,files @description="This is a script that contains canned text conversions for reuse" end def current_match_and_replace #Disable, edit manually #convert_pre_37_to_38_experimental end def message(text) response='' while response !~/yes/ print %{ #{text} to continue type "yes" [to exit type "no" or "quit"]: } response=File.new('/dev/tty').gets.strip exit if response =~/^(?:quit|no)$/ end end def help print < if @files and @files.length > 0 p @files mr=nil #%% changes to make m match, r replace --------------------------> if @cf =~/--help/: help else message("WARNING, proceed at your own risk,\npermanent changes requested for the above named files\n best that you check (manually) what this file is set to do\n conversions set are at the top of the file") mr=case @cf when /--convert|default/: current_match_and_replace when /--(?:(?:37)?to38|rad)/: convert_pre_37_to_38_experimental when /--(?:(?:38)?to37)/: convert_38_experimental_to_37 else help end end match_and_replace=mr #start_processing =/not used in this example/i end_processing =/END\s+OF\s+FILE/ @files.each do |i| @new,@matched,@flag_start,@flag_end,@empty1,@empty2=true,false,false,false,false,false o="#{i}.bk" #o is for old file=File.open(i,'r') cont=file.readlines file.close cont.each do |y| #p y #p y if y =~/^[1-6]~/ match_and_replace.each do |m,r| if y =~m if @new @new=false File.unlink(o) if File.exists?(o) #system("lv #{i} > #{o}") File.rename(i,o) File.unlink(i) if File.exists?(i) @file=File.new(i,'w') @matched=true break end end end end if @matched puts "match in #{i}" @flag_start=true cont.each do |y| if y =~end_processing: @flag_end=true end if @flag_start and not @flag_end match_and_replace.each do |m,r| if y =~m p m.to_s + ' -> ' + r puts "in: #{y}" y.gsub!(m,r) if m and r puts "out: #{y}" end end end #if y =~start_processing: @flag_start=true #end #if y =~m1 #end if y=~/^\s*$/: @empty1=true else @empty1=false end @file.puts y unless (@empty1==true and @empty2==true) if y=~/^\s*$/: @empty2=true else @empty2=false end #@file << y + "\n" end @file.close else puts "NO match in #{f}" end end else puts "this routine makes permanent changes to the contents of the files matched, as instructed within [no matches]" end end end end #%% files to match for this conversion set -------------------------> f=$* p $* cf=f[0].to_s f.shift match_and_replace=Array.new #unless cf and cf =~/--/ # puts < 0: f=Dir.glob("[a-z]*.ss?") #restricted to sisu type files, it need not be end #f=Dir.glob("{bin,conf,data,lib}/**/*.rb") #sisu development #f=Dir.glob("[^_]/**/*") #all files subdirectories beneath pwd except those starting with _ SiSU_Modify::Convert_markup.new(cf,f).conversion __END__