]> git.pld-linux.org Git - packages/amrita.git/blob - amrita-xml-fubar.patch
- added
[packages/amrita.git] / amrita-xml-fubar.patch
1 diff -ur o-amrita-1.0.2/lib/amrita/xml.rb amrita-1.0.2/lib/amrita/xml.rb
2 --- o-amrita-1.0.2/lib/amrita/xml.rb    2005-04-01 00:58:59.718350000 -0700
3 +++ amrita-1.0.2/lib/amrita/xml.rb      2005-04-01 01:57:46.057114611 -0700
4 @@ -3,13 +3,16 @@
5  require "rexml/streamlistener"
6  
7  module Amrita
8 +  
9    has_uconv = true
10 +  
11    begin
12      require 'uconv'
13    rescue LoadError
14      has_uconv = false
15    end
16 -  if has_uconv 
17 +  
18 +  if has_uconv
19      case $KCODE
20      when "EUC"
21        def convert(s)
22 @@ -34,12 +37,12 @@
23      include Amrita
24      include REXML::StreamListener
25  
26 -
27 -    def initialize
28 +    def initialize(&block)
29        @stack = [ Null ]
30 +                       @block = block
31      end
32  
33 -    def push(element)      
34 +    def push(element)
35        @stack.unshift element
36      end
37  
38 @@ -57,10 +60,11 @@
39      end
40  
41      def tag_start(name, attrs)
42 -      a = attrs.collect do |key, val|
43 +      a = attrs.collect { |key, val|
44          Attr.new(key, convert(val))
45 -      end
46 -      push e(name, *a)
47 +      }
48 +                       t = @block.call(e(name, *a))
49 +      push t
50        push Null
51      end
52  
53 @@ -83,23 +87,25 @@
54      end
55  
56      def doctype(name, pub_sys, long_name, uri)
57 -      s = SpecialElement.new('!',
58 -                             %Q[DOCTYPE #{name} #{pub_sys} #{long_name} #{uri}])
59 +      s = SpecialElement.new('!', %Q[DOCTYPE #{name} #{pub_sys} #{long_name} #{uri}])
60        push(pop + s)
61      end
62    end
63  
64    module XMLParser
65      def XMLParser.parse_text(text, fname="", lno=0, dummy=nil, &block)
66 -      l = Listener.new(&block) 
67 +      l = Listener.new(&block)
68        REXML::Document.parse_stream(text, l)
69        l.result
70      end
71  
72      def XMLParser.parse_file(fname, dummy=nil, &block)
73 -      l = Listener.new(&block) 
74 -      REXML::Document.parse_stream(File.new(fname), l)
75 +      l = Listener.new(&block)
76 +      open(fname) { |fh|
77 +        REXML::Document.parse_stream(fh, l)
78 +      }
79        l.result
80      end
81    end
82 +  
83  end
This page took 0.160991 seconds and 3 git commands to generate.