Class: Motion::Require::RequireBuilder

Inherits:
Ripper::SexpBuilder
  • Object
show all
Defined in:
lib/motion-require.rb

Constant Summary collapse

REQUIREMENT_TOKENS =
%w[motion_require require_relative]

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#requiresObject

Returns the value of attribute requires.



14
15
16
# File 'lib/motion-require.rb', line 14

def requires
  @requires
end

Instance Method Details

#on_command(command, args) ⇒ Object

scanner event



20
21
22
23
24
25
26
# File 'lib/motion-require.rb', line 20

def on_command(command, args) # scanner event
  type, name, position = command
  if valid_require_command(name)
    file = parse_args(args)
    requires << file
  end
end

#parse_args(args) ⇒ Object



35
36
37
38
39
40
41
42
43
44
45
46
47
48
# File 'lib/motion-require.rb', line 35

def parse_args(args)
  value = nil
  args.each do |arg|
    if arg.is_a?(Array)
      type = arg.first
      if type == :@tstring_content
        return arg[1]
      end

      value = parse_args(arg)
    end
  end
  value
end

#valid_require_command(name) ⇒ Object



28
29
30
31
32
33
# File 'lib/motion-require.rb', line 28

def valid_require_command(name)
  if name == 'require_relative' && !Motion::Require.require_relative_enabled
    raise NoMethodError, 'require_relative is not enabled, see Motion::Require.require_relative_enabled'
  end
  REQUIREMENT_TOKENS.include?(name)
end