module StyleGuideAPI

Constants

VERSION

Attributes

live[RW]
theme[RW]

Public Class Methods

add_stylesheet(file) click to toggle source
# File lib/styleguide-api.rb, line 51
def self.add_stylesheet(file)
  @stylesheets[theme] ||= []
  @stylesheets[theme] << file
end
add_templates(glob, options = {}) click to toggle source
# File lib/styleguide-api.rb, line 45
def self.add_templates(glob, options = {})
  current_theme = options[:theme] || theme
  @template_paths[current_theme] ||= []
  @template_paths[current_theme] << glob
end
data() click to toggle source
# File lib/styleguide-api.rb, line 33
def self.data
  return @data if @data and not (live and @template_paths.any?)
  @data = {}
  load_templates
  @data
end
initialize() click to toggle source
# File lib/styleguide-api.rb, line 23
def self.initialize
  @live = false
  @templates = {}
  @template_paths = {}
  @data = nil
  @theme = nil
  @stylesheets = {}
end
load(uri) click to toggle source
# File lib/styleguide-api.rb, line 40
def self.load(uri)
  json = open(uri).read
  @data = JSON.parse(json)
end
render(template_name, locals = {}, &block) click to toggle source
# File lib/styleguide-api.rb, line 56
def self.render(template_name, locals = {}, &block)
  scope = locals.delete(:scope) || Object.new
  template = template_for(template_name)
  template.render(scope, locals, &block)
end
stylesheets() click to toggle source
# File lib/styleguide-api.rb, line 83
def self.stylesheets
  data[theme]["stylesheets"] || []
end
template_for(name) click to toggle source
# File lib/styleguide-api.rb, line 62
def self.template_for(name)
  @templates[theme][name] if @templates[theme] && @templates[theme][name]
  template = data[theme]["templates"].fetch(name) do
    fail UnknownTemplateError, name
  end
  @templates[theme] ||= {}
  @templates[theme][name] = Tilt[template["type"]].new { template["source"] }
end
themes() click to toggle source
# File lib/styleguide-api.rb, line 75
def self.themes
  (@template_paths.keys + (@data ? @data.keys : [])).uniq
end
to_json() click to toggle source
# File lib/styleguide-api.rb, line 79
def self.to_json
  data.to_json
end

Private Class Methods

load_templates() click to toggle source
# File lib/styleguide-api.rb, line 88
def self.load_templates
  themes.each do |theme|
    @data[theme] ||= {
      "templates" => {},
      "stylesheets" => @stylesheets[theme]
    }
    @template_paths[theme].each do |glob|
      path = glob.split("*").first
      Dir.glob(glob).each do |file|
        key, type = file.sub("/_", "/").sub(/^#{path}(.+?)\.(\w+)$/, "\\1"), $2
        if Tilt[type]
          @data[theme]["templates"][key] = {
            "source" => File.read(file).strip,
            "type" => type
          }
        end
      end
    end
  end
end