class Locale::Tag::Rfc
Language tag class for RFC4646(BCP47).
Constants
- EXTENSION
- GRANDFATHERED
- PRIVATEUSE
- SINGLETON
- TAG_RE
- VARIANT
Attributes
extensions[R]
privateuse[R]
Public Class Methods
new(language, script = nil, region = nil, variants = [], extensions = [], privateuse = nil)
click to toggle source
Calls superclass method
Locale::Tag::Common.new
# 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
parse(tag)
click to toggle source
Parse the language tag and return the new Locale::Tag::Rfc.
# File lib/locale/tag/rfc.rb, line 32 def parse(tag) if tag =~ /\APOSIX\Z/ # This is the special case of POSIX locale but match this regexp. nil elsif tag =~ 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
Public Instance Methods
extensions=(val)
click to toggle source
Sets the extensions as an Array.
# File lib/locale/tag/rfc.rb, line 68 def extensions=(val) clear @extensions = val end
privateuse=(val)
click to toggle source
Sets the privateuse as a String
# File lib/locale/tag/rfc.rb, line 74 def privateuse=(val) clear @privateuse = val end
Private Instance Methods
convert_to(klass)
click to toggle source
Calls superclass method
# File lib/locale/tag/rfc.rb, line 80 def convert_to(klass) if klass == Rfc klass.new(language, script, region, variants, extensions, privateuse) elsif klass == Cldr exts = {} extensions.sort.each do |v| if v =~ /^k-(#{ALPHANUM}{2,})-(.*)$/i exts[$1] = $2 end end klass.new(language, script, region, variants, exts) else super end end
to_string()
click to toggle source
Returns the language tag
<language>-<Script>-<REGION>-<variants>-<extensions>-<PRIVATEUSE> (e.g.) "ja-Hira-JP-variant"
This is used in internal only. Use to_s instead.
Calls superclass method
Locale::Tag::Common#to_string
# File lib/locale/tag/rfc.rb, line 101 def to_string s = super.gsub(/_/, "-") @extensions.sort.each do |v| s << "-#{v}" end s << "-#{@privateuse}" if @privateuse s end