oxm 0.1.3 → 0.2.0

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