Module: Card::Setting
- Defined in:
- mod/settings/lib/card/setting.rb
Overview
Used to extend setting modules like Card::Set::Self::Create in the settings mod
Constant Summary collapse
- @@group_names =
{ templating: "Templating", permission: "Permissions", webpage: "Webpage", editing: "Editing", event: "Events", other: "Other", config: "Config" }
- @@groups =
@@group_names.keys.each_with_object({}) do |key, groups| groups[key] = [] end
- @@user_specific =
::Set.new
Instance Attribute Summary collapse
-
#codename ⇒ Object
Let M = Card::Setting (module) E = Card::Set::Self::Create (module extended with M) O = Card'*create' accessible in E.
Class Method Summary collapse
Instance Method Summary collapse
- #applies_to_cardtype(type_id) ⇒ Object
- #set_position(group, pos) ⇒ Object
-
#setting_opts(opts) ⇒ Object
usage: setting_opts group: :permission | :event | ...
- #to_type_id(type) ⇒ Object
Instance Attribute Details
#codename ⇒ Object
Let M = Card::Setting (module) E = Card::Set::Self::Create (module extended with M) O = Card'*create' accessible in E
11 12 13 |
# File 'mod/settings/lib/card/setting.rb', line 11 def codename @codename end |
Class Method Details
.extended(host_class) ⇒ Object
14 15 16 17 |
# File 'mod/settings/lib/card/setting.rb', line 14 def self.extended host_class # accessible in E and O host_class.mattr_accessor :restricted_to_type, :rule_type_editable end |
.user_specific?(codename) ⇒ Boolean
33 34 35 |
# File 'mod/settings/lib/card/setting.rb', line 33 def self.user_specific? codename @@user_specific.include? codename end |
Instance Method Details
#applies_to_cardtype(type_id) ⇒ Object
77 78 79 |
# File 'mod/settings/lib/card/setting.rb', line 77 def applies_to_cardtype type_id !restricted_to_type || restricted_to_type.include?(type_id) end |
#set_position(group, pos) ⇒ Object
65 66 67 68 69 70 71 72 73 74 75 |
# File 'mod/settings/lib/card/setting.rb', line 65 def set_position group, pos if pos if @@groups[group][pos - 1] @@groups[group].insert(pos - 1, self) else @@groups[group][pos - 1] = self end else @@groups[group] << self end end |
#setting_opts(opts) ⇒ Object
usage:
setting_opts group: :permission | :event | ...
position:
46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
# File 'mod/settings/lib/card/setting.rb', line 46 def setting_opts opts group = opts[:group] || :other @@groups[group] ||= [] set_position group, opts[:position] @codename = opts[:codename] || name.match(/::(\w+)$/)[1].underscore.to_sym self.rule_type_editable = opts[:rule_type_editable] self.restricted_to_type = if opts[:restricted_to_type] type_ids = [opts[:restricted_to_type]].flatten.map do |cardtype| to_type_id(cardtype) end ::Set.new(type_ids) end return unless opts[:user_specific] @@user_specific << @codename end |
#to_type_id(type) ⇒ Object
37 38 39 |
# File 'mod/settings/lib/card/setting.rb', line 37 def to_type_id type type.is_a?(Integer) ? type : Card::Codename[type] end |