Class: SublimeDSL::SublimeText::Macro::DSLReader

Inherits:
Object
  • Object
show all
Defined in:
lib/sublime_dsl/sublime_text/macro.rb

Instance Method Summary collapse

Constructor Details

#initialize(file = nil) ⇒ DSLReader

Returns a new instance of DSLReader.



61
62
63
64
65
# File 'lib/sublime_dsl/sublime_text/macro.rb', line 61

def initialize(file = nil)
  @macros = []
  @current_macro = nil
  instance_eval File.read(file, encoding: 'utf-8'), file if file
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(sym, *args, &block) ⇒ Object



71
72
73
74
75
76
77
# File 'lib/sublime_dsl/sublime_text/macro.rb', line 71

def method_missing(sym, *args, &block)
  @current_macro or raise Error, "'#{sym}' is invalid outside of a 'macro' block"
  cmd = Command.from_method_missing(sym, args)
  cmd.error and
    raise Error, "macro '#{@current_macro}': #{cmd.error}"
  @current_macro.commands << cmd
end

Instance Method Details

#_macrosObject



67
68
69
# File 'lib/sublime_dsl/sublime_text/macro.rb', line 67

def _macros
  @macros
end

#macro(name, &block) ⇒ Object



79
80
81
82
83
84
85
# File 'lib/sublime_dsl/sublime_text/macro.rb', line 79

def macro(name, &block)
  @current_macro and raise Error, 'macro blocks cannot be nested'
  @current_macro = Macro.new(name)
  instance_eval(&block)
  @macros << @current_macro
  @current_macro = nil
end