Class: CodeSnippet::Manager

Inherits:
Object
  • Object
show all
Defined in:
lib/code_snippet/manager.rb

Overview

Manager looks after a set of snippets

Constant Summary collapse

DEFAULT_QUERY =
->(_snip) { return true }

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(snippet_dir) ⇒ Manager

Returns a new instance of Manager.



8
9
10
11
# File 'lib/code_snippet/manager.rb', line 8

def initialize(snippet_dir)
  @snippet_dir = snippet_dir
  @snippets = []
end

Instance Attribute Details

#snippetsObject (readonly)

Returns the value of attribute snippets.



6
7
8
# File 'lib/code_snippet/manager.rb', line 6

def snippets
  @snippets
end

Instance Method Details

#filter(query = DEFAULT_QUERY) ⇒ Object



21
22
23
24
25
# 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) ⇒ Object



43
44
45
46
47
48
# 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) ⇒ Object



27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# 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_snippetsObject



13
14
15
16
17
18
19
# 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