class Locale::Tag::Common


* ja_Hira_JP_MOBILE_IPHONE (2 variants example)
* ja_Hira_JP_MOBILE (variants: more than 2 characters or 3 digit)
* ja-Hira-JP
* ja_Hira_JP (script: 4 characters)
* ja-JP
* ja_JP (country: RFC4646(2 alpha or 3 digit))
* ja (language: RFC4646)
Java and MS Windows use this format.
Common Language tag class for Ruby.

def candidates

because it's meaningless to compare the extensions, privateuse, etc.
Locale::Tag::Rfc, Cldr don't have their own candidates,

Use Locale.candidates instead of this method.
Returns an Array of tag-candidates order by priority.
def candidates
  [self.class.new(language, script, region, variants),   #ja-Kana-JP-FOO
   self.class.new(language, script, region),             #ja-Kana-JP
   self.class.new(language, nil, region, variants),      #ja-JP-FOO
   self.class.new(language, nil, region),                #ja-JP
   self.class.new(language, script, nil, variants),      #ja-Kana-FOO
   self.class.new(language, script),                     #ja-Kana
   self.class.new(language, nil, nil, variants),         #ja-FOO
   self.class.new(language)]                             #ja
end

def convert_to(klass) #:nodoc:

:nodoc:
def convert_to(klass)  #:nodoc:
  if klass == Simple
    super
  elsif klass == Posix
    if variants.size > 0 
      var = variants.join("-") 
    else
      var = nil
    end
    klass.new(language, region, nil, var)
  elsif klass == Cldr
    klass.new(language, script, region, variants.map{|v| v.upcase})
  else
    klass.new(language, script, region, variants)
  end
end

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

Create a Locale::Tag::Common.
def initialize(language, script = nil, region = nil, variants = [])
  @script, @variants = script, variants
  @script = @script.capitalize  if @script
  super(language, region)
end

def parse(tag)

Parse the language tag and return the new Locale::Tag::Common.
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
    variants = subtag.scan(/(^|[-_])#{VARIANT}(?=([-_]|$))/i).collect{|v| v[1]}
    
    ret = self.new(lang, script, region, variants)
    ret.tag = tag
    ret
  else
    nil
  end
end

def script=(val)

Set the script (with capitalize)
def script=(val)
  @script = val
  @script = @script.capitalize if @script
  @script
end

def to_string

This is used in internal only. Use to_s instead.

(e.g.) "ja_Hira_JP_VARIANTS1_VARIANTS2"
_