tylerhunt-relief 0.0.2 → 0.0.3

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