Module: Card::Set::All::Name

Extended by:
Card::Set
Defined in:
tmpsets/set/mod001-01_core/all/name.rb

Instance Method Summary collapse

Methods included from Card::Set

abstract_set?, all_set?, card_accessor, card_reader, card_writer, clean_empty_module_from_hash, clean_empty_modules, define_active_job, define_event_method, define_event_perform_later_method, define_on_format, ensure_set, event, extended, format, process_base_module_list, process_base_modules, register_set, register_set_format, shortname, view, write_tmp_file

Instance Method Details

#[](*args) ⇒ Object



70
71
72
73
74
75
76
77
# File 'tmpsets/set/mod001-01_core/all/name.rb', line 70

def [] *args
  if args[0].kind_of?(Fixnum) || args[0].kind_of?(Range)
    fetch_name = Array.wrap(cardname.parts[args[0]]).compact.join '+'
    Card.fetch( fetch_name, args[1] || {} ) if !simple?
  else
    super
  end
end

#autoname(name) ⇒ Object



33
34
35
36
37
38
39
# File 'tmpsets/set/mod001-01_core/all/name.rb', line 33

def autoname name
  if Card.exists? name
    autoname name.next
  else
    name
  end
end

#cardnameObject



29
30
31
# File 'tmpsets/set/mod001-01_core/all/name.rb', line 29

def cardname
  name.to_name
end

#childrenObject



91
92
93
# File 'tmpsets/set/mod001-01_core/all/name.rb', line 91

def children
  Card.search( { (simple? ? :part : :left) => name } ).to_a
end

#dependentsObject



95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
# File 'tmpsets/set/mod001-01_core/all/name.rb', line 95

def dependents
  return [] if new_card?

  if @dependents.nil?
    @dependents =
      Auth.as_bot do
        deps = children
        deps.inject(deps) do |array, card|
          array + card.dependents
        end
      end
    #Rails.logger.warn "dependents[#{inspect}] #{@dependents.inspect}"
  end
  @dependents
end

#junction?Boolean

Returns:

  • (Boolean)


46
47
48
# File 'tmpsets/set/mod001-01_core/all/name.rb', line 46

def junction?
  cardname.junction?
end

#left(*args) ⇒ Object



55
56
57
58
59
60
61
62
63
64
# File 'tmpsets/set/mod001-01_core/all/name.rb', line 55

def left *args
  if !simple?
    @superleft or begin
      unless name_changed? and name.to_name.trunk_name.key == name_was.to_name.key
        # prevent recursion when, eg, renaming A+B to A+B+C
        Card.fetch cardname.left, *args
      end
    end
  end
end

#left_or_new(args = {}) ⇒ Object



87
88
89
# File 'tmpsets/set/mod001-01_core/all/name.rb', line 87

def left_or_new args={}
  left args or Card.new args.merge(:name=>cardname.left)
end

#name=(newname) ⇒ Object



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'tmpsets/set/mod001-01_core/all/name.rb', line 5

def name= newname
  cardname = newname.to_name
  if @supercard
    @relative_name = cardname.to_s
    relparts = @relative_name.to_name.parts
    @superleft = @supercard if relparts.size==2 && relparts.first.blank?
    cardname = @relative_name.to_name.to_absolute_name @supercard.name
  end

  newkey = cardname.key
  if key != newkey
    self.key = newkey
    reset_patterns_if_rule # reset the old name - should be handled in tracked_attributes!!
    reset_patterns
  end

  subcards.each do |subkey, subcard|
    next unless Card===subcard
    subcard.name = subkey.to_name.to_absolute cardname
  end

  write_attribute :name, cardname.s
end

#relative_nameObject



51
52
53
# File 'tmpsets/set/mod001-01_core/all/name.rb', line 51

def relative_name
  @relative_name || name
end

#repair_keyObject



111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
# File 'tmpsets/set/mod001-01_core/all/name.rb', line 111

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 and self.save! )
    saved ||= ( self.cardname = current_key and self.save! )

    if saved
      self.dependents.each { |c| c.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



66
67
68
# File 'tmpsets/set/mod001-01_core/all/name.rb', line 66

def right *args
  Card.fetch( cardname.right, *args ) if !simple?
end

#simple?Boolean

FIXME: use delegations and include all cardname functions

Returns:

  • (Boolean)


42
43
44
# File 'tmpsets/set/mod001-01_core/all/name.rb', line 42

def simple?
  cardname.simple?
end

#suspend_name(name) ⇒ Object



228
229
230
231
232
233
234
# File 'tmpsets/set/mod001-01_core/all/name.rb', line 228

def suspend_name(name)
  # move the current card out of the way, in case the new name will require
  # re-creating a card with the current name, ie.  A -> A+B
  Card.expire name
  tmp_name = "tmp:" + UUID.new.generate
  Card.where(:id=>self.id).update_all(:name=>tmp_name, :key=>tmp_name)
end

#tag(*args) ⇒ Object



83
84
85
# File 'tmpsets/set/mod001-01_core/all/name.rb', line 83

def tag *args
  simple? ? self : Card.fetch( cardname.right, *args )
end

#trunk(*args) ⇒ Object



79
80
81
# File 'tmpsets/set/mod001-01_core/all/name.rb', line 79

def trunk *args
  simple? ? self : left( *args )
end