class CodeSnippet::Manager

Manager looks after a set of snippets

Constants

DEFAULT_QUERY

Attributes

snippets[R]

Public Class Methods

new(snippet_dir) click to toggle source
# File lib/code_snippet/manager.rb, line 8
def initialize(snippet_dir)
  @snippet_dir = snippet_dir
  @snippets = []
end

Public Instance Methods

filter(query = DEFAULT_QUERY) click to toggle source
# File lib/code_snippet/manager.rb, line 21
def filter(query = DEFAULT_QUERY)
  @snippets.select do |snip|
    query.call(snip)
  end
end
filter_by_extension(ext) click to toggle source
# File lib/code_snippet/manager.rb, line 43
def filter_by_extension(ext)
  ext = ".#{ext}" unless ext.start_with?('.')

  ext_query = ->(snip) { snip.ext == ext }
  filter(ext_query)
end
find(search_term, lang = nil) click to toggle source
# File lib/code_snippet/manager.rb, line 27
def find(search_term, lang = nil)
  name_query = lambda do |snip|
    snip.name.include?(search_term)
  end

  results = filter(name_query)

  unless lang.nil?
    results = results.select do |snip|
      snip.ext == lang
    end
  end

  results
end
load_snippets() click to toggle source
# File lib/code_snippet/manager.rb, line 13
def load_snippets
  Dir.glob(File.join(@snippet_dir, '**', '*')).each do |file|
    next if File.directory?(file)

    @snippets << CodeSnippet::Snip.new_from_file(file)
  end
end