class UncleKryon::Language

Attributes

alpha2_code[R]
alpha3_code[R]
alpha3_code_b[R]
codes[R]
names[R]

Public Class Methods

new(row=nil) click to toggle source
Calls superclass method UncleKryon::BaseIso::new
# File lib/unclekryon/iso/language.rb, line 34
def initialize(row=nil)
  super()

  @names = nil
  @codes = nil
  @alpha2_code = nil
  @alpha3_code = nil
  @alpha3_code_b = nil

  if row.is_a?(Array)
    @names = row[2].split(';').compact.uniq.map(&self.class.method(:fix_name))
    @alpha2_code = row[1].empty? ? nil : row[1]
    @alpha3_code = row[0].split(/[[:space:]]*[\(\)][[:space:]]*/)

    if @alpha3_code.length <= 1
      @alpha3_code = row[0]
    else
      prev_was_tag = true

      @alpha3_code.each_with_index do |c,i|
        c.strip!
        c_up = c.upcase

        if c_up == 'B' || c_up == 'T'
          if prev_was_tag
            raise "Invalid alpha-3 code for: #{@names},#{@alpha2_code},#{@alpha3_code}"
          end

          case c_up
          when 'B'
            raise "Multiple alpha3_code_b: #{@alpha3_code}" unless @alpha3_code_b.nil?
            @alpha3_code_b = @alpha3_code[i - 1]
          when 'T'
            raise "Multiple alpha3_code (T): #{@alpha3_code}" unless @alpha3_code.is_a?(Array)
            @alpha3_code = @alpha3_code[i - 1]
          end

          prev_was_tag = true
        else
          prev_was_tag = false
        end
      end

      # Wasn't set in the above loop?
      if @alpha3_code.is_a?(Array)
        raise "Invalid alpha-3 code for: #{@names},#{@alpha2_code},#{@alpha3_code}"
      end
    end

    @name = @names[0]
    #@names = @names
    @code = @alpha3_code
    @codes = [@alpha3_code,@alpha3_code_b,@alpha2_code].compact.uniq
  end
end

Public Instance Methods

==(other) click to toggle source

@see Languages.parse_and_save_to_file(...)

Calls superclass method UncleKryon::BaseIso#==
# File lib/unclekryon/iso/language.rb, line 91
def ==(other)
  return super(other) &&
    @names == other.names &&
    @codes == other.codes &&
    @alpha2_code == other.alpha2_code &&
    @alpha3_code == other.alpha3_code &&
    @alpha3_code_b == other.alpha3_code_b
end
to_s() click to toggle source
# File lib/unclekryon/iso/language.rb, line 100
def to_s
  s = '['.dup
  s << %Q("#{@name}","#{@names.join(';')}",)
  s << %Q(#{@code},"#{@codes.join(';')}",)
  s << "#{@alpha2_code},#{@alpha3_code},#{@alpha3_code_b}"
  s << ']'

  return s
end