Module: Card::Name::NameVariants
- Included in:
- Card::Name
- Defined in:
- lib/card/name/name_variants.rb
Overview
variants of card names
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
- #alternative ⇒ Object
- #card ⇒ Object
- #card_id ⇒ Object
-
#codename ⇒ Symbol
Codename of card with name.
- #codename_or_string ⇒ Object
-
#standard ⇒ Card::Name
Standardized based on card names.
- #vary(variants) ⇒ Object
Instance Method Details
#alternative ⇒ Object
45 46 47 |
# File 'lib/card/name/name_variants.rb', line 45 def alternative Card.generate_alternative_name self end |
#card ⇒ Object
28 29 30 |
# File 'lib/card/name/name_variants.rb', line 28 def card Card.fetch self, new: {} end |
#card_id ⇒ Object
32 33 34 |
# File 'lib/card/name/name_variants.rb', line 32 def card_id Lexicon.id self end |
#codename ⇒ Symbol
Returns codename of card with name.
37 38 39 |
# File 'lib/card/name/name_variants.rb', line 37 def codename Codename[card_id] end |
#codename_or_string ⇒ Object
41 42 43 |
# File 'lib/card/name/name_variants.rb', line 41 def codename_or_string codename || s end |
#standard ⇒ Card::Name
Returns standardized based on card names.
18 19 20 21 22 23 24 25 26 |
# File 'lib/card/name/name_variants.rb', line 18 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
10 11 12 13 14 15 |
# File 'lib/card/name/name_variants.rb', line 10 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 |