module PrettyMagic::ManaIcons::ClassMethods

Public Instance Methods

add_icons_to_text(long_text, options = {}) click to toggle source
# File lib/pretty_magic/mana_icons.rb, line 118
def add_icons_to_text(long_text, options = {})
  options = {cost: true, shadow: false, size: 1, fixed_width: false}.merge(options)
    
  pretty_text = long_text.gsub(/{.+?}/) { |symbolText|
      use_all_symbols(symbolText, { cost: options[:cost], shadow: options[:shadow], size: options[:size],
          fixed_width: options[:fixed_width]} )
    }
  
  pretty_text
end
card_symbols(symbolText, options = {}) click to toggle source
# File lib/pretty_magic/mana_icons.rb, line 42
def card_symbols(symbolText, options = {})
    options = {cost: false, shadow: false, size: 1, fixed_width: false, loyalty: nil, saga_number: nil}.merge(options)
  
    prettySymbol = ""
    loyalty = options[:loyalty]
    saga_number = options[:saga_number]
    
    case symbolText.upcase
      when '{T}'
        prettySymbol = "ms-tap"
      when '{Q}'
        prettySymbol = "ms-untap"
      when '{PW}'
        prettySymbol = "ms-planeswalker"
      else
        prettySymbol = ""
    end
    
    easy_match = symbolText.upcase[/{(TAP|UNTAP|TAP-ALT|CHAOS|ARTIFACT|CREATURE|ENCHANTMENT|INSTANT|LAND|PLANESWALKER|SORCERY|MULTIPLE|FLASHBACK|LOYALTY-UP|LOYALTY-DOWN|LOYALTY-ZERO|LOYALTY-START|DFC-DAY|DFC-NIGHT|DFC-SPARK|DFC-IGNITE|DFC-MOON|DFC-EMRAKUL|DFC-ENCHANTMENT|POWER|TOUGHNESS|ARTIST-BRUSH|ARTIST-NIB|SAGA|ACORN)}/, 1]
    unless easy_match.nil?
      prettySymbol = "ms-#{easy_match.downcase}"
    end
    
    if prettySymbol == ""
      symbolText
    else
      prettySymbol = ((0...20) === loyalty) ? prettySymbol + " ms-loyalty-#{loyalty}" : prettySymbol
      prettySymbol = ((0...5) === saga_number) ? prettySymbol + " ms-saga-#{saga_number}" : prettySymbol
      
      i_tag(prettySymbol + ' ' + optional_classes(options[:cost], options[:shadow], options[:size], options[:fixed_width]))
    end
    
end
guild_symbols(symbolText, options = {}) click to toggle source
# File lib/pretty_magic/mana_icons.rb, line 76
def guild_symbols(symbolText, options = {})
    options = {cost: false, shadow: false, size: 1, fixed_width: false}.merge(options)
  
    prettySymbol = ""
    
    
    guild_match = symbolText.upcase[/{(AZORIUS|BOROS|DIMIR|GOLGARI|GRUUL|IZZET|ORZHOV|RAKDOS|SELESNYA|SIMIC)}/, 1]
    unless guild_match.nil?
      prettySymbol = "ms-guild-#{guild_match.downcase}"
    end
    
    clan_match = symbolText.upcase[/{(ABZAN|JESKAI|MARDU|SULTAI|TEMUR|ATARKA|DROMOKA|KOLAGHAN|OJUTAI|SILUMGAR)}/, 1]
    unless clan_match.nil?
      prettySymbol = "ms-clan-#{clan_match.downcase}"
    end
    
    if prettySymbol == ""
      symbolText
    else
      i_tag(prettySymbol + ' ' + optional_classes(options[:cost], options[:shadow], options[:size], options[:fixed_width]))
    end
