Sha256: 61eaad1099b467e48e5bb0259b377092d0030ee7f1619d57ca2461eedcc59a1c
Contents?: true
Size: 1.72 KB
Versions: 2
Compression:
Stored size: 1.72 KB
Contents
class Card class Name # Name-based "Fields" are compound names in which the right name is treated # as an attribute of the left. (Eg MyName+address) # # "Traits" are the subset of fields in which the right name corresponds to a # card with a codename module FieldsAndTraits # @return [String] def field tag_name field_name(tag_name).s end # @return [Card::Name] def field_name tag_name case tag_name when Symbol trait_name tag_name else tag_name = tag_name.to_s[1..-1] if tag_name.to_s[0] == "+" [self, tag_name].to_name end end # @return [True/False] def field_of? context_name if context_name.present? child_of?(context_name) && relative_name(context_name).length == 2 else s.match(/^\s*\+[^+]+$/).present? end end def relative_field_name tag_name field_name(tag_name).relative_name self end # @return [String] def trait tag_code name = trait_name tag_code raise Card::Error::NotFound, "unknown codename: #{tag_code}" unless name name.s end # @return [Card::Name] def trait_name tag_code return unless (card_id = Card::Codename[tag_code]) [self, Card.quick_fetch(card_id).name].to_name end # @return [True/False] def trait_name? *traitlist junction? && begin right_key = right_name.key traitlist.find do |codename| (card_id = Card::Codename[codename]) && (card = Card.quick_fetch card_id) && card.key == right_key end.present? end end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
card-1.20.1 | lib/card/name/fields_and_traits.rb |
card-1.20.0 | lib/card/name/fields_and_traits.rb |