class SublimeDSL::SublimeText::Macro::DSLReader

Public Class Methods

new(file = nil) click to toggle source
# 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

Public Instance Methods

_macros() click to toggle source
# File lib/sublime_dsl/sublime_text/macro.rb, line 67
def _macros
  @macros
end
macro(name, &block) click to toggle source
# 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
method_missing(sym, *args, &block) click to toggle source
# 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