oxm 0.1.3 → 0.2.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.
@@ -0,0 +1,48 @@
1
+ # rcov generated
2
+ coverage
3
+
4
+ # rdoc generated
5
+ rdoc
6
+
7
+ # yard generated
8
+ doc
9
+ .yardoc
10
+
11
+ # bundler
12
+ .bundle
13
+
14
+ # jeweler generated
15
+ pkg
16
+
17
+ # Have editor/IDE/OS specific files you need to ignore? Consider using a global gitignore:
18
+ #
19
+ # * Create a file at ~/.gitignore
20
+ # * Include files you want ignored
21
+ # * Run: git config --global core.excludesfile ~/.gitignore
22
+ #
23
+ # After doing this, these files will be ignored in all your git projects,
24
+ # saving you from having to 'pollute' every project you touch with them
25
+ #
26
+ # Not sure what to needs to be ignored for particular editors/OSes? Here's some ideas to get you started. (Remember, remove the leading # of the line)
27
+ #
28
+ # For MacOS:
29
+ #
30
+ #.DS_Store
31
+
32
+ # For TextMate
33
+ #*.tmproj
34
+ #tmtags
35
+
36
+ # For emacs:
37
+ #*~
38
+ #\#*
39
+ #.\#*
40
+
41
+ # For vim:
42
+ *.swp
43
+
44
+ # For redcar:
45
+ #.redcar
46
+
47
+ # For rubinius:
48
+ #*.rbc
@@ -1,3 +1,6 @@
1
+ ### 0.2.0 / 2013/05/15
2
+ * OXM.from_xml now returns an Enumerator when block is not given
3
+
1
4
  ### 0.1.3 / 2011/09/27
2
5
  * OXM can be instantiated. Warning and error messages during the last OXM#from_xml call can be accessed with OXM#warnings and OXM#errors instance methods.
3
6
 
data/Gemfile CHANGED
@@ -1,15 +1,4 @@
1
- source "http://rubygems.org"
2
- # Add dependencies required to use your gem here.
3
- # Example:
4
- # gem "activesupport", ">= 2.3.5"
1
+ source 'https://rubygems.org'
5
2
 
6
- # Add dependencies to develop your gem here.
7
- # Include everything needed to run rake, tests, features, etc.
8
- group :development do
9
- gem "bundler", "~> 1.0.0"
10
- gem "jeweler", "~> 1.6.4"
11
- gem "rcov", ">= 0"
12
- end
13
-
14
- gem "builder", ">= 3.0.0"
15
- gem "nokogiri", ">= 1.5.0"
3
+ # Specify your gem's dependencies in oxm.gemspec
4
+ gemspec
@@ -1,25 +1,20 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ oxm (0.2.0)
5
+ builder (>= 3.0.0)
6
+ nokogiri (>= 1.5.0)
7
+
1
8
  GEM
2
- remote: http://rubygems.org/
9
+ remote: https://rubygems.org/
3
10
  specs:
4
- builder (3.0.0)
5
- git (1.2.5)
6
- jeweler (1.6.4)
7
- bundler (~> 1.0)
8
- git (>= 1.2.5)
9
- rake
10
- nokogiri (1.5.0)
11
- nokogiri (1.5.0-java)
12
- rake (0.9.2)
13
- rcov (0.9.10)
14
- rcov (0.9.10-java)
11
+ builder (3.0.4)
12
+ nokogiri (1.5.9)
13
+ nokogiri (1.5.9-java)
15
14
 
16
15
  PLATFORMS
17
16
  java
18
17
  ruby
19
18
 
20
19
  DEPENDENCIES
