Sha256: 2c83e6d6dd01faf788c022c57b19c21a43988d3981fed5971cb080de7c0fcd7e
Contents?: true
Size: 1.26 KB
Versions: 14
Compression:
Stored size: 1.26 KB
Contents
# frozen_string_literal: true require 'opal/rewriters/base' module Opal module Rubyspec class FiltersRewriter < Opal::Rewriters::Base class << self def filters @filters ||= [] end def filter(spec_name) filters << spec_name end alias fails filter alias fails_badly filter def filtered?(spec_name) filters.include?(spec_name) end def clear_filters! @filters = [] end end def initialize @specs_stack = [] end RUBYSPEC_DSL = %i[describe it context].freeze def on_send(node) _recvr, method_name, *args = *node if rubyspec_dsl?(method_name) spec_name, _ = *args.first begin @specs_stack.push(spec_name) if skip? s(:nil) else super end ensure @specs_stack.pop end else super end end def skip? self.class.filtered?(current_spec_name) end def rubyspec_dsl?(method_name) RUBYSPEC_DSL.include?(method_name) end def current_spec_name @specs_stack.join(' ') end end end end
Version data entries
14 entries across 14 versions & 1 rubygems