class SublimeDSL::TextMate::Grammar
A language grammar.
Attributes
bundle_uuid[RW]
comment[RW]
file_types[RW]
first_line_match[RW]
folding_start_marker[RW]
folding_stop_marker[RW]
fragments[RW]
key_equivalent[RW]
TextMate
only
name[RW]
patterns[RW]
content
scope[RW]
to_s[RW]
uuid[RW]
Public Class Methods
import(file)
click to toggle source
Create from a PList
file.
# File lib/sublime_dsl/textmate/grammar.rb, line 17 def self.import(file) PListReader.new(file).grammar end
new(name, scope)
click to toggle source
# File lib/sublime_dsl/textmate/grammar.rb, line 40 def initialize(name, scope) @name = name @scope = scope @file_types = nil @first_line_match = nil @folding_start = nil @folding_stop = nil @key_equivalent = nil @uuid = nil @patterns = [] @fragments = [] end
Public Instance Methods
complete!()
click to toggle source
# File lib/sublime_dsl/textmate/grammar.rb, line 60 def complete! @repos = fragments.keyed_by(&:name) resolve_includes self fragments.each { |f| resolve_includes f } end
export(dir)
click to toggle source
# File lib/sublime_dsl/textmate/grammar.rb, line 90 def export(dir) file = "#{dir}/#{basename}.tmLanguage" PListWriter.new(self).export(file) end
resolve_includes(parent)
click to toggle source
# File lib/sublime_dsl/textmate/grammar.rb, line 66 def resolve_includes(parent) parent.patterns.each do |o| if o.respond_to? :patterns resolve_includes o elsif o.is_a?(Include) && o.fragment_name.start_with?('#') name = o.fragment_name[1..-1] o.fragment = @repos[name] if o.fragment o.fragment.used = true else warn "grammar #{self.name}: no such fragment: #{o.fragment_name.inspect}" end end end end
write(dir)
click to toggle source
# File lib/sublime_dsl/textmate/grammar.rb, line 82 def write(dir) file = "#{dir}/#{basename}.tmLanguage.rb" File.open(file, 'wb:utf-8') do |f| f.puts '# encoding: utf-8' f.puts "\n" << DSLWriter.new(self).dsl end end