class Octopress::Ink::Assets::Asset

Constants

FRONT_MATTER

Attributes

base[R]
dir[R]
exists[RW]
file[R]
plugin[R]
replacement[R]
root[R]

Public Class Methods

new(plugin, base, file) click to toggle source
# File lib/octopress-ink/assets/asset.rb, line 10
def initialize(plugin, base, file)
  @file = file
  @base = base
  @plugin = plugin
  @root = plugin.assets_path
  @dir = File.join(plugin.slug, base)
  @exists = {}
  file_check
end

Public Instance Methods

add() click to toggle source
# File lib/octopress-ink/assets/asset.rb, line 83
def add
  Plugins.static_files << StaticFile.new(path, destination)
end
asset_info() click to toggle source
# File lib/octopress-ink/assets/asset.rb, line 24
def asset_info
  message = filename.ljust(35)

  if replaced?
    message += "Replaced by #{@replacement} plugin"
  elsif disabled?
    message += "Disabled by configuration"
  elsif path.to_s != plugin_path
    shortpath = File.join(Plugins.custom_dir.sub(Dir.pwd,''), dir).sub('/','')
    message += "From: #{File.join(shortpath,filename)}"
  end
  
  message
end
content() click to toggle source
# File lib/octopress-ink/assets/asset.rb, line 119
def content
  @content ||= begin
    if read =~ FRONT_MATTER
      $POSTMATCH
    else
      read
    end
  end
end
copy(target_dir) click to toggle source

Copy asset to user override directory

# File lib/octopress-ink/assets/asset.rb, line 89
def copy(target_dir)
  return unless exists? plugin_path

  if target_dir
    target_dir = File.join(target_dir, base)
  else
    target_dir = user_dir
  end

  FileUtils.mkdir_p File.join(target_dir, File.dirname(file))
  FileUtils.cp plugin_path, File.join(target_dir, file)
  target_dir.sub!(Dir.pwd+'/', '')
  "+ ".green + "#{File.join(target_dir, filename)}"
end
data() click to toggle source
# File lib/octopress-ink/assets/asset.rb, line 144
def data
  if read =~ FRONT_MATTER
    SafeYAML.load($1)
  else
    {}
  end
end
destination() click to toggle source
# File lib/octopress-ink/assets/asset.rb, line 115
def destination
  File.join(base, plugin.slug, file)
end
disable() click to toggle source
# File lib/octopress-ink/assets/asset.rb, line 51
def disable
  @disabled = true
end
disabled?() click to toggle source
# File lib/octopress-ink/assets/asset.rb, line 43
def disabled?
  @disabled || is_disabled(base, filename) || replaced?
end
ext() click to toggle source
# File lib/octopress-ink/assets/asset.rb, line 75
def ext
  File.extname(filename)
end
filename() click to toggle source
# File lib/octopress-ink/assets/asset.rb, line 39
def filename
  file
end
info() click to toggle source
# File lib/octopress-ink/assets/asset.rb, line 20
def info
  "  - #{asset_info}"
end
is_disabled(base, file) click to toggle source
# File lib/octopress-ink/assets/asset.rb, line 55
def is_disabled(base, file)
  config = @plugin.config['disable']
  config.include?(base) || config.include?(File.join(base, filename))
end
path() click to toggle source
# File lib/octopress-ink/assets/asset.rb, line 60
def path
  @path ||= begin
    files = []
    files << user_path
    files << plugin_path
    files = files.flatten.reject { |f| !exists? f }

    if files.empty?
      raise IOError.new "Could not find #{File.basename(file)} at #{file}"
    end

    files[0]
  end
end
payload() click to toggle source
# File lib/octopress-ink/assets/asset.rb, line 129
def payload
  @payload ||= begin
    p = Ink.payload
    p['jekyll'] = {
      'version' => Jekyll::VERSION,
      'environment' => Jekyll.env
    }
    p['site'] = Octopress.site.config
    p['site']['data'] = Octopress.site.site_data
    p['page'] = data

    p
  end
end
read() click to toggle source
# File lib/octopress-ink/assets/asset.rb, line 79
def read
  File.read(path)
end
remove_jekyll_asset() click to toggle source

Remove files from Jekyll’s static_files array so it doesn’t end up in the compiled site directory.

# File lib/octopress-ink/assets/asset.rb, line 107
def remove_jekyll_asset
  Octopress.site.static_files.clone.each do |sf|
    if sf.kind_of?(Jekyll::StaticFile) && sf.path == path.to_s
      Octopress.site.static_files.delete(sf)
    end
  end
end
replaced?() click to toggle source
# File lib/octopress-ink/assets/asset.rb, line 47
def replaced?
  !@replacement.nil?
end

Private Instance Methods

exists?(file) click to toggle source
# File lib/octopress-ink/assets/asset.rb, line 188
def exists?(file)
  exists[file] ||= File.exists?(file)
  exists[file]
end
file_check() click to toggle source
# File lib/octopress-ink/assets/asset.rb, line 182
def file_check
  if !exists? plugin_path
    raise "\nPlugin: #{plugin.name}: Could not find #{File.basename(file)} at #{plugin_path}".red
  end
end
local_plugin_path() click to toggle source
# File lib/octopress-ink/assets/asset.rb, line 174
def local_plugin_path
  File.join Octopress.site.source, dir, file
end
plugin_dir() click to toggle source
# File lib/octopress-ink/assets/asset.rb, line 162
def plugin_dir
  File.join root, base
end
plugin_path() click to toggle source
# File lib/octopress-ink/assets/asset.rb, line 166
def plugin_path
  File.join plugin_dir, file
end
source_dir() click to toggle source
# File lib/octopress-ink/assets/asset.rb, line 154
def source_dir
  if exists? user_path
    user_dir
  else
    plugin_dir
  end
end
user_dir() click to toggle source
# File lib/octopress-ink/assets/asset.rb, line 170
def user_dir
  File.join Plugins.custom_dir, dir
end
user_path() click to toggle source
# File lib/octopress-ink/assets/asset.rb, line 178
def user_path
  File.join user_dir, filename
end