smart_properties 1.2.0 → 1.2.1
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.
- data/.travis.yml +4 -3
- data/Gemfile +9 -1
- data/Rakefile +6 -3
- data/lib/smart_properties.rb +3 -3
- data/smart_properties.gemspec +1 -3
- data/spec/smart_properties_spec.rb +71 -0
- metadata +3 -35
data/.travis.yml
CHANGED
data/Gemfile
CHANGED
@@ -3,4 +3,12 @@ source 'https://rubygems.org'
|
|
3
3
|
# Specify your gem's dependencies in smart_properties.gemspec
|
4
4
|
gemspec
|
5
5
|
|
6
|
-
|
6
|
+
if RUBY_PLATFORM =~ /darwin/
|
7
|
+
gem "ruby_gntp"
|
8
|
+
gem "rb-fsevent"
|
9
|
+
end
|
10
|
+
|
11
|
+
group :documentation do
|
12
|
+
gem "yard"
|
13
|
+
gem "redcarpet"
|
14
|
+
end
|
data/Rakefile
CHANGED
@@ -2,9 +2,12 @@
|
|
2
2
|
require 'bundler/setup'
|
3
3
|
require 'bundler/gem_tasks'
|
4
4
|
|
5
|
-
|
6
|
-
|
7
|
-
|
5
|
+
begin
|
6
|
+
require 'yard'
|
7
|
+
YARD::Rake::YardocTask.new do |t|
|
8
|
+
t.files = ['lib/**/*.rb', 'README.md']
|
9
|
+
end
|
10
|
+
rescue LoadError
|
8
11
|
end
|
9
12
|
|
10
13
|
require 'rspec/core/rake_task'
|
data/lib/smart_properties.rb
CHANGED
@@ -22,7 +22,7 @@
|
|
22
22
|
#
|
23
23
|
module SmartProperties
|
24
24
|
|
25
|
-
VERSION = "1.2.
|
25
|
+
VERSION = "1.2.1"
|
26
26
|
|
27
27
|
class Property
|
28
28
|
|
@@ -40,7 +40,7 @@ module SmartProperties
|
|
40
40
|
@required = !!attrs.delete(:required)
|
41
41
|
|
42
42
|
unless attrs.empty?
|
43
|
-
raise ArgumentError, "SmartProperties do not support the following configuration options: #{attrs.keys.join(', ')}."
|
43
|
+
raise ArgumentError, "SmartProperties do not support the following configuration options: #{attrs.keys.map { |m| m.to_s }.sort.join(', ')}."
|
44
44
|
end
|
45
45
|
end
|
46
46
|
|
@@ -165,7 +165,7 @@ module SmartProperties
|
|
165
165
|
end
|
166
166
|
|
167
167
|
def to_hash
|
168
|
-
Hash[
|
168
|
+
Hash[each_pair.to_a]
|
169
169
|
end
|
170
170
|
end
|
171
171
|
end
|
data/smart_properties.gemspec
CHANGED
@@ -18,10 +18,8 @@ Gem::Specification.new do |gem|
|
|
18
18
|
gem.name = "smart_properties"
|
19
19
|
gem.require_paths = ["lib"]
|
20
20
|
gem.version = SmartProperties::VERSION
|
21
|
-
|
21
|
+
|
22
22
|
gem.add_development_dependency "rspec", "~> 2.0"
|
23
23
|
gem.add_development_dependency "rake", "~> 0.8"
|
24
|
-
gem.add_development_dependency "yard", "~> 0.8"
|
25
|
-
gem.add_development_dependency "redcarpet", "~> 2.1"
|
26
24
|
gem.add_development_dependency "guard-rspec", "~> 0.7"
|
27
25
|
end
|
@@ -472,4 +472,75 @@ describe SmartProperties do
|
|
472
472
|
|
473
473
|
end
|
474
474
|
|
475
|
+
context 'when used to build a class that is then subclassed and later extended at runtime' do
|
476
|
+
|
477
|
+
let!(:klass) do
|
478
|
+
Class.new.tap do |c|
|
479
|
+
c.send(:include, described_class)
|
480
|
+
c.send(:property, :title)
|
481
|
+
end
|
482
|
+
end
|
483
|
+
|
484
|
+
let!(:subklass) do
|
485
|
+
Class.new(klass).tap do |c|
|
486
|
+
c.send(:property, :body)
|
487
|
+
end
|
488
|
+
end
|
489
|
+
|
490
|
+
before do
|
491
|
+
klass.tap do |c|
|
492
|
+
c.send(:property, :subject)
|
493
|
+
end
|
494
|
+
end
|
495
|
+
|
496
|
+
context "the class's properties" do
|
497
|
+
|
498
|
+
subject { klass.properties }
|
499
|
+
|
500
|
+
it { should have_key(:title) }
|
501
|
+
it { should have_key(:subject) }
|
502
|
+
|
503
|
+
end
|
504
|
+
|
505
|
+
context "the subclass's properties" do
|
506
|
+
|
507
|
+
subject { subklass.properties }
|
508
|
+
|
509
|
+
it { should have_key(:title) }
|
510
|
+
it { should have_key(:body) }
|
511
|
+
|
512
|
+
pending '(dynamically defined property is not inherited)' do
|
513
|
+
it { should have_key(:subject) }
|
514
|
+
end
|
515
|
+
|
516
|
+
end
|
517
|
+
|
518
|
+
context 'the subclass' do
|
519
|
+
|
520
|
+
subject { subklass }
|
521
|
+
|
522
|
+
it "should be initializable using a block", :pending => true do
|
523
|
+
configuration_instructions = lambda do |s|
|
524
|
+
s.title = "Lorem Ipsum"
|
525
|
+
s.priority = :low
|
526
|
+
s.body = "Lorem ipsum dolor sit amet."
|
527
|
+
end
|
528
|
+
|
529
|
+
expect { subject.new(&configuration_instructions) }.to_not raise_error
|
530
|
+
end
|
531
|
+
|
532
|
+
it "should be initializable using a hash of attributes" do
|
533
|
+
attributes = {
|
534
|
+
:title => "Lorem Ipsum",
|
535
|
+
:priority => :low,
|
536
|
+
:body => "Lorem ipsum dolor sit amet."
|
537
|
+
}
|
538
|
+
|
539
|
+
expect { subject.new(attributes) }.to_not raise_error
|
540
|
+
end
|
541
|
+
|
542
|
+
end
|
543
|
+
|
544
|
+
end
|
545
|
+
|
475
546
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: smart_properties
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.2.
|
4
|
+
version: 1.2.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -43,38 +43,6 @@ dependencies:
|
|
43
43
|
- - ~>
|
44
44
|
- !ruby/object:Gem::Version
|
45
45
|
version: '0.8'
|
46
|
-
- !ruby/object:Gem::Dependency
|
47
|
-
name: yard
|
48
|
-
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
|
-
requirements:
|
51
|
-
- - ~>
|
52
|
-
- !ruby/object:Gem::Version
|
53
|
-
version: '0.8'
|
54
|
-
type: :development
|
55
|
-
prerelease: false
|
56
|
-
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
|
-
requirements:
|
59
|
-
- - ~>
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
version: '0.8'
|
62
|
-
- !ruby/object:Gem::Dependency
|
63
|
-
name: redcarpet
|
64
|
-
requirement: !ruby/object:Gem::Requirement
|
65
|
-
none: false
|
66
|
-
requirements:
|
67
|
-
- - ~>
|
68
|
-
- !ruby/object:Gem::Version
|
69
|
-
version: '2.1'
|
70
|
-
type: :development
|
71
|
-
prerelease: false
|
72
|
-
version_requirements: !ruby/object:Gem::Requirement
|
73
|
-
none: false
|
74
|
-
requirements:
|
75
|
-
- - ~>
|
76
|
-
- !ruby/object:Gem::Version
|
77
|
-
version: '2.1'
|
78
46
|
- !ruby/object:Gem::Dependency
|
79
47
|
name: guard-rspec
|
80
48
|
requirement: !ruby/object:Gem::Requirement
|
@@ -126,7 +94,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
126
94
|
version: '0'
|
127
95
|
segments:
|
128
96
|
- 0
|
129
|
-
hash:
|
97
|
+
hash: 183774927770524698
|
130
98
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
131
99
|
none: false
|
132
100
|
requirements:
|
@@ -135,7 +103,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
135
103
|
version: '0'
|
136
104
|
segments:
|
137
105
|
- 0
|
138
|
-
hash:
|
106
|
+
hash: 183774927770524698
|
139
107
|
requirements: []
|
140
108
|
rubyforge_project:
|
141
109
|
rubygems_version: 1.8.24
|