]> git.pld-linux.org Git - packages/amrita.git/blame - amrita-xml-fubar.patch
- added
[packages/amrita.git] / amrita-xml-fubar.patch
CommitLineData
b4036b9f 1diff -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.049567 seconds and 4 git commands to generate.