xml-motor 0.0.8 → 0.1.0

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 (4) hide show
  1. data/README +35 -6
  2. data/lib/xml-motor.rb +24 -29
  3. data/lib/xml-motor/version.rb +1 -1
  4. metadata +2 -2
data/README CHANGED
@@ -28,22 +28,34 @@ An easy-to-use XML Parser without any Native Dependencies.
28
28
 
29
29
  Usage:
30
30
  [[ To Search Just One QUERY ]]
31
- nodes_array = XMLMotor.get_node_from_file "_XML_FILE_"
32
- nodes_array = XMLMotor.get_node_from_file "_XML_FILE_", "ATTRIB_KEY=ATTRIB_VALUE"
33
- nodes_array = XMLMotor.get_node_from_content "_XML_DATA_"
34
- nodes_array = XMLMotor.get_node_from_content "_XML_DATA_", "ATTRIB_KEY=ATTRIB_VALUE"
31
+ nodes_array = XMLMotor.get_node_from_file "_XML_FILE_", "_TAG_"
32
+ nodes_array = XMLMotor.get_node_from_file "_XML_FILE_", "_TAG_", "ATTRIB_KEY=ATTRIB_VALUE"
33
+ nodes_array = XMLMotor.get_node_from_content "_XML_DATA_", "_TAG_"
34
+ nodes_array = XMLMotor.get_node_from_content "_XML_DATA_", "_TAG_", "ATTRIB_KEY=ATTRIB_VALUE"
35
+ nodes_array = XMLMotor.get_node_from_file "_XML_FILE_", nil, "ATTRIB_KEY=ATTRIB_VALUE"
36
+ nodes_array = XMLMotor.get_node_from_content "_XML_DATA_", nil, "ATTRIB_KEY=ATTRIB_VALUE"
35
37
  >>>>> for having root-node-tag also in returned result <<<<<
36
- nodes_array = XMLMotor.get_node_from_file "_XML_FILE_", nil, true
37
- nodes_array = XMLMotor.get_node_from_content "_XML_DATA_", "ATTRIB_KEY=ATTRIB_VALUE", true
38
+ nodes_array = XMLMotor.get_node_from_file "_XML_FILE_", "_TAG_", nil, true
39
+ nodes_array = XMLMotor.get_node_from_content "_XML_DATA_", "_TAG_", "ATTRIB_KEY=ATTRIB_VALUE", true
40
+ nodes_array = XMLMotor.get_node_from_content "_XML_DATA_", "_TAG_", ["ATTRIB_KEY=ATTRIB_VALUE"], true
41
+ nodes_array = XMLMotor.get_node_from_content "_XML_DATA_", "_TAG_", ["KEY1=VALUE1", "KEY2=VALUE2"...], true
42
+ nodes_array = XMLMotor.get_node_from_content "_XML_DATA_", "_TAG_", ["KEY1=VALUE1", "KEY2=VALUE2"...], true
43
+ nodes_array = XMLMotor.get_node_from_content "_XML_DATA_", nil, "ATTRIB_KEY=ATTRIB_VALUE", true
44
+ nodes_array = XMLMotor.get_node_from_content "_XML_DATA_", nil, ["KEY1=VALUE1", "KEY2=VALUE2"...], true
38
45
  [[ To Search More Than One QUERIES ]]
39
46
  str = {XML_DATA}
40
47
  nodes_ = XMLMotorEngine._splitter_ str
41
48
  tags_ = XMLMotorEngine._indexify_ nodes_
42
49
  nodes_array = XMLMotorEngine.pre_processed_content nodes_, tags_, "_TAG_"
43
50
  nodes_array = XMLMotorEngine.pre_processed_content nodes_, tags_, "_TAG_", "ATTRIB_KEY=ATTRIB_VALUE"
51
+ nodes_array = XMLMotorEngine.pre_processed_content nodes_, tags_, nil, "ATTRIB_KEY=ATTRIB_VALUE"
44
52
  >>>>> for having root-node-tag also in returned result <<<<<
45
53
  nodes_array = XMLMotorEngine.pre_processed_content nodes_, tags_, "_TAG_", nil, true
46
54
  nodes_array = XMLMotorEngine.pre_processed_content nodes_, tags_, "_TAG_", "ATTRIB_KEY=ATTRIB_VALUE", true
