lib/octopress-ink.rb in octopress-ink-1.0.0.rc.48 vs lib/octopress-ink.rb in octopress-ink-1.0.0.rc.49

- old
+ new

@@ -13,21 +13,22 @@ require 'octopress-ink/tags/set_lang' require 'octopress-ink/cache' module Octopress module Ink + extend self autoload :Utils, 'octopress-ink/utils' autoload :Assets, 'octopress-ink/assets' autoload :Convertible, 'octopress-ink/jekyll/convertible' autoload :Page, 'octopress-ink/jekyll/page' - autoload :TemplatePage, 'octopress-ink/jekyll/template_page' autoload :Layout, 'octopress-ink/jekyll/layout' autoload :StaticFile, 'octopress-ink/jekyll/static_file' autoload :StaticFileContent, 'octopress-ink/jekyll/static_file_content' autoload :Plugins, 'octopress-ink/plugins' autoload :Plugin, 'octopress-ink/plugin' + autoload :Bootstrap, 'octopress-ink/plugin/bootstrap' autoload :PluginAssetPipeline, 'octopress-ink/plugin_asset_pipeline' autoload :Tags, 'octopress-ink/tags' if defined? Octopress::Command require 'octopress-ink/commands/helpers' @@ -36,19 +37,19 @@ @load_plugin_assets = true Plugins.reset - def self.version + def version version = "Jekyll v#{Jekyll::VERSION}, " if defined? Octopress::VERSION version << "Octopress v#{Octopress::VERSION} " end version << "Octopress Ink v#{Octopress::Ink::VERSION}" end - def self.payload(lang=nil) + def payload(lang=nil) config = Plugins.config(lang) ink_payload = { 'plugins' => config['plugins'], 'theme' => config['theme'], 'octopress' => { @@ -57,47 +58,56 @@ } ink_payload end - def self.enabled? + def enabled? @load_plugin_assets end - def self.load_plugin_assets=(setting) + def load_plugin_assets=(setting) @load_plguin_assets = setting end # Register a new plugin # # plugin - A subclass of Plugin # - def self.register_plugin(plugin, options={}) + def register_plugin(plugin, options={}) Plugins.register_plugin(plugin, options) end + def register_theme(plugin, options={}) + options['type'] = 'theme' + Plugins.register_plugin(plugin, options) + end + # Create a new plugin from a configuration hash # # options - A hash of configuration options. # - def self.add_plugin(options={}) - Plugins.register_plugin Plugin, options + def add_plugin(options={}) + register_plugin Plugin, options end - def self.add_docs(options={}) + def add_theme(options={}) + register_theme Plugin, options + end + + def add_docs(options={}) Docs.register_docs options end - def self.config + def config @config ||= Configuration.config end - def self.plugins + def plugins Plugins.plugins end - def self.plugin(name) + def plugin(name) begin Plugins.plugin(name) rescue return false end @@ -110,11 +120,11 @@ # Note: if options are empty, this will display a # list of plugin names, slugs, versions, and descriptions, # but no assets, i.e. 'minimal' info. # # - def self.list(options={}) + def list(options={}) site = Octopress.site(options) Plugins.register options = {'minimal'=>true} if options.empty? message = "Octopress Ink - v#{VERSION}\n" @@ -126,11 +136,11 @@ message += "You have no plugins installed." end puts message end - def self.plugin_list(name, options) + def plugin_list(name, options) config = options.delete('config') # Jekyll conflicts with this option Octopress.site(options) Octopress.site.read Plugins.register options['config'] = config if config @@ -140,11 +150,11 @@ else not_found(name) end end - def self.copy_plugin_assets(name, options) + def copy_plugin_assets(name, options) config = options.delete('config') # Jekyll conflicts with this option Octopress.site(options) Plugins.register options['config'] = config if config @@ -160,11 +170,11 @@ else not_found(name) end end - def self.copy_path(name, options) + def copy_path(name, options) if path = options.delete('path') full_path = File.join(Dir.pwd, path) if !Dir["#{full_path}/*"].empty? && options['force'].nil? abort "Error: directory #{path} is not empty. Use --force to overwrite files." end @@ -173,32 +183,32 @@ end full_path end - def self.list_plugins(options={}) + def list_plugins(options={}) Octopress.site(options) Plugins.register puts "\nCurrently installed plugins:" if plugins.size > 0 plugins.each { |plugin| puts plugin.name + " (#{plugin.slug})" } else puts "You have no plugins installed." end end - def self.gem_dir(*subdirs) + def gem_dir(*subdirs) File.expand_path(File.join(File.dirname(__FILE__), '../', *subdirs)) end # Makes it easy for Ink plugins to copy README and CHANGELOG # files to doc folder to be used as a documentation asset file # # Usage: In rakefile require 'octopress-ink' # then add task calling Octopress::Ink.copy_doc for each file # - def self.copy_doc(source, dest, permalink=nil) + def copy_doc(source, dest, permalink=nil) contents = File.open(source).read # Convert H1 to title and add permalink in YAML front-matter # contents.sub!(/^# (.*)$/, "#{doc_yaml('\1', permalink).strip}") @@ -208,25 +218,31 @@ puts "Updated #{dest} from #{source}" end private - def self.not_found(plugin) + def not_found(plugin) puts "Plugin '#{plugin}' not found." list_plugins end - def self.doc_yaml(title, permalink) + def doc_yaml(title, permalink) yaml = "---\n" yaml += "title: \"#{title.strip}\"\n" yaml += "permalink: #{permalink.strip}\n" if permalink yaml += "---" end end end Liquid::Template.register_tag('css_asset_tag', Octopress::Ink::Tags::StylesheetTag) Liquid::Template.register_tag('js_asset_tag', Octopress::Ink::Tags::JavascriptTag) +Liquid::Template.register_tag('categories', Octopress::Ink::Tags::CategoryTag) +Liquid::Template.register_tag('category_list', Octopress::Ink::Tags::CategoryTag) +Liquid::Template.register_tag('tags', Octopress::Ink::Tags::CategoryTag) +Liquid::Template.register_tag('tag_list', Octopress::Ink::Tags::CategoryTag) +Liquid::Template.register_tag('feeds', Octopress::Ink::Tags::FeedsTag) +Liquid::Template.register_tag('feed_updated', Octopress::Ink::Tags::FeedUpdatedTag) Octopress::Docs.add({ name: "Octopress Ink", gem: "octopress-ink", version: Octopress::Ink::VERSION,