class Locale::Tag::Rfc

Language tag class for RFC4646(BCP47).

def convert_to(klass)

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

def extensions=(val)

Sets the extensions as an Array.
def extensions=(val)
  @extensions = val
end

def initialize(language, script = nil, region = nil, variants = [],

def initialize(language, script = nil, region = nil, variants = [],
             extensions = [], privateuse = nil)
  @extensions, @privateuse = extensions, privateuse
  super(language, script, region, variants)
end

def parse(tag)

Parse the language tag and return the new Locale::Tag::Rfc.
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

def privateuse=(val)

Sets the privateuse as a String
def privateuse=(val)
  @privateuse = val
end

def to_string

This is used in internal only. Use to_s instead.

(e.g.) "ja-Hira-JP-variant"
-