#!/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: Conversion script from kdissert .kdi to sisu markup .sst * 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 =end require 'rexml/document' include REXML argv=$* @sisu,@sisu_base=Array.new,Array.new unless argv.empty? argv.each do |kdi| if kdi =~/\.kdi$/ system("cp #{kdi} #{kdi}.tar.gz && tar xzvf #{kdi}.tar.gz && rm #{kdi}.tar.gz") file=File.new("maindoc.xml") #system("cp #{kdi} /tmp/. && cd /tmp && tar xzvf /tmp/#{kdi} && cd -") #file=File.new("/tmp/maindoc.xml") @output=File.new("#{kdi}.sst",'w') doc=Document.new(file) root=doc.root @el=Array.new root.each do |x| end root.each_with_index do |content,idx| if root.elements["item[#{idx}]/summary"] id,ma,ch=nil,nil,Array.new if root.elements["item[#{idx}]/id"] id=root.elements["item[#{idx}]/id"].text.to_i end if root.elements["item[#{idx}]/parent"] ma=root.elements["item[#{idx}]/parent"].text.to_s end if root.elements["item[#{idx}]/child"] #problem only get one child, even where several root.get_elements("item[#{idx}]/child").each do |x| ch << x.text end end if root.elements["item[#{idx}]/summary"] sum=root.elements["item[#{idx}]/summary"].text.to_s.strip end if root.elements["item[#{idx}]/text"] txt=root.elements["item[#{idx}]/text"].text.to_s.strip end @el[id]=Hash.new @el[id][:id]=id @el[id][:ma]=ma @el[id][:ch]=ch @el[id][:sum]=sum @el[id][:txt]=txt if ma == '-1' @el[id][:lev]=':A' @top=id end end end @doc=Array.new @title=@el[@top][:sum] p @el[@top][:sum] @doc << ':A~ ' + @el[@top][:sum] @el[@top][:ch].each do |x| @el[x.to_i][:lev]='1' @doc << '1~ ' + @el[x.to_i][:sum] @doc << @el[x.to_i][:txt] @el[x.to_i][:ch].each do |y| @el[y.to_i][:lev]='2' @doc << '2~ ' + @el[y.to_i][:sum] @doc << @el[y.to_i][:txt] @el[y.to_i][:ch].each do |z| @el[z.to_i][:lev]='3' @doc << '3~ ' + @el[z.to_i][:sum] @doc << @el[z.to_i][:txt] @el[z.to_i][:ch].each do |za| #unsupported... consder @el[za.to_i][:lev]='4' @doc << '!_ ' + @el[za.to_i][:sum] @doc << @el[za.to_i][:txt] end end end end #@el.each_with_index do |x,i| # if x: puts "#{i}: lev: #{x[:lev]}, id: #{x[:id]}, ma: #{x[:ma]}, ch: #{x[:ch].join(',')}" # end #end # regexs strip most kdissert markup, and provide minimal info for sisu markup --> @doc.each do |c,idx| c.gsub!(/<\/summary>/,'') c.gsub!(/.+?\n|<\/body>|<\/html>|

/m,'') c.gsub!(/<\/p>/,"\n") c.gsub!(/(.+?)<\/span>/," *{ \\1 }* ") c.gsub!(/(.+?)<\/span>/," _{ \\1 }_ ") c.gsub!(/(.+?)<\/span>/," /{ \\1 }/ ") c.gsub!(/