lib/octopress-ink/plugin.rb in octopress-ink-1.0.0.alpha.31 vs lib/octopress-ink/plugin.rb in octopress-ink-1.0.0.alpha.32
- old
+ new
@@ -1,190 +1,235 @@
+require 'find'
+
module Octopress
- class Plugin
- attr_accessor :name, :type, :asset_override, :assets_path,
- :layouts_dir, :stylesheets_dir, :javascripts_dir, :files_dir, :includes_dir, :images_dir,
- :layouts, :includes, :stylesheets, :javascripts, :images, :sass, :fonts, :files
+ module Ink
+ class Plugin
+ attr_accessor :name, :type, :asset_override, :assets_path,
+ :layouts_dir, :stylesheets_dir, :javascripts_dir, :files_dir, :includes_dir, :images_dir,
+ :layouts, :includes, :stylesheets, :javascripts, :images, :sass, :fonts, :files, :pages,
+ :website, :description, :version
- def initialize(name, type)
- @layouts_dir = 'layouts'
- @files_dir = 'files'
- @pages_dir = 'pages'
- @fonts_dir = 'fonts'
- @images_dir = 'images'
- @includes_dir = 'includes'
- @javascripts_dir = 'javascripts'
- @stylesheets_dir = 'stylesheets'
- @plugins_dir = 'plugins'
- @config_file = 'config.yml'
- @name = name
- @type = type
- @layouts = []
- @includes = []
- @stylesheets = []
- @javascripts = []
- @images = []
- @sass = []
- @fonts = []
- @files = []
- @pages = []
- add_assets
- add_layouts
- add_pages
- add_includes
- add_config
- require_plugins
- end
+ def initialize(name, type)
+ @layouts_dir = 'layouts'
+ @files_dir = 'files'
+ @pages_dir = 'pages'
+ @fonts_dir = 'fonts'
+ @images_dir = 'images'
+ @includes_dir = 'includes'
+ @javascripts_dir = 'javascripts'
+ @stylesheets_dir = 'stylesheets'
+ @plugins_dir = 'plugins'
+ @config_file = 'config.yml'
+ @name = name
+ @type = type
+ @layouts = []
+ @includes = {}
+ @stylesheets = []
+ @javascripts = []
+ @images = []
+ @sass = []
+ @fonts = []
+ @files = []
+ @pages = []
+ @version ||= false
+ @description ||= false
+ @website ||= false
+ add_assets
+ add_layouts
+ add_pages
+ add_includes
+ add_config
+ require_plugins
+ end
- def add_assets; end
+ def add_assets; end
- def add_config
- @config_file = Assets::Config.new(self, @config_file)
- end
+ def add_config
+ @config_file = Assets::Config.new(self, @config_file)
+ end
- def namespace
- if @type == 'local_plugin'
- ''
- else
- @type == 'theme' ? @type : @name
+ def slug
+ if @type == 'local_plugin'
+ ''
+ else
+ @type == 'theme' ? @type : @name
+ end
end
- end
- def add_stylesheet(file, media=nil)
- @stylesheets << Assets::Stylesheet.new(self, @stylesheets_dir, file, media)
- end
+ def assets
+ {
+ 'layouts' => @layouts,
+ 'includes' => @includes.values,
+ 'pages' => @pages,
+ 'sass' => @sass,
+ 'stylesheets' => @stylesheets,
+ 'javascripts' => @javascripts,
+ 'images' => @images,
+ 'fonts' => @fonts,
+ 'files' => @files
+ }
+ end
- def add_sass(file, media=nil)
- @sass << Assets::Sass.new(self, @stylesheets_dir, file, media)
- end
+ def info(options={})
+ message = @name
+ message += " (theme)" if @type == 'theme'
+ message += " - v#{@version}" if @version
+ message += " - #{@description}" if @description
+ message += "\n"
+ if options == {}
+ asset_types = assets
+ else
+ asset_types = assets.select{|k,v| options.keys.include?(k)}
+ end
+ asset_types.each do |name, assets|
+ if assets.size > 0
+ message += "#{name.capitalize}:\n"
+ assets.each do |t|
+ message += " - #{t.info}\n"
+ end
+ elsif options != {}
+ message += "#{name.capitalize}: none\n"
+ end
+ end
+ message
+ end
- def add_javascript(file)
- @javascripts << Assets::Javascript.new(self, @javascripts_dir, file)
- end
+ def add_stylesheet(file, media=nil)
+ @stylesheets << Assets::Stylesheet.new(self, @stylesheets_dir, file, media)
+ end
- def add_pages
- if @assets_path
- base = File.join(@assets_path, @pages_dir)
- entries = []
- if Dir.exists?(base)
- Dir.chdir(base) { entries = Dir['**/*.*'] }
- entries.each do |file|
- @files << Assets::PageAsset.new(self, @pages_dir, file)
+ def add_sass(file, media=nil)
+ @sass << Assets::Sass.new(self, @stylesheets_dir, file, media)
+ end
+
+ def add_javascript(file)
+ @javascripts << Assets::Javascript.new(self, @javascripts_dir, file)
+ end
+
+ def add_pages
+ if @assets_path
+ find_assets(File.join(@assets_path, @pages_dir)).each do |file|
+ @pages << Assets::PageAsset.new(self, @pages_dir, file)
end
end
end
- end
- def require_plugins
- if @assets_path
- base = File.join(@assets_path, @plugins_dir)
- entries = []
- if Dir.exists?(base)
- Dir.chdir(base) { entries = Dir['**/*.rb'] }
- entries.each do |file|
+ def require_plugins
+ if @assets_path
+ find_assets(File.join(@assets_path, @plugins_dir)).each do |file|
require File.join base, file
end
end
end
- end
- def add_layouts
- if @assets_path
- base = File.join(@assets_path, @layouts_dir)
- entries = []
- if Dir.exists?(base)
- Dir.chdir(base) { entries = Dir['**/*.*'] }
- entries.each do |file|
- @layouts << Assets::Layout.new(self, @layouts_dir, file)
+ def find_assets(dir)
+ found = []
+ if Dir.exist? dir
+ Find.find(dir) do |file|
+ found << file.sub(dir+'/', '') unless File.directory? file
end
end
+ found
end
- end
- def remove_jekyll_assets(files)
- files.each {|f| f.remove_jekyll_asset }
- end
+ def add_layouts
+ if @assets_path
+ find_assets(File.join(@assets_path, @layouts_dir)).each do |layout|
+ @layouts << Assets::Layout.new(self, @layouts_dir, layout)
+ end
+ end
+ end
- def add_includes
- @includes = Assets::Include.new(self, @includes_dir)
- end
+ def remove_jekyll_assets(files)
+ files.each {|f| f.remove_jekyll_asset }
+ end
- def add_image(file)
- @images << Assets::Asset.new(self, @images_dir, file)
- end
+ def add_includes
+ if @assets_path
+ find_assets(File.join(@assets_path, @includes_dir)).each do |include_file|
+ @includes[include_file] = Assets::Asset.new(self, @includes_dir, include_file)
+ end
+ end
+ end
- def add_root_files(files)
- files.each { |f| add_root_file(f) }
- end
+ def add_image(file)
+ @images << Assets::Asset.new(self, @images_dir, file)
+ end
- def add_root_file(file)
- @files << Assets::RootAsset.new(self, @files_dir, file)
- end
+ def add_root_files(files)
+ files.each { |f| add_root_file(f) }
+ end
- def add_font(file)
- @fonts << Assets::Asset.new(self, @fonts_dir, file)
- end
+ def add_root_file(file)
+ @files << Assets::RootAsset.new(self, @files_dir, file)
+ end
- def add_file(file)
- @files << Assets::Asset.new(self, @files_dir, file)
- end
+ def add_font(file)
+ @fonts << Assets::Asset.new(self, @fonts_dir, file)
+ end
- def add_stylesheets(files, media=nil)
- files.each { |f| add_stylesheet(f, media) }
- end
+ def add_file(file)
+ @files << Assets::Asset.new(self, @files_dir, file)
+ end
- def add_sass_files(files, media=nil)
- files.each { |f| add_sass(f, media) }
- end
+ def add_stylesheets(files, media=nil)
+ files.each { |f| add_stylesheet(f, media) }
+ end
- def add_javascripts(files)
- files.each { |f| add_javascript(f) }
- end
+ def add_sass_files(files, media=nil)
+ files.each { |f| add_sass(f, media) }
+ end
- def add_images(files)
- files.each { |f| add_image(f) }
- end
+ def add_javascripts(files)
+ files.each { |f| add_javascript(f) }
+ end
- def add_fonts(files)
- files.each { |f| add_font(f) }
- end
+ def add_images(files)
+ files.each { |f| add_image(f) }
+ end
- def add_files(files)
- files.each { |f| add_file(f) }
- end
+ def add_fonts(files)
+ files.each { |f| add_font(f) }
+ end
- def stylesheet_paths
- get_paths @stylesheets
- end
+ def add_files(files)
+ files.each { |f| add_file(f) }
+ end
- def javascript_paths
- get_paths @javascripts
- end
+ def stylesheet_paths
+ get_paths @stylesheets
+ end
- def stylesheet_tags
- get_tags @stylesheets
- end
+ def javascript_paths
+ get_paths @javascripts
+ end
- def sass_tags
- get_tags @sass
- end
+ def stylesheet_tags
+ get_tags @stylesheets
+ end
- def javascript_tags
- get_tags @javascripts
- end
+ def sass_tags
+ get_tags @sass
+ end
- def get_paths(files)
- files.dup.map { |f| f.path }
- end
+ def javascript_tags
+ get_tags @javascripts
+ end
- def get_tags(files)
- files.dup.map { |f| f.tag }
- end
+ def get_paths(files)
+ files.dup.map { |f| f.path }
+ end
- def include(file)
- @includes.file file
- end
+ def get_tags(files)
+ files.dup.map { |f| f.tag }
+ end
- def config
- @config ||= @config_file.read
+ def include(file)
+ @includes[file].path
+ end
+
+ def config
+ @config ||= @config_file.read
+ end
end
end
end