Class: Card::Name

Inherits:
SmartName show all
Defined in:
lib/card/name.rb

Instance Method Summary collapse

Instance Method Details

#codeObject



41
42
43
# File 'lib/card/name.rb', line 41

def code
  Card::Codename[ Card.fetch_id self ]
end

#is_a_field_of?(context_name) ⇒ Boolean

Returns:

  • (Boolean)


46
47
48
49
50
51
52
53
54
55
# File 'lib/card/name.rb', line 46

def is_a_field_of? context_name
  if context_name.present?
    # Do I still equal myself after I've been relativised in the context of context_name?
    relative_name = self.to_show(*context_name.to_name.parts).to_name
    absolute_name = self.to_absolute_name(context_name)
    relative_name.key != absolute_name.key
  else
    self.s.match /^\s*\+/
  end
end

#rstar?Boolean

Returns:

  • (Boolean)


17
18
19
# File 'lib/card/name.rb', line 17

def rstar?
  right and '*' == right[0,1]
end

#star?Boolean

Returns:

  • (Boolean)


13
14
15
# File 'lib/card/name.rb', line 13

def star?
  simple? and '*' == s[0,1]
end

#trait(tag_code) ⇒ Object



36
37
38
39
# File 'lib/card/name.rb', line 36

def trait tag_code
  name = trait_name( tag_code )
  name ? name.s : ( raise Card::NotFound, "unknown codename: #{tag_code}" )
end

#trait_name(tag_code) ⇒ Object



31
32
33
34
# File 'lib/card/name.rb', line 31

def trait_name tag_code
  card_id = Card::Codename[ tag_code ] and card = Card.fetch( card_id, :skip_modules=>true, :skip_virtual=>true ) and
    [ self, card.cardname ].to_name
end

#trait_name?(*traitlist) ⇒ Boolean

Returns:

  • (Boolean)


21
22
23
24
25
26
27
28
29
# File 'lib/card/name.rb', line 21

def trait_name? *traitlist
  junction? && begin
    right_key = right_name.key
    !!traitlist.find do |codename|
      card_id = Card::Codename[ codename ] and card = Card.fetch( card_id, :skip_modules=>true, :skip_virtual=>true ) and
        card.key == right_key
    end
  end
end