variants 0.0.0 → 0.1.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.
- data/.autotest +8 -0
- data/.rspec +2 -0
- data/Gemfile +3 -0
- data/lib/variants.rb +4 -1
- data/lib/variants/helpers.rb +40 -0
- data/lib/variants/version.rb +1 -1
- data/spec/actionview_extensions_spec.rb +84 -0
- data/spec/spec_helper.rb +15 -0
- data/spec/support/rails.rb +1 -0
- data/variants.gemspec +4 -1
- metadata +48 -9
data/.autotest
ADDED
data/.rspec
ADDED
data/Gemfile
CHANGED
data/lib/variants.rb
CHANGED
@@ -0,0 +1,40 @@
|
|
1
|
+
module Variants
|
2
|
+
module Helpers
|
3
|
+
extend ActiveSupport::Concern
|
4
|
+
|
5
|
+
module InstanceMethods
|
6
|
+
def variant name, condition = nil
|
7
|
+
|
8
|
+
# If Rails env is development
|
9
|
+
if Rails.env.development?
|
10
|
+
# Override conditions if params[:variant_name] is presented
|
11
|
+
if self.respond_to?(:params) and not self.params[name.to_sym].nil?
|
12
|
+
return self.params[name.to_sym].to_s == 'true'
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
# If condition is presented, return it
|
17
|
+
unless condition.nil?
|
18
|
+
return condition
|
19
|
+
end
|
20
|
+
|
21
|
+
# Add ? to end of name
|
22
|
+
method_name = "#{name.to_s}?"
|
23
|
+
# And try to call it
|
24
|
+
if self.respond_to?(method_name)
|
25
|
+
return self.send(method_name)
|
26
|
+
end
|
27
|
+
|
28
|
+
# Else return false
|
29
|
+
return false
|
30
|
+
end
|
31
|
+
|
32
|
+
alias_method :v, :variant
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
module ActionView::Helpers
|
39
|
+
include Variants::Helpers
|
40
|
+
end
|
data/lib/variants/version.rb
CHANGED
@@ -0,0 +1,84 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Variants do
|
4
|
+
|
5
|
+
describe 'ActionView::Helpers' do
|
6
|
+
|
7
|
+
describe 'variant' do
|
8
|
+
|
9
|
+
before :each do
|
10
|
+
Rails.stub_chain(:env, :development?).and_return(true)
|
11
|
+
end
|
12
|
+
|
13
|
+
it 'should respond to variant' do
|
14
|
+
self.should respond_to(:variant)
|
15
|
+
end
|
16
|
+
|
17
|
+
it 'should respond to v' do
|
18
|
+
self.should respond_to(:v)
|
19
|
+
end
|
20
|
+
|
21
|
+
it 'v should be alias to variant' do
|
22
|
+
self.method(:v).should eq self.method(:variant)
|
23
|
+
end
|
24
|
+
|
25
|
+
it 'should accept symbol' do
|
26
|
+
lambda {
|
27
|
+
self.variant :variant_name
|
28
|
+
}.should_not raise_error
|
29
|
+
end
|
30
|
+
|
31
|
+
it 'should accept string' do
|
32
|
+
lambda {
|
33
|
+
self.variant 'variant_name'
|
34
|
+
}.should_not raise_error
|
35
|
+
end
|
36
|
+
|
37
|
+
it 'should accept boolean' do
|
38
|
+
lambda {
|
39
|
+
self.variant :variant_name, true
|
40
|
+
}.should_not raise_error
|
41
|
+
end
|
42
|
+
|
43
|
+
it 'should return false if variant and condition is not presented' do
|
44
|
+
self.variant(:variant_name).should eql false
|
45
|
+
end
|
46
|
+
|
47
|
+
it 'should return condition value if variant is not overrided' do
|
48
|
+
self.variant(:variant_name, true).should eql true
|
49
|
+
self.variant(:variant_name, false).should eql false
|
50
|
+
end
|
51
|
+
|
52
|
+
it 'should call method_name? for :method_name' do
|
53
|
+
self.stub!(:variant_name?).and_return(true)
|
54
|
+
self.variant(:variant_name).should eql true
|
55
|
+
end
|
56
|
+
|
57
|
+
it 'should return condition before calling method' do
|
58
|
+
self.stub!(:variant_name?).and_return(true)
|
59
|
+
self.variant(:variant_name, false).should eql false
|
60
|
+
end
|
61
|
+
|
62
|
+
it 'should look for params[:variant_name]' do
|
63
|
+
self.stub!(:params).and_return( { :variant_name => true } )
|
64
|
+
self.variant(:variant_name).should eql true
|
65
|
+
self.variant(:variant_name, false).should eql true
|
66
|
+
end
|
67
|
+
|
68
|
+
it 'should convert params[:variant_name] to boolean' do
|
69
|
+
self.stub!(:params).and_return( { :variant_name => 'true' } )
|
70
|
+
self.variant(:variant_name).should eql true
|
71
|
+
end
|
72
|
+
|
73
|
+
it 'should look for params only if Rails.env.delevopment?' do
|
74
|
+
Rails.stub_chain(:env, :development?).and_return(false)
|
75
|
+
self.stub!(:params).and_return( { :variant_name => true } )
|
76
|
+
self.variant(:variant_name).should eql false
|
77
|
+
self.variant(:variant_name, false).should eql false
|
78
|
+
end
|
79
|
+
|
80
|
+
end
|
81
|
+
|
82
|
+
end
|
83
|
+
|
84
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'bundler/setup'
|
3
|
+
|
4
|
+
require 'action_view'
|
5
|
+
require 'active_support/inflector'
|
6
|
+
require 'variants'
|
7
|
+
|
8
|
+
# Load support files
|
9
|
+
Dir[ File.join(File.dirname(__FILE__), 'support/**/*.rb') ].each { |f| require f }
|
10
|
+
|
11
|
+
# Include Rails internals
|
12
|
+
include ActionView::Helpers
|
13
|
+
|
14
|
+
RSpec.configure do |config|
|
15
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
module Rails; end
|
data/variants.gemspec
CHANGED
@@ -10,7 +10,7 @@ Gem::Specification.new do |s|
|
|
10
10
|
s.email = ['kossnocorp@gmail.com']
|
11
11
|
s.homepage = ""
|
12
12
|
s.summary = %q{Be boss of your views}
|
13
|
-
s.description = %q{Be boss of your
|
13
|
+
s.description = %q{Be boss of your views}
|
14
14
|
|
15
15
|
s.rubyforge_project = "variants"
|
16
16
|
|
@@ -18,4 +18,7 @@ Gem::Specification.new do |s|
|
|
18
18
|
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
19
19
|
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
20
20
|
s.require_paths = ["lib"]
|
21
|
+
|
22
|
+
s.add_dependency 'activesupport', '>= 3.0.7'
|
23
|
+
s.add_dependency 'actionpack', '>= 3.0.7'
|
21
24
|
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: variants
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 27
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
|
+
- 1
|
8
9
|
- 0
|
9
|
-
|
10
|
-
version: 0.0.0
|
10
|
+
version: 0.1.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Sasha Koss
|
@@ -15,10 +15,41 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-
|
19
|
-
dependencies:
|
20
|
-
|
21
|
-
|
18
|
+
date: 2011-05-01 00:00:00 Z
|
19
|
+
dependencies:
|
20
|
+
- !ruby/object:Gem::Dependency
|
21
|
+
name: activesupport
|
22
|
+
prerelease: false
|
23
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
24
|
+
none: false
|
25
|
+
requirements:
|
26
|
+
- - ">="
|
27
|
+
- !ruby/object:Gem::Version
|
28
|
+
hash: 9
|
29
|
+
segments:
|
30
|
+
- 3
|
31
|
+
- 0
|
32
|
+
- 7
|
33
|
+
version: 3.0.7
|
34
|
+
type: :runtime
|
35
|
+
version_requirements: *id001
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: actionpack
|
38
|
+
prerelease: false
|
39
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
40
|
+
none: false
|
41
|
+
requirements:
|
42
|
+
- - ">="
|
43
|
+
- !ruby/object:Gem::Version
|
44
|
+
hash: 9
|
45
|
+
segments:
|
46
|
+
- 3
|
47
|
+
- 0
|
48
|
+
- 7
|
49
|
+
version: 3.0.7
|
50
|
+
type: :runtime
|
51
|
+
version_requirements: *id002
|
52
|
+
description: Be boss of your views
|
22
53
|
email:
|
23
54
|
- kossnocorp@gmail.com
|
24
55
|
executables: []
|
@@ -28,11 +59,17 @@ extensions: []
|
|
28
59
|
extra_rdoc_files: []
|
29
60
|
|
30
61
|
files:
|
62
|
+
- .autotest
|
31
63
|
- .gitignore
|
64
|
+
- .rspec
|
32
65
|
- Gemfile
|
33
66
|
- Rakefile
|
34
67
|
- lib/variants.rb
|
68
|
+
- lib/variants/helpers.rb
|
35
69
|
- lib/variants/version.rb
|
70
|
+
- spec/actionview_extensions_spec.rb
|
71
|
+
- spec/spec_helper.rb
|
72
|
+
- spec/support/rails.rb
|
36
73
|
- variants.gemspec
|
37
74
|
homepage: ""
|
38
75
|
licenses: []
|
@@ -67,5 +104,7 @@ rubygems_version: 1.7.2
|
|
67
104
|
signing_key:
|
68
105
|
specification_version: 3
|
69
106
|
summary: Be boss of your views
|
70
|
-
test_files:
|
71
|
-
|
107
|
+
test_files:
|
108
|
+
- spec/actionview_extensions_spec.rb
|
109
|
+
- spec/spec_helper.rb
|
110
|
+
- spec/support/rails.rb
|