rexleparser 0.2.2 → 0.2.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. data/lib/rexleparser.rb +49 -36
  2. metadata +2 -2
data/lib/rexleparser.rb CHANGED
@@ -5,8 +5,7 @@
5
5
 
6
6
  class RexleParser
7
7
 
8
- def initialize(s)
9
- super()
8
+ def initialize(s)
10
9
  @a = scan_element(s.sub(/<\?[^>]+>/,'').split(//))
11
10
  end
12
11
 
@@ -23,55 +22,69 @@ class RexleParser
23
22
  if a.length > 1 then
24
23
  a.shift
25
24
 
26
- name = ''
27
- name << a.shift
28
- name << a.shift while a[0] != ' ' and a[0] != '>' and a[0] != '/'
25
+ # CDATA ?
26
+ if a[0..1].join == '![' then
29
27
 
30
- if name then
28
+ name = '!['
29
+ 8.times{ a.shift }
30
+ value = ''
31
31
 
32
- # find the closing tag
33
- i = a.index('>')
34
- raw_values = ''
32
+ value << a.shift until a[0..2].join == ']]>' or a.length <= 1
33
+ a.slice!(0,3)
34
+ element = [name, value, {}]
35
+ else
35
36
 
36
- # is it a self closing tag?
37
- if a[i-1] == '/' then
38
- raw_values << a.shift until a[0] == '/'
39
- a.shift until a[0] == '<' or a.length < 1
40
- raw_values.strip!
37
+ name = ''
38
+ name << a.shift
39
+ name << a.shift while a[0] != ' ' and a[0] != '>' and a[0] != '/'
41
40
 
42
- attributes = get_attributes(raw_values) if raw_values.length > 0
43
- element = [name, '', attributes]
44
- else
41
+ if name then
45
42
 
46
- raw_values << a.shift until a[0] == '<'
47
- value, attributes = get_value_and_attributes(raw_values) if raw_values.length > 0
43
+ # find the closing tag
44
+ i = a.index('>')
45
+ raw_values = ''
48
46
 
49
- element = [name, value, attributes]
50
-
51
- tag = a[0, name.length + 3].join
47
+ # is it a self closing tag?
48
+ if a[i-1] == '/' then
49
+ raw_values << a.shift until a[0] == '/'
50
+ a.shift until a[0] == '<' or a.length < 1
51
+ raw_values.strip!
52
52
 
53
- if a.length > 0 then
53
+ attributes = get_attributes(raw_values) if raw_values.length > 0
54
+ element = [name, '', attributes]
55
+ else
54
56
 
55
- children = true
56
- children = false if tag == "</%s>" % name
57
+ raw_values << a.shift until a[0] == '<'
58
+ value, attributes = get_value_and_attributes(raw_values) if raw_values.length > 0
57
59
 
58
- if children == true then
60
+ element = [name, value, attributes]
61
+
62
+ tag = a[0, name.length + 3].join
59
63
 
60
- (r = scan_element(a); element << r if r) until (a[0, name.length + 3].join == "</%s>" % [name]) or a.length < 2
61
- a.slice!(0, name.length + 3) if a[0, name.length + 3].join == "</%s>" % name
62
- a.shift until a[0] == '<' or a.length <= 1
63
- else
64
- #check for its end tag
65
- a.slice!(0, name.length + 3) if a[0, name.length + 3].join == "</%s>" % name
66
- a.shift until a[0] == '<' or a.length <= 1
64
+ if a.length > 0 then
65
+
66
+ children = true
67
+ children = false if tag == "</%s>" % name
68
+
69
+ if children == true then
70
+
71
+ (r = scan_element(a); element << r if r) until (a[0, name.length + 3].join == "</%s>" % [name]) or a.length < 2
72
+ a.slice!(0, name.length + 3) if a[0, name.length + 3].join == "</%s>" % name
73
+ a.shift until a[0] == '<' or a.length <= 1
74
+ else
75
+ #check for its end tag
76
+ a.slice!(0, name.length + 3) if a[0, name.length + 3].join == "</%s>" % name
77
+ a.shift until a[0] == '<' or a.length <= 1
78
+ end
67
79
  end
80
+
68
81
  end
69
-
70
- end
71
82
 
72
- element
83
+ return element
73
84
 
85
+ end
74
86
  end
87
+
75
88
  end
76
89
  end
77
90
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rexleparser
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.2
4
+ version: 0.2.3
5
5
  platform: ruby
6
6
  authors: []
7
7
 
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2010-12-13 00:00:00 +00:00
12
+ date: 2011-01-11 00:00:00 +00:00
13
13
  default_executable:
14
14
  dependencies: []
15
15