lib/octopress-ink/plugins.rb in octopress-ink-1.0.0.alpha.31 vs lib/octopress-ink/plugins.rb in octopress-ink-1.0.0.alpha.32
- old
+ new
@@ -1,300 +1,319 @@
module Octopress
- module Plugins
+ module Ink
+ module Plugins
- @plugins = []
- @local_plugins = []
- @site = nil
+ @plugins = []
+ @local_plugins = []
+ @site = nil
- def self.theme
- @theme
- end
-
- def self.plugin(name)
- if name == 'theme'
+ def self.theme
@theme
- else
- found = plugins.reject { |p| p.name != name }
- if found.empty?
- raise IOError.new "No Theme or Plugin with the name '#{name}' was found."
+ end
+
+ def self.each(&block)
+ plugins.each(&block)
+ end
+
+ def self.size
+ plugins.size
+ end
+
+ def self.plugin(name)
+ if name == 'theme'
+ @theme
+ else
+ found = plugins.reject { |p| p.name != name }
+ if found.empty?
+ raise IOError.new "No Theme or Plugin with the name '#{name}' was found."
+ end
+ found.first
end
- found.first
end
- end
- def self.plugins
- [@theme].concat(@plugins).concat(@local_plugins).compact
- end
+ def self.plugins
+ [@theme].concat(@plugins).concat(@local_plugins).compact
+ end
- def self.site=(site)
- @site = site
- end
+ def self.site=(site)
+ @site = site
+ end
- def self.site
- @site
- end
+ def self.site
+ @site
+ end
- def self.config
- if @config
- @config
- else
- @config = {}
- @config['plugins'] = {}
- @config['theme'] = @theme.nil? ? {} : @theme.config
+ def self.config
+ if @config
+ @config
+ else
+ @config = {}
+ @config['plugins'] = {}
+ @config['theme'] = @theme.nil? ? {} : @theme.config
- plugins.each do |p|
- unless p == @theme
- @config['plugins'][p.name] = p.config
+ plugins.each do |p|
+ unless p == @theme
+ @config['plugins'][p.name] = p.config
+ end
end
+
+ @config
end
+ end
- @config
+ def self.include(name, file)
+ p = plugin(name)
+ p.include(file)
end
- end
- def self.include(name, file)
- p = plugin(name)
- p.include(file)
- end
+ def self.register_plugin(plugin, name, type='plugin')
+ new_plugin = plugin.new(name, type)
- def self.register_plugin(plugin, name, type='plugin')
- new_plugin = plugin.new(name, type)
+ case type
+ when 'theme'
+ @theme = new_plugin
+ when 'local_plugin'
+ @local_plugins << new_plugin
+ else
+ @plugins << new_plugin
+ end
+ end
- case type
- when 'theme'
- @theme = new_plugin
- when 'local_plugin'
- @local_plugins << new_plugin
- else
- @plugins << new_plugin
+ def self.register_layouts
+ plugins.each do |p|
+ p.layouts.clone.each { |layout| layout.register }
+ end
end
- end
- def self.register_layouts
- plugins.each do |p|
- p.layouts.clone.each { |layout| layout.register }
+ def self.layouts
+ names = []
+ plugins.each do |p|
+ p.layouts.each { |layout| names << layout.name }
+ end
+ names
end
- end
- def self.custom_dir
- @site.config['plugins']
- end
+ def self.custom_dir
+ @site.config['plugins']
+ end
- def self.fingerprint(paths)
- paths = [paths] unless paths.is_a? Array
- Digest::MD5.hexdigest(paths.clone.map! { |path| "#{File.mtime(path).to_i}" }.join)
- end
-
- def self.combined_stylesheet_path(media)
- File.join('stylesheets', "#{media}-#{@combined_stylesheets[media][:fingerprint]}.css")
- end
+ def self.fingerprint(paths)
+ paths = [paths] unless paths.is_a? Array
+ Digest::MD5.hexdigest(paths.clone.map! { |path| "#{File.mtime(path).to_i}" }.join)
+ end
+
+ def self.combined_stylesheet_path(media)
+ File.join('stylesheets', "#{media}-#{@combined_stylesheets[media][:fingerprint]}.css")
+ end
- def self.combined_javascript_path
- print = @javascript_fingerprint || ''
- File.join('javascripts', "#{print}.js")
- end
+ def self.combined_javascript_path
+ print = @javascript_fingerprint || ''
+ File.join('javascripts', "#{print}.js")
+ end
- def self.write_files(source, dest)
- @site.static_files << StaticFileContent.new(source, dest)
- end
+ def self.write_files(source, dest)
+ @site.static_files << StaticFileContent.new(source, dest)
+ end
- def self.compile_sass_file(path, options)
- ::Sass.compile_file(path, options)
- end
+ def self.compile_sass_file(path, options)
+ ::Sass.compile_file(path, options)
+ end
- def self.compile_sass(contents, options)
- ::Sass.compile(contents, options)
- end
+ def self.compile_sass(contents, options)
+ ::Sass.compile(contents, options)
+ end
- def self.sass_config(item, default)
- config = @site.config
- if config['octopress'] && config['octopress']['sass'] && config['octopress']['sass'][item]
- config['octopress']['sass'][item]
- else
- default
+ def self.sass_config(item, default)
+ config = @site.config
+ if config['octopress'] && config['octopress']['sass'] && config['octopress']['sass'][item]
+ config['octopress']['sass'][item]
+ else
+ default
+ end
end
- end
-
- def self.sass_options
- options = {
- style: sass_config('output_style', 'compressed').to_sym,
- trace: sass_config('trace', false),
- line_numbers: sass_config('line_numbers', false)
- }
- end
+
+ def self.sass_options
+ options = {
+ style: sass_config('output_style', 'compressed').to_sym,
+ trace: sass_config('trace', false),
+ line_numbers: sass_config('line_numbers', false)
+ }
+ end
- def self.write_combined_stylesheet
- css = combine_stylesheets
- css.keys.each do |media|
- options = sass_options
- options[:line_numbers] = false
- contents = compile_sass(css[media][:contents], options)
- write_files(contents, combined_stylesheet_path(media))
+ def self.write_combined_stylesheet
+ css = combine_stylesheets
+ css.keys.each do |media|
+ options = sass_options
+ options[:line_numbers] = false
+ contents = compile_sass(css[media][:contents], options)
+ write_files(contents, combined_stylesheet_path(media))
+ end
end
- end
- def self.write_combined_javascript
- js = combine_javascripts
- write_files(js, combined_javascript_path) unless js == ''
- end
+ def self.write_combined_javascript
+ js = combine_javascripts
+ write_files(js, combined_javascript_path) unless js == ''
+ end
- def self.combine_stylesheets
- unless @combined_stylesheets
- css = {}
- paths = {}
- plugins.each do |plugin|
- if plugin.type == 'theme'
- plugin_header = "/* Theme: #{plugin.name} */\n"
- else
- plugin_header = "/* Plugin: #{plugin.name} */\n"
- end
- stylesheets = plugin.stylesheets.clone.concat plugin.sass
- stylesheets.each do |file|
- css[file.media] ||= {}
- css[file.media][:contents] ||= ''
- css[file.media][:contents] << plugin_header
- css[file.media][:paths] ||= []
-
- # Add Sass files
- if file.respond_to? :compile
- css[file.media][:contents].concat file.compile
+ def self.combine_stylesheets
+ unless @combined_stylesheets
+ css = {}
+ paths = {}
+ plugins.each do |plugin|
+ if plugin.type == 'theme'
+ plugin_header = "/* Theme: #{plugin.name} */\n"
else
- css[file.media][:contents].concat file.path.read.strip
+ plugin_header = "/* Plugin: #{plugin.name} */\n"
end
- css[file.media][:paths] << file.path
- plugin_header = ''
+ stylesheets = plugin.stylesheets.clone.concat plugin.sass
+ stylesheets.each do |file|
+ css[file.media] ||= {}
+ css[file.media][:contents] ||= ''
+ css[file.media][:contents] << plugin_header
+ css[file.media][:paths] ||= []
+
+ # Add Sass files
+ if file.respond_to? :compile
+ css[file.media][:contents].concat file.compile
+ else
+ css[file.media][:contents].concat file.path.read.strip
+ end
+ css[file.media][:paths] << file.path
+ plugin_header = ''
+ end
end
- end
- css.keys.each do |media|
- css[media][:fingerprint] = fingerprint(css[media][:paths])
+ css.keys.each do |media|
+ css[media][:fingerprint] = fingerprint(css[media][:paths])
+ end
+ @combined_stylesheets = css
end
- @combined_stylesheets = css
+ @combined_stylesheets
end
- @combined_stylesheets
- end
- def self.combine_javascripts
- unless @combined_javascripts
- js = ''
- plugins.each do |plugin|
- paths = plugin.javascript_paths
- @javascript_fingerprint = fingerprint(paths)
- paths.each do |file|
- js.concat Pathname.new(file).read
+ def self.combine_javascripts
+ unless @combined_javascripts
+ js = ''
+ plugins.each do |plugin|
+ paths = plugin.javascript_paths
+ @javascript_fingerprint = fingerprint(paths)
+ paths.each do |file|
+ js.concat Pathname.new(file).read
+ end
end
+ @combined_javascripts = js
end
- @combined_javascripts = js
+ @combined_javascripts
end
- @combined_javascripts
- end
- def self.combined_stylesheet_tag
- tags = ''
- combine_stylesheets.keys.each do |media|
- tags.concat "<link href='#{Filters.expand_url(combined_stylesheet_path(media))}' media='#{media}' rel='stylesheet' type='text/css'>"
+ def self.combined_stylesheet_tag
+ tags = ''
+ combine_stylesheets.keys.each do |media|
+ tags.concat "<link href='#{Filters.expand_url(combined_stylesheet_path(media))}' media='#{media}' rel='stylesheet' type='text/css'>"
+ end
+ tags
end
- tags
- end
- def self.combined_javascript_tag
- unless combine_javascripts == ''
- "<script src='#{Filters.expand_url(combined_javascript_path)}'></script>"
+ def self.combined_javascript_tag
+ unless combine_javascripts == ''
+ "<script src='#{Filters.expand_url(combined_javascript_path)}'></script>"
+ end
end
- end
- def self.stylesheet_tags
- if concat_css
- combined_stylesheet_tag
- else
- css = []
- plugins.each do |plugin|
- css.concat plugin.stylesheet_tags
- css.concat plugin.sass_tags
+ def self.stylesheet_tags
+ if concat_css
+ combined_stylesheet_tag
+ else
+ css = []
+ plugins.each do |plugin|
+ css.concat plugin.stylesheet_tags
+ css.concat plugin.sass_tags
+ end
+ css
end
- css
end
- end
- def self.concat_css
- config = @site.config
- if config['octopress'] && !config['octopress']['concat_css'].nil?
- config['octopress']['concat_css'] != false
- else
- true
+ def self.concat_css
+ config = @site.config
+ if config['octopress'] && !config['octopress']['concat_css'].nil?
+ config['octopress']['concat_css'] != false
+ else
+ true
+ end
end
- end
- def self.concat_js
- config = @site.config
- if config['octopress'] && !config['octopress']['concat_js'].nil?
- config['octopress']['concat_js'] != false
- else
- true
+ def self.concat_js
+ config = @site.config
+ if config['octopress'] && !config['octopress']['concat_js'].nil?
+ config['octopress']['concat_js'] != false
+ else
+ true
+ end
end
- end
- def self.javascript_tags
- if concat_js
- combined_javascript_tag
- else
- js = []
+ def self.javascript_tags
+ if concat_js
+ combined_javascript_tag
+ else
+ js = []
+ plugins.each do |plugin|
+ js.concat plugin.javascript_tags
+ end
+ js
+ end
+ end
+
+ def self.copy_javascripts
plugins.each do |plugin|
- js.concat plugin.javascript_tags
+ copy plugin.javascripts
end
- js
end
- end
- def self.copy_javascripts
- plugins.each do |plugin|
- copy plugin.javascripts
+ def self.copy_stylesheets
+ stylesheets = plugins.clone.map {
+ |p| p.stylesheets.clone.concat(p.sass)
+ }.flatten
+ copy stylesheets
end
- end
- def self.copy_stylesheets
- stylesheets = plugins.clone.map {
- |p| p.stylesheets.clone.concat(p.sass)
- }.flatten
- copy stylesheets
- end
+ def self.add_static_files
+
+ plugin('user stylesheets').add_files
+
+ # Copy/Generate Stylesheets
+ #
+ if concat_css
+ write_combined_stylesheet
+ else
+ copy_stylesheets
+ end
- def self.add_static_files
-
- plugin('user stylesheets').add_files
-
- # Copy/Generate Stylesheets
- #
- if concat_css
- write_combined_stylesheet
- else
- copy_stylesheets
- end
+ # Copy/Generate Javascripts
+ #
+ if concat_js
+ write_combined_javascript
+ else
+ copy_javascripts
+ end
- # Copy/Generate Javascripts
- #
- if concat_js
- write_combined_javascript
- else
- copy_javascripts
+ # Copy other assets
+ #
+ copy_static_files
end
- # Copy other assets
- #
- copy_static_files
- end
-
- def self.copy_static_files
- plugins.each do |plugin|
- copy plugin.files
- copy plugin.images
- copy plugin.fonts
+ def self.copy_static_files
+ plugins.each do |plugin|
+ copy plugin.files
+ copy plugin.pages
+ copy plugin.images
+ copy plugin.fonts
+ end
end
- end
- def self.copy(files)
- files.each { |f| f.copy }
+ def self.copy(files)
+ files.each { |f| f.copy }
+ end
end
end
end