properties 0.1.0 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile +16 -0
- data/Gemfile.lock +36 -0
- data/{LICENSE → LICENSE.txt} +1 -1
- data/README.rdoc +12 -10
- data/Rakefile +29 -32
- data/VERSION +1 -1
- data/lib/properties.rb +56 -33
- data/properties.gemspec +42 -27
- data/spec/properties_spec.rb +108 -0
- data/spec/spec_helper.rb +7 -4
- metadata +112 -20
- data/.gitignore +0 -21
data/Gemfile
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
source "http://rubygems.org"
|
2
|
+
# Add dependencies required to use your gem here.
|
3
|
+
# Example:
|
4
|
+
# gem "activesupport", ">= 2.3.5"
|
5
|
+
|
6
|
+
# Add dependencies to develop your gem here.
|
7
|
+
# Include everything needed to run rake, tests, features, etc.
|
8
|
+
group :development do
|
9
|
+
gem "rspec", "~> 2.6.0"
|
10
|
+
gem "rspec-cleanup", "~> 1.0.0"
|
11
|
+
gem "yard", "~> 0.6.0"
|
12
|
+
gem "bundler", "~> 1.0.0"
|
13
|
+
gem "jeweler", "~> 1.6.4"
|
14
|
+
gem "rcov", ">= 0"
|
15
|
+
gem "facets", "~> 2.9.2"
|
16
|
+
end
|
data/Gemfile.lock
ADDED
@@ -0,0 +1,36 @@
|
|
1
|
+
GEM
|
2
|
+
remote: http://rubygems.org/
|
3
|
+
specs:
|
4
|
+
diff-lcs (1.1.3)
|
5
|
+
facets (2.9.2)
|
6
|
+
git (1.2.5)
|
7
|
+
jeweler (1.6.4)
|
8
|
+
bundler (~> 1.0)
|
9
|
+
git (>= 1.2.5)
|
10
|
+
rake
|
11
|
+
rake (0.9.2)
|
12
|
+
rcov (0.9.10)
|
13
|
+
rcov (0.9.10-java)
|
14
|
+
rspec (2.6.0)
|
15
|
+
rspec-core (~> 2.6.0)
|
16
|
+
rspec-expectations (~> 2.6.0)
|
17
|
+
rspec-mocks (~> 2.6.0)
|
18
|
+
rspec-cleanup (1.0.0)
|
19
|
+
rspec-core (2.6.4)
|
20
|
+
rspec-expectations (2.6.0)
|
21
|
+
diff-lcs (~> 1.1.2)
|
22
|
+
rspec-mocks (2.6.0)
|
23
|
+
yard (0.6.8)
|
24
|
+
|
25
|
+
PLATFORMS
|
26
|
+
java
|
27
|
+
ruby
|
28
|
+
|
29
|
+
DEPENDENCIES
|
30
|
+
bundler (~> 1.0.0)
|
31
|
+
facets (~> 2.9.2)
|
32
|
+
jeweler (~> 1.6.4)
|
33
|
+
rcov
|
34
|
+
rspec (~> 2.6.0)
|
35
|
+
rspec-cleanup (~> 1.0.0)
|
36
|
+
yard (~> 0.6.0)
|
data/{LICENSE → LICENSE.txt}
RENAMED
data/README.rdoc
CHANGED
@@ -1,17 +1,19 @@
|
|
1
1
|
= properties
|
2
2
|
|
3
|
-
|
3
|
+
Description goes here.
|
4
4
|
|
5
|
-
==
|
5
|
+
== Contributing to properties
|
6
6
|
|
7
|
-
*
|
8
|
-
*
|
9
|
-
*
|
10
|
-
|
11
|
-
* Commit
|
12
|
-
|
13
|
-
*
|
7
|
+
* Check out the latest master to make sure the feature hasn't been implemented or the bug hasn't been fixed yet
|
8
|
+
* Check out the issue tracker to make sure someone already hasn't requested it and/or contributed it
|
9
|
+
* Fork the project
|
10
|
+
* Start a feature/bugfix branch
|
11
|
+
* Commit and push until you are happy with your contribution
|
12
|
+
* Make sure to add tests for it. This is important so I don't break it in a future version unintentionally.
|
13
|
+
* Please try not to mess with the Rakefile, version, or history. If you want to have your own version, or is otherwise necessary, that is fine, but please isolate to its own commit so I can cherry-pick around it.
|
14
14
|
|
15
15
|
== Copyright
|
16
16
|
|
17
|
-
Copyright (c)
|
17
|
+
Copyright (c) 2011 Niclas Nilsson. See LICENSE.txt for
|
18
|
+
further details.
|
19
|
+
|
data/Rakefile
CHANGED
@@ -1,45 +1,42 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
1
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
|
2
12
|
require 'rake'
|
3
13
|
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
end
|
16
|
-
Jeweler::GemcutterTasks.new
|
17
|
-
rescue LoadError
|
18
|
-
puts "Jeweler (or a dependency) not available. Install it with: gem install jeweler"
|
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 = "properties"
|
18
|
+
gem.homepage = "http://github.com/niclasnilsson/properties"
|
19
|
+
gem.license = "MIT"
|
20
|
+
gem.summary = %Q{Properties with metadata for your classes and objects}
|
21
|
+
gem.description = %Q{Properties with metadata for your classes and objects}
|
22
|
+
gem.email = "niclas@niclasnilsson.se"
|
23
|
+
gem.authors = ["Niclas Nilsson"]
|
24
|
+
# dependencies defined in Gemfile
|
19
25
|
end
|
26
|
+
Jeweler::RubygemsDotOrgTasks.new
|
20
27
|
|
21
|
-
require '
|
22
|
-
|
23
|
-
|
24
|
-
spec.
|
28
|
+
require 'rspec/core'
|
29
|
+
require 'rspec/core/rake_task'
|
30
|
+
RSpec::Core::RakeTask.new(:spec) do |spec|
|
31
|
+
spec.pattern = FileList['spec/**/*_spec.rb']
|
25
32
|
end
|
26
33
|
|
27
|
-
|
28
|
-
spec.libs << 'lib' << 'spec'
|
34
|
+
RSpec::Core::RakeTask.new(:rcov) do |spec|
|
29
35
|
spec.pattern = 'spec/**/*_spec.rb'
|
30
36
|
spec.rcov = true
|
31
37
|
end
|
32
38
|
|
33
|
-
task :spec => :check_dependencies
|
34
|
-
|
35
39
|
task :default => :spec
|
36
40
|
|
37
|
-
require '
|
38
|
-
Rake::
|
39
|
-
version = File.exist?('VERSION') ? File.read('VERSION') : ""
|
40
|
-
|
41
|
-
rdoc.rdoc_dir = 'rdoc'
|
42
|
-
rdoc.title = "properties #{version}"
|
43
|
-
rdoc.rdoc_files.include('README*')
|
44
|
-
rdoc.rdoc_files.include('lib/**/*.rb')
|
45
|
-
end
|
41
|
+
require 'yard'
|
42
|
+
YARD::Rake::YardocTask.new
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.2.0
|
data/lib/properties.rb
CHANGED
@@ -1,65 +1,88 @@
|
|
1
1
|
require 'facets'
|
2
|
-
|
2
|
+
|
3
3
|
module Properties
|
4
4
|
class Property
|
5
|
-
attr_reader :name, :kind
|
6
|
-
|
7
|
-
def initialize name, kind
|
5
|
+
attr_reader :name, :kind, :is_collection
|
6
|
+
|
7
|
+
def initialize name, kind, is_collection
|
8
8
|
@name = name
|
9
9
|
@kind = kind
|
10
|
+
@is_collection = is_collection
|
10
11
|
end
|
11
12
|
end
|
12
|
-
|
13
|
-
|
14
13
|
end
|
15
|
-
|
14
|
+
|
16
15
|
module Properties
|
17
16
|
class Value
|
18
17
|
attr_reader :property
|
19
18
|
attr_accessor :value
|
20
|
-
|
19
|
+
|
21
20
|
def initialize value, property
|
22
21
|
@value = value
|
23
22
|
@property = property
|
24
23
|
end
|
25
24
|
end
|
26
25
|
end
|
27
|
-
|
28
|
-
|
26
|
+
|
29
27
|
module Properties
|
30
28
|
class PropertyError < RuntimeError
|
31
29
|
end
|
32
30
|
end
|
31
|
+
|
32
|
+
def property name, kind, is_collection = false
|
33
|
+
classname = eval kind.to_s.camelcase
|
33
34
|
|
34
|
-
def property name, kind
|
35
35
|
@__properties__ ||= {}
|
36
|
-
@__properties__[name] = Properties::Property.new(name, kind)
|
37
|
-
|
36
|
+
@__properties__[name] = Properties::Property.new(name, kind, is_collection)
|
37
|
+
@is_collection = is_collection
|
38
|
+
|
38
39
|
def __properties__
|
39
|
-
|
40
|
+
@__properties__
|
40
41
|
end
|
42
|
+
|
41
43
|
|
42
|
-
|
43
|
-
|
44
|
-
|
44
|
+
if is_collection
|
45
|
+
code = "
|
46
|
+
def #{name}
|
47
|
+
@#{name} ||= []
|
48
|
+
@#{name}
|
49
|
+
end
|
50
|
+
"
|
51
|
+
eval code
|
45
52
|
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
53
|
+
code = "
|
54
|
+
def #{name}=(values)
|
55
|
+
values ||= []
|
56
|
+
values.each do |value|
|
57
|
+
raise Properties::PropertyError.new(\"Can't set value (\#{value.inspect}) to property #{name} since not all elements are a #{classname}\") if not value.kind_of?(#{classname})
|
58
|
+
end
|
59
|
+
|
60
|
+
@#{name} = values
|
61
|
+
end
|
62
|
+
"
|
63
|
+
eval code
|
57
64
|
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
65
|
+
else
|
66
|
+
code = "
|
67
|
+
def #{name}
|
68
|
+
@#{name}
|
69
|
+
end
|
70
|
+
"
|
71
|
+
eval code
|
72
|
+
|
73
|
+
code = "
|
74
|
+
def #{name}=(value)
|
75
|
+
raise Properties::PropertyError.new(\"Can't set value (\#{value}.inspect) to property #{name} since it's not a #{classname}\") if not value.kind_of?(#{classname})
|
76
|
+
@#{name} = value
|
77
|
+
end
|
78
|
+
"
|
79
|
+
eval code
|
63
80
|
end
|
64
81
|
|
65
82
|
end
|
83
|
+
|
84
|
+
def collection name, kind
|
85
|
+
property name, kind, true
|
86
|
+
end
|
87
|
+
|
88
|
+
|
data/properties.gemspec
CHANGED
@@ -1,55 +1,70 @@
|
|
1
1
|
# Generated by jeweler
|
2
2
|
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
-
# Instead, edit Jeweler::Tasks in Rakefile, and run
|
3
|
+
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
4
4
|
# -*- encoding: utf-8 -*-
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{properties}
|
8
|
-
s.version = "0.
|
8
|
+
s.version = "0.2.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Niclas Nilsson"]
|
12
|
-
s.date = %q{
|
13
|
-
s.description = %q{Properties
|
12
|
+
s.date = %q{2011-09-01}
|
13
|
+
s.description = %q{Properties with metadata for your classes and objects}
|
14
14
|
s.email = %q{niclas@niclasnilsson.se}
|
15
15
|
s.extra_rdoc_files = [
|
16
|
-
"LICENSE",
|
17
|
-
|
16
|
+
"LICENSE.txt",
|
17
|
+
"README.rdoc"
|
18
18
|
]
|
19
19
|
s.files = [
|
20
20
|
".document",
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
21
|
+
"Gemfile",
|
22
|
+
"Gemfile.lock",
|
23
|
+
"LICENSE.txt",
|
24
|
+
"README.rdoc",
|
25
|
+
"Rakefile",
|
26
|
+
"VERSION",
|
27
|
+
"lib/properties.rb",
|
28
|
+
"properties.gemspec",
|
29
|
+
"spec/properties_spec.rb",
|
30
|
+
"spec/spec.opts",
|
31
|
+
"spec/spec_helper.rb"
|
31
32
|
]
|
32
33
|
s.homepage = %q{http://github.com/niclasnilsson/properties}
|
33
|
-
s.
|
34
|
+
s.licenses = ["MIT"]
|
34
35
|
s.require_paths = ["lib"]
|
35
|
-
s.rubygems_version = %q{1.3.
|
36
|
-
s.summary = %q{
|
37
|
-
s.test_files = [
|
38
|
-
"spec/properties_spec.rb",
|
39
|
-
"spec/spec_helper.rb"
|
40
|
-
]
|
36
|
+
s.rubygems_version = %q{1.3.7}
|
37
|
+
s.summary = %q{Properties with metadata for your classes and objects}
|
41
38
|
|
42
39
|
if s.respond_to? :specification_version then
|
43
40
|
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
44
41
|
s.specification_version = 3
|
45
42
|
|
46
|
-
if Gem::Version.new(Gem::
|
47
|
-
s.add_development_dependency(%q<rspec>, ["
|
43
|
+
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
44
|
+
s.add_development_dependency(%q<rspec>, ["~> 2.6.0"])
|
45
|
+
s.add_development_dependency(%q<rspec-cleanup>, ["~> 1.0.0"])
|
46
|
+
s.add_development_dependency(%q<yard>, ["~> 0.6.0"])
|
47
|
+
s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
|
48
|
+
s.add_development_dependency(%q<jeweler>, ["~> 1.6.4"])
|
49
|
+
s.add_development_dependency(%q<rcov>, [">= 0"])
|
50
|
+
s.add_development_dependency(%q<facets>, ["~> 2.9.2"])
|
48
51
|
else
|
49
|
-
s.add_dependency(%q<rspec>, ["
|
52
|
+
s.add_dependency(%q<rspec>, ["~> 2.6.0"])
|
53
|
+
s.add_dependency(%q<rspec-cleanup>, ["~> 1.0.0"])
|
54
|
+
s.add_dependency(%q<yard>, ["~> 0.6.0"])
|
55
|
+
s.add_dependency(%q<bundler>, ["~> 1.0.0"])
|
56
|
+
s.add_dependency(%q<jeweler>, ["~> 1.6.4"])
|
57
|
+
s.add_dependency(%q<rcov>, [">= 0"])
|
58
|
+
s.add_dependency(%q<facets>, ["~> 2.9.2"])
|
50
59
|
end
|
51
60
|
else
|
52
|
-
s.add_dependency(%q<rspec>, ["
|
61
|
+
s.add_dependency(%q<rspec>, ["~> 2.6.0"])
|
62
|
+
s.add_dependency(%q<rspec-cleanup>, ["~> 1.0.0"])
|
63
|
+
s.add_dependency(%q<yard>, ["~> 0.6.0"])
|
64
|
+
s.add_dependency(%q<bundler>, ["~> 1.0.0"])
|
65
|
+
s.add_dependency(%q<jeweler>, ["~> 1.6.4"])
|
66
|
+
s.add_dependency(%q<rcov>, [">= 0"])
|
67
|
+
s.add_dependency(%q<facets>, ["~> 2.9.2"])
|
53
68
|
end
|
54
69
|
end
|
55
70
|
|
data/spec/properties_spec.rb
CHANGED
@@ -28,6 +28,7 @@ describe "a property" do
|
|
28
28
|
lambda { @person.name = 1 }.should raise_error(Properties::PropertyError)
|
29
29
|
end
|
30
30
|
end
|
31
|
+
|
31
32
|
|
32
33
|
describe "should have a get accessor that" do
|
33
34
|
it "returns the value of the property" do
|
@@ -38,7 +39,114 @@ describe "a property" do
|
|
38
39
|
it "returns nil if property has not been set" do
|
39
40
|
Person.new.name.should == nil
|
40
41
|
end
|
42
|
+
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
describe "a collection property" do
|
47
|
+
cleanup.after_spec
|
48
|
+
|
49
|
+
before do
|
50
|
+
class Computer
|
51
|
+
collection :audio_inputs, :string
|
52
|
+
end
|
53
|
+
@computer = Computer.new
|
54
|
+
end
|
55
|
+
|
56
|
+
it "should be empty by default" do
|
57
|
+
@computer = Computer.new.audio_inputs.should == []
|
58
|
+
end
|
59
|
+
|
60
|
+
it "accepts appending of values" do
|
61
|
+
@computer.audio_inputs << "line in"
|
62
|
+
@computer.audio_inputs << "built-in microphone"
|
63
|
+
|
64
|
+
@computer.audio_inputs.should == ["line in", "built-in microphone"]
|
65
|
+
@computer.audio_inputs.should == ["line in", "built-in microphone"]
|
66
|
+
@computer.audio_inputs()[0].should == "line in"
|
67
|
+
@computer.audio_inputs()[1].should == "built-in microphone"
|
68
|
+
end
|
69
|
+
|
70
|
+
it "accepts replacing of entire collection" do
|
71
|
+
@computer.audio_inputs << "line in"
|
72
|
+
@computer.audio_inputs << "microphone"
|
73
|
+
|
74
|
+
# Overwrite the entire collection
|
75
|
+
@computer.audio_inputs = ["usb microphone #1", "usb microphone #2"]
|
76
|
+
|
77
|
+
@computer.audio_inputs.should == ["usb microphone #1", "usb microphone #2"]
|
78
|
+
end
|
79
|
+
|
80
|
+
it "convert replacing entire collection with nil to an empty collection" do
|
81
|
+
@computer.audio_inputs << "line in"
|
82
|
+
@computer.audio_inputs.size == 1
|
83
|
+
@computer.audio_inputs = nil
|
84
|
+
@computer.audio_inputs.should == []
|
85
|
+
end
|
86
|
+
|
87
|
+
it "should reject appending values of wrong type" do
|
88
|
+
pending "This needs to hijack the << method on the object (singleton class) or similar"
|
89
|
+
lambda { @computer.audio_inputs << 1 }.should raise_error(Properties::PropertyError)
|
90
|
+
end
|
91
|
+
|
92
|
+
it "should reject overwrite of entire collection if new collection contains elements of wrong type" do
|
93
|
+
lambda { @computer.audio_inputs = ["line in", 23] }.should raise_error(Properties::PropertyError)
|
41
94
|
end
|
95
|
+
|
42
96
|
end
|
43
97
|
|
98
|
+
describe "nested complex types" do
|
99
|
+
|
100
|
+
cleanup.after_spec
|
101
|
+
|
102
|
+
before do
|
103
|
+
class Partition
|
104
|
+
property :name, :string
|
105
|
+
end
|
106
|
+
|
107
|
+
class Disk
|
108
|
+
property :name, :string
|
109
|
+
property :gigabytes, :integer
|
110
|
+
collection :partitions, :partition
|
111
|
+
end
|
112
|
+
|
113
|
+
|
114
|
+
class Computer
|
115
|
+
property :name, :string
|
116
|
+
collection :disks, :Disk
|
117
|
+
|
118
|
+
end
|
119
|
+
@computer = Computer.new
|
120
|
+
end
|
121
|
+
|
122
|
+
it "should work on collections" do
|
123
|
+
@computer.name = "My Computer"
|
124
|
+
@computer.disks.should == []
|
125
|
+
disk0 = Disk.new
|
126
|
+
disk0.name = "First disk"
|
127
|
+
disk0.gigabytes = 200
|
128
|
+
|
129
|
+
partition0 = Partition.new
|
130
|
+
partition0.name = "p0"
|
131
|
+
partition1 = Partition.new
|
132
|
+
partition1.name = "p1"
|
133
|
+
|
134
|
+
|
135
|
+
disk1 = Disk.new
|
136
|
+
disk1.name = "Second disk"
|
137
|
+
disk1.gigabytes = 300
|
138
|
+
disk1.partitions = [ partition0, partition1 ]
|
139
|
+
|
140
|
+
|
141
|
+
@computer.disks = [ disk0, disk1 ]
|
142
|
+
|
143
|
+
@computer.name.should == "My Computer"
|
144
|
+
@computer.disks[0].name.should == "First disk"
|
145
|
+
@computer.disks[0].gigabytes.should == 200
|
146
|
+
@computer.disks[1].name.should == "Second disk"
|
147
|
+
@computer.disks[1].gigabytes.should == 300
|
148
|
+
|
149
|
+
@computer.disks[1].partitions[0].name.should == "p0"
|
150
|
+
end
|
151
|
+
end
|
44
152
|
|
data/spec/spec_helper.rb
CHANGED
@@ -1,9 +1,12 @@
|
|
1
|
-
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
2
1
|
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
2
|
+
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
3
|
+
require 'rspec'
|
3
4
|
require 'properties'
|
4
|
-
require 'spec'
|
5
|
-
require 'spec/autorun'
|
6
5
|
|
7
|
-
|
6
|
+
# Requires supporting files with custom matchers and macros, etc,
|
7
|
+
# in ./support/ and its subdirectories.
|
8
|
+
Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each {|f| require f}
|
9
|
+
|
10
|
+
RSpec.configure do |config|
|
8
11
|
|
9
12
|
end
|
metadata
CHANGED
@@ -4,9 +4,9 @@ version: !ruby/object:Gem::Version
|
|
4
4
|
prerelease: false
|
5
5
|
segments:
|
6
6
|
- 0
|
7
|
-
-
|
7
|
+
- 2
|
8
8
|
- 0
|
9
|
-
version: 0.
|
9
|
+
version: 0.2.0
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Niclas Nilsson
|
@@ -14,36 +14,126 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date:
|
17
|
+
date: 2011-09-01 00:00:00 +02:00
|
18
18
|
default_executable:
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
21
21
|
name: rspec
|
22
|
-
prerelease: false
|
23
22
|
requirement: &id001 !ruby/object:Gem::Requirement
|
23
|
+
none: false
|
24
24
|
requirements:
|
25
|
-
- -
|
25
|
+
- - ~>
|
26
|
+
- !ruby/object:Gem::Version
|
27
|
+
segments:
|
28
|
+
- 2
|
29
|
+
- 6
|
30
|
+
- 0
|
31
|
+
version: 2.6.0
|
32
|
+
type: :development
|
33
|
+
prerelease: false
|
34
|
+
version_requirements: *id001
|
35
|
+
- !ruby/object:Gem::Dependency
|
36
|
+
name: rspec-cleanup
|
37
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
38
|
+
none: false
|
39
|
+
requirements:
|
40
|
+
- - ~>
|
41
|
+
- !ruby/object:Gem::Version
|
42
|
+
segments:
|
43
|
+
- 1
|
44
|
+
- 0
|
45
|
+
- 0
|
46
|
+
version: 1.0.0
|
47
|
+
type: :development
|
48
|
+
prerelease: false
|
49
|
+
version_requirements: *id002
|
50
|
+
- !ruby/object:Gem::Dependency
|
51
|
+
name: yard
|
52
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
53
|
+
none: false
|
54
|
+
requirements:
|
55
|
+
- - ~>
|
56
|
+
- !ruby/object:Gem::Version
|
57
|
+
segments:
|
58
|
+
- 0
|
59
|
+
- 6
|
60
|
+
- 0
|
61
|
+
version: 0.6.0
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: *id003
|
65
|
+
- !ruby/object:Gem::Dependency
|
66
|
+
name: bundler
|
67
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
68
|
+
none: false
|
69
|
+
requirements:
|
70
|
+
- - ~>
|
26
71
|
- !ruby/object:Gem::Version
|
27
72
|
segments:
|
28
73
|
- 1
|
74
|
+
- 0
|
75
|
+
- 0
|
76
|
+
version: 1.0.0
|
77
|
+
type: :development
|
78
|
+
prerelease: false
|
79
|
+
version_requirements: *id004
|
80
|
+
- !ruby/object:Gem::Dependency
|
81
|
+
name: jeweler
|
82
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
83
|
+
none: false
|
84
|
+
requirements:
|
85
|
+
- - ~>
|
86
|
+
- !ruby/object:Gem::Version
|
87
|
+
segments:
|
88
|
+
- 1
|
89
|
+
- 6
|
90
|
+
- 4
|
91
|
+
version: 1.6.4
|
92
|
+
type: :development
|
93
|
+
prerelease: false
|
94
|
+
version_requirements: *id005
|
95
|
+
- !ruby/object:Gem::Dependency
|
96
|
+
name: rcov
|
97
|
+
requirement: &id006 !ruby/object:Gem::Requirement
|
98
|
+
none: false
|
99
|
+
requirements:
|
100
|
+
- - ">="
|
101
|
+
- !ruby/object:Gem::Version
|
102
|
+
segments:
|
103
|
+
- 0
|
104
|
+
version: "0"
|
105
|
+
type: :development
|
106
|
+
prerelease: false
|
107
|
+
version_requirements: *id006
|
108
|
+
- !ruby/object:Gem::Dependency
|
109
|
+
name: facets
|
110
|
+
requirement: &id007 !ruby/object:Gem::Requirement
|
111
|
+
none: false
|
112
|
+
requirements:
|
113
|
+
- - ~>
|
114
|
+
- !ruby/object:Gem::Version
|
115
|
+
segments:
|
29
116
|
- 2
|
30
117
|
- 9
|
31
|
-
|
118
|
+
- 2
|
119
|
+
version: 2.9.2
|
32
120
|
type: :development
|
33
|
-
|
34
|
-
|
121
|
+
prerelease: false
|
122
|
+
version_requirements: *id007
|
123
|
+
description: Properties with metadata for your classes and objects
|
35
124
|
email: niclas@niclasnilsson.se
|
36
125
|
executables: []
|
37
126
|
|
38
127
|
extensions: []
|
39
128
|
|
40
129
|
extra_rdoc_files:
|
41
|
-
- LICENSE
|
130
|
+
- LICENSE.txt
|
42
131
|
- README.rdoc
|
43
132
|
files:
|
44
133
|
- .document
|
45
|
-
-
|
46
|
-
-
|
134
|
+
- Gemfile
|
135
|
+
- Gemfile.lock
|
136
|
+
- LICENSE.txt
|
47
137
|
- README.rdoc
|
48
138
|
- Rakefile
|
49
139
|
- VERSION
|
@@ -54,21 +144,24 @@ files:
|
|
54
144
|
- spec/spec_helper.rb
|
55
145
|
has_rdoc: true
|
56
146
|
homepage: http://github.com/niclasnilsson/properties
|
57
|
-
licenses:
|
58
|
-
|
147
|
+
licenses:
|
148
|
+
- MIT
|
59
149
|
post_install_message:
|
60
|
-
rdoc_options:
|
61
|
-
|
150
|
+
rdoc_options: []
|
151
|
+
|
62
152
|
require_paths:
|
63
153
|
- lib
|
64
154
|
required_ruby_version: !ruby/object:Gem::Requirement
|
155
|
+
none: false
|
65
156
|
requirements:
|
66
157
|
- - ">="
|
67
158
|
- !ruby/object:Gem::Version
|
159
|
+
hash: 674284784327043654
|
68
160
|
segments:
|
69
161
|
- 0
|
70
162
|
version: "0"
|
71
163
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
164
|
+
none: false
|
72
165
|
requirements:
|
73
166
|
- - ">="
|
74
167
|
- !ruby/object:Gem::Version
|
@@ -78,10 +171,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
78
171
|
requirements: []
|
79
172
|
|
80
173
|
rubyforge_project:
|
81
|
-
rubygems_version: 1.3.
|
174
|
+
rubygems_version: 1.3.7
|
82
175
|
signing_key:
|
83
176
|
specification_version: 3
|
84
|
-
summary:
|
85
|
-
test_files:
|
86
|
-
|
87
|
-
- spec/spec_helper.rb
|
177
|
+
summary: Properties with metadata for your classes and objects
|
178
|
+
test_files: []
|
179
|
+
|