xml-motor 0.0.7 → 0.0.8

Sign up to get free protection for your applications and to get access to all the features.
Files changed (4) hide show
  1. data/README +15 -1
  2. data/lib/xml-motor.rb +21 -12
  3. data/lib/xml-motor/version.rb +1 -1
  4. metadata +2 -2
data/README CHANGED
@@ -4,7 +4,7 @@
4
4
  //\\ || || ||_ || || ||_|| || ||_|| ||\\
5
5
 
6
6
  ======================================================================
7
- v 0.0.4
7
+ v 0.0.8
8
8
 
9
9
  @GitHub: https://github.com/abhishekkr/rubygem_xml_motor
10
10
  @RubyGems: http://rubygems.org/gems/xml-motor
@@ -32,12 +32,18 @@ An easy-to-use XML Parser without any Native Dependencies.
32
32
  nodes_array = XMLMotor.get_node_from_file "_XML_FILE_", "ATTRIB_KEY=ATTRIB_VALUE"
33
33
  nodes_array = XMLMotor.get_node_from_content "_XML_DATA_"
34
34
  nodes_array = XMLMotor.get_node_from_content "_XML_DATA_", "ATTRIB_KEY=ATTRIB_VALUE"
35
+ >>>>> 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
35
38
  [[ To Search More Than One QUERIES ]]
36
39
  str = {XML_DATA}
37
40
  nodes_ = XMLMotorEngine._splitter_ str
38
41
  tags_ = XMLMotorEngine._indexify_ nodes_
39
42
  nodes_array = XMLMotorEngine.pre_processed_content nodes_, tags_, "_TAG_"
40
43
  nodes_array = XMLMotorEngine.pre_processed_content nodes_, tags_, "_TAG_", "ATTRIB_KEY=ATTRIB_VALUE"
44
+ >>>>> for having root-node-tag also in returned result <<<<<
45
+ nodes_array = XMLMotorEngine.pre_processed_content nodes_, tags_, "_TAG_", nil, true
46
+ nodes_array = XMLMotorEngine.pre_processed_content nodes_, tags_, "_TAG_", "ATTRIB_KEY=ATTRIB_VALUE", true
41
47
 
42
48
  Example Calls As Code:
43
49
  + XMLMotor.get_node_from_content "<A>a</A><B><A>ba</A></B>", "A"
@@ -51,6 +57,14 @@ An easy-to-use XML Parser without any Native Dependencies.
51
57
  =====================================================================
52
58
  CHANGE-LOG
53
59
  =====================================================================
60
+ Changes from v0.0.7 to v0.0.8
61
+ [] avail the result inclusive of root-node-value with an extra 'true' after attrib/nil
62
+ for e.g.
63
+ XMLMotor.get_node_from_content "<a><b id=\"2\">a.b</b></a>", "b", nil, true
64
+ XMLMotor.get_node_from_content "<a><b id=\"2\">a.b</b></a>", "b", "id='2'", true
65
+ both of above would give
66
+ ["<b id=\"2\">a.b</b>"]
67
+ =====================================================================
54
68
  Changes from v0.0.6 to v0.0.7
55
69
  [] correcting the attribute matching to be sensitive to single and double quotes
56
70
  =====================================================================
@@ -97,6 +97,11 @@ module XMLJoiner
97
97
  end
98
98
  attributes
99
99
  end
100
+
101
+ def self.dejavu_node(node_block)
102
+ return nil if node_block.nil?
103
+ ["<#{node_block.first}#{dejavu_attributes(node_block.last)}>", "</#{node_block.first}>"]
104
+ end
100
105
  end
101
106
 
102
107
  ##
@@ -133,7 +138,7 @@ module XMLMotorEngine
133
138
  @xmltags
134
139
  end
135
140
 
136
- def self._grab_my_node_ (xml_to_find, attrib_to_find=nil)
141
+ def self._grab_my_node_ (xml_to_find, attrib_to_find=nil, with_tag=false)
137
142
  unless attrib_to_find.nil?
138
143
  attrib_key = attrib_to_find.split(/=/)[0].strip
139
144
  attrib_val = attrib_to_find.split(/=/)[1..-1].join.strip
@@ -155,33 +160,37 @@ module XMLMotorEngine
155
160
  nodes[ncount] += "<" + @xmlnodes[node_idx][0][0] + any_attrib + ">"
156
161
  nodes[ncount] += @xmlnodes[node_idx][1] unless @xmlnodes[node_idx][1].nil?
157
162
  end
