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 CHANGED
@@ -1,9 +1,10 @@
1
1
  rvm:
2
- - 1.8.7
3
- - 1.9.2
4
2
  - 1.9.3
5
- - jruby
3
+ - jruby-19mode
6
4
  - rbx-19mode
5
+ - rbx-18mode
6
+
7
+ bundler_args: --without documentation
7
8
 
8
9
  branches:
9
10
  only:
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
- gem "ruby_gntp"
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
- require 'yard'
6
- YARD::Rake::YardocTask.new do |t|
7
- t.files = ['lib/**/*.rb', 'README.md']
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'
@@ -22,7 +22,7 @@
22
22
  #
23
23
  module SmartProperties
24
24
 
25
- VERSION = "1.2.0"
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[members.zip(entries)]
168
+ Hash[each_pair.to_a]
169
169
  end
170
170
  end
171
171
  end
@@ -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.0
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: 2972832392315398871
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: 2972832392315398871
106
+ hash: 183774927770524698
139
107
  requirements: []
140
108
  rubyforge_project:
141
109
  rubygems_version: 1.8.24