55
+ nodes_array = XMLMotorEngine.pre_processed_content nodes_, tags_, "_TAG_", ["ATTRIB_KEY=ATTRIB_VALUE"], true
56
+ nodes_array = XMLMotorEngine.pre_processed_content nodes_, tags_, "_TAG_", ["KEY1=VALUE1", "KEY2=VALUE2"...], true
57
+ nodes_array = XMLMotorEngine.pre_processed_content nodes_, tags_, nil, ["KEY1=VALUE1", "KEY2=VALUE2"...], true
58
+ nodes_array = XMLMotorEngine.pre_processed_content nodes_, tags_, nil, "ATTRIB_KEY=ATTRIB_VALUE", true
47
59
 
48
60
  Example Calls As Code:
49
61
  + XMLMotor.get_node_from_content "<A>a</A><B><A>ba</A></B>", "A"
@@ -57,6 +69,23 @@ An easy-to-use XML Parser without any Native Dependencies.
57
69
  =====================================================================
58
70
  CHANGE-LOG
59
71
  =====================================================================
72
+ Changes from v0.0.10 to v0.1.0
73
+ [] support added to search for xml nodes just by using their attributes without any tag-name
74
+ for e.g.
75
+ nodes_array = XMLMotorEngine.pre_processed_content nodes_, tags_, nil, "ATTRIB_KEY=ATTRIB_VALUE", true
76
+ nodes_array = XMLMotorEngine.pre_processed_content nodes_, tags_, nil, ["ATTRIB_KEY=ATTRIB_VALUE"], true
77
+ nodes_array = XMLMotorEngine.pre_processed_content nodes_, tags_, nil, ["KEY1=VALUE1", "KEY2=VALUE2"...]
78
+ =====================================================================
79
+ Changes from v0.0.9 to v0.0.10
80
+ [] xml tag name match corrected to be case-insensitive
81
+ =====================================================================
82
+ Changes from v0.0.8 to v0.0.9
83
+ [] option to filter result for multiple attributes key-value pair if sent as an array of "ATTRIB_KEY = ATTRIB_VALUE"
84
+ for e.g.
85
+ nodes_array = XMLMotorEngine.pre_processed_content nodes_, tags_, "_TAG_", "ATTRIB_KEY=ATTRIB_VALUE", true
86
+ nodes_array = XMLMotorEngine.pre_processed_content nodes_, tags_, "_TAG_", ["ATTRIB_KEY=ATTRIB_VALUE"], true
87
+ nodes_array = XMLMotorEngine.pre_processed_content nodes_, tags_, "_TAG_", ["KEY1=VALUE1", "KEY2=VALUE2"...], true
88
+ =====================================================================
60
89
  Changes from v0.0.7 to v0.0.8
61
90
  [] avail the result inclusive of root-node-value with an extra 'true' after attrib/nil
62
91
  for e.g.
@@ -17,7 +17,7 @@ module XMLUtils
17
17
  end
18
18
 
19
19
  module XMLIndexHandler
20
- def self.get_node_indexes(xml_motor, tag)
20
+ def self.get_tag_indexes(xml_motor, tag)
21
21
  xml_idx_to_find = []
22
22
  begin
23
23
  xml_motor.xmltags[tag.split(".")[0]].each_value {|val| xml_idx_to_find.push val }
@@ -66,7 +66,7 @@ module XMLChopper
66
66
  tag_name = in_tag_split.first
67
67
  attribzone = in_tag_split[1..-1].flatten.join(' ')
68
68
  attrs = get_attribute_hash attribzone
69
- [[tag_name,attrs],out_tag]
69
+ [[tag_name.downcase, attrs],out_tag]
70
70
  end
71
71
 
72
72
  def self.get_attribute_hash(attribzone)
@@ -104,9 +104,6 @@ module XMLJoiner
104
104
  end
105
105
  end
106
106
 
107
- ##
108
- # main class
109
-
110
107
  module XMLMotorEngine
111
108
  def self._splitter_(xmldata)
112
109
  @xmlnodes = [xmldata.split(/</)[0]]
@@ -122,7 +119,7 @@ module XMLMotorEngine
122
119
  idx = 1
123
120
  depth = 0
124
121
  @xmlnodes[1..-1].each do |xnode|
125
- tag_name = xnode[0][0].strip
122
+ tag_name = xnode[0][0].strip.downcase
126
123
  unless tag_name.match(/^\/.*/) then
127
124
  @xmltags[tag_name] ||= {}
128
125
  @xmltags[tag_name][depth] ||= []
@@ -138,19 +135,24 @@ module XMLMotorEngine
138
135
  @xmltags
139
136
  end
140
137
 
