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