Sha256: 5303265f68b0b44ae03d72509ce6342badb50997d74d655dd02622a329f653aa

Contents?: true

Size: 1.61 KB

Versions: 5

Compression:

Stored size: 1.61 KB

Contents

# -*- encoding : utf-8 -*-
require_dependency 'card/env'

require 'smart_name'

class Card
  class Name < SmartName

    self.params  = Card::Env # yuck!
    self.session = proc { Card::Auth.current.name }
    self.banned_array = ['/']

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

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

    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

    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

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

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


    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
    
    def is_setting?
      Set::Type::Setting.member_names[ key ]
    end
    
    def is_set?
      SetPattern.card_keys[ tag_name.key ]
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
card-1.16.6 lib/card/name.rb
card-1.16.5 lib/card/name.rb
card-1.16.4 lib/card/name.rb
card-1.16.3 lib/card/name.rb
card-1.16.2 lib/card/name.rb