Sha256: f59fde06f81de27c39df12e9598a7e385fad9581c76e3b4b2c174e3ab3390da7

Contents?: true

Size: 956 Bytes

Versions: 1

Compression:

Stored size: 956 Bytes

Contents

require_relative "age/version"

module Unicode
  module Age
    class UnknownAge < StandardError; end

    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,
      13.0,
    ].freeze

    KNOWN_UNICODE_REGEXES = KNOWN_UNICODE_VERSIONS.map{ |uv|
      begin
        /\A\p{age=#{"%.1f" % uv}}*\z/
      rescue RegexpError
      end
    }.compact.freeze

    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
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
unicode-age-2.3.0 lib/unicode/age.rb