figleaf 0.0.4 → 0.0.5

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,6 +1,6 @@
1
1
  ---
2
2
  language: ruby
3
- bundler_args:
3
+ bundler_args: --without development
4
4
  rvm:
5
5
  - 1.9.2
6
6
  - 1.9.3
data/Gemfile CHANGED
@@ -1,3 +1,8 @@
1
1
  source :rubygems
2
2
 
3
3
  gemspec
4
+
5
+ group :development, :test do
6
+ gem 'rake'
7
+ gem 'rspec'
8
+ end
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- figleaf (0.0.4)
4
+ figleaf (0.0.5)
5
5
  activesupport
6
6
  hashie
7
7
 
@@ -12,6 +12,14 @@ GEM
12
12
  i18n (~> 0.6)
13
13
  multi_json (~> 1.0)
14
14
  coderay (1.0.7)
15
+ columnize (0.3.6)
16
+ debugger (1.1.4)
17
+ columnize (>= 0.3.1)
18
+ debugger-linecache (~> 1.1.1)
19
+ debugger-ruby_core_source (~> 1.1.3)
20
+ debugger-linecache (1.1.2)
21
+ debugger-ruby_core_source (>= 1.1.1)
22
+ debugger-ruby_core_source (1.1.3)
15
23
  diff-lcs (1.1.3)
16
24
  hashie (1.2.0)
17
25
  i18n (0.6.0)
@@ -21,6 +29,9 @@ GEM
21
29
  coderay (~> 1.0.5)
22
30
  method_source (~> 0.8)
23
31
  slop (~> 3.3.1)
32
+ pry-debugger (0.2.0)
33
+ debugger (~> 1.1.3)
34
+ pry (~> 0.9.9)
24
35
  rake (0.9.2.2)
25
36
  rspec (2.11.0)
26
37
  rspec-core (~> 2.11.0)
@@ -38,5 +49,6 @@ PLATFORMS
38
49
  DEPENDENCIES
39
50
  figleaf!
40
51
  pry
52
+ pry-debugger
41
53
  rake
42
54
  rspec
data/README.md CHANGED
@@ -47,6 +47,8 @@ end
47
47
  ```
48
48
  etc...
49
49
 
50
+ Then, in your app, you can reference `Figleaf::Setting.some_awesome_flag?`.
51
+
50
52
  Also, it provides the ability for you to define all your environment dependent
51
53
  settings in just one YAML file inside `config/settings/`. The anatomy of these
52
54
  files should be:
data/figleaf.gemspec CHANGED
@@ -15,7 +15,7 @@ Gem::Specification.new do |gem|
15
15
  gem.require_paths = ["lib"]
16
16
  gem.version = Figleaf::VERSION
17
17
 
18
- %w(rake rspec pry).each do |g|
18
+ %w(rake rspec pry pry-debugger).each do |g|
19
19
  gem.add_development_dependency(g)
20
20
  end
21
21
 
@@ -32,17 +32,24 @@ module Figleaf
32
32
  end
33
33
 
34
34
  def method_missing(method_name, *args)
35
- if self.auto_define && method_name.to_s =~ /=$/ && args.length == 1
36
- self.define_cattr_methods(method_name)
35
+ getter_name, modifier = extract_getter_name_and_modifier(method_name)
36
+
37
+ if self.auto_define && modifier == '=' && args.length == 1
38
+ self.define_cattr_methods(getter_name)
37
39
  self.send(method_name, args.shift)
40
+ elsif modifier == '?' && args.empty?
41
+ self.send(getter_name).present?
38
42
  else
39
43
  super
40
44
  end
41
45
  end
42
46
 
43
- def define_cattr_methods(setter_name)
44
- getter_name = setter_name.to_s.gsub('=','')
47
+ def extract_getter_name_and_modifier(method_name)
48
+ match = method_name.to_s.match(/(?<name>.*?)(?<modifier>[?=]?)$/)
49
+ [match[:name], match[:modifier]]
50
+ end
45
51
 
52
+ def define_cattr_methods(getter_name)
46
53
  cattr_writer getter_name
47
54
  define_singleton_method(getter_name) do
48
55
  result = class_variable_get "@@#{getter_name}"
@@ -1,3 +1,3 @@
1
1
  module Figleaf
2
- VERSION = '0.0.4'
2
+ VERSION = '0.0.5'
3
3
  end
@@ -56,6 +56,50 @@ describe Figleaf::Settings do
56
56
  end
57
57
  end
58
58
 
59
+ describe "predicate methods for boolean values" do
60
+ it "should define predicate methods for true value" do
61
+ described_class.configure_with_auto_define do |s|
62
+ s.some_boolean = true
63
+ end
64
+
65
+ described_class.some_boolean.should be_true
66
+ described_class.some_boolean?.should be_true
67
+ end
68
+
69
+ it "should define predicate methods for false value" do
70
+ described_class.configure_with_auto_define do |s|
71
+ s.another_boolean = false
72
+ end
73
+
74
+ described_class.another_boolean.should be_false
75
+ described_class.another_boolean?.should be_false
76
+ end
77
+
78
+ it "should evaluate presence predicate methods for string value" do
79
+ described_class.configure_with_auto_define do |s|
80
+ s.not_a_boolean = "Hello, world!"
81
+ end
82
+
83
+ described_class.not_a_boolean?.should be_true
84
+ end
85
+
86
+ it "should return false for empty string" do
87
+ described_class.configure_with_auto_define do |s|
88
+ s.empty_string = ""
89
+ end
90
+
91
+ described_class.empty_string?.should be_false
92
+ end
93
+
94
+ it "return true for lists" do
95
+ described_class.configure_with_auto_define do |s|
96
+ s.not_a_boolean = %w(1 2 3)
97
+ end
98
+
99
+ described_class.not_a_boolean?.should be_true
100
+ end
101
+ end
102
+
59
103
  describe "self.configure" do
60
104
  before(:each) do
61
105
  described_class.auto_define = true
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: figleaf
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.5
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-08-14 00:00:00.000000000 Z
12
+ date: 2012-08-16 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rake
@@ -59,6 +59,22 @@ dependencies:
59
59
  - - ! '>='
60
60
  - !ruby/object:Gem::Version
61
61
  version: '0'
62
+ - !ruby/object:Gem::Dependency
63
+ name: pry-debugger
64
+ requirement: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ! '>='
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
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: '0'
62
78
  - !ruby/object:Gem::Dependency
63
79
  name: activesupport
64
80
  requirement: !ruby/object:Gem::Requirement
@@ -127,18 +143,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
127
143
  - - ! '>='
128
144
  - !ruby/object:Gem::Version
129
145
  version: '0'
130
- segments:
131
- - 0
132
- hash: 4046133761030384592
133
146
  required_rubygems_version: !ruby/object:Gem::Requirement
134
147
  none: false
135
148
  requirements:
136
149
  - - ! '>='
137
150
  - !ruby/object:Gem::Version
138
151
  version: '0'
139
- segments:
140
- - 0
141
- hash: 4046133761030384592
142
152
  requirements: []
143
153
  rubyforge_project:
144
154
  rubygems_version: 1.8.24