flagist 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,15 @@
1
+ ---
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ MmZiYWFiNWZmMzEzNzVhNWI0NDk3ZjVmNDc0ZThlZTQ2Yzg5YjAwZg==
5
+ data.tar.gz: !binary |-
6
+ MDA5YTJiNTEyZmY5MmNiMGYwOWJhMGMyN2I3N2Q2NzQ5ZDAwNTJiNw==
7
+ SHA512:
8
+ metadata.gz: !binary |-
9
+ MWVkOTYyNTlkNmI3MjYxZWQ3ZjQ1MzlhYjMwNTBhMDNhYzZhNmNmMTA2M2Yy
10
+ NWM5ODliMDYwNWUzM2E4MWQyYzlmNzA0MmM4ZjJjYWFiNTVmZDc2MTFkNzU4
11
+ ZDA2ZmEzNDlkY2JlYTJjNWI1YWE2MTFmMTgyYTA0MDgxMmVlOTM=
12
+ data.tar.gz: !binary |-
13
+ YjlmNzk2MDEyMjY3NDYxNjQwMGE5MjJlOGIwZDhkY2NkYmQwZTFkY2Q4MjAz
14
+ MmZkNDc3YjYyYmIyMzM1NTA0Zjc0Yjc3MTBmNTNlZmRmOWQ5YmFkNjMzZGQw
15
+ ZWNkNjZiYmRmMWZiZjI1MmRkNzNiNmRiNGFlNjg5Yzg0YjNkYTI=
data/.gitignore ADDED
@@ -0,0 +1,9 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /Gemfile.lock
4
+ /_yardoc/
5
+ /coverage/
6
+ /doc/
7
+ /pkg/
8
+ /spec/reports/
9
+ /tmp/
data/.travis.yml ADDED
@@ -0,0 +1,12 @@
1
+ sudo: false
2
+ language: ruby
3
+ rvm:
4
+ - 2.3.1
5
+ before_install: gem install bundler -v 1.12.3
6
+ script: bundle exec rake
7
+ deploy:
8
+ provider: rubygems
9
+ api_key:
10
+ secure: UurdZcRQcGckbdtg8N09Zb00IPcMuS0bZfiDzINlObvPrTFaNnlG9byfqyxmzRPomNcuHF/6j+Y2Boi/PKyBS4W2kcwXrMbcbQ+SHD+de5O1G5QsX7VKUBILlnpaDhf4F2L43FyFoStXHsJb0Tem/pA4tnVeTiaUZ+bd8VUYlbbB+uMl+fb8E+6pRxUAtBHx2vK/UKrs+teIohuxe03JLaboqpaIWisJ5o2P+/BD4U4BVV2aT6JssnIAGjvjNmbRmT7RTE1Xod2ZYOQc5PwG4GVMdYPI9BDz8jP/YjOR1SkhekDrtymJ0MnOesAwqHRRv+Qk/YccgYd2Fj3eF4isTtiQ3Ds/eglrUUGI80RGdoCkrzOtMhPwY7hOnRX5NdmKKIn81ZddThdafY2XjGOMzcjOGuiQAIWC0i8HT9xHv3a6dmXyy1frhYemvG3KX1rxb3b4SjlW/WjSiU1z3E313GDqDB+HBGuRMVs/LsFpE4mm6V3QzbZfRO6REToeGs4DGFIUodvA0/gHmWK79aUavfNm+u9kjpOj1yuzDL+1MsiFtNebp5CNLP4nmWNeJV65Qf502bVE6a+UNDJGkykqn12aqvLD4KMFASs8CYUe73YGQ7ec9IQnvLoYmQhGLWT3dW1UOqrPeqBJvUyV3Bnv0Mm4DUL8fIvkY76peAsSccw=
11
+ on:
12
+ tags: true
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in flagist.gemspec
4
+ gemspec
data/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2016 sanzen-sekai
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,300 @@
1
+ # flagist
2
+
3
+ flag addon to active model
4
+
5
+ ![Build Status](https://travis-ci.org/sanzen-sekai/flagist.svg?branch=master)
6
+
7
+ ## Installation
8
+
9
+ Add this line to your application's Gemfile:
10
+
11
+ ```ruby
12
+ gem 'flagist'
13
+ ```
14
+
15
+ And then execute:
16
+
17
+ $ bundle
18
+
19
+ Or install it yourself as:
20
+
21
+ $ gem install flagist
22
+
23
+ ## Usage
24
+
25
+ 初期化
26
+ ActiveModel::Model に flagist クラスメソッドをインクルードする
27
+
28
+ 気になるなら、各モデルで `include Flagist` でも良い
29
+
30
+ ```ruby
31
+ # config/initializers/flagist.rb
32
+ Flagist.install
33
+ # ActiveModel::Model.send :include, Flagist
34
+ ```
35
+
36
+ フラグ設定は各モデルで行う
37
+
38
+ ```ruby
39
+ # app/models/my_model.rb
40
+ class MyModel < ActiveRecord::Base
41
+ flagist do |flag|
42
+ flag.is_active true, false
43
+
44
+ flag.color nil => :blank, 1 => :yellow, 2 => :red, 3 => :green
45
+
46
+ flag.roles :admin, :user, :guest
47
+
48
+ # flag.フラグ ( 値, 値, 値, ... )
49
+ # flag.フラグ ( 値 => name, ... )
50
+
51
+ # フラグ名を複数形で指定すると type: :array になる
52
+ # その場合の型は String で、値のカンマ区切りで保存される
53
+
54
+ # name が String で指定された場合、 symbol に変換される
55
+ end
56
+ end
57
+ ```
58
+
59
+ i18n
60
+
61
+ ```yml
62
+ # config/locales/models/my_model/ja.yml
63
+ ja:
64
+ activerecord:
65
+ flags:
66
+ my_model:
67
+ is_active:
68
+ true: 有効
69
+ false: 無効
70
+ color:
71
+ blank: なし
72
+ yellow: 黄
73
+ red: 赤
74
+ green: 緑
75
+ roles:
76
+ admin: 管理
77
+ user: ユーザー
78
+ guest: ゲスト
79
+ ```
80
+
81
+ ラベル情報の取得
82
+
83
+ ```ruby
84
+ MyModel.is_active_labels #=> {true => "有効", false => "無効"}
85
+ MyModel.is_active_names #=> {true => true, false => false}
86
+
87
+ MyModel.color_labels #=> {nil => "なし", 1 => "黄", 2 => "赤", 3 => "緑"}
88
+ MyModel.color_names #=> {nil => :blank, 1 => :yellow, 2 => :red, 3 => :green}
89
+
90
+ MyModel.roles_labels #=> {:admin => "管理", :user => "ユーザー", :guest => "ゲスト"}
91
+ MyModel.roles_names #=> {:admin => :admin, :user => :user, :guest => :guest}
92
+
93
+
94
+ MyModel.color_labels_inverse #=> {"なし" => nil, "黄" => 1, "赤" => 2, "緑" => 3}
95
+ MyModel.color_names_inverse #=> {:blank => nil, :yellow => 1, :red => 2, :green => 3}
96
+ ```
97
+
98
+ 値の取得
99
+
100
+ 値、 name, label のどれを指定しても良い
101
+ それぞれに重複するものがあるとおかしくなるが、そもそもそんな設定はおかしい
102
+
103
+ ```ruby
104
+ MyModel.is_active(true) #=> true
105
+ MyModel.is_active("有効") #=> true
106
+
107
+ MyModel.is_active_name(true) #=> true
108
+ MyModel.is_active_name("有効") #=> true
109
+
110
+ MyModel.is_active_label(true) #=> "有効"
111
+ MyModel.is_active_label("有効") #=> "有効"
112
+
113
+
114
+ MyModel.color(1) #=> 1
115
+ MyModel.color(:yellow) #=> 1
116
+ MyModel.color("黄") #=> 1
117
+
118
+ MyModel.color_name(1) #=> :yellow
119
+ MyModel.color_name(:yellow) #=> :yellow
120
+ MyModel.color_name("黄") #=> :yellow
121
+
122
+ MyModel.color_label(1) #=> "黄"
123
+ MyModel.color_label(:yellow) #=> "黄"
124
+ MyModel.color_label("黄") #=> "黄"
125
+
126
+
127
+ MyModel.roles(:admin) #=> :admin
128
+ MyModel.roles("管理") #=> :admin
129
+
130
+ MyModel.roles_name(:admin) #=> :admin
131
+ MyModel.roles_name("管理") #=> :admin
132
+
133
+ MyModel.roles_label(:admin) #=> "管理"
134
+ MyModel.roles_label("管理") #=> "管理"
135
+ ```
136
+
137
+ 配列で指定すると配列で戻る
138
+
139
+ ```ruby
140
+ MyModel.roles_label([:admin, :user]) #=> ["管理", "ユーザー"]
141
+ ```
142
+
143
+ 存在しない場合は例外が発生
144
+
145
+ ```ruby
146
+ MyModel.roles_label("マネージャー") #=> raise Flagist::UnknownFlagError
147
+ ```
148
+
149
+ インスタンスメソッド
150
+ `type: :array` の場合、 `roles_name`, `roles_label` の戻り値は配列になる
151
+
152
+ 戻り値は freeze して返される
153
+
154
+ ```ruby
155
+ model = MyModel.new
156
+
157
+ model.is_active #=> true
158
+ model.is_active_name #=> true
159
+ model.is_active_label #=> "有効"
160
+
161
+ model.color #=> 1
162
+ model.color_name #=> :yellow
163
+ model.color_label #=> "黄"
164
+
165
+ model.roles #=> "admin,user"
166
+ model.roles_name #=> [:admin,:user]
167
+ model.roles_label #=> ["管理","ユーザー"]
168
+ ```
169
+
170
+ クラスメソッドと同様の呼び出しも可能
171
+
172
+ ```ruby
173
+ model = MyModel.new
174
+
175
+ model.is_active(true) #=> true
176
+ model.is_active("有効") #=> true
177
+
178
+ model.is_active_name(true) #=> true
179
+ model.is_active_name("有効") #=> true
180
+
181
+ model.is_active_label(true) #=> "有効"
182
+ model.is_active_label("有効") #=> "有効"
183
+
184
+
185
+ model.color(1) #=> 1
186
+ model.color(:yellow) #=> 1
187
+ model.color("黄") #=> 1
188
+
189
+ model.color_name(1) #=> :yellow
190
+ model.color_name(:yellow) #=> :yellow
191
+ model.color_name("黄") #=> :yellow
192
+
193
+ model.color_label(1) #=> "黄"
194
+ model.color_label(:yellow) #=> "黄"
195
+ model.color_label("黄") #=> "黄"
196
+
197
+
198
+ model.roles(:admin) #=> :admin
199
+ model.roles("管理") #=> :admin
200
+
201
+ model.roles_name(:admin) #=> "管理"
202
+ model.roles_name("管理") #=> "管理"
203
+
204
+ model.roles_label(:admin) #=> "管理"
205
+ model.roles_label("管理") #=> "管理"
206
+
207
+
208
+ model.roles_label([:admin, :user]) #=> ["管理", "ユーザー"]
209
+ ```
210
+
211
+ 値の設定
212
+
213
+ ```ruby
214
+ model = MyModel.new
215
+
216
+ model.is_active = true
217
+ model.is_active_name = true
218
+ model.is_active_label = "有効"
219
+
220
+ model.color = 1
221
+ model.color_name = :yellow
222
+ model.color_label = "黄"
223
+
224
+ model.roles = "admin,user"
225
+ model.roles_name = [:admin,:user]
226
+ model.roles_label = ["管理","ユーザー"]
227
+ ```
228
+
229
+ 存在しない場合は例外が発生
230
+
231
+ ```ruby
232
+ model.roles_label = ["マネージャー"] #=> raise Flagist::UnknownFlagError
233
+ ```
234
+
235
+ 第一引数にオプションを渡すと :type の上書きが可能
236
+
237
+ ```ruby
238
+ flag.is_active {type: :scalar}, true, false
239
+ ```
240
+
241
+ 全設定の dump
242
+
243
+ ```ruby
244
+ MyModel.flagist
245
+ # => {
246
+ # is_active: {
247
+ # type: :scalar,
248
+ # flags: {
249
+ # true => {value: true, name: true, label: "有効"},
250
+ # false => {value: false, name: false, label: "無効"},
251
+ # },
252
+ # },
253
+ # color: {
254
+ # type: :scalar,
255
+ # flags: {
256
+ # nil => {value: nil, name: :blank, label: "なし"},
257
+ # 1 => {value: 1, name: :yellow, label: "黄"},
258
+ # 2 => {value: 2, name: :red, label: "赤"},
259
+ # 3 => {value: 3, name: :green, label: "緑"},
260
+ # },
261
+ # },
262
+ # roles: {
263
+ # type: :array,
264
+ # flags: {
265
+ # :admin => {value: :admin, name: :admin, label: "管理"},
266
+ # :user => {value: :user, name: :user, label: "ユーザー"},
267
+ # :guest => {value: :guest, name: :guest, label: "ゲスト"},
268
+ # },
269
+ # },
270
+ # }
271
+ # # i18n が設定されていない場合は label には name が使用される
272
+ # # この時、 name が明示的に指定されていない場合は label は nil が使用される
273
+ ```
274
+
275
+ ## Configure
276
+
277
+ 設定可能なパラメータとデフォルト
278
+
279
+ ```ruby
280
+ # config/initializers/flagist.rb
281
+ Flagist.configure do |config|
282
+ config.i18n_namespace = "activerecord.flags" # I18n.translate でカラム名を取得する際の namespace
283
+ end
284
+ ```
285
+
286
+ ## Development
287
+
288
+ After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake test` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
289
+
290
+ To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
291
+
292
+ ## Contributing
293
+
294
+ Bug reports and pull requests are welcome on GitHub at https://github.com/sanzen-sekai/flagist.
295
+
296
+
297
+ ## License
298
+
299
+ The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
300
+
data/Rakefile ADDED
@@ -0,0 +1,10 @@
1
+ require "bundler/gem_tasks"
2
+ require "rake/testtask"
3
+
4
+ Rake::TestTask.new(:test) do |t|
5
+ t.libs << "test"
6
+ t.libs << "lib"
7
+ t.test_files = FileList['test/**/*_test.rb']
8
+ end
9
+
10
+ task :default => :test
data/bin/console ADDED
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "bundler/setup"
4
+ require "flagist"
5
+
6
+ # You can add fixtures and/or initialization code here to make experimenting
7
+ # with your gem easier. You can also use a different console, if you like.
8
+
9
+ # (If you use this, don't forget to add pry to your Gemfile!)
10
+ # require "pry"
11
+ # Pry.start
12
+
13
+ require "irb"
14
+ IRB.start
data/bin/setup ADDED
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+ IFS=$'\n\t'
4
+ set -vx
5
+
6
+ bundle install
7
+
8
+ # Do any other automated setup that you need to do here
data/flagist.gemspec ADDED
@@ -0,0 +1,28 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'flagist/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "flagist"
8
+ spec.version = Flagist::VERSION
9
+ spec.authors = ["shun-fix9"]
10
+ spec.email = ["shun.fix9@gmail.com"]
11
+
12
+ spec.summary = %q{flag addon to active record}
13
+ spec.description = %q{like enum, my flag addon}
14
+ spec.homepage = "https://github.com/sanzen-sekai/flagist"
15
+ spec.license = "MIT"
16
+
17
+ spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
18
+ spec.bindir = "exe"
19
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
20
+ spec.require_paths = ["lib"]
21
+
22
+ spec.add_development_dependency "travis", "~> 1.8"
23
+ spec.add_development_dependency "bundler", "~> 1.12"
24
+ spec.add_development_dependency "rake", "~> 10.0"
25
+ spec.add_development_dependency "minitest", "~> 5.0"
26
+
27
+ spec.add_development_dependency "activemodel", "~> 4.0"
28
+ end
@@ -0,0 +1,3 @@
1
+ module Flagist
2
+ VERSION = "0.1.0"
3
+ end
data/lib/flagist.rb ADDED
@@ -0,0 +1,203 @@
1
+ require "flagist/version"
2
+
3
+ module Flagist
4
+ class UnknownFlagError < ::StandardError
5
+ def self.raise_by(method,prop,value)
6
+ raise ::Flagist::UnknownFlagError, "#{method}'s #{prop} not exists. value: [#{value.inspect}]"
7
+ end
8
+ end
9
+
10
+ module ClassMethods
11
+ def install
12
+ ActiveModel::Model.send :include, ::Flagist
13
+ end
14
+
15
+ def configure
16
+ @config ||= OpenStruct.new
17
+ yield @config if block_given?
18
+ @config
19
+ end
20
+ def config
21
+ @config
22
+ end
23
+ end
24
+ extend ClassMethods
25
+
26
+ configure do |config|
27
+ config.i18n_namespace = "activerecord.flags"
28
+ end
29
+
30
+
31
+ def self.included(m)
32
+ m.extend ::Flagist::ModuleMethods
33
+ end
34
+
35
+ module ModuleMethods
36
+ def flagist
37
+ flagist = @flagist ||= {}
38
+ if block_given?
39
+ yield ::Flagist::Definer.new(self,flagist)
40
+
41
+ self.class.class_eval do
42
+ flagist.each do |method,info|
43
+ {value: "", name: "_name", label: "_label"}.each do |prop,suffix|
44
+ define_method :"#{method}#{suffix}" do |args|
45
+ if args.respond_to?(:map)
46
+ args_is_array = true
47
+ wrapped_args = args
48
+ else
49
+ wrapped_args = [args]
50
+ end
51
+
52
+ result = wrapped_args.map{|arg|
53
+ value, flag = flagist[method][:flags].find{|value,flag|
54
+ value == arg ||
55
+ flag[:name] == arg ||
56
+ (arg.respond_to?(:to_sym) && flag[:name] == arg.to_sym) ||
57
+ flag[:label] == arg
58
+ }
59
+ unless flag
60
+ ::Flagist::UnknownFlagError.raise_by method, "value", arg
61
+ end
62
+ flag[prop]
63
+ }
64
+
65
+ if args_is_array
66
+ result
67
+ else
68
+ result.first
69
+ end
70
+ end
71
+ end
72
+ %i(name label).each do |prop|
73
+ define_method :"#{method}_#{prop}s" do
74
+ flagist[method][:flags].each.map{|value,flag| [value,flag[prop]]}.to_h
75
+ end
76
+ define_method :"#{method}_#{prop}s_inverse" do
77
+ flagist[method][:flags].each.map{|value,flag| [flag[prop],value]}.to_h
78
+ end
79
+ end
80
+ end
81
+ end
82
+
83
+ instance_methods = Module.new
84
+ instance_methods.class_eval do
85
+ flagist.each do |method,info|
86
+ {value: "", name: "_name", label: "_label"}.each do |prop,suffix|
87
+ define_method :"#{method}#{suffix}" do |*all_args|
88
+ if all_args.size > 1
89
+ raise ::ArgumentError, "wrong number of arguments (given #{all_args.size}, expected 0..1)"
90
+ end
91
+
92
+ if all_args.size > 0
93
+ args = all_args.first
94
+ else
95
+ if prop == :value
96
+ return super()
97
+ end
98
+
99
+ args = __send__ method
100
+
101
+ if info[:type] == :array
102
+ if args.respond_to?(:split)
103
+ args = args.split(",")
104
+ end
105
+ end
106
+ end
107
+
108
+ self.class.__send__(:"#{method}#{suffix}", args).freeze
109
+ end
110
+ end
111
+ %i(name label).each do |prop|
112
+ ["","_inverse"].each do |suffix|
113
+ define_method :"#{method}_#{prop}s#{suffix}" do
114
+ self.class.__send__ :"#{method}_#{prop}s#{suffix}"
115
+ end
116
+ end
117
+ define_method :"#{method}_#{prop}=" do |new_values|
118
+ if info[:type] != :array
119
+ new_values = [new_values]
120
+ end
121
+
122
+ result = new_values.map{|new_value|
123
+ value, flag = flagist[method][:flags].find{|value,flag| flag[prop] == new_value}
124
+ unless flag
125
+ ::Flagist::UnknownFlagError.raise_by method, prop, new_value
126
+ end
127
+ value
128
+ }
129
+
130
+ if info[:type] == :array
131
+ result = result.join(",")
132
+ else
133
+ result = result.first
134
+ end
135
+ __send__ :"#{method}=", result
136
+ end
137
+ end
138
+ end
139
+ end
140
+ self.__send__ :prepend, instance_methods
141
+ end
142
+ flagist
143
+ end
144
+ end
145
+
146
+ class Definer < ::BasicObject
147
+ def initialize(model,data)
148
+ @config = ::Flagist.config
149
+ @model = model
150
+ @data = data
151
+ end
152
+
153
+ def method_missing(method,*args)
154
+ if args.size > 1
155
+ case args.first
156
+ when ::Hash
157
+ opts = args.shift
158
+ end
159
+ end
160
+ case args.last
161
+ when ::Hash
162
+ hash = args.pop
163
+ end
164
+
165
+ info = @data[method] ||= {}
166
+ if opts
167
+ opts.each do |k,v|
168
+ info[k] = v
169
+ end
170
+ end
171
+
172
+ unless info[:type]
173
+ info[:type] = (method.to_s.pluralize == method.to_s) ? :array : :scalar
174
+ end
175
+
176
+ flags = info[:flags] ||= {}
177
+
178
+ args.each do |value|
179
+ flag = flags[value] ||= {}
180
+ flag[:value] = value
181
+ flag[:name] = value
182
+ end
183
+
184
+ if hash
185
+ hash.each do |value,name|
186
+ flag = flags[value] ||= {}
187
+ flag[:value] = value
188
+ flag[:name] = name
189
+ end
190
+ end
191
+
192
+ labels = ::I18n.translate("#{@config.i18n_namespace}.#{@model.model_name.singular}.#{method}", default: {})
193
+ flags.each do |value,flag|
194
+ name = flag[:name]
195
+ if labels[name]
196
+ flag[:label] = labels[name]
197
+ end
198
+ end
199
+
200
+ info
201
+ end
202
+ end
203
+ end
metadata ADDED
@@ -0,0 +1,125 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: flagist
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - shun-fix9
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2016-05-11 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: travis
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ~>
18
+ - !ruby/object:Gem::Version
19
+ version: '1.8'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ~>
25
+ - !ruby/object:Gem::Version
26
+ version: '1.8'
27
+ - !ruby/object:Gem::Dependency
28
+ name: bundler
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ~>
32
+ - !ruby/object:Gem::Version
33
+ version: '1.12'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ~>
39
+ - !ruby/object:Gem::Version
40
+ version: '1.12'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rake
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ~>
46
+ - !ruby/object:Gem::Version
47
+ version: '10.0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ~>
53
+ - !ruby/object:Gem::Version
54
+ version: '10.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: minitest
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ version: '5.0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ~>
67
+ - !ruby/object:Gem::Version
68
+ version: '5.0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: activemodel
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ~>
74
+ - !ruby/object:Gem::Version
75
+ version: '4.0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ~>
81
+ - !ruby/object:Gem::Version
82
+ version: '4.0'
83
+ description: like enum, my flag addon
84
+ email:
85
+ - shun.fix9@gmail.com
86
+ executables: []
87
+ extensions: []
88
+ extra_rdoc_files: []
89
+ files:
90
+ - .gitignore
91
+ - .travis.yml
92
+ - Gemfile
93
+ - LICENSE
94
+ - README.md
95
+ - Rakefile
96
+ - bin/console
97
+ - bin/setup
98
+ - flagist.gemspec
99
+ - lib/flagist.rb
100
+ - lib/flagist/version.rb
101
+ homepage: https://github.com/sanzen-sekai/flagist
102
+ licenses:
103
+ - MIT
104
+ metadata: {}
105
+ post_install_message:
106
+ rdoc_options: []
107
+ require_paths:
108
+ - lib
109
+ required_ruby_version: !ruby/object:Gem::Requirement
110
+ requirements:
111
+ - - ! '>='
112
+ - !ruby/object:Gem::Version
113
+ version: '0'
114
+ required_rubygems_version: !ruby/object:Gem::Requirement
115
+ requirements:
116
+ - - ! '>='
117
+ - !ruby/object:Gem::Version
118
+ version: '0'
119
+ requirements: []
120
+ rubyforge_project:
121
+ rubygems_version: 2.4.5
122
+ signing_key:
123
+ specification_version: 4
124
+ summary: flag addon to active record
125
+ test_files: []