xml-motor 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
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
+