Sha256: 3d21cdc2015286f724012c947e2bf5a6ee55b09c467753388ec11af9e13b2dd5

Contents?: true

Size: 1.44 KB

Versions: 6

Compression:

Stored size: 1.44 KB

Contents

# frozen_string_literal: true
require 'opal/rewriters/opal_engine_check'
require 'opal/rewriters/for_rewriter'
require 'opal/rewriters/explicit_writer_return'
require 'opal/rewriters/js_reserved_words'
require 'opal/rewriters/block_to_iter'
require 'opal/rewriters/dot_js_syntax'
require 'opal/rewriters/logical_operator_assignment'
require 'opal/rewriters/binary_operator_assignment'
require 'opal/rewriters/hashes/key_duplicates_rewriter'

module Opal
  class Rewriter
    class << self
      def list
        @list ||= []
      end

      def use(rewriter)
        list << rewriter
      end

      def delete(rewriter)
        list.delete(rewriter)
      end

      def disable
        @disabled = true
        yield
      ensure
        @disabled = false
      end

      def disabled?
        @disabled if defined?(@disabled)
      end
    end

    use Rewriters::OpalEngineCheck
    use Rewriters::ForRewriter
    use Rewriters::BlockToIter
    use Rewriters::DotJsSyntax
    use Rewriters::JsReservedWords
    use Rewriters::LogicalOperatorAssignment
    use Rewriters::BinaryOperatorAssignment
    use Rewriters::ExplicitWriterReturn
    use Rewriters::Hashes::KeyDuplicatesRewriter

    def initialize(sexp)
      @sexp = sexp
    end

    def process
      return @sexp if self.class.disabled?

      self.class.list.each do |rewriter_class|
        rewriter = rewriter_class.new
        @sexp = rewriter.process(@sexp)
      end

      @sexp
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
opal-0.11.4 lib/opal/rewriter.rb
opal-0.11.3 lib/opal/rewriter.rb
opal-0.11.2 lib/opal/rewriter.rb
opal-0.11.1 lib/opal/rewriter.rb
opal-0.11.1.pre lib/opal/rewriter.rb
opal-0.11.0 lib/opal/rewriter.rb