Module: Card::Set::All::Name
- Extended by:
- Card::Set
- Defined in:
- tmpsets/set/mod002-core/all/name.rb
Defined Under Namespace
Modules: ClassMethods
Constant Summary
Constants included
from Helpers
Helpers::SET_PATTERN_TEST_REGEXP
Instance Method Summary
collapse
Methods included from Card::Set
reset_modules
Methods included from I18nScope
#mod_name, #scope
Methods included from Loader
#clean_empty_module_from_hash, #clean_empty_modules, #extended, #process_base_modules, #register_set
Methods included from Helpers
#method_missing, #num_set_parts, #pattern_code, #respond_to_missing?, #set_name_parts, #shortname, #underscore
#attachment, #ensure_set, #stage_method
Methods included from Format
#before, #format, layout_method_name, #view, view_method_name, view_setting_method_name, wrapper_method_name
#include_set, #include_set_formats
Methods included from Basket
#abstract_basket, #add_to_basket, #basket, #unshift_basket
Methods included from Trait
#card_accessor, #card_reader, #card_writer, #require_field
Methods included from Event::Api
#event
Instance Method Details
#[](*args) ⇒ Object
122
123
124
125
126
127
128
129
130
|
# File 'tmpsets/set/mod002-core/all/name.rb', line 122
def [] *args
case args[0]
when Fixnum, Range
fetch_name = Array.wrap(cardname.parts[args[0]]).compact.join "+"
Card.fetch(fetch_name, args[1] || {}) unless simple?
else
super
end
end
|
#absolute_name(context_name = nil) ⇒ Object
102
103
104
105
|
# File 'tmpsets/set/mod002-core/all/name.rb', line 102
def absolute_name context_name=nil
context_name ||= @supercard.cardname if @supercard
cardname.absolute_name context_name
end
|
#autoname(name) ⇒ Object
76
77
78
79
80
81
82
|
# File 'tmpsets/set/mod002-core/all/name.rb', line 76
def autoname name
if Card.exists? name
autoname name.next
else
name
end
end
|
#cardname ⇒ Object
72
73
74
|
# File 'tmpsets/set/mod002-core/all/name.rb', line 72
def cardname
name.to_name
end
|
#child_names(parent_name = nil, side = nil) ⇒ Object
156
157
158
159
160
161
162
|
# File 'tmpsets/set/mod002-core/all/name.rb', line 156
def child_names parent_name=nil, side=nil
parent_name ||= name
side ||= parent_name.to_name.simple? ? :part : :left
Card.search({ side => parent_name, return: :name },
"(#{side}) children of #{parent_name}")
end
|
#children ⇒ Object
152
153
154
|
# File 'tmpsets/set/mod002-core/all/name.rb', line 152
def children
child_names.map { |name| Card[name] }
end
|
#contextual_name ⇒ Object
93
94
95
|
# File 'tmpsets/set/mod002-core/all/name.rb', line 93
def contextual_name
@contextual_name || name
end
|
#descendant_ids(parent_id = nil) ⇒ Object
ids of children and children's children
165
166
167
168
169
170
171
172
173
|
# File 'tmpsets/set/mod002-core/all/name.rb', line 165
def descendant_ids parent_id=nil
return [] if new_card?
parent_id ||= id
Auth.as_bot do
child_ids = Card.search part: parent_id, return: :id
child_descendant_ids = child_ids.map { |cid| descendant_ids cid }
(child_ids + child_descendant_ids).flatten.uniq
end
end
|
#descendants ⇒ Object
children and children's children
NOTE - set modules are not loaded
-- should only be used for name manipulations
178
179
180
|
# File 'tmpsets/set/mod002-core/all/name.rb', line 178
def descendants
@descendants ||= descendant_ids.map { |id| Card.quick_fetch id }
end
|
#field_names(parent_name = nil) ⇒ Object
148
149
150
|
# File 'tmpsets/set/mod002-core/all/name.rb', line 148
def field_names parent_name=nil
child_names parent_name, :left
end
|
#fields ⇒ Object
144
145
146
|
# File 'tmpsets/set/mod002-core/all/name.rb', line 144
def fields
field_names.map { |name| Card[name] }
end
|
#junction? ⇒ Boolean
89
90
91
|
# File 'tmpsets/set/mod002-core/all/name.rb', line 89
def junction?
cardname.junction?
end
|
#key=(newkey) ⇒ Object
41
42
43
44
45
46
47
48
49
50
|
# File 'tmpsets/set/mod002-core/all/name.rb', line 41
def key= newkey
was_in_cache = Card.cache.soft.delete key
write_attribute :key, newkey
Card.write_to_soft_cache self if was_in_cache
reset_patterns_if_rule
reset_patterns
newkey
end
|
#left(*args) ⇒ Object
107
108
109
110
111
112
113
114
115
116
|
# File 'tmpsets/set/mod002-core/all/name.rb', line 107
def left *args
case
when simple? then nil
when @superleft then @superleft
when name_changed? && name.to_name.trunk_name.key == name_was.to_name.key
nil else
Card.fetch cardname.left, *args
end
end
|
#left_or_new(args = {}) ⇒ Object
140
141
142
|
# File 'tmpsets/set/mod002-core/all/name.rb', line 140
def left_or_new args={}
left(args) || Card.new(args.merge(name: cardname.left))
end
|
#name=(newname) ⇒ Object
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
# File 'tmpsets/set/mod002-core/all/name.rb', line 22
def name= newname
cardname = newname.to_name
if @supercard
@supercard.subcards.rename key, cardname.key
@contextual_name = cardname.to_s
relparts = cardname.parts
if relparts.size == 2 &&
(relparts.first.blank? || relparts.first.to_name.key == @supercard.key)
@superleft = @supercard
end
cardname = cardname.to_absolute_name @supercard.name
end
newkey = cardname.key
self.key = newkey if key != newkey
update_subcard_names cardname
write_attribute :name, cardname.s
end
|
#relative_name(context_name = nil) ⇒ Object
97
98
99
100
|
# File 'tmpsets/set/mod002-core/all/name.rb', line 97
def relative_name context_name=nil
context_name ||= @supercard.cardname if @supercard
cardname.relative_name context_name
end
|
#repair_key ⇒ Object
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
|
# File 'tmpsets/set/mod002-core/all/name.rb', line 182
def repair_key
Auth.as_bot do
correct_key = cardname.key
current_key = key
return self if current_key == correct_key
if (key_blocker = Card.find_by_key_and_trash(correct_key, true))
key_blocker.cardname = key_blocker.cardname + "*trash#{rand(4)}"
key_blocker.save
end
saved = (self.key = correct_key) && save!
saved ||= (self.cardname = current_key) && save!
if saved
descendants.each(&:repair_key)
else
Rails.logger.debug "FAILED TO REPAIR BROKEN KEY: #{key}"
self.name = "BROKEN KEY: #{name}"
end
self
end
rescue
Rails.logger.info "BROKE ATTEMPTING TO REPAIR BROKEN KEY: #{key}"
self
end
|
#right(*args) ⇒ Object
118
119
120
|
# File 'tmpsets/set/mod002-core/all/name.rb', line 118
def right *args
Card.fetch(cardname.right, *args) unless simple?
end
|
#simple? ⇒ Boolean
FIXME: use delegations and include all cardname functions
85
86
87
|
# File 'tmpsets/set/mod002-core/all/name.rb', line 85
def simple?
cardname.simple?
end
|
#suspend_name(name) ⇒ Object
255
256
257
258
259
260
261
|
# File 'tmpsets/set/mod002-core/all/name.rb', line 255
def suspend_name name
Card.expire name
tmp_name = "tmp:" + UUID.new.generate
Card.where(id: id).update_all(name: tmp_name, key: tmp_name)
end
|
#tag(*args) ⇒ Object
136
137
138
|
# File 'tmpsets/set/mod002-core/all/name.rb', line 136
def tag *args
simple? ? self : Card.fetch(cardname.right, *args)
end
|
#trunk(*args) ⇒ Object
132
133
134
|
# File 'tmpsets/set/mod002-core/all/name.rb', line 132
def trunk *args
simple? ? self : left(*args)
end
|
#update_subcard_names(cardname) ⇒ Object
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
|
# File 'tmpsets/set/mod002-core/all/name.rb', line 52
def update_subcard_names cardname
return unless @subcards
subcards.each do |subcard|
name_to_replace =
if subcard.cardname.junction? &&
subcard.cardname.parts.first.empty? &&
cardname.parts.first.present?
"".to_name
else
name
end
subcard.name = subcard.cardname.replace_part name_to_replace, cardname.s
end
end
|