tylerhunt-relief 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.
Files changed (4) hide show
  1. data/Rakefile +10 -8
  2. data/VERSION.yml +1 -1
  3. data/lib/relief/element.rb +8 -9
  4. metadata +23 -4
data/Rakefile CHANGED
@@ -1,22 +1,28 @@
1
1
  require 'rubygems'
2
2
  require 'rake'
3
+ require 'rake/rdoctask'
4
+ require 'spec/rake/spectask'
3
5
 
4
6
  begin
5
7
  require 'jeweler'
8
+
6
9
  Jeweler::Tasks.new do |gem|
7
10
  gem.name = "relief"
8
- gem.summary = %Q{An XML to Hash Ruby parser DSL.}
11
+ gem.summary = %Q{An XML to hash Ruby parser DSL.}
9
12
  gem.email = "tyler@tylerhunt.com"
10
13
  gem.homepage = "http://github.com/tylerhunt/relief"
11
14
  gem.authors = ["Tyler Hunt"]
12
15
 
13
- # gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
16
+ gem.add_dependency 'nokogiri', '~> 1.2.3'
17
+
18
+ gem.add_development_dependency('jeweler', '~> 0.11.0')
14
19
  end
15
20
  rescue LoadError
16
21
  puts "Jeweler not available. Install it with: sudo gem install technicalpickles-jeweler -s http://gems.github.com"
17
22
  end
18
23
 
19
- require 'spec/rake/spectask'
24
+ task :default => :spec
25
+
20
26
  Spec::Rake::SpecTask.new(:spec) do |spec|
21
27
  spec.libs << 'lib' << 'spec'
22
28
  spec.spec_files = FileList['spec/**/*_spec.rb']
@@ -28,10 +34,6 @@ Spec::Rake::SpecTask.new(:rcov) do |spec|
28
34
  spec.rcov = true
29
35
  end
30
36
 
31
-
32
- task :default => :spec
33
-
34
- require 'rake/rdoctask'
35
37
  Rake::RDocTask.new do |rdoc|
36
38
  if File.exist?('VERSION.yml')
37
39
  config = YAML.load(File.read('VERSION.yml'))
@@ -43,6 +45,6 @@ Rake::RDocTask.new do |rdoc|
43
45
  rdoc.rdoc_dir = 'rdoc'
44
46
  rdoc.title = "relief #{version}"
45
47
  rdoc.rdoc_files.include('README*')
48
+ rdoc.rdoc_files.include('LICENSE*')
46
49
  rdoc.rdoc_files.include('lib/**/*.rb')
47
50
  end
48
-
data/VERSION.yml CHANGED
@@ -1,4 +1,4 @@
1
1
  ---
2
2
  :major: 0
3
3
  :minor: 0
4
- :patch: 2
4
+ :patch: 3
@@ -5,16 +5,16 @@ module Relief
5
5
  def initialize(name, options, &block)
6
6
  @name = name
7
7
  @options = options
8
- @children = {}
8
+ @children = []
9
9
 
10
10
  instance_eval(&block) if block_given?
11
11
  end
12
12
 
13
13
  def parse(document)
14
- @children.inject({}) do |values, child|
15
- name, element = child
14
+ @children.inject({}) do |values, element|
15
+ key = element.options[:as] || element.name
16
16
 
17
- values[name] = begin
17
+ values[key] = begin
18
18
  target = (document / element.xpath)
19
19
 
20
20
  parse_node = lambda { |target|
@@ -34,8 +34,7 @@ module Relief
34
34
 
35
35
  def element(name, options={}, &block)
36
36
  options[:xpath] ||= name if name =~ %r([/.])
37
- name = options[:as].to_sym if options.has_key?(:as)
38
- @children[name] ||= self.class.new(name, options, &block)
37
+ @children << self.class.new(name, options, &block)
39
38
  end
40
39
 
41
40
  def elements(name, options={}, &block)
@@ -49,12 +48,12 @@ module Relief
49
48
  def xpath
50
49
  if options.has_key?(:xpath)
51
50
  options[:xpath]
52
- elsif @children.empty?
51
+ elsif @children.any?
52
+ name.to_s
53
+ else
53
54
  attribute = @options[:attribute]
54
55
  attribute = name if attribute == true
55
56
  !attribute ? "#{name}/text()" : "@#{attribute}"
56
- else
57
- name.to_s
58
57
  end
59
58
  end
60
59
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tylerhunt-relief
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tyler Hunt
@@ -11,8 +11,27 @@ cert_chain: []
11
11
 
12
12
  date: 2009-05-07 00:00:00 -07:00
13
13
  default_executable:
14
- dependencies: []
15
-
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: nokogiri
17
+ type: :runtime
18
+ version_requirement:
19
+ version_requirements: !ruby/object:Gem::Requirement
20
+ requirements:
21
+ - - ~>
22
+ - !ruby/object:Gem::Version
23
+ version: 1.2.3
24
+ version:
25
+ - !ruby/object:Gem::Dependency
26
+ name: jeweler
27
+ type: :development
28
+ version_requirement:
29
+ version_requirements: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ~>
32
+ - !ruby/object:Gem::Version
33
+ version: 0.11.0
34
+ version:
16
35
  description:
17
36
  email: tyler@tylerhunt.com
18
37
  executables: []
@@ -57,7 +76,7 @@ rubyforge_project:
57
76
  rubygems_version: 1.2.0
58
77
  signing_key:
59
78
  specification_version: 2
60
- summary: An XML to Hash Ruby parser DSL.
79
+ summary: An XML to hash Ruby parser DSL.
61
80
  test_files:
62
81
  - spec/parser_spec.rb
63
82
  - spec/spec_helper.rb