Module: Card::Name::NameVariants

Included in:
Card::Name
Defined in:
card/lib/card/name/name_variants.rb

Constant Summary collapse

@@variant_methods =
%i[capitalize singularize pluralize titleize
downcase upcase swapcase reverse succ]
@@variant_aliases =
{ capitalized: :capitalize, singular: :singularize,
plural: :pluralize,       title: :titleize }

Instance Method Summary collapse

Instance Method Details

#alternativeObject



44
45
46
# File 'card/lib/card/name/name_variants.rb', line 44

def alternative
  Card.generate_alternative_name self
end

#cardObject



27
28
29
# File 'card/lib/card/name/name_variants.rb', line 27

def card
  Card.fetch self, new: {}
end

#card_idObject



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

def card_id
  Lexicon.id self
end

#codenameSymbol

Returns codename of card with name.

Returns:

  • (Symbol)

    codename of card with name



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

def codename
  Codename[card_id]
end

#codename_or_stringObject



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

def codename_or_string
  codename || s
end

#standardCard::Name

Returns standardized based on card names.

Returns:

  • (Card::Name)

    standardized based on card names



17
18
19
20
21
22
23
24
25
# File 'card/lib/card/name/name_variants.rb', line 17

def standard
  if simple?
    id = Lexicon.id self
    std = Lexicon.name id
    std.present? ? std : self
  else
    self.class.compose(parts.map { |part| part.cardname.standard })
  end
end

#vary(variants) ⇒ Object



9
10
11
12
13
14
# File 'card/lib/card/name/name_variants.rb', line 9

def vary variants
  variants.to_s.split(/[\s,]+/).inject(s) do |name, variant|
    variant = @@variant_aliases[variant.to_sym] || variant.to_sym
    @@variant_methods.include?(variant) ? name.send(variant) : name
  end
end