xml-motor 0.0.2 → 0.0.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.
data/README ADDED
@@ -0,0 +1,45 @@
1
+ ======================================================================
2
+
3
+ \\// ||\/|| || _ ||\/|| ||@|| ~++~ ||@|| ||))
4
+ //\\ || || ||_ || || ||_|| || ||_|| ||\\
5
+
6
+ ======================================================================
7
+ v 0.0.2
8
+
9
+ @GitHub: https://github.com/abhishekkr/rubygem_xml_motor
10
+ @RubyGems: http://rubygems.org/gems/xml-motor
11
+
12
+ for support contact:
13
+ mail: abhikumar163@gmail.com
14
+ http://www.twitter.com/aBionic
15
+ ======================================================================
16
+
17
+ A new short XML Parsing Algorithm implemented directly in >500 lines.
18
+ An easy-to-use XML Parser without any Native Dependencies.
19
+ [How To Use]:
20
+
21
+ Loading:
22
+ + $ gem install xml-motor
23
+ + 'require' the 'xml-motor'
24
+
25
+ Usage:
26
+ [[ To Search Just One QUERY ]]
27
+ nodes_array = XMLMotor.get_node_from_file "_XML_FILE_"
28
+ nodes_array = XMLMotor.get_node_from_file "_XML_FILE_", "ATTRIB_KEY=ATTRIB_VALUE"
29
+ nodes_array = XMLMotor.get_node_from_content "_XML_DATA_"
30
+ nodes_array = XMLMotor.get_node_from_content "_XML_DATA_", "ATTRIB_KEY=ATTRIB_VALUE"
31
+ [[ To Search More Than One QUERIES ]]
32
+ str = {XML_DATA}
33
+ nodes_ = XMLMotorEngine._splitter_ str
34
+ tags_ = XMLMotorEngine._indexify_ nodes_
35
+ nodes_array = XMLMotorEngine.pre_processed_content nodes_, tags_, "_TAG_"
36
+ nodes_array = XMLMotorEngine.pre_processed_content nodes_, tags_, "_TAG_", "ATTRIB_KEY=ATTRIB_VALUE"
37
+
38
+ Example Calls As Code:
39
+ + XMLMotor.get_node_from_content "<A>a</A><B><A>ba</A></B>", "A"
40
+ RETURNS: ["a", "ba"]
41
+ + XMLMotor.get_node_from_content "<A>a</A><B><A>ba</A></B>", "B.A"
42
+ RETURNS: ["ba"]
43
+ + XMLMotor.get_node_from_content "<A i='1'>a</A><B><A i='2'>ba</A></B>", "A", "i='1'"
44
+ RETURNS: ["a"]
45
+
@@ -3,18 +3,14 @@
3
3
  module XMLIndexHandler
4
4
  def self.get_node_indexes(xml_motor, tag)
5
5
  xml_idx_to_find = []
6
- xml_motor.xmltags[tag.split(".")[0]].each_value do |v|
7
- xml_idx_to_find.push v
8
- end
6
+ xml_motor.xmltags[tag.split(".")[0]].each_value {|val| xml_idx_to_find.push val }
9
7
  xml_idx_to_find = xml_idx_to_find.flatten
10
8
 
11
9
  tag.split(".")[1..-1].each do |tag_i|
12
10
  outer_idx = xml_idx_to_find
13
11
  osize=outer_idx.size/2 -1
14
12
  x_curr=[]
15
- xml_motor.xmltags[tag_i].each_value do |v|
16
- x_curr.push v
17
- end
13
+ xml_motor.xmltags[tag_i].each_value {|val| x_curr.push val }
18
14
  x_curr = x_curr.flatten
19
15
  xsize=x_curr.size/2 -1
20
16
 
@@ -85,9 +81,8 @@ end
85
81
 
86
82
  ##
87
83
  # main class
88
- ##
89
84
 
90
- module XMLMotorHandler
85
+ module XMLMotorEngine
91
86
  def self._splitter_(xmldata)
92
87
  @xmlnodes=[xmldata.split(/</)[0]]
93
88
  xmldata.split(/</)[1..-1].each do |x1|
@@ -95,7 +90,8 @@ module XMLMotorHandler
95
90
  end