141
- def self._grab_my_node_ (xml_to_find, attrib_to_find=nil, with_tag=false)
142
- unless attrib_to_find.nil?
143
- attrib_key = attrib_to_find.split(/=/)[0].strip
144
- attrib_val = attrib_to_find.split(/=/)[1..-1].join.strip
138
+ def self._get_attrib_key_val_ (attrib)
139
+ attrib_key = attrib.split(/=/)[0].strip
140
+ attrib_val = attrib.split(/=/)[1..-1].join.strip
141
+ [attrib_key, XMLUtils.dbqot_string(attrib_val)]
142
+ end
143
+
144
+ def self._grab_my_node_ (index_to_find, attrib_to_find=nil, with_tag=false)
145
+ unless attrib_to_find.nil? or attrib_to_find.empty?
146
+ attrib_keyval = [attrib_to_find].flatten.collect{|keyval| _get_attrib_key_val_ keyval }
145
147
  end
146
148
  nodes = []
147
- node_count = xml_to_find.size/2 -1
149
+ node_count = index_to_find.size/2 -1
148
150
  0.upto node_count do |ncount|
149
- node_start = xml_to_find[ncount*2]
150
- node_stop = xml_to_find[ncount*2 +1]
151
- unless attrib_to_find.nil?
151
+ node_start = index_to_find[ncount*2]
152
+ node_stop = index_to_find[ncount*2 +1]
153
+ unless attrib_to_find.nil? or attrib_to_find.empty?
152
154
  next if @xmlnodes[node_start][0][1].nil?
153
- next unless @xmlnodes[node_start][0][1][attrib_key] == XMLUtils.dbqot_string(attrib_val)
155
+ next if attrib_keyval.collect{|keyval| @xmlnodes[node_start][0][1][keyval.first] == keyval.last}.include? false
154
156
  end
155
157
  nodes[ncount] ||= ""
156
158
  nodes[ncount] += @xmlnodes[node_start][1] unless @xmlnodes[node_start][1].nil?
@@ -170,20 +172,15 @@ module XMLMotorEngine
170
172
  end
171
173
 
172
174
  def self.xml_extracter(tag_to_find=nil, attrib_to_find=nil, with_tag=false)
173
- my_nodes = nil
175
+ index_to_find = []
174
176
  if attrib_to_find.nil? and tag_to_find.nil?
175
- elsif attrib_to_find.nil?
176
- xml_to_find = XMLIndexHandler.get_node_indexes self, tag_to_find
177
- my_nodes = _grab_my_node_ xml_to_find, nil, with_tag
177
+ return nil
178
178
  elsif tag_to_find.nil?
179
- #
180
- XMLStdout._nfo "Just attrib-based search to come"
181
- #
179
+ index_to_find = @xmltags.collect {|xtag| xtag[1].collect {|val| val[1] }}.flatten
182
180
  else
183
- xml_to_find = XMLIndexHandler.get_node_indexes self, tag_to_find
184
- my_nodes = _grab_my_node_ xml_to_find, attrib_to_find, with_tag
181
+ index_to_find = XMLIndexHandler.get_tag_indexes self, tag_to_find.downcase
185
182
  end
186
- my_nodes
183
+ _grab_my_node_ index_to_find, attrib_to_find, with_tag
187
184
  end
188
185
 
189
186
  def self.xml_miner(xmldata, tag_to_find=nil, attrib_to_find=nil, with_tag=false)
@@ -194,13 +191,11 @@ module XMLMotorEngine
194
191
  end
195
192
 
196
193
  def self.xmlnodes(xml_nodes=nil)
197
- @xmlnodes = xml_nodes unless xml_nodes.nil?
198
- @xmlnodes
194
+ @xmlnodes = xml_nodes || @xmlnodes
199
195
  end
200
196
 
201
197
  def self.xmltags(xml_tags=nil)
202
- @xmltags = xml_tags unless xml_tags.nil?
203
- @xmltags
198
+ @xmltags = xml_tags || @xmltags
204
199
  end
205
200
 
206
201
  def self.pre_processed_content(_nodes, _tags=nil, tag_to_find=nil, attrib_to_find=nil, with_tag=false)
@@ -1,5 +1,5 @@
1
1
  module Xml
2
2
  module Motor
3
- VERSION = "0.0.8"
3
+ VERSION = "0.1.0"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: xml-motor
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.8
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - abhishekkr
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2012-01-16 00:00:00 +05:30
12
+ date: 2012-01-25 00:00:00 +05:30
13
13
  default_executable:
14
14
  dependencies: []
15
15