class Rabbit::Theme::Entry

Constants

PROPERTY_BASE_NAME
THEME_BASE_NAME

Attributes

abstract[R]
dependencies[R]
description[R]
logger[RW]
name[R]
parameters[R]
title[R]

Public Class Methods

new(logger, theme_dir, name) click to toggle source
# File lib/rabbit/theme/entry.rb, line 40
def initialize(logger, theme_dir, name)
  @logger = logger
  @theme_dir = theme_dir
  @name = name
  @title = @name
  @category = nil
  @abstract = nil
  @description = nil
  @dependencies = []
  @parameters = {}
  parse_property if available?
end

Public Instance Methods

<=>(other) click to toggle source
# File lib/rabbit/theme/entry.rb, line 61
def <=>(other)
  @name <=> other.name
end
available?() click to toggle source
# File lib/rabbit/theme/entry.rb, line 53
def available?
  File.readable?(theme_file)
end
category() click to toggle source
# File lib/rabbit/theme/entry.rb, line 78
def category
  @category || N_("Etc")
end
data_dir() click to toggle source
# File lib/rabbit/theme/entry.rb, line 86
def data_dir
  File.join(@theme_dir, "data")
end
files() click to toggle source
# File lib/rabbit/theme/entry.rb, line 90
def files
  if have_data_dir?
    Dir.glob(File.join(data_dir, "*")).sort
  else
    # backward compatibility
    rejected_files = [theme_file, property_file]
    Dir[File.join(@theme_dir, "*")].delete_if do |name|
      rejected_files.include?(name)
    end.sort
  end
end
full_path(target) click to toggle source
# File lib/rabbit/theme/entry.rb, line 69
def full_path(target)
  if have_data_dir?
    File.join(data_dir, target)
  else
    # backward compatibility
    File.join(@theme_dir, target)
  end
end
have_file?(target) click to toggle source
# File lib/rabbit/theme/entry.rb, line 65
def have_file?(target)
  File.exist?(full_path(target))
end
image_theme?() click to toggle source
# File lib/rabbit/theme/entry.rb, line 82
def image_theme?
  have_data_dir?
end
property_editable?() click to toggle source
# File lib/rabbit/theme/entry.rb, line 57
def property_editable?
  File.writable?(property_file)
end

Private Instance Methods

have_data_dir?() click to toggle source
# File lib/rabbit/theme/entry.rb, line 119
def have_data_dir?
  File.directory?(data_dir)
end
parse_property() click to toggle source
# File lib/rabbit/theme/entry.rb, line 107
def parse_property
  file = property_file
  if File.exist?(file)
    content = File.open(file) {|f| f.read}
    begin
      instance_eval(content, file)
    rescue SyntaxError
      @logger.warn($!) if @logger
    end
  end
end
property_file() click to toggle source
# File lib/rabbit/theme/entry.rb, line 103
def property_file
  File.join(@theme_dir, "#{PROPERTY_BASE_NAME}.rb")
end