Module: Unicode::Age

Defined in:
lib/unicode/age.rb,
lib/unicode/age/version.rb

Defined Under Namespace

Classes: UnknownAge

Constant Summary collapse

KNOWN_UNICODE_VERSIONS =
[
  1.1,
  2.0,
  2.1,
  3.0,
  3.1,
  3.2,
  4.0,
  4.1,
  5.0,
  5.1,
  5.2,
  6.0,
  6.1,
  6.2,
  6.3,
  7.0,
  8.0,
  9.0,
  10.0,
  11.0,
  12.0,
  12.1,
].freeze
KNOWN_UNICODE_REGEXES =
KNOWN_UNICODE_VERSIONS.map{ |uv|
  begin
    /\A\p{age=#{"%.1f" % uv}}*\z/
  rescue RegexpError
  end
}.compact.freeze
VERSION =
"2.1.0"
UNICODE_VERSION =
"12.1.0"

Class Method Summary collapse

Class Method Details

.of(string) ⇒ Object

Raises:


39
40
41
42
43
44
# File 'lib/unicode/age.rb', line 39

def self.of(string)
  raise(UnknownAge, "The string contains unassigned codepoints, so the Unicode version required cannot be determined. This gem version supports Unicode upto version #{UNICODE_VERSION}.") if string =~ /\A\p{Unassigned}*\z/
  KNOWN_UNICODE_VERSIONS.find.with_index{ |uv, index|
    string =~ KNOWN_UNICODE_REGEXES[index]
  }
end