Sha256: 054bfc814aa0cb971530918d4388d8a225eea70addc74ca83bd64dfd7fc70b77

Contents?: true

Size: 906 Bytes

Versions: 1

Compression:

Stored size: 906 Bytes

Contents

# frozen_string_literal: true
require 'opal/ast/builder'
require 'opal/rewriter'

if RUBY_ENGINE == 'opal'
  class << Parser::Source::Buffer
    def recognize_encoding(s)
      Encoding::UTF_8
    end
  end
end

module Opal
  class Parser < ::Parser::Ruby23
    def initialize(*)
      super(Opal::AST::Builder.new)
    end

    def self.default_parser
      parser = super

      parser.diagnostics.all_errors_are_fatal = true
      parser.diagnostics.ignore_warnings      = true

      if RUBY_ENGINE == 'opal'
        parser.diagnostics.consumer = ->(diag){}
      else
        parser.diagnostics.consumer = lambda do |diagnostic|
          $stderr.puts(diagnostic.render)
        end
      end
      parser
    end

    def parse(source_buffer)
      parsed = super
      rewriten = rewrite(parsed)
      rewriten
    end

    def rewrite(node)
      Opal::Rewriter.new(node).process
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
opal-0.11.0.rc1 lib/opal/parser.rb