khrl 0.0.5 → 0.0.6
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.
- checksums.yaml +4 -4
- data/khrl.gemspec +2 -2
- data/lib/Test.rb +1 -0
- data/lib/test.xml +4 -1
- data/lib/xml/kxml.rb +1 -1
- data/lib/xml/xml_parser.rb +121 -114
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2fb9bdce15853d19d0c9a6089963fa287c2993b9
|
4
|
+
data.tar.gz: 0c2beb89141ea5243ccfd14b606528754719c5db
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: dfc544e01a065d065bc56ec2dbed88881ad3c18716f7dcfdbc801c5a77c51e3f8f9b9efe902b1e8b1d1aa27a0260884525bbb1aa0822a5187ea5e3980902eff1
|
7
|
+
data.tar.gz: 13464621ea4a1babd7eefa876c39f0758f5431b747fd05cb380174954090278d5293dddd37a766405f20b815ae33ef3af933c4ee5be23db03424c75574dc3abc
|
data/khrl.gemspec
CHANGED
data/lib/Test.rb
CHANGED
data/lib/test.xml
CHANGED
data/lib/xml/kxml.rb
CHANGED
data/lib/xml/xml_parser.rb
CHANGED
@@ -1,114 +1,121 @@
|
|
1
|
-
module KXML
|
2
|
-
class SAXParser
|
3
|
-
START_TAG
|
4
|
-
END_TAG
|
5
|
-
COMMENTS
|
6
|
-
SELF_CLOSE_TAG
|
7
|
-
DOCUMENT_STATEMENT
|
8
|
-
CONTENT
|
9
|
-
|
10
|
-
attr_accessor :handler
|
11
|
-
def initialize
|
12
|
-
reset()
|
13
|
-
end
|
14
|
-
|
15
|
-
def reset
|
16
|
-
@state = :NONE
|
17
|
-
@
|
18
|
-
@
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
1
|
+
module KXML
|
2
|
+
class SAXParser
|
3
|
+
START_TAG = 'START_TAG'
|
4
|
+
END_TAG = 'END_TAG'
|
5
|
+
COMMENTS = 'COMMENTS'
|
6
|
+
SELF_CLOSE_TAG = 'SELF_COLSE_TAG'
|
7
|
+
DOCUMENT_STATEMENT = 'DOCUMENT_STATEMENT'
|
8
|
+
CONTENT = 'CONTENT'
|
9
|
+
|
10
|
+
attr_accessor :handler
|
11
|
+
def initialize
|
12
|
+
reset()
|
13
|
+
end
|
14
|
+
|
15
|
+
def reset
|
16
|
+
@state = :NONE
|
17
|
+
@data = ''
|
18
|
+
@finish = false
|
19
|
+
end
|
20
|
+
|
21
|
+
def <<(data)
|
22
|
+
push(data)
|
23
|
+
end
|
24
|
+
|
25
|
+
def push(data)
|
26
|
+
@data += data
|
27
|
+
parse()
|
28
|
+
end
|
29
|
+
|
30
|
+
def finish
|
31
|
+
@finish = true
|
32
|
+
parse()
|
33
|
+
end
|
34
|
+
|
35
|
+
private
|
36
|
+
|
37
|
+
def parse
|
38
|
+
raise "Cannot parse without handler" if @handler == nil
|
39
|
+
return if @data == nil || @data == ''
|
40
|
+
|
41
|
+
while(true)
|
42
|
+
result = @data.match(/^<([\s\S.]*?)>/)
|
43
|
+
if result !=nil && @data[0] == '<'
|
44
|
+
dispath_tag(result.to_s)
|
45
|
+
@data = @data[result[1].size+2,@data.size]
|
46
|
+
next
|
47
|
+
end
|
48
|
+
result = @data.match(/([\s\S.]+?)</)
|
49
|
+
if result !=nil
|
50
|
+
dispath_content(result[1])
|
51
|
+
@data = @data[result[1].size,@data.size]
|
52
|
+
next
|
53
|
+
end
|
54
|
+
break
|
55
|
+
end
|
56
|
+
dispath_content(@data) if @finish && @data != nil && @data != ''
|
57
|
+
end
|
58
|
+
|
59
|
+
def dispath_tag(data)
|
60
|
+
if data =~ /<\?xml\s+(.*?)\?>/
|
61
|
+
param = parse_tag("STATEMENT #{data.match(/<\?xml\s+(.*?)\?>/)[1]}")
|
62
|
+
param[:type] = DOCUMENT_STATEMENT
|
63
|
+
@handler.call(param)
|
64
|
+
return
|
65
|
+
end
|
66
|
+
if data =~ /<([\s\S.]*?)\/>/
|
67
|
+
param = parse_tag(data.match(/<([\s\S.]*?)\/>/)[1])
|
68
|
+
param[:type] = SELF_CLOSE_TAG
|
69
|
+
@handler.call(param)
|
70
|
+
return
|
71
|
+
end
|
72
|
+
if data =~ /<\/([\s\S.]*?)>/
|
73
|
+
param = parse_tag(data.match(/<\/([\s\S.]*?)>/)[1])
|
74
|
+
param[:type] = END_TAG
|
75
|
+
@handler.call(param)
|
76
|
+
return
|
77
|
+
end
|
78
|
+
if data =~ /<\!--([\s\S.]*?)-->/
|
79
|
+
@handler.call({:type => COMMENTS , :name => data.match(/<\!--([\s\S.]*?)-->/)[1]})
|
80
|
+
return
|
81
|
+
end
|
82
|
+
param = parse_tag(data.match(/<([\s\S.]*?)>/)[1])
|
83
|
+
param[:type] = START_TAG
|
84
|
+
@handler.call(param)
|
85
|
+
end
|
86
|
+
|
87
|
+
def dispath_content(data)
|
88
|
+
@handler.call({:type => CONTENT , :name => data})
|
89
|
+
end
|
90
|
+
|
91
|
+
def parse_tag(data)
|
92
|
+
data.strip!
|
93
|
+
i = data.index(' ')
|
94
|
+
if i == nil then
|
95
|
+
return {:name => data}
|
96
|
+
else
|
97
|
+
ret = {}
|
98
|
+
ret[:name] = data[0,i]
|
99
|
+
ret[:attributes] = {}
|
100
|
+
|
101
|
+
data.scan(/[a-zA-Z0-9\_\-]+=\"[\w\W]*?\"/){|s|
|
102
|
+
k = /[a-zA-Z0-9\_\-]+(?=(\b*=))/.match(s).to_s
|
103
|
+
di = s.index('"')
|
104
|
+
si = s.index("'")
|
105
|
+
if di == nil then
|
106
|
+
i = si
|
107
|
+
elsif si == nil then
|
108
|
+
i = di
|
109
|
+
else
|
110
|
+
i = si < di ? si : di
|
111
|
+
end
|
112
|
+
v = s[i+1,s.size-i-2]
|
113
|
+
ret[:attributes][k] = v
|
114
|
+
}
|
115
|
+
return ret
|
116
|
+
end
|
117
|
+
end
|
118
|
+
|
119
|
+
end
|
120
|
+
|
121
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: khrl
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Koihik
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2016-01-05 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: private ruby lib
|
14
14
|
email: koihik@hotmail.com
|
@@ -17,9 +17,9 @@ extensions: []
|
|
17
17
|
extra_rdoc_files: []
|
18
18
|
files:
|
19
19
|
- khrl.gemspec
|
20
|
-
- lib/Test.rb
|
21
20
|
- lib/file/kfile.rb
|
22
21
|
- lib/khrl.rb
|
22
|
+
- lib/Test.rb
|
23
23
|
- lib/test.xml
|
24
24
|
- lib/xml/kxml.rb
|
25
25
|
- lib/xml/xml_parser.rb
|
@@ -43,7 +43,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
43
43
|
version: '0'
|
44
44
|
requirements: []
|
45
45
|
rubyforge_project:
|
46
|
-
rubygems_version: 2.
|
46
|
+
rubygems_version: 2.0.14
|
47
47
|
signing_key:
|
48
48
|
specification_version: 4
|
49
49
|
summary: KHRL
|