96
91
  end
97
92
 
98
- def self._indexify_
93
+ def self._indexify_(_nodes=nil)
94
+ xmlnodes _nodes unless _nodes.nil?
99
95
  @xmltags = {}
100
96
  idx = 1
101
97
  depth = 0
@@ -141,57 +137,70 @@ module XMLMotorHandler
141
137
  nodes
142
138
  end
143
139
 
144
- def self.xml_handler(xmldata, tag_to_find=nil, attrib_to_find=nil)
145
- _splitter_ xmldata
146
- _indexify_
140
+ def self.xml_extracter(tag_to_find=nil, attrib_to_find=nil)
147
141
  my_nodes = nil
148
142
  if attrib_to_find.nil?
149
143
  xml_to_find = XMLIndexHandler.get_node_indexes self, tag_to_find
150
144
  my_nodes = _grab_my_node_ xml_to_find
151
145
  elsif tag_to_find.nil?
146
+ #
147
+ #just attrib-based search to come
148
+ #
152
149
  elsif !attrib_to_find.nil? and !tag_to_find.nil?
153
150
  xml_to_find = XMLIndexHandler.get_node_indexes self, tag_to_find
154
151
  my_nodes = _grab_my_node_ xml_to_find, attrib_to_find
155
152
  end
156
153
  my_nodes
154
+ end
155
+
156
+ def self.xml_miner(xmldata, tag_to_find=nil, attrib_to_find=nil)
157
+ _splitter_ xmldata
158
+ _indexify_
159
+ xml_extracter tag_to_find, attrib_to_find
160
+ end
161
+
162
+ def self.xmlnodes(xmlnodes=nil)
163
+ @xmlnodes ||= xmlnodes
157
164
  end
158
165
 
159
- def self.xmlnodes
160
- @xmlnodes
166
+ def self.xmltags(xmltags=nil)
167
+ @xmltags ||= xmltags
161
168
  end
162
169
 
163
- def self.xmltags
164
- @xmltags
170
+ def self.pre_processed_content(_nodes, _tags=nil, tag_to_find=nil, attrib_to_find=nil)
171
+ begin
172
+ xmlnodes _nodes
173
+ unless _tags.nil?
174
+ xmltags _tags
175
+ else
176
+ _indexify_ _nodes
177
+ end
178
+ return xml_extracter tag_to_find, attrib_to_find
179
+ rescue
180
+ puts "Error problem parsing processed XML Nodes."
181
+ end
182
+ return ""
165
183
  end
166
184
  end
167
185
 
168
186
  ##
169
187
  # XMLMotor_EXECUTIONER ;)
170
- ##
171
188
 
172
189
  module XMLMotor
173
190
  def self.get_node_from_file(file, my_tag=nil, my_attrib=nil)
174
- unless file.nil?
175
- if File.readable? file
176
- begin
177
- return XMLMotorHandler.xml_handler File.read(file), my_tag, my_attrib
178
- rescue
179
- puts "Error: problem parsing File Content"
180
- end
181
- else
182
- puts "Error: #{file} is not readable."
183
- end
191
+ begin
192
+ return get_node_from_content(File.read(file.to_s), my_tag, my_attrib) unless File.readable? file.to_s
193
+ rescue
194
+ puts "Error: #{file} is not readable."
184
195
  end
185
196
  return ""
186
197
  end
187
198
 
188
199
  def self.get_node_from_content(content, my_tag=nil, my_attrib=nil)
189
- unless content.nil?
190
- begin
191
- return XMLMotorHandler.xml_handler content, my_tag, my_attrib
192
- rescue
193
- puts "Error problem parsing String Content #{content}"
194
- end
200
+ begin
201
+ return XMLMotorEngine.xml_miner content, my_tag, my_attrib unless content.nil?
202
+ rescue
203
+ puts "Error problem parsing String Content #{content}"
195
204
  end
196
205
  return ""
197
206
  end
@@ -1,5 +1,5 @@
1
1
  module Xml
2
2
  module Motor
3
- VERSION = "0.0.2"
3
+ VERSION = "0.0.3"
4
4
  end
5
5
  end