163
+ if with_tag
164
+ tagifyd = XMLJoiner.dejavu_node @xmlnodes[node_start][0]
165
+ nodes[ncount] = tagifyd.first + nodes[ncount] + tagifyd.last
166
+ end
158
167
  end
159
168
  nodes.delete(nil) unless attrib_to_find.nil?
160
169
  nodes
161
170
  end
162
171
 
163
- def self.xml_extracter(tag_to_find=nil, attrib_to_find=nil)
172
+ def self.xml_extracter(tag_to_find=nil, attrib_to_find=nil, with_tag=false)
164
173
  my_nodes = nil
165
174
  if attrib_to_find.nil? and tag_to_find.nil?
166
175
  elsif attrib_to_find.nil?
167
176
  xml_to_find = XMLIndexHandler.get_node_indexes self, tag_to_find
168
- my_nodes = _grab_my_node_ xml_to_find
177
+ my_nodes = _grab_my_node_ xml_to_find, nil, with_tag
169
178
  elsif tag_to_find.nil?
170
179
  #
171
180
  XMLStdout._nfo "Just attrib-based search to come"
172
181
  #
173
182
  else
174
183
  xml_to_find = XMLIndexHandler.get_node_indexes self, tag_to_find
175
- my_nodes = _grab_my_node_ xml_to_find, attrib_to_find
184
+ my_nodes = _grab_my_node_ xml_to_find, attrib_to_find, with_tag
176
185
  end
177
186
  my_nodes
178
187
  end
179
188
 
180
- def self.xml_miner(xmldata, tag_to_find=nil, attrib_to_find=nil)
189
+ def self.xml_miner(xmldata, tag_to_find=nil, attrib_to_find=nil, with_tag=false)
181
190
  return nil if xmldata.nil?
182
191
  _splitter_ xmldata
183
192
  _indexify_
184
- xml_extracter tag_to_find, attrib_to_find
193
+ xml_extracter tag_to_find, attrib_to_find, with_tag
185
194
  end
186
195
 
187
196
  def self.xmlnodes(xml_nodes=nil)
@@ -194,7 +203,7 @@ module XMLMotorEngine
194
203
  @xmltags
195
204
  end
196
205
 
197
- def self.pre_processed_content(_nodes, _tags=nil, tag_to_find=nil, attrib_to_find=nil)
206
+ def self.pre_processed_content(_nodes, _tags=nil, tag_to_find=nil, attrib_to_find=nil, with_tag=false)
198
207
  begin
199
208
  xmlnodes _nodes
200
209
  unless _tags.nil?
@@ -202,7 +211,7 @@ module XMLMotorEngine
202
211
  else
203
212
  _indexify_
204
213
  end
205
- return xml_extracter tag_to_find, attrib_to_find
214
+ return xml_extracter tag_to_find, attrib_to_find, with_tag
206
215
  rescue
207
216
  XMLStdout._err "Parsing processed XML Nodes."
208
217
  end
@@ -214,18 +223,18 @@ end
214
223
  # XMLMotor_EXECUTIONER ;)
215
224
 
216
225
  module XMLMotor
217
- def self.get_node_from_file(file, my_tag=nil, my_attrib=nil)
226
+ def self.get_node_from_file(file, my_tag=nil, my_attrib=nil, with_tag=false)
218
227
  begin
219
- return get_node_from_content(File.read(file.to_s), my_tag, my_attrib) if File.readable? file.to_s
228
+ return get_node_from_content(File.read(file.to_s), my_tag, my_attrib, with_tag) if File.readable? file.to_s
220
229
  rescue
221
230
  XMLStdout._err "#{file} is not readable."
222
231
  end
223
232
  return ""
224
233
  end
225
234
 
226
- def self.get_node_from_content(content, my_tag=nil, my_attrib=nil)
235
+ def self.get_node_from_content(content, my_tag=nil, my_attrib=nil, with_tag=false)
227
236
  begin
228
- return XMLMotorEngine.xml_miner content, my_tag, my_attrib unless content.nil?
237
+ return XMLMotorEngine.xml_miner content, my_tag, my_attrib, with_tag unless content.nil?
229
238
  rescue
230
239
  XMLStdout._err "Parsing String Content #{content}"
231
240
  end
@@ -1,5 +1,5 @@
1
1
  module Xml
2
2
  module Motor
3
- VERSION = "0.0.7"
3
+ VERSION = "0.0.8"
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.7
4
+ version: 0.0.8
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-15 00:00:00 +05:30
12
+ date: 2012-01-16 00:00:00 +05:30
13
13
  default_executable:
14
14
  dependencies: []
15
15