class SublimeDSL::TextMate::Grammar::DSLReader
Public Class Methods
new(file = nil)
click to toggle source
# File lib/sublime_dsl/textmate/grammar/dsl_reader.rb, line 9 def initialize(file = nil) @grammars = [] @context_stack = [] instance_eval File.read(file, encoding: 'utf-8'), file if file end
Public Instance Methods
_context()
click to toggle source
# File lib/sublime_dsl/textmate/grammar/dsl_reader.rb, line 19 def _context @context_stack.last end
_grammar()
click to toggle source
# File lib/sublime_dsl/textmate/grammar/dsl_reader.rb, line 23 def _grammar @context_stack.first end
_grammars()
click to toggle source
# File lib/sublime_dsl/textmate/grammar/dsl_reader.rb, line 15 def _grammars @grammars end
both(captures)
click to toggle source
# File lib/sublime_dsl/textmate/grammar/dsl_reader.rb, line 125 def both(captures) ensure_reader _context.both captures end
bundle_uuid(str)
click to toggle source
# File lib/sublime_dsl/textmate/grammar/dsl_reader.rb, line 77 def bundle_uuid(str) ensure_writer _grammar.bundle_uuid = str end
content_scope(scope)
click to toggle source
# File lib/sublime_dsl/textmate/grammar/dsl_reader.rb, line 130 def content_scope(scope) ensure_writer _context.content_scope = scope end
disabled(value)
click to toggle source
# File lib/sublime_dsl/textmate/grammar/dsl_reader.rb, line 140 def disabled(value) ensure_writer _context.disabled = value end
ensure_reader(method = nil)
click to toggle source
# File lib/sublime_dsl/textmate/grammar/dsl_reader.rb, line 145 def ensure_reader(method = nil) name = caller[0].gsub(/.*`(.*)'$/, '\1') method ||= name _context.respond_to? method or raise invalid_context(name) end
ensure_writer(method = nil)
click to toggle source
# File lib/sublime_dsl/textmate/grammar/dsl_reader.rb, line 151 def ensure_writer(method = nil) name = caller[0].gsub(/.*`(.*)'$/, '\1') method ||= name + '=' _context.respond_to? method or raise invalid_context(name) end
file_types(array)
click to toggle source
# File lib/sublime_dsl/textmate/grammar/dsl_reader.rb, line 47 def file_types(array) ensure_writer _grammar.file_types = array end
first_line_match(re)
click to toggle source
# File lib/sublime_dsl/textmate/grammar/dsl_reader.rb, line 52 def first_line_match(re) ensure_writer _grammar.first_line_match = Tools::RegexpWannabe.new(re.source) end
folding_start_marker(re)
click to toggle source
# File lib/sublime_dsl/textmate/grammar/dsl_reader.rb, line 57 def folding_start_marker(re) ensure_writer _grammar.folding_start_marker = Tools::RegexpWannabe.new(re.source) end
folding_stop_marker(re)
click to toggle source
# File lib/sublime_dsl/textmate/grammar/dsl_reader.rb, line 62 def folding_stop_marker(re) ensure_writer _grammar.folding_stop_marker = Tools::RegexpWannabe.new(re.source) end
fragment(name) { |self| ... }
click to toggle source
# File lib/sublime_dsl/textmate/grammar/dsl_reader.rb, line 91 def fragment(name) ensure_reader :fragments f = Fragment.new(name.to_s) # FIXME pas la peine de sortir des :sym pour faire du to_s! _grammar.fragments << f @context_stack.push f yield self # block.call @context_stack.pop end
from(re, captures = {})
click to toggle source
# File lib/sublime_dsl/textmate/grammar/dsl_reader.rb, line 115 def from(re, captures = {}) ensure_reader _context.from re, captures end
include(name_or_module)
click to toggle source
# File lib/sublime_dsl/textmate/grammar/dsl_reader.rb, line 82 def include(name_or_module) if name_or_module.is_a?(Module) self.class.send :include, name_or_module else ensure_reader :patterns _context.patterns << Include.new(name_or_module) end end
invalid_context(name)
click to toggle source
# File lib/sublime_dsl/textmate/grammar/dsl_reader.rb, line 157 def invalid_context(name) if _context c = _context.class.name.split('::').last.snake_case c = 'rule' if c == 'rule_builder' "#{name} is invalid inside '#{c}'" else "#{name} is invalid outside 'language'" end end
key_equivalent(str)
click to toggle source
# File lib/sublime_dsl/textmate/grammar/dsl_reader.rb, line 67 def key_equivalent(str) ensure_writer _grammar.key_equivalent = str end
language(options = {}, &block)
click to toggle source
# File lib/sublime_dsl/textmate/grammar/dsl_reader.rb, line 31 def language(options = {}, &block) _context and raise Error, "'language' blocks cannot be nested" base = options.delete(:file) options.length == 0 and raise Error, 'missing name & scope' name = options.keys.first scope = options.delete(name) options.empty? or warn "invalid options: #{options.inspect}" g = Grammar.new(name, scope) g.basename = base @context_stack.push g instance_eval(&block) @context_stack.pop g.complete! @grammars << g end
match(re, captures = {})
click to toggle source
# File lib/sublime_dsl/textmate/grammar/dsl_reader.rb, line 110 def match(re, captures = {}) ensure_reader _context.match re, captures end
method_missing(sym, *args, &block)
click to toggle source
# File lib/sublime_dsl/textmate/grammar/dsl_reader.rb, line 27 def method_missing(sym, *args, &block) raise Error, "'#{sym}' is not a valid grammar DSL statement" end
rule(scope = nil) { |self| ... }
click to toggle source
# File lib/sublime_dsl/textmate/grammar/dsl_reader.rb, line 100 def rule(scope = nil) ensure_reader :patterns b = RuleBuilder.new(scope) @context_stack.push b yield self # block.call @context_stack.pop b.rule.complete! _grammar _context.patterns << b.rule end
to(re, captures = {})
click to toggle source
# File lib/sublime_dsl/textmate/grammar/dsl_reader.rb, line 120 def to(re, captures = {}) ensure_reader _context.to re, captures end
to_last(value)
click to toggle source
# File lib/sublime_dsl/textmate/grammar/dsl_reader.rb, line 135 def to_last(value) ensure_writer _context.to_last = value end
uuid(str)
click to toggle source
# File lib/sublime_dsl/textmate/grammar/dsl_reader.rb, line 72 def uuid(str) ensure_writer _grammar.uuid = str end