Class: Locale::Tag::Cldr

Unicode locale identifier class for CLDR-1.6.1. (Unicode Common Locale Data Repository).

Constants

NameValue
VARIANT "(#{ALPHANUM}{5,8}|#{DIGIT}#{ALPHANUM}{3})"
EXTENSION "#{ALPHANUM}+=[a-z0-9\-]+"
TAG_RE /\A#{LANGUAGE}(?:[-_]#{SCRIPT})? (?:[-_]#{REGION})?((?:[-_]#{VARIANT})* (?:@(#{EXTENSION};?)+)*)\Z/ix

Attributes

NameRead/write?
extensions R

Public Class Methods


new (language, script = nil, region = nil, variants = [], extensions = {})

Create Locale::Tag::Cldr.

variants should be upcase.

    # File lib/locale/tag/cldr.rb, line 31
31:       def initialize(language, script = nil, region = nil, 
32:                      variants = [], extensions = {})
33:         @extensions = extensions
34:         super(language, script, region, variants.map{|v| v.upcase})
35:       end

parse (tag)

Parse the language tag and return the new Locale::Tag::CLDR.

    # File lib/locale/tag/cldr.rb, line 38
38:       def self.parse(tag)
39:         if tag =~ /\APOSIX\Z/  # This is the special case of POSIX locale but match this regexp.
40:           nil
41:         elsif tag =~ TAG_RE
42:           lang, script, region, subtag = $1, $2, $3, $4
43: 
44:           extensions = {}
45:           subtag.scan(/#{EXTENSION}/i).each{|v| 
46:             subtag.sub!(v, "")
47:             key, type = v.split("=")
48:             extensions[key] = type
49:           }
50:           variants = subtag.scan(/#{VARIANT}/i).collect{|v| v[0].upcase}
51: 
52:           ret = self.new(lang, script, region, variants, extensions)
53:           ret.tag = tag
54:           ret
55:         else
56:           nil
57:         end
58:       end

Public Instance Methods


extensions= (val)

Sets the extensions.

    # File lib/locale/tag/cldr.rb, line 71
71:       def extensions=(val)
72:         clear
73:         @extensions = val
74:       end

to_s ()

Returns the language tag. (e.g.) "ja_Hira_JP_VARIANT1_VARIANT2@foo1=var1;foo2=var2"

    # File lib/locale/tag/cldr.rb, line 62
62:       def to_s
63:         s = super
64:         if @extensions.size > 0
65:           s << "@" << @extensions.to_a.sort.map{|k, v| "#{k}=#{v}"}.join(";")
66:         end
67:         s
68:       end