Class: Locale::Tag::Cldr
Unicode locale identifier class for CLDR-1.6.1. (Unicode Common Locale Data Repository).
Constants
Name | Value |
---|---|
VARIANT | "(#{ALPHANUM}{5,8}|#{DIGIT}#{ALPHANUM}{3})" |
EXTENSION | "#{ALPHANUM}+=[a-z0-9\-]+" |
TAG_RE | /\A#{LANGUAGE}(?:[-_]#{SCRIPT})? (?:[-_]#{REGION})?((?:[-_]#{VARIANT})* (?:@(#{EXTENSION};?)+)*)\Z/ix |
Attributes
Name | Read/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