Project

General

Profile

Download (1.16 KB) Statistics
| Branch: | Tag: | Revision:
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
(2-2/3)