21
- builder (>= 3.0.0)
22
- bundler (~> 1.0.0)
23
- jeweler (~> 1.6.4)
24
- nokogiri (>= 1.5.0)
25
- rcov
20
+ oxm!
@@ -1,4 +1,4 @@
1
- Copyright (c) 2011 Junegunn Choi
1
+ Copyright (c) 2012 Junegunn Choi
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person obtaining
4
4
  a copy of this software and associated documentation files (the
@@ -1,6 +1,6 @@
1
1
  # oxm
2
2
 
3
- A tiny, easy-to-use Object-XML-Mapper for Ruby.
3
+ A tiny, easy-to-use Object-XML-Mapper for Ruby.
4
4
  Internally uses Nokogiri SAX parser which allows handling of large XML documents.
5
5
 
6
6
  ## Installation
@@ -61,11 +61,8 @@ end
61
61
  items = OXM.from_xml(xml_data_or_io, 'orders/order/item')
62
62
  ```
63
63
 
64
- ## TODO
65
- * When block is not given, make from_xml return an Enumerator instead of an Array
66
-
67
64
  ## Contributing to oxm
68
-
65
+
69
66
  * Check out the latest master to make sure the feature hasn't been implemented or the bug hasn't been fixed yet
70
67
  * Check out the issue tracker to make sure someone already hasn't requested it and/or contributed it
71
68
  * Fork the project
data/Rakefile CHANGED
@@ -1,30 +1,5 @@
1
- # encoding: utf-8
2
-
3
- require 'rubygems'
4
- require 'bundler'
5
- begin
6
- Bundler.setup(:default, :development)
7
- rescue Bundler::BundlerError => e
8
- $stderr.puts e.message
9
- $stderr.puts "Run `bundle install` to install missing gems"
10
- exit e.status_code
11
- end
12
- require 'rake'
13
-
14
- require 'jeweler'
15
- Jeweler::Tasks.new do |gem|
16
- # gem is a Gem::Specification... see http://docs.rubygems.org/read/chapter/20 for more options
17
- gem.name = "oxm"
18
- gem.homepage = "http://github.com/junegunn/oxm"
19
- gem.license = "MIT"
20
- gem.summary = %Q{A tiny Object-XML-Mapper}
21
- gem.description = %Q{A tiny Object-XML-Mapper using Nokogiri SAX parser}
22
- gem.email = "junegunn.c@gmail.com"
23
- gem.authors = ["Junegunn Choi"]
24
- # dependencies defined in Gemfile
25
- end
26
- Jeweler::RubygemsDotOrgTasks.new
27
-
1
+ #!/usr/bin/env rake
2
+ require "bundler/gem_tasks"
28
3
  require 'rake/testtask'
29
4
  Rake::TestTask.new(:test) do |test|
30
5
  test.libs << 'lib' << 'test'
@@ -32,22 +7,3 @@ Rake::TestTask.new(:test) do |test|
32
7
  test.verbose = true
33
8
  end
34
9
 
35
- require 'rcov/rcovtask'
36
- Rcov::RcovTask.new do |test|
37
- test.libs << 'test'
38
- test.pattern = 'test/**/test_*.rb'
39
- test.verbose = true
40
- test.rcov_opts << '--exclude "gems/*"'
41
- end
42
-
43
- task :default => :test
44
-
45
- require 'rake/rdoctask'
46
- Rake::RDocTask.new do |rdoc|
47
- version = File.exist?('VERSION') ? File.read('VERSION') : ""
48
-
49
- rdoc.rdoc_dir = 'rdoc'
50
- rdoc.title = "oxm #{version}"
51
- rdoc.rdoc_files.include('README*')
52
- rdoc.rdoc_files.include('lib/**/*.rb')
53
- end
data/lib/oxm.rb CHANGED
@@ -19,10 +19,10 @@ class OXM
19
19
 
20
20
  # @param [String] loop_element
21
21
  def from_xml loop_element, &block
22
+ return enum_for(:from_xml, loop_element, &block) unless block_given?
22
23
  @handler = OXM::SaxHandler.new(loop_element, &block)
23
- parser = Nokogiri::XML::SAX::Parser.new(@handler)
24
+ parser = Nokogiri::XML::SAX::Parser.new(@handler, 'UTF-8')
24
25
  parser.parse @xml
25
- @handler.outputs unless block_given?
26
26
  end
27
27
 
28
28
  # @return [Array] Error messages during the last from_xml call
@@ -0,0 +1,3 @@
1
+ class OXM
2
+ VERSION = "0.2.0"
3
+ end
@@ -0,0 +1,20 @@
1
+ # -*- encoding: utf-8 -*-
2
+ require File.expand_path('../lib/oxm/version', __FILE__)
3
+
4
+ Gem::Specification.new do |gem|
5
+ gem.authors = ["Junegunn Choi"]
6
+ gem.email = ["junegunn.c@gmail.com"]
7
+ gem.description = %q{An Object-XML-Mapper based on Nokogiri SAX parser}
8
+ gem.summary = %q{An Object-XML-Mapper based on Nokogiri SAX parser}
9
+ gem.homepage = "https://github.com/junegunn/oxm"
10
+
11
+ gem.files = `git ls-files`.split($\)
12
+ gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
13
+ gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
14
+ gem.name = "oxm"
15
+ gem.require_paths = ["lib"]
16
+ gem.version = OXM::VERSION
17
+
18
+ gem.add_runtime_dependency 'builder', '>= 3.0.0'
19
+ gem.add_runtime_dependency 'nokogiri', '>= 1.5.0'
20
+ end
@@ -1,3 +1,4 @@
1
+ # encoding: utf-8
1
2
  require 'helper'
2
3
 
3
4
  class TestOxm < Test::Unit::TestCase
@@ -8,7 +9,7 @@ class TestOxm < Test::Unit::TestCase
8
9
  <container attr1="1" attr2="2">
9
10
  <item dept="A">
10
11
  <volume unit="ml"><![CDATA[ 100 ]]></volume>
11
- <volume unit="ml"><![CDATA[200]]></volume>
12
+ <volume unit="ml"><![CDATA[]]></volume>
12
13
  </item>
13
14
  <item dept="B">
14
15
  <volume unit="l">200</volume>
@@ -19,14 +20,14 @@ class TestOxm < Test::Unit::TestCase
19
20
 
20
21
  # Test errors (XML declaration allowed only at the start of the document)
21
22
  oxm = OXM.new str
22
- result = oxm.from_xml('container')
23
+ result = oxm.from_xml('container').to_a
23
24
  assert_equal 0, result.length
24
25
  assert_equal 1, oxm.errors.length
25
26
  assert_equal 0, oxm.warnings.length
26
27
 
27
28
  # Test no-errors
28
29
  oxm = OXM.new str.strip
29
- result = oxm.from_xml('container')
30
+ result = oxm.from_xml('container').to_a
30
31
  assert_equal 1, result.length
31
32
  assert_equal 0, oxm.errors.length
32
33
  assert_equal 0, oxm.warnings.length
@@ -37,12 +38,12 @@ class TestOxm < Test::Unit::TestCase
37
38
  tf.flush
38
39
 
39
40
  oxm = OXM.new File.open(tf.path)
40
- result = oxm.from_xml('container')
41
+ result = oxm.from_xml('container').to_a
41
42
  assert_equal 1, result.length
42
43
  assert_equal 0, oxm.errors.length
43
44
  assert_equal 0, oxm.warnings.length
44
45
 
45
- result = oxm.from_xml('container')
46
+ result = oxm.from_xml('container').to_a
46
47
  assert_equal 0, result.length
47
48
  assert_equal 2, oxm.errors.length
48
49
  assert_equal 0, oxm.warnings.length
@@ -80,7 +81,12 @@ class TestOxm < Test::Unit::TestCase
80
81
 
81
82
  [lambda { str }, lambda { File.open(tf.path) }].each do |input|
82
83
  result = OXM.from_xml(input.call, 'container')
83
- assert result.is_a?(Array)
84
+ if defined?(Enumerable::Enumerator)
85
+ assert result.is_a?(Enumerable::Enumerator)
86
+ else
87
+ assert result.is_a?(Enumerator)
88
+ end
89
+ result = result.to_a
84
90
  assert_equal 1, result.length
85
91
  assert_equal "", result.first.to_s
86
92
  assert_equal({'attr1' => '1', 'attr2' => '2'}, result.first.attributes)
@@ -101,7 +107,7 @@ class TestOxm < Test::Unit::TestCase
101
107
  assert container.compact!.equal?(container) # Object identity
102
108
  assert container.item.is_a?(Array)
103
109
 
104
- result = OXM.from_xml(input.call, 'container/item')
110
+ result = OXM.from_xml(input.call, 'container/item').to_a
105
111
  assert_equal 4, result.length
106
112
 
107
113
  item = result.last
@@ -110,7 +116,7 @@ class TestOxm < Test::Unit::TestCase
110
116
  assert_equal '500', item.volume.to_s
111
117
  assert_equal 'L', item.volume['unit']
112
118
 
113
- result = OXM.from_xml(input.call, 'container/item/volume')
119
+ result = OXM.from_xml(input.call, 'container/item/volume').to_a
114
120
  assert_equal 8, result.length
115
121
  assert_equal %w[100 200 200 300 300 400 500] + [""], result.map(&:to_s)
116
122
  assert_equal %w[ml ml l l l ml L] + [nil], result.map { |e| e['unit'] }
@@ -167,7 +173,7 @@ class TestOxm < Test::Unit::TestCase
167
173
  <item>
168
174
  </item>
169
175
  <item>
170
-
176
+
171
177
  </item>
172
178
  </container>
173
179
  EOF
@@ -211,7 +217,7 @@ class TestOxm < Test::Unit::TestCase
211
217
  </container>
212
218
  EOF
213
219
 
214
- items = OXM.from_xml(str, 'container/item')
220
+ items = OXM.from_xml(str, 'container/item').to_a
215
221
  assert_equal 6, items.length
216
222
 
217
223
  items[0].compact!
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: oxm
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.2.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2011-09-28 00:00:00.000000000Z
12
+ date: 2013-05-15 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: builder
16
- requirement: &2158741640 !ruby/object:Gem::Requirement
16
+ requirement: !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,60 +21,37 @@ dependencies:
21
21
  version: 3.0.0
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *2158741640
25
- - !ruby/object:Gem::Dependency
26
- name: nokogiri
27
- requirement: &2158740520 !ruby/object:Gem::Requirement
24
+ version_requirements: !ruby/object:Gem::Requirement
28
25
  none: false
29
26
  requirements:
30
27
  - - ! '>='
31
28
  - !ruby/object:Gem::Version
32
- version: 1.5.0
33
- type: :runtime
34
- prerelease: false
35
- version_requirements: *2158740520
36
- - !ruby/object:Gem::Dependency
37
- name: bundler
38
- requirement: &2158738800 !ruby/object:Gem::Requirement
39
- none: false
40
- requirements:
41
- - - ~>
42
- - !ruby/object:Gem::Version
43
- version: 1.0.0
44
- type: :development
45
- prerelease: false
46
- version_requirements: *2158738800
29
+ version: 3.0.0
47
30
  - !ruby/object:Gem::Dependency
48
- name: jeweler
49
- requirement: &2158736100 !ruby/object:Gem::Requirement
31
+ name: nokogiri
32
+ requirement: !ruby/object:Gem::Requirement
50
33
  none: false
51
34
  requirements:
52
- - - ~>
35
+ - - ! '>='
53
36
  - !ruby/object:Gem::Version
54
- version: 1.6.4
55
- type: :development
37
+ version: 1.5.0
38
+ type: :runtime
56
39
  prerelease: false
57
- version_requirements: *2158736100
58
- - !ruby/object:Gem::Dependency
59
- name: rcov
60
- requirement: &2158735100 !ruby/object:Gem::Requirement
40
+ version_requirements: !ruby/object:Gem::Requirement
61
41
  none: false
62
42
  requirements:
63
43
  - - ! '>='
64
44
  - !ruby/object:Gem::Version
65
- version: '0'
66
- type: :development
67
- prerelease: false
68
- version_requirements: *2158735100
69
- description: A tiny Object-XML-Mapper using Nokogiri SAX parser
70
- email: junegunn.c@gmail.com
45
+ version: 1.5.0
46
+ description: An Object-XML-Mapper based on Nokogiri SAX parser
47
+ email:
48
+ - junegunn.c@gmail.com
71
49
  executables: []
72
50
  extensions: []
73
- extra_rdoc_files:
74
- - LICENSE.txt
75
- - README.markdown
51
+ extra_rdoc_files: []
76
52
  files:
77
53
  - .document
54
+ - .gitignore
78
55
  - CHANGELOG.markdown
79
56
  - Gemfile
80
57
  - Gemfile.lock
@@ -85,11 +62,12 @@ files:
85
62
  - lib/oxm.rb
86
63
  - lib/oxm/object.rb
87
64
  - lib/oxm/sax_handler.rb
65
+ - lib/oxm/version.rb
66
+ - oxm.gemspec
88
67
  - test/helper.rb
89
68
  - test/test_oxm.rb
90
- homepage: http://github.com/junegunn/oxm
91
- licenses:
92
- - MIT
69
+ homepage: https://github.com/junegunn/oxm
70
+ licenses: []
93
71
  post_install_message:
94
72
  rdoc_options: []
95
73
  require_paths:
@@ -100,9 +78,6 @@ required_ruby_version: !ruby/object:Gem::Requirement
100
78
  - - ! '>='
101
79
  - !ruby/object:Gem::Version
102
80
  version: '0'
103
- segments:
104
- - 0
105
- hash: -1465942368572815623
106
81
  required_rubygems_version: !ruby/object:Gem::Requirement
107
82
  none: false
108
83
  requirements:
@@ -111,8 +86,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
111
86
  version: '0'
112
87
  requirements: []
113
88
  rubyforge_project:
114
- rubygems_version: 1.8.6
89
+ rubygems_version: 1.8.25
115
90
  signing_key:
116
91
  specification_version: 3
117
- summary: A tiny Object-XML-Mapper
118
- test_files: []
92
+ summary: An Object-XML-Mapper based on Nokogiri SAX parser
93
+ test_files:
94
+ - test/helper.rb
95
+ - test/test_oxm.rb