can_play 0.2.0 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 829809925b3179fce5cb8b03140d5b66f65efacb
4
- data.tar.gz: 4b05d13c459c921cc14af34ab07374471577d292
3
+ metadata.gz: cac379c788b3996ff429cb1f575c831b64c411b9
4
+ data.tar.gz: fce69d11a015bd7b31830b48793a20a1790a9636
5
5
  SHA512:
6
- metadata.gz: 4bfc3ce70ce00fe83bf83d3a8da069ee0996c230f7afdacebc4d8534b915da2a42b8932338090ac22f23b1dd57eeed99dc1c8a30e9cf18ffbfa1732138bcb157
7
- data.tar.gz: 8945c14309e79517e5394ea23f219baa9de23598467dc8319c1c88b462bedcc65c99eb5e4e7630eb4ed1bcd3c4e5b93c781d627c0c577afde137d6667c83be7f
6
+ metadata.gz: 36a995cf2803c25e2eec9fd631386414b1e1efac56b4f63829085b5fd6df14b5ad7c86cf498e0c96c16abb7d448f3358b268f1e6ff0b9e4e02098219315559d6
7
+ data.tar.gz: 092425cd490844e7230f35411288b1494a913c08332ca22dc2adecce934fb74eb2c30850299bf7dfeb79910b18232fc11cb5c98d68cf14c7419a9e7a34c0f69b
@@ -1,3 +1,3 @@
1
1
  module CanPlay
2
- VERSION = "0.2.0"
2
+ VERSION = "0.2.1"
3
3
  end
data/lib/can_play.rb CHANGED
@@ -14,9 +14,10 @@ module CanPlay
14
14
  def included(base)
15
15
  base.class_eval <<-RUBY
16
16
  include RorHack::ClassLevelInheritableAttributes
17
- inheritable_attributes(:groups, :current_group)
17
+ inheritable_attributes(:groups, :current_group, :module_name)
18
18
  @groups = []
19
19
  @current_group = nil
20
+ @module_name = ''
20
21
  RUBY
21
22
  base.extend ClassMethods
22
23
  end
@@ -26,7 +27,7 @@ module CanPlay
26
27
  end
27
28
 
28
29
  def grouped_resources
29
- @grouped_resources ||= CanPlay.resources.group_by { |i| i[:group] }
30
+ @grouped_resources ||= CanPlay.resources.multi_group_by(:module_name, :group)
30
31
  end
31
32
 
32
33
  def my_resources
@@ -34,18 +35,20 @@ module CanPlay
34
35
  end
35
36
 
36
37
  def grouped_resources_with_chinese_desc
37
- grouped_resources.tap do |i|
38
- i.each do |group, resources|
39
- group[:chinese_desc] = begin
40
- name = I18n.t("can_play.class_name.#{group[:name].singularize}", default: '')
41
- name = group[:klass].model_name.human if name.blank?
42
- name
43
- end
44
- resources.each do |resource|
45
- resource[:chinese_desc] = I18n.t("can_play.authority_name.#{group[:name].singularize}.#{resource[:verb]}", default: '').presence || I18n.t("can_play.authority_name.common.#{resource[:verb]}")
38
+ grouped_resources.tap do |e|
39
+ e.each do |i, v|
40
+ v.each do |group, resources|
41
+ group[:chinese_desc] = begin
42
+ name = I18n.t("can_play.class_name.#{group[:name].singularize}", default: '')
43
+ name = group[:klass].model_name.human if name.blank?
44
+ name
45
+ end
46
+ resources.each do |resource|
47
+ resource[:chinese_desc] = I18n.t("can_play.authority_name.#{group[:name].singularize}.#{resource[:verb]}", default: '').presence || I18n.t("can_play.authority_name.common.#{resource[:verb]}")
48
+ end
46
49
  end
50
+ v.rehash
47
51
  end
48
- i.rehash
49
52
  end
50
53
  end
51
54
  end
@@ -69,24 +72,23 @@ module CanPlay
69
72
  def group(opts, &block)
70
73
  if opts.is_a?(Hash)
71
74
  opts = opts.with_indifferent_access
72
- group = {name: opts.delete(:name), klass: opts.delete(:klass)}
75
+ group = OpenStruct.new(name: opts.delete(:name), klass: opts.delete(:klass))
73
76
  elsif opts.is_a?(Module)
74
77
  name = opts.try(:table_name).presence || opts.to_s.underscore.gsub('/', '_').pluralize
75
- group = {name: name, klass: opts}
78
+ group = OpenStruct.new(name: name, klass: opts)
76
79
  else
77
80
  # do nothing
78
81
  end
79
- group = group.with_indifferent_access
80
82
  @groups << group
81
- @groups = @groups.uniq { |i| i[:name] }
83
+ @groups = @groups.uniq(&:name)
82
84
  @current_group = group
83
- block.call(group[:klass])
85
+ block.call(group.klass)
84
86
  @current_group = nil
85
87
  end
86
88
 
87
89
  def limit(name=nil, &block)
88
90
  raise "Need define group first" if @current_group.nil?
89
- Power.power(name||@current_group[:name], &block)
91
+ Power.power(name||@current_group.name, &block)
90
92
  end
91
93
 
92
94
  def collection(verb_or_verbs, &block)
@@ -104,10 +106,10 @@ module CanPlay
104
106
 
105
107
  if verb_or_verbs.kind_of?(Array)
106
108
  verb_or_verbs.each do |verb|
107
- add_resource(group, verb, group[:klass], 'collection', behavior)
109
+ add_resource(group, verb, group.klass, 'collection', behavior)
108
110
  end
109
111
  else
110
- add_resource(group, verb_or_verbs, group[:klass], 'collection', behavior)
112
+ add_resource(group, verb_or_verbs, group.klass, 'collection', behavior)
111
113
  end
112
114
  end
113
115
 
@@ -126,24 +128,25 @@ module CanPlay
126
128
 
127
129
  if verb_or_verbs.kind_of?(Array)
128
130
  verb_or_verbs.each do |verb|
129
- add_resource(group, verb, group[:klass], 'member', behavior)
131
+ add_resource(group, verb, group.klass, 'member', behavior)
130
132
  end
131
133
  else
132
- add_resource(group, verb_or_verbs, group[:klass], 'member', behavior)
134
+ add_resource(group, verb_or_verbs, group.klass, 'member', behavior)
133
135
  end
134
136
  end
135
137
 
136
138
  def add_resource(group, verb, object, type, behavior)
137
- name = "#{verb}_#{group[:name]}"
138
- resource = {
139
+ name = "#{verb}_#{group.name}"
140
+ resource = OpenStruct.new(
141
+ module_name: module_name,
139
142
  name: name,
140
143
  group: group,
141
144
  verb: verb,
142
145
  object: object,
143
146
  type: type,
144
147
  behavior: behavior
145
- }.with_indifferent_access
146
- CanPlay.resources.keep_if { |i| i[:name] != name }
148
+ )
149
+ CanPlay.resources.keep_if { |i| i.name != name }
147
150
  CanPlay.resources << resource
148
151
  end
149
152
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: can_play
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - happyming9527
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2015-08-26 00:00:00.000000000 Z
11
+ date: 2015-08-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler