class SnipmateToYas::SnippetFsWriter

Writes a list of snippets to the file system

Public Class Methods

new(snippets, base_directory) click to toggle source
# File lib/snipmate_to_yas/snippet_fs_writer.rb, line 4
def initialize(snippets, base_directory)
  @snippets = snippets
  @base_directory = base_directory
  @snippets_directory = File.join(
    base_directory, "#{@snippets.mode.emacs_name}-mode"
  )
end

Public Instance Methods

write() click to toggle source
# File lib/snipmate_to_yas/snippet_fs_writer.rb, line 12
def write
  FileUtils.mkdir_p(@snippets_directory)
  write_snippets
  write_yas_parents
  write_aliases_links
end

Protected Instance Methods

filename(key) click to toggle source

Cleaned up filename from key

# File lib/snipmate_to_yas/snippet_fs_writer.rb, line 46
def filename(key)
  return '_' if key.match(/^\.$/)
  key.gsub(%r{[\x00\/\\:\*\?\"<>\|]}, '_')
end
write_snippets() click to toggle source
# File lib/snipmate_to_yas/snippet_fs_writer.rb, line 21
def write_snippets
  @snippets.each do |snippet|
    path = File.join(@snippets_directory, filename(snippet.expand_key))
    File.open(path, 'w') { |f| f << snippet.text }
  end
end
write_yas_parents() click to toggle source
# File lib/snipmate_to_yas/snippet_fs_writer.rb, line 28
def write_yas_parents
  parent_mode = @snippets.mode.parent
  return unless parent_mode

  path = File.join(@snippets_directory, '.yas-parents')
  File.open(path, 'w') { |f| f << "#{parent_mode.emacs_name}-mode" }
end