end
mana_symbols(symbolText, options = {}) click to toggle source
# File lib/pretty_magic/mana_icons.rb, line 4
def mana_symbols(symbolText, options = {})
    options = {cost: true, shadow: false, size: 1, fixed_width: false}.merge(options)
  
    prettySymbol = ""
    easy_match = ""
    split_match = ""
    
    # first handle special cases that are not that easy to convert
    case symbolText.upcase
      when '{½}', '{1/2}'
        prettySymbol = "ms-1-2"
      when '{∞}'
        prettySymbol = "ms-infinity"
      else
        prettySymbol = ""
    end
  
    # easy matches, just one letter or number
    easy_match = symbolText.upcase[/{(X|Y|Z|0|1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19|20|100|1000000|INFINITY|P|HW|HR|W|U|B|R|G|C|S|E)}/, 1]
    # split or hybrids
    split_match = symbolText.upcase[/{(W\/U|W\/B|B\/R|B\/G|U\/B|U\/R|R\/G|R\/W|G\/W|G\/U|2\/W|2\/U|2\/B|2\/R|2\/G|W\/P|U\/P|B\/P|R\/P|G\/P)}/, 1]
   
   
    unless easy_match.nil?
      prettySymbol = "ms-#{easy_match.downcase}"
    end
    unless split_match.nil?
      prettySymbol = "ms-#{split_match.downcase.gsub("/", "")}"
    end
    
    if prettySymbol == ""
      symbolText
    else
      i_tag(prettySymbol + ' ' + optional_classes(options[:cost], options[:shadow], options[:size], options[:fixed_width]))
    end
    
end
poleis_symbols(symbolText, options = {}) click to toggle source
# File lib/pretty_magic/mana_icons.rb, line 99
def poleis_symbols(symbolText, options = {})
    options = {cost: false, shadow: false, size: 1, fixed_width: false}.merge(options)
  
    prettySymbol = ""
    
    
    poleis_match = symbolText.upcase[/{(SETESSA|AKROS|MELETIS)}/, 1]
    unless poleis_match.nil?
      # according to mana font docs, polis not poleis for css code
      prettySymbol = "ms-polis-#{poleis_match.downcase}"
    end
    
    if prettySymbol == ""
      symbolText
    else
      i_tag(prettySymbol + ' ' + optional_classes(options[:cost], options[:shadow], options[:size], options[:fixed_width]))
    end
end

Private Instance Methods

i_tag(inner_classes) click to toggle source
# File lib/pretty_magic/mana_icons.rb, line 131
def i_tag(inner_classes)
    '<i class="ms ' + inner_classes +'"></i>'
end
optional_classes(cost, shadow, size, fixed_width) click to toggle source
# File lib/pretty_magic/mana_icons.rb, line 135
def optional_classes(cost, shadow, size, fixed_width)
    
    class_text = ""
    
    if(cost)
      class_text += "ms-cost "
    end
    if(shadow)
      class_text += "ms-shadow "
    end
    if(size > 1)
      class_text += "ms-#{size}x "
    end
    if(fixed_width)
      class_text += "ms-fw "
    end 
    
    class_text
end
use_all_symbols(symbolText, options = {}) click to toggle source
# File lib/pretty_magic/mana_icons.rb, line 155
def use_all_symbols(symbolText, options = {})
  options = {cost: true, shadow: false, size: 1, fixed_width: false}.merge(options)
  replaced = mana_symbols(symbolText, { cost: options[:cost], shadow: options[:shadow], size: options[:size],
    fixed_width: options[:fixed_width]} )
  replaced = card_symbols(replaced, { cost: options[:cost], shadow: options[:shadow], size: options[:size],
    fixed_width: options[:fixed_width]} )
  replaced = guild_symbols(replaced, { cost: options[:cost], shadow: options[:shadow], size: options[:size],
    fixed_width: options[:fixed_width]} )
  replaced = poleis_symbols(replaced, { cost: options[:cost], shadow: options[:shadow], size: options[:size],
    fixed_width: options[:fixed_width]} )
  replaced
  
end