Class: Locale::Tag::Rfc
Overview
Language tag class for RFC4646(BCP47).
Constant Summary collapse
- SINGLETON =
'[a-wyz0-9]'
- VARIANT =
"(#{ALPHANUM}{5,8}|#{DIGIT}#{ALPHANUM}{3})"
- EXTENSION =
"(#{SINGLETON}(?:-#{ALPHANUM}{2,8})+)"
- PRIVATEUSE =
"(x(?:-#{ALPHANUM}{1,8})+)"
- GRANDFATHERED =
"#{ALPHA}{1,3}(?:-#{ALPHANUM}{2,8}){1,2}"
- TAG_RE =
/\A#{LANGUAGE}(?:-#{SCRIPT})? (?:-#{REGION})?((?:-#{VARIANT})* (?:-#{EXTENSION})*(?:-#{PRIVATEUSE})?)\Z/ix
Constants inherited from Common
Common::LANGUAGE, Common::SCRIPT
Constants inherited from Simple
Simple::ALPHA, Simple::ALPHANUM, Simple::DIGIT, Simple::LANGUAGE, Simple::REGION
Instance Attribute Summary collapse
-
#extensions ⇒ Object
Returns the value of attribute extensions.
-
#privateuse ⇒ Object
Returns the value of attribute privateuse.
Attributes inherited from Common
Attributes inherited from Simple
Class Method Summary collapse
-
.parse(tag) ⇒ Object
Parse the language tag and return the new Locale::Tag::Rfc.
Instance Method Summary collapse
-
#initialize(language, script = nil, region = nil, variants = [], extensions = [], privateuse = nil) ⇒ Rfc
constructor
A new instance of Rfc.
Methods inherited from Common
Methods inherited from Simple
#<=>, #==, #candidates, #country, #eql?, #hash, #inspect, #to_s, #to_str
Constructor Details
#initialize(language, script = nil, region = nil, variants = [], extensions = [], privateuse = nil) ⇒ Rfc
Returns a new instance of Rfc.
61 62 63 64 65 |
# File 'lib/locale/tag/rfc.rb', line 61 def initialize(language, script = nil, region = nil, variants = [], extensions = [], privateuse = nil) @extensions, @privateuse = extensions, privateuse super(language, script, region, variants) end |
Instance Attribute Details
#extensions ⇒ Object
Returns the value of attribute extensions.
28 29 30 |
# File 'lib/locale/tag/rfc.rb', line 28 def extensions @extensions end |
#privateuse ⇒ Object
Returns the value of attribute privateuse.
28 29 30 |
# File 'lib/locale/tag/rfc.rb', line 28 def privateuse @privateuse end |
Class Method Details
.parse(tag) ⇒ Object
Parse the language tag and return the new Locale::Tag::Rfc.
32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
# File 'lib/locale/tag/rfc.rb', line 32 def parse(tag) case tag when /\APOSIX\Z/ # This is the special case of POSIX locale but match this regexp. nil when TAG_RE lang, script, region, subtag = $1, $2, $3, $4 extensions = [] variants = [] if subtag =~ /#{PRIVATEUSE}/ subtag, privateuse = $`, $1 # Private use for CLDR. if /x-ldml(.*)/ =~ privateuse p_subtag = $1 extensions = p_subtag.scan(/(^|-)#{EXTENSION}/i).collect{|v| p_subtag.sub!(v[1], ""); v[1]} variants = p_subtag.scan(/(^|-)#{VARIANT}(?=(-|$))/i).collect{|v| v[1]} end end extensions += subtag.scan(/(^|-)#{EXTENSION}/i).collect{|v| subtag.sub!(v[1], ""); v[1]} variants += subtag.scan(/(^|-)#{VARIANT}(?=(-|$))/i).collect{|v| v[1]} ret = self.new(lang, script, region, variants, extensions, privateuse) ret.tag = tag ret else nil end end |