lib/octopress-docs.rb in octopress-docs-0.0.3 vs lib/octopress-docs.rb in octopress-docs-0.0.4

- old
+ new

@@ -1,25 +1,60 @@ require "octopress" require "jekyll" require "octopress-escape-code" +require "octopress-hooks" require "octopress-docs/version" require "octopress-docs/command" require "octopress-docs/doc" require "octopress-docs/tag" +require "octopress-docs/hooks" module Octopress module Docs - attr_reader :pages - @pages = [] + attr_reader :docs + @docs = {} autoload :Doc, 'octopress-docs/doc' def self.gem_dir(dir='') File.expand_path(File.join(File.dirname(__FILE__), '../', dir)) end + # Get all doc pages + # + def self.pages + @docs.values.flatten.map {|d| d.page } + end + + def self.pages_info + plugin_docs = [] + @docs.keys.each { |slug| + plugin_docs << { + "name" => @docs[slug].first.plugin_name, + "docs" => plugin_docs(@docs[slug]) + } + } + { 'plugin_docs' => plugin_docs } + end + + def self.plugin_docs(pages) + pages.clone.map { |d| + page = d.page + title = page.data['link_title'] || page.data['title'] || page.basename + url = File.join('/', d.base_url, page.url.sub('index.html', '')) + + { + 'title' => title, + 'url' => url + } + }.sort_by { |i| + # Sort by depth of url + i['url'].split('/').size + } + end + def self.add_plugin_docs(plugin, dir, files) pages = [] options = plugin_options(plugin).merge({ dir: File.join(plugin.assets_path, dir), }) @@ -34,23 +69,28 @@ pages end def self.plugin_options(plugin) { - plugin_name: plugin.name, - plugin_slug: plugin.slug, - plugin_type: plugin.type, + name: plugin.name, + slug: plugin.slug, + type: plugin.type, base_url: plugin.docs_base_url, dir: plugin.path } end def self.add(options) + root_docs = [] options[:docs] ||= %w{readme changelog} options[:docs].each do |doc| - root_docs << add_root_doc(doc, options) + if doc =~ /readme/ + root_docs << add_root_doc(doc, options.merge({index: true})) + else + root_docs << add_root_doc(doc, options) + end end root_docs end # Add a single root doc @@ -65,10 +105,11 @@ add_root_doc(filename, options) end def self.add_doc_page(options) page = Docs::Doc.new(options) - @pages << page + @docs[options[:slug]] ||= [] + @docs[options[:slug]] << page page end def self.select_first(dir, match) Dir.new(dir).select { |f| f =~/#{match}/i}.first