class Octopress::AssetPipeline::Plugin

Public Instance Methods

add_files() click to toggle source
# File lib/octopress-asset-pipeline.rb, line 29
def add_files
  if Octopress.site.pages.empty? && Octopress.site.posts.empty?
    Octopress.site.read_directories 
  end

  add_static_files
  add_page_files
  add_stylesheets
  add_javascripts
end
config(*args) click to toggle source
# File lib/octopress-asset-pipeline.rb, line 40
def config(*args)
  @config ||= begin
    c = Ink.configuration['asset_pipeline']

    # Deprecation warning - remove in 2.1
    if c['javascripts_dir']
      warn('Deprecation Warning:'.yellow + ' Asset_pipeline configuration key `javascripts_dir` has been renamed to `javascripts_source`. Please update your configuration.')
      c['javascripts_source'] = c.delete('javascripts_dir')
    end
    
    if c['stylesheets_dir']
      warn('Deprecation Warning:'.yellow + ' Asset_pipeline configuration key `stylesheets_dir` has been renamed to `stylesheets_source`. Please update your configuration.')
      c['stylesheets_source'] = c.delete('stylesheets_dir')
    end

    {
      'stylesheets_source' => ['stylesheets', 'css'],
      'javascripts_source' => ['javascripts', 'js']
    }.merge(c).merge({ 'disable' => {} })
  end
end
register() click to toggle source
# File lib/octopress-asset-pipeline.rb, line 15
def register
  reset
  # Tell Jekyll to read static files and pages
  # This is necessary when Jekyll isn't being asked to build a site,
  # like when a user runs the list command to list assets
  #
  if Octopress::Docs.enabled?
    add_docs
  end
  if Octopress::Ink.enabled?
    add_files
  end
end

Private Instance Methods

add_javascripts() click to toggle source
# File lib/octopress-asset-pipeline.rb, line 84
def add_javascripts
  if !combine_js
    # Add tags for {% js_asset_tag %}
    javascripts.each { |f| Ink::Plugins.add_js_tag(f.tag) }
    @js.clear
    @coffee.clear
  end
end
add_page_files() click to toggle source

Finds Sass and Coffeescript files files registered by Jekyll

# File lib/octopress-asset-pipeline.rb, line 120
def add_page_files
  find_page_assets(asset_dirs, '.scss', '.sass', '.coffee', '.js', '.css').each do |f|
    if f.ext =~ /\.coffee$/ 
      @coffee << Coffeescript.new(self, f)
      Octopress.site.pages.delete(f) if combine_js
    elsif f.ext =~ /\.s[ca]ss/ 
      @sass << Sass.new(self, f)
      Octopress.site.pages.delete(f) if combine_css
    elsif f.ext =~ /\.css/ 
      @css << Css.new(self, f)
      Octopress.site.pages.delete(f) if combine_css
    elsif f.ext =~ /\.js/ 
      @js << Javascript.new(self, f)
      Octopress.site.pages.delete(f) if combine_js
    end
  end
end
add_static_files() click to toggle source

Finds css and js files files registered by Jekyll

# File lib/octopress-asset-pipeline.rb, line 106
def add_static_files
  find_static_assets(asset_dirs, '.js', '.css').each do |f|
    if File.extname(f.path) == '.js'
      @js << Javascript.new(self, f)
      Octopress.site.static_files.delete(f) if combine_js
    elsif File.extname(f.path) == '.css'
      @css << Css.new(self, f)
      Octopress.site.static_files.delete(f) if combine_css
    end
  end
end
add_stylesheets() click to toggle source
# File lib/octopress-asset-pipeline.rb, line 76
def add_stylesheets
  if !combine_css
    # Add tags for {% css_asset_tag %}
    stylesheets.each { |f| Ink::Plugins.add_css_tag(f.tag) }
    @css.clear
  end
end
asset_dirs() click to toggle source
# File lib/octopress-asset-pipeline.rb, line 64
def asset_dirs
  [config['stylesheets_source'], config['javascripts_source']].flatten
end
combine_css() click to toggle source
# File lib/octopress-asset-pipeline.rb, line 68
def combine_css
  config['combine_css']
end
combine_js() click to toggle source
# File lib/octopress-asset-pipeline.rb, line 72
def combine_js
  config['combine_js']
end
find_assets(assets, dirs, extensions) click to toggle source
# File lib/octopress-asset-pipeline.rb, line 148
def find_assets(assets, dirs, extensions)
  assets.select do |f| 
    if extensions.include?(File.extname(f.path))
      path = f.path.sub(File.join(Octopress.site.source, ''), '')
      in_dir?(path, dirs)
    end
  end
end
find_page_assets(dirs, *extensions) click to toggle source
# File lib/octopress-asset-pipeline.rb, line 143
def find_page_assets(dirs, *extensions)
  assets = Octopress.site.pages.dup.sort_by(&:path)
  find_assets(assets, dirs, extensions)
end
find_static_assets(dirs, *extensions) click to toggle source
# File lib/octopress-asset-pipeline.rb, line 138
def find_static_assets(dirs, *extensions)
  assets = Octopress.site.static_files.dup.sort_by(&:path)
  find_assets(assets, dirs, extensions)
end
in_dir?(file, *dirs) click to toggle source
# File lib/octopress-asset-pipeline.rb, line 157
def in_dir?(file, *dirs)
  dirs.flatten.select do |d| 
    file.match(/^#{d}\//) 
  end.size > 0
end
sort(files, config) click to toggle source
# File lib/octopress-asset-pipeline.rb, line 93
def sort(files, config)
  sorted = []
  config.each do |item|
    files.each do |file|
      sorted << files.delete(file) if file.path.to_s.include? item
    end
  end

  sorted.concat files
end