Sha256: 589bde662603354b94a011cf89f9e13ea85e629d95e45ef6fa71ddd366ac6400

Contents?: true

Size: 1.63 KB

Versions: 7

Compression:

Stored size: 1.63 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'
require 'opal/rewriters/dump_args'
require 'opal/rewriters/mlhs_args'
require 'opal/rewriters/inline_args'

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
    use Rewriters::DumpArgs
    use Rewriters::MlhsArgs
    use Rewriters::InlineArgs

    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

7 entries across 7 versions & 1 rubygems

Version Path
opal-1.0.5 lib/opal/rewriter.rb
opal-1.0.4 lib/opal/rewriter.rb
opal-1.0.3 lib/opal/rewriter.rb
opal-1.0.2 lib/opal/rewriter.rb
opal-1.0.1 lib/opal/rewriter.rb
opal-1.0.0 lib/opal/rewriter.rb
opal-1.0.0.beta1 lib/opal/rewriter.rb