@@ -10,19 +10,25 @@ Gem::Specification.new do |s|
10
10
  s.homepage = "http://github.com/abhishekkr/rubygem_xml_motor"
11
11
  s.summary = %q{An easy-to-use XML Parser without any Native Dependencies}
12
12
  s.description = %q{A new short XML Parsing Algorithm implemented directly in >500 lines. An easy-to-use XML Parser without any Native Dependencies.
13
- [How To Use]:
13
+
14
+ [How To Use]: https://github.com/abhishekkr/rubygem_xml_motor/raw/master/README
14
15
 
15
16
  Loading:
16
17
  + $ gem install xml-motor
17
18
  + 'require' the 'xml-motor'
18
19
 
19
20
  Usage:
20
- + To find values of an xml node from an xml file
21
- XMLMotor.get_node_from_file <file_with_path>, <node>
22
- + To find values of an xml node from an xml string
23
- XMLMotor.get_node_from_content <xml_string>, <node>
24
- + To find values of an xml node with a tag_name having required attribute
25
- XMLMotor.get_node_from_content <xml_string>, <node>, "<attrib_key>=<attrib_value>"
21
+ [[ To Search Just One QUERY ]]
22
+ nodes_array = XMLMotor.get_node_from_file "_XML_FILE_"
23
+ nodes_array = XMLMotor.get_node_from_file "_XML_FILE_", "ATTRIB_KEY=ATTRIB_VALUE"
24
+ nodes_array = XMLMotor.get_node_from_content "_XML_DATA_"
25
+ nodes_array = XMLMotor.get_node_from_content "_XML_DATA_", "ATTRIB_KEY=ATTRIB_VALUE"
26
+ [[ To Search More Than One QUERIES ]]
27
+ str = {XML_DATA}
28
+ nodes_ = XMLMotorEngine._splitter_ str
29
+ tags_ = XMLMotorEngine._indexify_ nodes_
30
+ nodes_array = XMLMotorEngine.pre_processed_content nodes_, tags_, "_TAG_"
31
+ nodes_array = XMLMotorEngine.pre_processed_content nodes_, tags_, "_TAG_", "ATTRIB_KEY=ATTRIB_VALUE"
26
32
 
27
33
  Example Calls As Code:
28
34
  + XMLMotor.get_node_from_content "<A>a</A><B><A>ba</A></B>", "A"
metadata CHANGED
@@ -1,63 +1,74 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: xml-motor
3
- version: !ruby/object:Gem::Version
4
- version: 0.0.2
3
+ version: !ruby/object:Gem::Version
4
+ hash: 25
5
5
  prerelease:
6
+ segments:
7
+ - 0
8
+ - 0
9
+ - 3
10
+ version: 0.0.3
6
11
  platform: ruby
7
- authors:
12
+ authors:
8
13
  - abhishekkr
9
14
  autorequire:
10
15
  bindir: bin
11
16
  cert_chain: []
12
- date: 2011-11-06 00:00:00.000000000Z
17
+
18
+ date: 2011-11-12 00:00:00 +05:30
19
+ default_executable:
13
20
  dependencies: []
14
- description: ! "A new short XML Parsing Algorithm implemented directly in >500 lines.
15
- An easy-to-use XML Parser without any Native Dependencies.\n [How To Use]:\n\n
16
- \ Loading:\n + $ gem install xml-motor\n + 'require' the 'xml-motor'\n\n
17
- \ Usage:\n + To find values of an xml node from an xml file\n XMLMotor.get_node_from_file
18
- <file_with_path>, <node>\n + To find values of an xml node from an xml string\n
19
- \ XMLMotor.get_node_from_content <xml_string>, <node>\n + To find
20
- values of an xml node with a tag_name having required attribute\n XMLMotor.get_node_from_content
21
- <xml_string>, <node>, \"<attrib_key>=<attrib_value>\"\n\n Example Calls As
22
- Code:\n + XMLMotor.get_node_from_content \"<A>a</A><B><A>ba</A></B>\", \"A\"\n
23
- \ RETURNS: [\"a\", \"ba\"]\n + XMLMotor.get_node_from_content
24
- \"<A>a</A><B><A>ba</A></B>\", \"B.A\"\n RETURNS: [\"ba\"]\n +
25
- XMLMotor.get_node_from_content \"<A i='1'>a</A><B><A i='2'>ba</A></B>\", \"A\",
26
- \"i='1'\"\n RETURNS: [\"a\"]\n "
27
- email:
21
+
22
+ description: "A new short XML Parsing Algorithm implemented directly in >500 lines. An easy-to-use XML Parser without any Native Dependencies.\n \n [How To Use]: https://github.com/abhishekkr/rubygem_xml_motor/raw/master/README \n\n Loading:\n + $ gem install xml-motor\n + 'require' the 'xml-motor'\n\n Usage:\n [[ To Search Just One QUERY ]]\n nodes_array = XMLMotor.get_node_from_file \"_XML_FILE_\"\n nodes_array = XMLMotor.get_node_from_file \"_XML_FILE_\", \"ATTRIB_KEY=ATTRIB_VALUE\"\n nodes_array = XMLMotor.get_node_from_content \"_XML_DATA_\"\n nodes_array = XMLMotor.get_node_from_content \"_XML_DATA_\", \"ATTRIB_KEY=ATTRIB_VALUE\"\n [[ To Search More Than One QUERIES ]]\n str = {XML_DATA}\n nodes_ = XMLMotorEngine._splitter_ str\n tags_ = XMLMotorEngine._indexify_ nodes_\n nodes_array = XMLMotorEngine.pre_processed_content nodes_, tags_, \"_TAG_\"\n nodes_array = XMLMotorEngine.pre_processed_content nodes_, tags_, \"_TAG_\", \"ATTRIB_KEY=ATTRIB_VALUE\"\n\n Example Calls As Code:\n + XMLMotor.get_node_from_content \"<A>a</A><B><A>ba</A></B>\", \"A\"\n RETURNS: [\"a\", \"ba\"]\n + XMLMotor.get_node_from_content \"<A>a</A><B><A>ba</A></B>\", \"B.A\"\n RETURNS: [\"ba\"]\n + XMLMotor.get_node_from_content \"<A i='1'>a</A><B><A i='2'>ba</A></B>\", \"A\", \"i='1'\"\n RETURNS: [\"a\"]\n "
23
+ email:
28
24
  - abhishk@thoughtworks.com
29
25
  executables: []
26
+
30
27
  extensions: []
28
+
31
29
  extra_rdoc_files: []
32
- files:
30
+
31
+ files:
33
32
  - Gemfile
33
+ - README
34
34
  - Rakefile
35
35
  - lib/xml-motor.rb
36
36
  - lib/xml-motor/version.rb
37
37
  - make_my_gem.sh
38
38
  - xml-motor.gemspec
39
+ has_rdoc: true
39
40
  homepage: http://github.com/abhishekkr/rubygem_xml_motor
40
41
  licenses: []
42
+
41
43
  post_install_message:
42
44
  rdoc_options: []
43
- require_paths:
45
+
46
+ require_paths:
44
47
  - lib
45
- required_ruby_version: !ruby/object:Gem::Requirement
48
+ required_ruby_version: !ruby/object:Gem::Requirement
46
49
  none: false
47
- requirements:
48
- - - ! '>='
49
- - !ruby/object:Gem::Version
50
- version: '0'
51
- required_rubygems_version: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - ">="
52
+ - !ruby/object:Gem::Version
53
+ hash: 3
54
+ segments:
55
+ - 0
56
+ version: "0"
57
+ required_rubygems_version: !ruby/object:Gem::Requirement
52
58
  none: false
53
- requirements:
54
- - - ! '>='
55
- - !ruby/object:Gem::Version
56
- version: '0'
59
+ requirements:
60
+ - - ">="
61
+ - !ruby/object:Gem::Version
62
+ hash: 3
63
+ segments:
64
+ - 0
65
+ version: "0"
57
66
  requirements: []
67
+
58
68
  rubyforge_project: xml-motor
59
- rubygems_version: 1.8.11
69
+ rubygems_version: 1.6.2
60
70
  signing_key:
61
71
  specification_version: 3
62
72
  summary: An easy-to-use XML Parser without any Native Dependencies
63
73
  test_files: []
74
+