class SublimeDSL::TextMate::Snippet::DSLReader
DSL reader for a collection of snippets.
Public Class Methods
new(file = nil)
click to toggle source
# File lib/sublime_dsl/textmate/snippet.rb, line 273 def initialize(file = nil) @snippets = [] @default_scope = nil @file_format = nil @in_snippets = false instance_eval File.read(file, encoding: 'utf-8'), file if file end
Public Instance Methods
_snippets()
click to toggle source
# File lib/sublime_dsl/textmate/snippet.rb, line 281 def _snippets @snippets end
default_scope(scope)
click to toggle source
# File lib/sublime_dsl/textmate/snippet.rb, line 296 def default_scope(scope) ensure_context __method__ @default_scope = scope end
file_format(format)
click to toggle source
# File lib/sublime_dsl/textmate/snippet.rb, line 301 def file_format(format) ensure_context __method__ if format format = format.to_sym [:textmate, :sublime_text].include?(format) or raise Error, "invalid snippet file format: #{format.inspect}" end @file_format = format end
key(key_equivalent, name, content, options = {})
click to toggle source
# File lib/sublime_dsl/textmate/snippet.rb, line 316 def key(key_equivalent, name, content, options = {}) ensure_context __method__ _snippets << new_snippet(:key_equivalent=, key_equivalent, name, content, options) end
method_missing(sym, *args, &block)
click to toggle source
# File lib/sublime_dsl/textmate/snippet.rb, line 292 def method_missing(sym, *args, &block) raise Error, "'#{sym}' is not a snippet DSL statement" end
snippets(&block)
click to toggle source
# File lib/sublime_dsl/textmate/snippet.rb, line 285 def snippets(&block) @in_snippets and raise Error, "'snippets' blocks cannot be nested" @in_snippets = true instance_eval(&block) @in_snippets = false end
tab(tab_trigger, name, content, options = {})
click to toggle source
# File lib/sublime_dsl/textmate/snippet.rb, line 311 def tab(tab_trigger, name, content, options = {}) ensure_context __method__ _snippets << new_snippet(:tab_trigger=, tab_trigger, name, content, options) end
Private Instance Methods
ensure_context(name)
click to toggle source
# File lib/sublime_dsl/textmate/snippet.rb, line 323 def ensure_context(name) @in_snippets or raise Error, "'#{name}' is invalid outside of 'snippets' blocks" end
new_snippet(method, arg, name, content, options)
click to toggle source
# File lib/sublime_dsl/textmate/snippet.rb, line 327 def new_snippet(method, arg, name, content, options) snippet = Snippet.new snippet.send method, arg snippet.name = name snippet.content = content.sub(/\n\z/, '') snippet.scope = options.delete(:scope) || @default_scope snippet.file_format = @file_format if (k = options.delete(:key_equivalent)) if snippet.key_equivalent && snippet.key_equivalent != k warn "key_equivalent option given for 'key' snippet: #{snippet}" else snippet.key_equivalent = k end end if (t = options.delete(:tab_trigger)) if snippet.tab_trigger && snippet.tab_trigger != t warn "tab_trigger option given for 'tab' snippet: #{snippet}" else snippet.tab_trigger = t end end snippet.semantic_class = options.delete(:semantic_class) snippet.uuid = options.delete(:uuid) snippet.bundle_uuid = options.delete(:bundle_uuid) snippet.basename = options.delete(:file) options.empty? or warn "invalid snippet options: #{options.inspect}" snippet.complete! snippet end