Sha256: b060bde0191cfff729a31aa394fa9da54115d23051d75fc635ae58a381eae437
Contents?: true
Size: 1.07 KB
Versions: 1
Compression:
Stored size: 1.07 KB
Contents
# frozen_string_literal: true require_relative "messageformat/version" require "mini_racer" module MessageFormat def self.compile(...) Compiler.new(...).compile end class Compiler class CompileError < StandardError end attr_reader :locale, :messages, :context def initialize(locale, messages) @locale = locale @messages = messages @context = init_context end def compile context.call("compileMessageFormat", locale, messages) rescue MiniRacer::RuntimeError => e raise CompileError.new(cause: e) end private def init_context MiniRacer::Context .new(timeout: 10_000) .tap do |context| context.load(File.expand_path("../dist/messageformat.js", __dir__)) context.load(File.expand_path("../dist/compilemodule.js", __dir__)) context.eval(<<~JS) function compileMessageFormat(locale, messages) { const mf = new MessageFormat(locale); return compileModule(mf, messages); } JS end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
messageformat-wrapper-1.0.0 | lib/messageformat.rb |