rubysl-ostruct 1.0.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,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: cec4600c9a826de169dba5d1d1fc1001deb47131
4
+ data.tar.gz: 2c55660cb71f7a1e0e4f0def92394ad110403c65
5
+ SHA512:
6
+ metadata.gz: eadd488f253fda93f4bbe152d78c4e1b197d80f64da0b1cd0ab8edfbc58564641ca5161ee01fef51791ee746212dd68d8a7f10504b53ea6e88578605eddcf609
7
+ data.tar.gz: bd53d995542bf0d11e579abfd4b219ef6565b2384f449468efe22cd3a92f943534889ed66814b9b243b91ca9906467d5e5d051cd3a51c010234fea3d02eb0473
@@ -0,0 +1,17 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
@@ -0,0 +1,7 @@
1
+ language: ruby
2
+ env:
3
+ - RUBYLIB=lib
4
+ script: bundle exec mspec
5
+ rvm:
6
+ - 1.8.7
7
+ - rbx-nightly-18mode
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in rubysl-ostruct.gemspec
4
+ gemspec
data/LICENSE ADDED
@@ -0,0 +1,25 @@
1
+ Copyright (c) 2013, Brian Shirai
2
+ All rights reserved.
3
+
4
+ Redistribution and use in source and binary forms, with or without
5
+ modification, are permitted provided that the following conditions are met:
6
+
7
+ 1. Redistributions of source code must retain the above copyright notice, this
8
+ list of conditions and the following disclaimer.
9
+ 2. Redistributions in binary form must reproduce the above copyright notice,
10
+ this list of conditions and the following disclaimer in the documentation
11
+ and/or other materials provided with the distribution.
12
+ 3. Neither the name of the library nor the names of its contributors may be
13
+ used to endorse or promote products derived from this software without
14
+ specific prior written permission.
15
+
16
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
17
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19
+ DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY DIRECT,
20
+ INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
21
+ BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
22
+ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
23
+ OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
24
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
25
+ EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
@@ -0,0 +1,29 @@
1
+ # Rubysl::Ostruct
2
+
3
+ TODO: Write a gem description
4
+
5
+ ## Installation
6
+
7
+ Add this line to your application's Gemfile:
8
+
9
+ gem 'rubysl-ostruct'
10
+
11
+ And then execute:
12
+
13
+ $ bundle
14
+
15
+ Or install it yourself as:
16
+
17
+ $ gem install rubysl-ostruct
18
+
19
+ ## Usage
20
+
21
+ TODO: Write usage instructions here
22
+
23
+ ## Contributing
24
+
25
+ 1. Fork it
26
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
27
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
28
+ 4. Push to the branch (`git push origin my-new-feature`)
29
+ 5. Create new Pull Request
@@ -0,0 +1 @@
1
+ require "bundler/gem_tasks"
@@ -0,0 +1 @@
1
+ require "rubysl/ostruct"
@@ -0,0 +1,2 @@
1
+ require "rubysl/ostruct/ostruct"
2
+ require "rubysl/ostruct/version"
@@ -0,0 +1,149 @@
1
+ #
2
+ # = ostruct.rb: OpenStruct implementation
3
+ #
4
+ # Author:: Yukihiro Matsumoto
5
+ # Documentation:: Gavin Sinclair
6
+ #
7
+ # OpenStruct allows the creation of data objects with arbitrary attributes.
8
+ # See OpenStruct for an example.
9
+ #
10
+
11
+ #
12
+ # OpenStruct allows you to create data objects and set arbitrary attributes.
13
+ # For example:
14
+ #
15
+ # require 'ostruct'
16
+ #
17
+ # record = OpenStruct.new
18
+ # record.name = "John Smith"
19
+ # record.age = 70
20
+ # record.pension = 300
21
+ #
22
+ # puts record.name # -> "John Smith"
23
+ # puts record.address # -> nil
24
+ #
25
+ # It is like a hash with a different way to access the data. In fact, it is
26
+ # implemented with a hash, and you can initialize it with one.
27
+ #
28
+ # hash = { "country" => "Australia", :population => 20_000_000 }
29
+ # data = OpenStruct.new(hash)
30
+ #
31
+ # p data # -> <OpenStruct country="Australia" population=20000000>
32
+ #
33
+ class OpenStruct
34
+ #
35
+ # Create a new OpenStruct object. The optional +hash+, if given, will
36
+ # generate attributes and values. For example.
37
+ #
38
+ # require 'ostruct'
39
+ # hash = { "country" => "Australia", :population => 20_000_000 }
40
+ # data = OpenStruct.new(hash)
41
+ #
42
+ # p data # -> <OpenStruct country="Australia" population=20000000>
43
+ #
44
+ # By default, the resulting OpenStruct object will have no attributes.
45
+ #
46
+ def initialize(hash=nil)
47
+ @table = {}
48
+ if hash
49
+ for k,v in hash
50
+ @table[k.to_sym] = v
51
+ new_ostruct_member(k)
52
+ end
53
+ end
54
+ end
55
+
56
+ # Duplicate an OpenStruct object members.
57
+ def initialize_copy(orig)
58
+ super
59
+ @table = @table.dup
60
+ end
61
+
62
+ def marshal_dump
63
+ @table
64
+ end
65
+ def marshal_load(x)
66
+ @table = x
67
+ @table.each_key{|key| new_ostruct_member(key)}
68
+ end
69
+
70
+ def modifiable
71
+ if self.frozen?
72
+ raise TypeError, "can't modify frozen #{self.class}", caller(2)
73
+ end
74
+ @table
75
+ end
76
+ protected :modifiable
77
+
78
+ def new_ostruct_member(name)
79
+ name = name.to_sym
80
+ unless self.respond_to?(name)
81
+ class << self; self; end.class_eval do
82
+ define_method(name) { @table[name] }
83
+ define_method("#{name}=") { |x| modifiable[name] = x }
84
+ end
85
+ end
86
+ name
87
+ end
88
+
89
+ def method_missing(mid, *args) # :nodoc:
90
+ mname = mid.id2name
91
+ len = args.length
92
+ if mname.chomp!('=') && mname != "[]"
93
+ if len != 1
94
+ raise ArgumentError, "wrong number of arguments (#{len} for 1)", caller(1)
95
+ end
96
+ modifiable[new_ostruct_member(mname)] = args[0]
97
+ elsif len == 0
98
+ @table[mid]
99
+ else
100
+ raise NoMethodError, "undefined method `#{mname}' for #{self}", caller(1)
101
+ end
102
+ end
103
+
104
+ #
105
+ # Remove the named field from the object.
106
+ #
107
+ def delete_field(name)
108
+ @table.delete name.to_sym
109
+ end
110
+
111
+ InspectKey = :__inspect_key__ # :nodoc:
112
+
113
+ #
114
+ # Returns a string containing a detailed summary of the keys and values.
115
+ #
116
+ def inspect
117
+ str = "#<#{self.class}"
118
+
119
+ ids = (Thread.current[InspectKey] ||= [])
120
+ if ids.include?(object_id)
121
+ return str << ' ...>'
122
+ end
123
+
124
+ ids << object_id
125
+ begin
126
+ first = true
127
+ for k,v in @table
128
+ str << "," unless first
129
+ first = false
130
+ str << " #{k}=#{v.inspect}"
131
+ end
132
+ return str << '>'
133
+ ensure
134
+ ids.pop
135
+ end
136
+ end
137
+ alias :to_s :inspect
138
+
139
+ attr_reader :table # :nodoc:
140
+ protected :table
141
+
142
+ #
143
+ # Compare this object and +other+ for equality.
144
+ #
145
+ def ==(other)
146
+ return false unless(other.kind_of?(OpenStruct))
147
+ return @table == other.table
148
+ end
149
+ end
@@ -0,0 +1,5 @@
1
+ module RubySL
2
+ module OpenStruct
3
+ VERSION = "1.0.0"
4
+ end
5
+ end
@@ -0,0 +1,21 @@
1
+ # coding: utf-8
2
+ require './lib/rubysl/ostruct/version'
3
+
4
+ Gem::Specification.new do |spec|
5
+ spec.name = "rubysl-ostruct"
6
+ spec.version = RubySL::OpenStruct::VERSION
7
+ spec.authors = ["Brian Shirai"]
8
+ spec.email = ["brixen@gmail.com"]
9
+ spec.description = %q{Ruby standard library ostruct.}
10
+ spec.summary = %q{Ruby standard library ostruct.}
11
+ spec.homepage = "https://github.com/rubysl/rubysl-ostruct"
12
+ spec.license = "BSD"
13
+
14
+ spec.files = `git ls-files`.split($/)
15
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
16
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
17
+ spec.require_paths = ["lib"]
18
+
19
+ spec.add_development_dependency "bundler", "~> 1.3"
20
+ spec.add_development_dependency "rake", "~> 10.0"
21
+ end
@@ -0,0 +1,28 @@
1
+ require 'ostruct'
2
+
3
+ describe "OpenStruct#delete_field" do
4
+ before :each do
5
+ @os = OpenStruct.new(:name => "John Smith", :age => 70, :pension => 300)
6
+ end
7
+
8
+ it "removes the named field from self's method/value table" do
9
+ @os.delete_field(:name)
10
+ @os.send(:table)[:name].should be_nil
11
+ end
12
+
13
+ ruby_version_is ""..."1.9.3" do
14
+ it "does not remove the accessor methods" do
15
+ @os.delete_field(:name)
16
+ @os.respond_to?(:name).should be_true
17
+ @os.respond_to?(:name=).should be_true
18
+ end
19
+ end
20
+
21
+ ruby_version_is "1.9.3" do
22
+ it "does remove the accessor methods" do
23
+ @os.delete_field(:name)
24
+ @os.respond_to?(:name).should be_false
25
+ @os.respond_to?(:name=).should be_false
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,20 @@
1
+ require "ostruct"
2
+
3
+ describe "OpenStruct#[]" do
4
+ before :each do
5
+ @os = OpenStruct.new
6
+ end
7
+
8
+ ruby_version_is ""..."2.0" do
9
+ it "raises a NoMethodError" do
10
+ lambda { @os[:foo] }.should raise_error(NoMethodError)
11
+ end
12
+ end
13
+
14
+ ruby_version_is "2.0" do
15
+ it "returns the associated value" do
16
+ @os.foo = 42
17
+ @os[:foo].should == 42
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,21 @@
1
+ require "ostruct"
2
+
3
+ describe "OpenStruct#[]=" do
4
+ before :each do
5
+ @os = OpenStruct.new
6
+ end
7
+
8
+ ruby_bug "redmine:4179", "1.9.2" do
9
+ ruby_version_is ""..."2.0" do
10
+ it "raises a NoMethodError" do
11
+ lambda { @os[:foo] = 2 }.should raise_error(NoMethodError)
12
+ end
13
+ end
14
+ ruby_version_is "2.0" do
15
+ it "sets the associated value" do
16
+ @os[:foo] = 42
17
+ @os.foo.should == 42
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,27 @@
1
+ require "ostruct"
2
+ require File.expand_path('../fixtures/classes', __FILE__)
3
+
4
+ describe "OpenStruct#==" do
5
+ before(:each) do
6
+ @os = OpenStruct.new(:name => "John")
7
+ end
8
+
9
+ it "returns false when the passed argument is no OpenStruct" do
10
+ (@os == Object.new).should be_false
11
+ (@os == "Test").should be_false
12
+ (@os == 10).should be_false
13
+ (@os == :sym).should be_false
14
+ end
15
+
16
+ it "returns true when self and other are equal method/value wise" do
17
+ (@os == @os).should be_true
18
+ (@os == OpenStruct.new(:name => "John")).should be_true
19
+ (@os == OpenStructSpecs::OpenStructSub.new(:name => "John")).should be_true
20
+
21
+ (@os == OpenStruct.new(:name => "Jonny")).should be_false
22
+ (@os == OpenStructSpecs::OpenStructSub.new(:name => "Jonny")).should be_false
23
+
24
+ (@os == OpenStruct.new(:name => "John", :age => 20)).should be_false
25
+ (@os == OpenStructSpecs::OpenStructSub.new(:name => "John", :age => 20)).should be_false
26
+ end
27
+ end
@@ -0,0 +1,4 @@
1
+ module OpenStructSpecs
2
+ class OpenStructSub < OpenStruct
3
+ end
4
+ end
@@ -0,0 +1,39 @@
1
+ require 'ostruct'
2
+
3
+ describe "OpenStruct.new when frozen" do
4
+ before :each do
5
+ @os = OpenStruct.new(:name => "John Smith", :age => 70, :pension => 300).freeze
6
+ end
7
+ #
8
+ # method_missing case handled in method_missing_spec.rb
9
+ #
10
+ it "is still readable" do
11
+ @os.age.should eql(70)
12
+ @os.pension.should eql(300)
13
+ @os.name.should == "John Smith"
14
+ end
15
+
16
+ ruby_bug "#1219", "1.9.1" do
17
+ it "is not writeable" do
18
+ lambda{ @os.age = 42 }.should raise_error( TypeError )
19
+ end
20
+
21
+ it "cannot create new fields" do
22
+ lambda{ @os.state = :new }.should raise_error( TypeError )
23
+ end
24
+
25
+ it "creates a frozen clone" do
26
+ f = @os.clone
27
+ f.age.should == 70
28
+ lambda{ f.age = 0 }.should raise_error( TypeError )
29
+ lambda{ f.state = :newer }.should raise_error( TypeError )
30
+ end
31
+ end # ruby_bug
32
+
33
+ it "creates an unfrozen dup" do
34
+ d = @os.dup
35
+ d.age.should == 70
36
+ d.age = 42
37
+ d.age.should == 42
38
+ end
39
+ end
@@ -0,0 +1,25 @@
1
+ require "ostruct"
2
+
3
+ describe "OpenStruct#initialize_copy" do
4
+ before :each do
5
+ @os = OpenStruct.new("age" => 20, "name" => "John")
6
+ @dup = @os.dup
7
+ end
8
+
9
+ it "is private" do
10
+ OpenStruct.should have_private_instance_method(:initialize_copy)
11
+ end
12
+
13
+ it "creates an independent method/value table for self" do
14
+ @dup.age = 30
15
+ @dup.age.should eql(30)
16
+ @os.age.should eql(20)
17
+ end
18
+
19
+ ruby_bug "bug 6028", "1.9.3" do
20
+ it "generates the same methods" do
21
+ @dup.methods.should == @os.methods
22
+ @dup.respond_to?(:age).should == @os.respond_to?(:age)
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,7 @@
1
+ require 'ostruct'
2
+
3
+ describe "OpenStruct#initialize" do
4
+ it "is private" do
5
+ OpenStruct.should have_private_instance_method(:initialize)
6
+ end
7
+ end
@@ -0,0 +1,7 @@
1
+ require 'ostruct'
2
+ require File.expand_path('../fixtures/classes', __FILE__)
3
+ require File.expand_path('../shared/inspect', __FILE__)
4
+
5
+ describe "OpenStruct#inspect" do
6
+ it_behaves_like :ostruct_inspect, :inspect
7
+ end
@@ -0,0 +1,8 @@
1
+ require "ostruct"
2
+
3
+ describe "OpenStruct#marshal_dump" do
4
+ it "returns the method/value table" do
5
+ os = OpenStruct.new("age" => 20, "name" => "John")
6
+ os.marshal_dump.should == { :age => 20, :name => "John" }
7
+ end
8
+ end
@@ -0,0 +1,11 @@
1
+ require "ostruct"
2
+
3
+ describe "OpenStruct#marshal_load when passed [Hash]" do
4
+ it "defines methods based on the passed Hash" do
5
+ os = OpenStruct.new
6
+ os.marshal_load(:age => 20, :name => "John")
7
+
8
+ os.age.should eql(20)
9
+ os.name.should == "John"
10
+ end
11
+ end
@@ -0,0 +1,46 @@
1
+ require "ostruct"
2
+
3
+ describe "OpenStruct#method_missing when called with a method name ending in '='" do
4
+ before(:each) do
5
+ @os = OpenStruct.new
6
+ end
7
+
8
+ it "raises an ArgumentError when not passed any additional arguments" do
9
+ lambda { @os.method_missing(:test=) }.should raise_error(ArgumentError)
10
+ end
11
+
12
+ it "raises a TypeError when self is frozen" do
13
+ @os.freeze
14
+ lambda { @os.method_missing(:test=, "test") }.should raise_error(TypeError)
15
+ end
16
+
17
+ it "creates accessor methods" do
18
+ @os.method_missing(:test=, "test")
19
+ @os.respond_to?(:test=).should be_true
20
+ @os.respond_to?(:test).should be_true
21
+
22
+ @os.test.should == "test"
23
+ @os.test = "changed"
24
+ @os.test.should == "changed"
25
+ end
26
+
27
+ it "updates the method/value table with the passed method/value" do
28
+ @os.method_missing(:test=, "test")
29
+ @os.send(:table)[:test].should == "test"
30
+ end
31
+ end
32
+
33
+ describe "OpenStruct#method_missing when passed additional arguments" do
34
+ it "raises a NoMethodError" do
35
+ os = OpenStruct.new
36
+ lambda { os.method_missing(:test, 1, 2, 3) }.should raise_error(NoMethodError)
37
+ end
38
+ end
39
+
40
+ describe "OpenStruct#method_missing when not passed any additional arguments" do
41
+ it "returns the value for the passed method from the method/value table" do
42
+ os = OpenStruct.new(:age => 20)
43
+ os.method_missing(:age).should eql(20)
44
+ os.method_missing(:name).should be_nil
45
+ end
46
+ end
@@ -0,0 +1,31 @@
1
+ require "ostruct"
2
+
3
+ describe "OpenStruct#new_ostruct_member when passed [method_name]" do
4
+ before(:each) do
5
+ @os = OpenStruct.new
6
+ @os.instance_variable_set(:@table, :age => 20)
7
+ end
8
+
9
+ it "creates an attribute reader method for the passed method_name" do
10
+ @os.respond_to?(:age).should be_false
11
+ @os.send :new_ostruct_member, :age
12
+ @os.method(:age).call.should == 20
13
+ end
14
+
15
+ it "creates an attribute writer method for the passed method_name" do
16
+ @os.respond_to?(:age=).should be_false
17
+ @os.send :new_ostruct_member, :age
18
+ @os.method(:age=).call(42).should == 42
19
+ @os.age.should == 42
20
+ end
21
+
22
+ it "does not allow overwriting existing methods" do
23
+ def @os.age
24
+ 10
25
+ end
26
+
27
+ @os.send :new_ostruct_member, :age
28
+ @os.age.should == 10
29
+ @os.respond_to?(:age=).should be_false
30
+ end
31
+ end
@@ -0,0 +1,19 @@
1
+ require 'ostruct'
2
+
3
+ describe "OpenStruct.new when passed [Hash]" do
4
+ before :each do
5
+ @os = OpenStruct.new(:name => "John Smith", :age => 70, :pension => 300)
6
+ end
7
+
8
+ it "creates an attribute for each key of the passed Hash" do
9
+ @os.age.should eql(70)
10
+ @os.pension.should eql(300)
11
+ @os.name.should == "John Smith"
12
+ end
13
+ end
14
+
15
+ describe "OpenStruct.new when passed no arguments" do
16
+ it "returns a new OpenStruct Object without any attributes" do
17
+ OpenStruct.new.to_s.should == "#<OpenStruct>"
18
+ end
19
+ end
@@ -0,0 +1,20 @@
1
+ describe :ostruct_inspect, :shared => true do
2
+ it "returns a String representation of self" do
3
+ os = OpenStruct.new(:name => "John Smith")
4
+ os.send(@method).should == "#<OpenStruct name=\"John Smith\">"
5
+
6
+ os = OpenStruct.new(:age => 20, :name => "John Smith")
7
+ os.send(@method).should be_kind_of(String)
8
+ end
9
+
10
+ it "correctly handles self-referential OpenStructs" do
11
+ os = OpenStruct.new
12
+ os.self = os
13
+ os.send(@method).should == "#<OpenStruct self=#<OpenStruct ...>>"
14
+ end
15
+
16
+ it "correctly handles OpenStruct subclasses" do
17
+ os = OpenStructSpecs::OpenStructSub.new(:name => "John Smith")
18
+ os.send(@method).should == "#<OpenStructSpecs::OpenStructSub name=\"John Smith\">"
19
+ end
20
+ end
@@ -0,0 +1,17 @@
1
+ require 'ostruct'
2
+
3
+ describe "OpenStruct#table" do
4
+ before(:each) do
5
+ @os = OpenStruct.new("age" => 20, "name" => "John")
6
+ end
7
+
8
+ it "is protected" do
9
+ OpenStruct.should have_protected_instance_method(:table)
10
+ end
11
+
12
+ it "returns self's method/value table" do
13
+ @os.send(:table).should == { :age => 20, :name => "John" }
14
+ @os.send(:table)[:age] = 30
15
+ @os.age.should == 30
16
+ end
17
+ end
@@ -0,0 +1,30 @@
1
+ require 'ostruct'
2
+
3
+ ruby_version_is "2.0" do
4
+ describe "OpenStruct#to_h" do
5
+ before :each do
6
+ @h = {:name => "John Smith", :age => 70, :pension => 300}
7
+ @os = OpenStruct.new(@h)
8
+ @to_h = @os.to_h
9
+ end
10
+
11
+ it "returns a Hash with members as keys" do
12
+ @to_h.should == @h
13
+ end
14
+
15
+ it "returns a Hash with keys as symbols" do
16
+ os = OpenStruct.new("name" => "John Smith", "age" => 70)
17
+ os.pension = 300
18
+ os.to_h.should == @h
19
+ end
20
+
21
+ it "does not return the hash used as initializer" do
22
+ @to_h.should_not equal(@h)
23
+ end
24
+
25
+ it "returns a Hash that is independent from the struct" do
26
+ @to_h[:age] = 71
27
+ @os.age.should == 70
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,7 @@
1
+ require 'ostruct'
2
+ require File.expand_path('../fixtures/classes', __FILE__)
3
+ require File.expand_path('../shared/inspect', __FILE__)
4
+
5
+ describe "OpenStruct#to_s" do
6
+ it_behaves_like :ostruct_inspect, :to_s
7
+ end
metadata ADDED
@@ -0,0 +1,119 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: rubysl-ostruct
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Brian Shirai
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2013-08-27 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ~>
18
+ - !ruby/object:Gem::Version
19
+ version: '1.3'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ~>
25
+ - !ruby/object:Gem::Version
26
+ version: '1.3'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ~>
32
+ - !ruby/object:Gem::Version
33
+ version: '10.0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ~>
39
+ - !ruby/object:Gem::Version
40
+ version: '10.0'
41
+ description: Ruby standard library ostruct.
42
+ email:
43
+ - brixen@gmail.com
44
+ executables: []
45
+ extensions: []
46
+ extra_rdoc_files: []
47
+ files:
48
+ - .gitignore
49
+ - .travis.yml
50
+ - Gemfile
51
+ - LICENSE
52
+ - README.md
53
+ - Rakefile
54
+ - lib/ostruct.rb
55
+ - lib/rubysl/ostruct.rb
56
+ - lib/rubysl/ostruct/ostruct.rb
57
+ - lib/rubysl/ostruct/version.rb
58
+ - rubysl-ostruct.gemspec
59
+ - spec/delete_field_spec.rb
60
+ - spec/element_reference_spec.rb
61
+ - spec/element_set_spec.rb
62
+ - spec/equal_value_spec.rb
63
+ - spec/fixtures/classes.rb
64
+ - spec/frozen_spec.rb
65
+ - spec/initialize_copy_spec.rb
66
+ - spec/initialize_spec.rb
67
+ - spec/inspect_spec.rb
68
+ - spec/marshal_dump_spec.rb
69
+ - spec/marshal_load_spec.rb
70
+ - spec/method_missing_spec.rb
71
+ - spec/new_ostruct_member_spec.rb
72
+ - spec/new_spec.rb
73
+ - spec/shared/inspect.rb
74
+ - spec/table_spec.rb
75
+ - spec/to_h_spec.rb
76
+ - spec/to_s_spec.rb
77
+ homepage: https://github.com/rubysl/rubysl-ostruct
78
+ licenses:
79
+ - BSD
80
+ metadata: {}
81
+ post_install_message:
82
+ rdoc_options: []
83
+ require_paths:
84
+ - lib
85
+ required_ruby_version: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - '>='
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ required_rubygems_version: !ruby/object:Gem::Requirement
91
+ requirements:
92
+ - - '>='
93
+ - !ruby/object:Gem::Version
94
+ version: '0'
95
+ requirements: []
96
+ rubyforge_project:
97
+ rubygems_version: 2.0.7
98
+ signing_key:
99
+ specification_version: 4
100
+ summary: Ruby standard library ostruct.
101
+ test_files:
102
+ - spec/delete_field_spec.rb
103
+ - spec/element_reference_spec.rb
104
+ - spec/element_set_spec.rb
105
+ - spec/equal_value_spec.rb
106
+ - spec/fixtures/classes.rb
107
+ - spec/frozen_spec.rb
108
+ - spec/initialize_copy_spec.rb
109
+ - spec/initialize_spec.rb
110
+ - spec/inspect_spec.rb
111
+ - spec/marshal_dump_spec.rb
112
+ - spec/marshal_load_spec.rb
113
+ - spec/method_missing_spec.rb
114
+ - spec/new_ostruct_member_spec.rb
115
+ - spec/new_spec.rb
116
+ - spec/shared/inspect.rb
117
+ - spec/table_spec.rb
118
+ - spec/to_h_spec.rb
119
+ - spec/to_s_spec.rb