rexleparser 0.5.0 → 0.5.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 4fd9dcc1abbf7f2b61bd3d2f86d4e304d14b7356
4
- data.tar.gz: ded2e477c2d4f6a634d33fe89a598946366ee9ee
3
+ metadata.gz: 184b302c376712daab6a0df650cfe03ac5a40c4d
4
+ data.tar.gz: 691646e7927e878c6341febc8c18406093654fda
5
5
  SHA512:
6
- metadata.gz: 5bf24ad6b143d2e89cf8b25b2352b89df9246ed97c59cb48e14b0231348a7750619e9fe3cfc0894220c4f1a980237be3aa5635f704ff84bafb368df102fead72
7
- data.tar.gz: 70209b2013bafa24af4667d76647e413caed13b8c66b0fdd8d27ea71d032328ad850e44ac027493bc26029d9602d5a3fdfc2d0082ed3215cdba5e54459281eb5
6
+ metadata.gz: 811abaa767db4514dc6ba1da8a5dd4420d1fbbef17ee2bfa6c0842c2152a13f9a7fa090d8189403a32585923ae800bad6d43985df1c6a55e1d7d120abcb9df6e
7
+ data.tar.gz: caa1b074ec6de75c8ad087808c830889e149a4e543398a2cedcf9d0c2f4d92d276291d86b503b774550db65f53335f43bdec1263298e49aaec724af54e74c3e6
checksums.yaml.gz.sig CHANGED
Binary file
data/lib/rexleparser.rb CHANGED
@@ -14,8 +14,8 @@ class RexleParser
14
14
  @instructions = s.scan(/<\?([\w-]+) ([^>]+)\?>/)
15
15
  @doctype = s.slice!(/<!DOCTYPE html>\n?/)
16
16
 
17
- s2 = s.gsub('<![CDATA[','<!cdata>').gsub(']]>','</!cdata>')
18
- @to_a = reverse(parse(s2.strip.gsub(/<\?[^>]+>/,'').reverse))
17
+ s2 = s.gsub('<![CDATA[','<!--').gsub(']]>','-->')
18
+ @to_a = reverse(parse_node(s2.strip.gsub(/<\?[^>]+>/,'').reverse))
19
19
 
20
20
  end
21
21
 
@@ -24,7 +24,7 @@ class RexleParser
24
24
 
25
25
 
26
26
  def scan_next(r, tagname)
27
-
27
+
28
28
  j = tagname
29
29
 
30
30
  if (r =~ /^>/) == 0 then
@@ -48,6 +48,11 @@ class RexleParser
48
48
  # broken tag found
49
49
  broken_tag = tag
50
50
  return [:child, [nil, [], broken_tag]] if broken_tag
51
+
52
+ elsif tag[/^>--(.*)--!</] then
53
+
54
+ # it's a comment tag
55
+ return [:child, $1]
51
56
  else
52
57
 
53
58
  text, tag = tag.sub('>',';tg&').split(/>/,2)
@@ -70,14 +75,17 @@ class RexleParser
70
75
  end
71
76
  end
72
77
 
73
- def parse(r, j=nil)
78
+ def parse_node(r, j=nil)
79
+
80
+ return unless r.length > 0
74
81
 
75
82
  tag = r.slice!(/^>[^<]+</) if (r =~ /^>[^<]+</) == 0
76
-
77
- if tag[0,3] == '>--' then
83
+
84
+ if tag and tag[0,3] == '>--' then
78
85
 
79
86
  i = r =~ /<--/
80
87
  tag += r.slice!(0,i+5)
88
+
81
89
  # it's a comment tag
82
90
  tagname = '-!'
83
91
  return [">#{tagname}<", [tag[/>--(.*)--!</,1]], ">#{tagname}/<"]
@@ -95,15 +103,18 @@ class RexleParser
95
103
  until end_tag do
96
104
 
97
105
  key, res = scan_next r, tagname
98
-
106
+
99
107
  case key
100
108
  when :end_tag
101
109
  end_tag = res
102
- return [start_tag, children, end_tag]
110
+ r2 = [start_tag, children, end_tag]
111
+ end_tag = nil
112
+
113
+ return r2
103
114
  when :child
104
115
  children << res
105
116
  when :newnode
106
- children << parse(r, tagname)
117
+ children << parse_node(r, tagname)
107
118
  end
108
119
  end
109
120
 
@@ -127,6 +138,7 @@ class RexleParser
127
138
 
128
139
  def reverse(raw_obj)
129
140
 
141
+ return unless raw_obj
130
142
  obj = raw_obj.clone
131
143
  return obj.reverse! if obj.is_a? String
132
144
 
data.tar.gz.sig CHANGED
Binary file
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.5.0
4
+ version: 0.5.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Robertson
metadata.gz.sig CHANGED
Binary file