class EanCountry

Public Class Methods

infer(code) click to toggle source
# File lib/ean-country.rb, line 4
def self.infer(code)
        # insurance
        code = code.to_s

        countries = {
                "380" => "BG",
                "383" => "SI",
                "385" => "HR",
                "387" => "BA",
                "45" => "JP",
                "46" => "RU",
                "49" => "JP",
                "471" => "TW",
                "474" => "EE",
                "475" => "LV",
                "477" => "LT",
                "479" => "LK",
                "480" => "PH",
                "482" => "UA",
                "484" => "MD",
                "485" => "AM",
                "486" => "GE",
                "487" => "KZ",
                "489" => "KH",
                "50" => "GB",
                "520" => "GR",
                "528" => "LB",
                "529" => "CY",
                "531" => "MK",
                "535" => "MT",
                "539" => "IE",
                "54" => "BE", #known bug - also LU
                "560" => "PT",
                "569" => "IS",
                "57" => "DK",
                "590" => "PL",
                "594" => "RO",
                "599" => "HU",
                "600" => "ZA",
                "601" => "ZA",
                "609" => "MU",
                "611" => "MA",
                "613" => "DZ",
                "619" => "TN",
                "622" => "EG",
                "626" => "IR",
                "64" => "FI",
                "690" => "CN",
                "691" => "CN",
                "70" => "NO",
                "729" => "IL",
                "73" => "SE",
                "740" => "GT",
                "741" => "SV",
                "742" => "HN",
                "743" => "NI",
                "744" => "CR",
                "745" => "PA",
                "746" => "DM",
                "750" => "MX",
                "759" => "VE",
                "76" => "CH",
                "770" => "CO",
                "773" => "UY",
                "775" => "PE",
                "777" => "BO",
                "779" => "AR",
                "780" => "CL",
                "784" => "PY",
                "786" => "EC",
                "789" => "BR",
                "80" => "IT",
                "81" => "IT",
                "82" => "IT",
                "83" => "IT",
                "84" => "ES",
                "850" => "CU",
                "858" => "SK",
                "859" => "CZ",
                "860" => nil, # Yugoslavia no longer exists - no idea how to roll this one
                "869" => "TR",
                "87" => "NL",
                "880" => "KR",
                "885" => "TH",
                "888" => "SG",
                "890" => "IN",
                "893" => "VN",
                "899" => "ID",
                "90" => "AT",
                "91" => "AT",
                "93" => "AU",
                "94" => "NZ",
                "955" => "MY" }

        # 01 to 09: US
        if code[0] == "0"
                return "US"
        end

        toin = code[0..2].to_i

        # 400, 401, 402... to 440: DE - special case
        if(toin >= 400 and toin <= 440)
                return "DE"
        end

        toin = code[0..1].to_i

        # 30-37: FR
        if(toin >= 30 and toin <= 37)
                return "FR"
        end

        two = code[0..1]

        if countries.has_key?(two)
                return countries[two]
        end

        three = code[0..2]

        if countries.has_key?(three)
                return countries[three]
        end

        return nil
end