class Bunto::Theme

Attributes

name[R]

Public Class Methods

new(name) click to toggle source
# File lib/bunto/theme.rb, line 7
def initialize(name)
  @name = name.downcase.strip
  configure_sass
end

Public Instance Methods

assets_path() click to toggle source
# File lib/bunto/theme.rb, line 32
def assets_path
  path_for "assets".freeze
end
configure_sass() click to toggle source
# File lib/bunto/theme.rb, line 36
def configure_sass
  return unless sass_path
  require "sass"
  Sass.load_paths << sass_path
end
includes_path() click to toggle source
# File lib/bunto/theme.rb, line 20
def includes_path
  path_for "_includes".freeze
end
layouts_path() click to toggle source
# File lib/bunto/theme.rb, line 24
def layouts_path
  path_for "_layouts".freeze
end
root() click to toggle source
# File lib/bunto/theme.rb, line 12
def root
  # Must use File.realpath to resolve symlinks created by rbenv
  # Otherwise, Bunto.sanitized path with prepend the unresolved root
  @root ||= File.realpath(gemspec.full_gem_path)
rescue Errno::ENOENT, Errno::EACCES, Errno::ELOOP
  nil
end
sass_path() click to toggle source
# File lib/bunto/theme.rb, line 28
def sass_path
  path_for "_sass".freeze
end

Private Instance Methods

gemspec() click to toggle source
# File lib/bunto/theme.rb, line 55
def gemspec
  @gemspec ||= Gem::Specification.find_by_name(name)
rescue Gem::LoadError
  raise Bunto::Errors::MissingDependencyException,
    "The #{name} theme could not be found."
end
path_for(folder) click to toggle source
# File lib/bunto/theme.rb, line 44
def path_for(folder)
  path = realpath_for(folder)
  path if path && File.directory?(path)
end
realpath_for(folder) click to toggle source
# File lib/bunto/theme.rb, line 49
def realpath_for(folder)
  File.realpath(Bunto.sanitized_path(root, folder.to_s))
rescue Errno::ENOENT, Errno::EACCES, Errno::ELOOP
  nil
end