class Opal::Rubyspec::FiltersRewriter

Constants

RUBYSPEC_DSL

Public Class Methods

clear_filters!() click to toggle source
# File lib/opal/rewriters/rubyspec/filters_rewriter.rb, line 24
def clear_filters!
  @filters = []
end
fails(spec_name)
Alias for: filter
fails_badly(spec_name)
Alias for: filter
filter(spec_name) click to toggle source
# File lib/opal/rewriters/rubyspec/filters_rewriter.rb, line 13
def filter(spec_name)
  filters << spec_name
end
Also aliased as: fails, fails_badly
filtered?(spec_name) click to toggle source
# File lib/opal/rewriters/rubyspec/filters_rewriter.rb, line 20
def filtered?(spec_name)
  filters.include?(spec_name)
end
filters() click to toggle source
# File lib/opal/rewriters/rubyspec/filters_rewriter.rb, line 9
def filters
  @filters ||= []
end
new() click to toggle source
# File lib/opal/rewriters/rubyspec/filters_rewriter.rb, line 29
def initialize
  @specs_stack = []
end

Public Instance Methods

current_spec_name() click to toggle source
# File lib/opal/rewriters/rubyspec/filters_rewriter.rb, line 72
def current_spec_name
  @specs_stack.join(' ')
end
fixture(file, *args) click to toggle source

Adapted from: spec/mspec/lib/mspec/helpers/fixture.rb

# File lib/opal/rewriters/rubyspec/filters_rewriter.rb, line 77
def fixture(file, *args)
  path = File.dirname(file)
  path = path[0..-7] if path[-7..-1] == '/shared'
  fixtures = path[-9..-1] == '/fixtures' ? '' : 'fixtures'
  File.join(path, fixtures, args)
end
on_send(node) click to toggle source
Calls superclass method
# File lib/opal/rewriters/rubyspec/filters_rewriter.rb, line 35
def on_send(node)
  _recvr, method_name, *args = *node

  if rubyspec_dsl?(method_name)
    dynamic!
    spec_name, _ = *args.first
    begin
      @specs_stack.push(spec_name)
      if skip?
        s(:nil)
      else
        super
      end
    ensure
      @specs_stack.pop
    end
  elsif method_name == :fixture
    # We want to expand the fixture paths before autoload happens.
    if args.all? { |i| i.type == :str }
      as = args.map { |i| i.children.first }
      s(:str, fixture(*as))
    else
      super
    end
  else
    super
  end
end
rubyspec_dsl?(method_name) click to toggle source
# File lib/opal/rewriters/rubyspec/filters_rewriter.rb, line 68
def rubyspec_dsl?(method_name)
  RUBYSPEC_DSL.include?(method_name)
end
skip?() click to toggle source
# File lib/opal/rewriters/rubyspec/filters_rewriter.rb, line 64
def skip?
  self.class.filtered?(current_spec_name)
end