class SnipmateToYas::Snipmate::Parser
Converts a string with multiple Snipmate snippets to an array of
YASSnippets. This string generally is the content of a Snipmate
snippets file.
Constants
- PARENT_MODE_REGEXP
Public Class Methods
new(mode_name, snippets_text)
click to toggle source
# File lib/snipmate_to_yas/snipmate/parser.rb, line 9 def initialize(mode_name, snippets_text) @mode_name = mode_name @snippets_text = snippets_text end
Public Instance Methods
parse()
click to toggle source
# File lib/snipmate_to_yas/snipmate/parser.rb, line 14 def parse Snipmate::Collection.new(parse_mode, snippets) end
Protected Instance Methods
parent_mode()
click to toggle source
# File lib/snipmate_to_yas/snipmate/parser.rb, line 26 def parent_mode parent_mode = @snippets_text.lines.find do |snippet| snippet.match(PARENT_MODE_REGEXP) end return unless parent_mode parent_mode.match(PARENT_MODE_REGEXP)[:mode] end
parse_mode()
click to toggle source
# File lib/snipmate_to_yas/snipmate/parser.rb, line 20 def parse_mode Mode.from_vim(@mode_name).tap do |mode| mode.parent = Mode.from_vim(parent_mode) if parent_mode end end
parse_snippet(snippet)
click to toggle source
# File lib/snipmate_to_yas/snipmate/parser.rb, line 47 def parse_snippet(snippet) Snipmate::SingleParser.new(snippet).convert end
snippet_list()
click to toggle source
# File lib/snipmate_to_yas/snipmate/parser.rb, line 41 def snippet_list @snippets_text.lines.reject do |snippet| snippet.match(/^#.*$/) || snippet.match(PARENT_MODE_REGEXP) end.join('') end
snippets()
click to toggle source
# File lib/snipmate_to_yas/snipmate/parser.rb, line 34 def snippets snippet_list.split(/^snippet/).map do |snip| next nil if snip.strip.empty? parse_snippet "snippet #{snip}" end.compact end