Sha256: 725b38eae1180c8614ff8024fdb50c5e02b3a6ae1149efd15c57e9bcf9c7ad2a

Contents?: true

Size: 1.16 KB

Versions: 19

Compression:

Stored size: 1.16 KB

Contents

# frozen_string_literal: true

module Opal
  module Parser
    module DefaultConfig
      module ClassMethods
        attr_accessor :diagnostics_consumer

        def default_parser
          parser = super
          parser.diagnostics.all_errors_are_fatal = true
          parser.diagnostics.ignore_warnings      = false
          parser.diagnostics.consumer             = diagnostics_consumer
          parser
        end
      end

      def self.included(klass)
        klass.extend(ClassMethods)
        klass.diagnostics_consumer = ->(diagnostic) do
          if RUBY_ENGINE != 'opal'
            $stderr.puts(diagnostic.render)
          end
        end
      end

      def initialize(*)
        super(Opal::AST::Builder.new)
      end

      def parse(source_buffer)
        parsed = super || ::Opal::AST::Node.new(:nil)
        wrapped = ::Opal::AST::Node.new(:top, [parsed])
        rewriten = rewrite(wrapped)
        rewriten
      end

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

    class << self
      attr_accessor :default_parser_class

      def default_parser
        default_parser_class.default_parser
      end
    end
  end
end

Version data entries

19 entries across 19 versions & 1 rubygems

Version Path
opal-1.8.3.rc1 lib/opal/parser/default_config.rb
opal-1.8.2 lib/opal/parser/default_config.rb
opal-1.8.1 lib/opal/parser/default_config.rb
opal-1.8.0 lib/opal/parser/default_config.rb
opal-1.8.0.beta1 lib/opal/parser/default_config.rb
opal-1.7.4 lib/opal/parser/default_config.rb
opal-1.8.0.alpha1 lib/opal/parser/default_config.rb
opal-1.7.3 lib/opal/parser/default_config.rb
opal-1.7.2 lib/opal/parser/default_config.rb
opal-1.7.1 lib/opal/parser/default_config.rb
opal-1.7.0 lib/opal/parser/default_config.rb
opal-1.7.0.rc1 lib/opal/parser/default_config.rb
opal-1.6.1 lib/opal/parser/default_config.rb
opal-1.6.0 lib/opal/parser/default_config.rb
opal-1.6.0.rc1 lib/opal/parser/default_config.rb
opal-1.6.0.alpha1 lib/opal/parser/default_config.rb
opal-1.5.1 lib/opal/parser/default_config.rb
opal-1.5.0 lib/opal/parser/default_config.rb
opal-1.5.0.rc1 lib/opal/parser/default_config.rb