=begin * Name: modify.rb * Author: Ralph Amissah * http://www.jus.uio.no/sisu * http://www.jus.uio.no/sisu/SiSU/download.html * Description: Conversion script from kdissert .kdi to sisu markup .ssm (master document) * 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_Kdissert require "#{SiSU_lib}/sysenv" class Convert require 'rexml/document' include REXML def initialize(opt) @opt=opt @sisu,@sisu_base=[],[] @ver=SiSU_Env::Info_version.new.get_version end def read kdissert_to_sisu end def sisu_head sisu_head=< #{kdi}.ssm") tell.green_hi_blue unless @opt.cmd =~/q/ system("cp #{kdi} /tmp/. && cd /tmp && tar xzvf /tmp/#{kdi} && cd -") file=File.new("/tmp/maindoc.xml") @output=File.new("#{kdi}.ssm",'w') doc=Document.new(file) root=doc.root @el=[] root.each do |x| end root.each_with_index do |content,idx| if root.elements["item[#{idx}]/summary"] id,ma,ch=nil,nil,[] 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]={ :id=>id,:ma=>ma,:ch=>ch,:sum=>sum,:txt=>txt } if ma == '-1' @el[id][:lev]=':A' @top=id end end end @doc=[] @title=@el[@top][:sum] puts @el[@top][:sum].inspect @doc << @el[@top][:txt] #% careful: hack to make it possible to modify sisu headers @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 # 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!(/