Class: Lyricli::SourceManager

Inherits:
Object
  • Object
show all
Includes:
Util
Defined in:
lib/lyricli/source_manager.rb

Instance Method Summary (collapse)

Methods included from Util

#camelize, #parse_class, #sanitize_param

Constructor Details

- (SourceManager) initialize

A new instance of SourceManager



6
7
8
9
10
11
12
13
14
15
16
17
# File 'lib/lyricli/source_manager.rb', line 6

def initialize
  @enabled_sources = []
  @config = Configuration.instance
  @config["enabled_sources"].each do |source|
    if klass = parse_class(camelize(source))
      current_source = klass.new
      @enabled_sources << current_source
    else
      raise StartSourceException
    end
  end
end

Instance Method Details

- (Object) available_sources(format = false)



81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
# File 'lib/lyricli/source_manager.rb', line 81

def available_sources(format = false)
  path_root = File.expand_path(File.dirname(__FILE__))
  sources = Dir[path_root+"/sources/*.rb"].map{ |s|
    name = s.split("/").last.gsub(/\.rb/, "")

    # Add a star to denote enabled sources
    name
  }

  # Remove arguments (Hack?) We don't want anybody to touch tihs one.
  sources.delete("arguments")
  if format
    format_sources(sources)
  else
    sources
  end
end

- (Object) current_track



60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
# File 'lib/lyricli/source_manager.rb', line 60

def current_track
  track = nil
  lock = false
  @enabled_sources.each do |source|
    begin
      current_track = source.current_track

      # This is a special thing for arguments. The thing is, they need to
      # be inputted manually. So, if they are present they won't allow
      # anyone else to give results. Makes sense, yet a bit hacky.
      unless current_track[:artist].nil? || current_track[:artist].empty? || current_track[:song].nil? || current_track[:song].empty?
        track = current_track unless lock
        lock = true if source.class.name == "arguments"
      end
    rescue
      raise SourceConfigurationException
    end
  end
  track
end

- (Object) disable(source_name)



34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/lyricli/source_manager.rb', line 34

def disable(source_name)
  if available_sources.include?(source_name)
    if klass = parse_class(camelize(source_name))
      @config["enabled_sources"].delete(klass.name)
      @config.save_config
    else
      raise DisableSourceException
    end
  else
    raise UnknownSource
  end
end

- (Object) enable(source_name)



19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/lyricli/source_manager.rb', line 19

def enable(source_name)
  if available_sources.include?(source_name)
    if klass = parse_class(camelize(source_name))
      klass.enable
      @config["enabled_sources"] << klass.name
      @config["enabled_sources"].uniq!
      @config.save_config
    else
      raise EnableSourceException
    end
  else
    raise UnknownSource
  end
end

- (Object) format_sources(sources)



99
100
101
102
103
104
# File 'lib/lyricli/source_manager.rb', line 99

def format_sources(sources)
  sources.map{ |s|
    s << "*" if @config["enabled_sources"].include?(s)
    s
  }
end

- (Object) reset(source_name)



47
48
49
50
51
52
53
54
55
56
57
58
# File 'lib/lyricli/source_manager.rb', line 47

def reset(source_name)
  if available_sources.include?(source_name)
    if klass = parse_class(camelize(source_name))
      klass.reset
      disable(source_name)
    else
      raise ResetSourceException
    end
  else
    raise UnknownSource
  end
end