Sha256: df1c2b8c3e886a9559503a5d96cab947b4b0255e3e7246ea35c471deefd6347d

Contents?: true

Size: 1.4 KB

Versions: 6

Compression:

Stored size: 1.4 KB

Contents

# -*- encoding : utf-8 -*-

class Card
  class Codename

    @@codehash=nil

    class << self
      # returns codename for id and vice versa.  not in love with this api --efm
      def [] key
        if !key.nil?
          key = key.to_sym unless Integer===key
          codehash[key]
        end
      end

      def codehash
        @@codehash || load_hash
      end

      def reset_cache
        @@codehash = nil
      end

      #only used in migration
      def bootdata hash
        @@codehash = hash
      end


      private

      def load_hash
        @@codehash = {}
        sql = 'select id, codename from cards where codename is not NULL'
        ActiveRecord::Base.connection.select_all(sql).each do |row|
          #FIXME: remove duplicate checks, put them in other tools
          code, cid = row['codename'].to_sym, row['id'].to_i
          if @@codehash.has_key?(code) or @@codehash.has_key?(cid)
            warn "dup code ID:#{cid} (#{@@codehash[code]}), CD:#{code} (#{@@codehash[cid]})"
          end
          @@codehash[code] = cid; @@codehash[cid] = code
        end

        @@codehash
      end
    end
    
  end
  
  
  def self.const_missing const
    if const.to_s =~ /^([A-Z]\S*)ID$/ and code=$1.underscore.to_sym
      if card_id = Codename[code]
        const_set const, card_id
      else
        raise "Missing codename #{code} (#{const})"
      end
    else
      super
    end
  end
  
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
wagn-1.14.0 lib/card/codename.rb
wagn-1.14.0.pre3 lib/card/codename.rb
wagn-1.14.0.pre2 lib/card/codename.rb
wagn-1.14.0.pre1 lib/card/codename.rb
wagn-1.13.0 lib/card/codename.rb
wagn-1.13.0.pre2 lib/card/codename.rb