module Srx::IcuRegex

Utilities for handling SRX (ICU) regular expressions

Constants

HEX_PATTERN
OCTAL_PATTERN

Public Class Methods

compile(icu_regex) click to toggle source

@param icu_regex [String] @return [Regexp]

# File lib/srx/icu_regex.rb, line 24
def compile(icu_regex)
  Regexp.new(to_ruby(icu_regex))
end
to_ruby(icu_regex) click to toggle source

@param icu_regex [String] @return [String]

# File lib/srx/icu_regex.rb, line 12
def to_ruby(icu_regex)
  result = icu_regex.dup
  result.gsub!(HEX_PATTERN, '\u\k<hex>')
  result.gsub!(OCTAL_PATTERN) do |m|
    $LAST_MATCH_INFO['oct'].to_i(8).then { |o| o <= 255 ? format(%q(\u{%x}), o) : m }
  end

  result
end