booletania 0.0.1 → 0.0.2
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.
- checksums.yaml +4 -4
- data/README.md +14 -0
- data/booletania.gemspec +1 -0
- data/lib/booletania/attribute.rb +19 -8
- data/lib/booletania/column.rb +30 -0
- data/lib/booletania/version.rb +1 -1
- data/lib/booletania.rb +2 -1
- data/spec/booletania_spec.rb +23 -1
- data/spec/spec_helper.rb +1 -0
- metadata +17 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8a7290fd84e48977e1d6b4684d2794a07f6f1c2f
|
4
|
+
data.tar.gz: 7b2b170dc90d2fb5fcab599f4d742bffebc3c826
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 57c575c2d5c130906903019a03959f2f275e22f76e536aac982be240e7b965533359ccd2c4ba2be45972b2782e264231b7e0dbf4eb1b22b96cb0f2e8f3693218
|
7
|
+
data.tar.gz: 25362bbda2696e947f631ede4998d6b402e9491ac686b3bddaa3267d7820a348d5f874f6db6cd3d0fa98355ae6b2bf69bf496df6de4942a6c79baa12948e0bc1
|
data/README.md
CHANGED
@@ -52,6 +52,7 @@ ja:
|
|
52
52
|
- http://yaml.org/type/bool.html
|
53
53
|
- https://groups.google.com/forum/#!topic/rails-i18n/aL-Ed1Y1KGo
|
54
54
|
|
55
|
+
### #xxx_text
|
55
56
|
````ruby
|
56
57
|
invitation.accepted = true
|
57
58
|
invitation.accepted_text # => "承諾"
|
@@ -66,6 +67,19 @@ invitation.accepted = true
|
|
66
67
|
invitation.accepted_text # => "accept"
|
67
68
|
```
|
68
69
|
|
70
|
+
### .xxx_options
|
71
|
+
````ruby
|
72
|
+
Invitation.accepted_options # => [['accept', true], ['deny', false]]
|
73
|
+
|
74
|
+
I18n.locale = :ja
|
75
|
+
Invitation.accepted_options # => [["承諾", true], ["拒否", false]]
|
76
|
+
```
|
77
|
+
|
78
|
+
for use in form
|
79
|
+
````ruby
|
80
|
+
f.collection_radio_buttons :accepted, Invitation.accepted_options, :last, :first
|
81
|
+
```
|
82
|
+
|
69
83
|
## Contributing
|
70
84
|
|
71
85
|
1. Fork it ( https://github.com/[my-github-username]/booletania/fork )
|
data/booletania.gemspec
CHANGED
@@ -19,6 +19,7 @@ Gem::Specification.new do |spec|
|
|
19
19
|
spec.require_paths = ["lib"]
|
20
20
|
|
21
21
|
spec.add_dependency "activerecord", ">= 4.0"
|
22
|
+
spec.add_dependency "wannabe_bool"
|
22
23
|
spec.add_development_dependency "bundler", "~> 1.7"
|
23
24
|
spec.add_development_dependency "rake", "~> 10.0"
|
24
25
|
spec.add_development_dependency "rspec"
|
data/lib/booletania/attribute.rb
CHANGED
@@ -1,13 +1,24 @@
|
|
1
1
|
module Booletania
|
2
2
|
class Attribute
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
3
|
+
class << self
|
4
|
+
def define_methods!(klass, boolean_columns)
|
5
|
+
boolean_columns.each do |boolean_column|
|
6
|
+
column_obj = Booletania::Column.new(klass, boolean_column)
|
7
|
+
|
8
|
+
define_attribute_text(column_obj)
|
9
|
+
|
10
|
+
define_attribute_options(column_obj)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
private
|
15
|
+
|
16
|
+
def define_attribute_text(column_obj)
|
17
|
+
column_obj.klass.class_eval column_obj._text, __FILE__, __LINE__ + 1
|
18
|
+
end
|
19
|
+
|
20
|
+
def define_attribute_options(column_obj)
|
21
|
+
column_obj.klass.class_eval column_obj._options, __FILE__, __LINE__ + 1
|
11
22
|
end
|
12
23
|
end
|
13
24
|
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
module Booletania
|
2
|
+
class Column
|
3
|
+
attr_accessor :klass, :boolean_column
|
4
|
+
|
5
|
+
def initialize(klass, boolean_column)
|
6
|
+
@klass = klass
|
7
|
+
@boolean_column = boolean_column
|
8
|
+
end
|
9
|
+
|
10
|
+
def booletania_i18n_path
|
11
|
+
"booletania.#{@klass.name.underscore}.#{@boolean_column.name}"
|
12
|
+
end
|
13
|
+
|
14
|
+
def _text
|
15
|
+
<<-RUBY
|
16
|
+
def #{@boolean_column.name}_text
|
17
|
+
I18n.t "#{booletania_i18n_path}." + #{@boolean_column.name}.__send__(:to_s), default: #{@boolean_column.name}.__send__(:to_s)
|
18
|
+
end
|
19
|
+
RUBY
|
20
|
+
end
|
21
|
+
|
22
|
+
def _options
|
23
|
+
<<-RUBY
|
24
|
+
def self.#{@boolean_column.name}_options
|
25
|
+
(I18n.t "#{booletania_i18n_path}", default: {}).invert.map { |k, v| [k, v.to_b] }
|
26
|
+
end
|
27
|
+
RUBY
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
data/lib/booletania/version.rb
CHANGED
data/lib/booletania.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
require "booletania/version"
|
2
|
+
require "booletania/column"
|
2
3
|
require "booletania/attribute"
|
3
4
|
|
4
5
|
module Booletania
|
@@ -8,6 +9,6 @@ module Booletania
|
|
8
9
|
fail ArgumentError, "booletania only support ActiveRecord" unless ancestors.include? ActiveRecord::Base
|
9
10
|
fail ArgumentError, "not found .columns method" unless respond_to? :columns
|
10
11
|
|
11
|
-
Attribute.define_methods!(self, columns.select{ |column| column.type == :boolean })
|
12
|
+
Booletania::Attribute.define_methods!(self, columns.select{ |column| column.type == :boolean })
|
12
13
|
end
|
13
14
|
end
|
data/spec/booletania_spec.rb
CHANGED
@@ -24,7 +24,7 @@ describe Booletania do
|
|
24
24
|
end
|
25
25
|
end
|
26
26
|
|
27
|
-
describe "_text" do
|
27
|
+
describe "#_text" do
|
28
28
|
let!(:invitation) { Invitation.create(accepted: accepted) }
|
29
29
|
after { Invitation.delete_all }
|
30
30
|
|
@@ -62,4 +62,26 @@ describe Booletania do
|
|
62
62
|
end
|
63
63
|
end
|
64
64
|
end
|
65
|
+
|
66
|
+
describe "._options" do
|
67
|
+
subject { Invitation.accepted_options }
|
68
|
+
|
69
|
+
context "lang is ja" do
|
70
|
+
before { I18n.locale = :ja }
|
71
|
+
|
72
|
+
it { is_expected.to eq [['承諾', true], ['拒否', false]] }
|
73
|
+
end
|
74
|
+
|
75
|
+
context "lang is en" do
|
76
|
+
before { I18n.locale = :en }
|
77
|
+
|
78
|
+
it { is_expected.to eq [['accept', true], ['deny', false]] }
|
79
|
+
end
|
80
|
+
|
81
|
+
context "lans is invalid" do
|
82
|
+
before { I18n.locale = :xx }
|
83
|
+
|
84
|
+
it { is_expected.to eq [] }
|
85
|
+
end
|
86
|
+
end
|
65
87
|
end
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: booletania
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- ryoff
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2016-03-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord
|
@@ -24,6 +24,20 @@ dependencies:
|
|
24
24
|
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '4.0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: wannabe_bool
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
27
41
|
- !ruby/object:Gem::Dependency
|
28
42
|
name: bundler
|
29
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -125,6 +139,7 @@ files:
|
|
125
139
|
- booletania.gemspec
|
126
140
|
- lib/booletania.rb
|
127
141
|
- lib/booletania/attribute.rb
|
142
|
+
- lib/booletania/column.rb
|
128
143
|
- lib/booletania/version.rb
|
129
144
|
- spec/booletania_spec.rb
|
130
145
|
- spec/fixtures/locales/en.yml
|