|
require 'yaml'
|
|
|
|
module Chart
|
|
class Theme
|
|
class ThemeNotFound < RuntimeError; end
|
|
|
|
@@theme_files = ["#{File.dirname(__FILE__)}/../themes.yml"]
|
|
|
|
attr_accessor :colors
|
|
attr_accessor :bar_colors
|
|
attr_accessor :background
|
|
attr_accessor :chart_background
|
|
|
|
def self.load(theme_name)
|
|
theme = new(theme_name)
|
|
end
|
|
|
|
def self.theme_files
|
|
@@theme_files
|
|
end
|
|
|
|
# Allows you to specify paths for custom theme files in YAML format
|
|
def self.add_theme_file(file)
|
|
@@theme_files << file
|
|
end
|
|
|
|
def initialize(theme_name)
|
|
themes = {}
|
|
@@theme_files.each {|f| themes.update YAML::load(File.open(f))}
|
|
theme = themes[theme_name]
|
|
if theme
|
|
self.colors = theme[:colors]
|
|
self.bar_colors = theme[:bar_colors]
|
|
self.background = theme[:background]
|
|
self.chart_background = theme[:chart_background]
|
|
self
|
|
else
|
|
raise(ThemeNotFound, "Could not locate the #{theme_name} theme ...")
|
|
end
|
|
end
|
|
|
|
def to_options
|
|
{:background => background, :chart_background => chart_background, :bar_colors => bar_colors.join(',')}
|
|
end
|
|
end
|
|
end
|