Sha256: d4020afebbdde03220a9116b9348d75d27ab7850842e235f5413c8cb4eeb1c99

Contents?: true

Size: 1.76 KB

Versions: 5

Compression:

Stored size: 1.76 KB

Contents

# Author::    Jerome Pouiller  <pouill_j@epita.fr>.
# Copyright:: Copyright (c) 2004, 2005 TTK team. All rights reserved.
# License::   LGPL
# $Id: Xml.rb 571 2005-04-13 14:41:22Z polrop $


require 'rexml/document'

module TTK

  module Dumpers

    class Xml < Dumper
      include Concrete


      def initialize ( *a, &b )
        super
	@doc = @root = REXML::Document.new
	@io.puts '<?xml version="1.0" encoding="iso-8859-1"?>'
      end


      def add_elt ( elt, hsh={} )
        @doc = @doc.add_element(REXML::Element.new(elt.xmlize))
        hsh.each do |k, v|
          @doc.add_attribute(k.xmlize, v.xmlize)
        end
        @doc
      end
      private :add_elt


      def new_node ( path )
        super
        add_elt(:node, :name => path.last.first)
      end
      protected :new_node


      def new_leaf ( path, node )
        super
        @doc.add_text(node.xmlize_text)
      end
      protected :new_leaf


      def up ( path )
        super
        @doc = @doc.parent unless @doc.parent.nil?
      end
      protected :up


      def close
        @root.write(@io, 0, false)
        @io.puts
        super
      end
      protected :close

    end # class Xml

  end # module Dumpers

end # module TTK



class String

  def xmlize
    count = -1
    ret = ''
    each_byte do |c|
      if count >= 80 then
        ret << "\\<br />" << c
        count = 0
      elsif c == ?\n then
        ret << '<br />'
        count = 0
      else
        ret << c
        count += 1
      end
    end
    ret
  end

  def xmlize_text
    ret = xmlize
    if ret =~ /^[\w.,;!?\/@~+=*-]*$/
      ret
    else
      REXML::CData.new(ret)
    end
  end

end # class String


class Object

  def xmlize
    to_s.xmlize
  end

  def xmlize_text
    to_s.xmlize_text
  end

end # class Object

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
ttk-0.1.576 lib/ttk/dumpers/Xml.rb
ttk-0.1.579 lib/ttk/dumpers/Xml.rb
ttk-0.1.580 lib/ttk/dumpers/Xml.rb
ttk-0.2.0 lib/ttk/dumpers/Xml.rb
ttk-0.2.1 lib/ttk/dumpers/Xml.rb