lib/lookbook/page.rb in lookbook-0.9.8 vs lib/lookbook/page.rb in lookbook-1.0.0.beta.0

- old
+ new

@@ -1,8 +1,7 @@ module Lookbook - class Page - include Utils + class Page < Entity FRONTMATTER_FIELDS = [ :id, :label, :title, @@ -14,30 +13,23 @@ :footer, :data ] attr_reader :errors - attr_accessor :tabs def initialize(path, base_path) @pathname = Pathname.new path - @base_path = Pathname.new base_path + @base_path = base_path @options = nil @errors = [] - @tabs = [] - end - - def path rel_path = @pathname.relative_path_from(@base_path) - - _path = (rel_path.dirname.to_s == "." ? name : "#{rel_path.dirname}/#{name}") - _path.gsub!("[#{tab}]", "") if tab? - _path + page_path = (rel_path.dirname.to_s == "." ? name : "#{rel_path.dirname}/#{name}") + super(page_path) end - def lookup_path - @lookup_path ||= to_lookup_path(path) + def url_path + page_path lookup_path end def full_path Rails.root.join(@pathname.to_s) end @@ -72,31 +64,34 @@ def matchers normalize_matchers(label) end - def hierarchy_depth - path.split("/").size - end - def parent_collections_names File.dirname(path).split("/") end def type - tab? ? :tab : :page + :page end - def tab - matches = full_path.to_s.match(%r{\[(?<tab>\w+)\]}) - matches ? remove_position_prefix(matches[:tab]) : nil + def id + options[:id] end - def tab? - tab.present? + def position + options[:position] end + def hidden + options[:hidden] + end + + def label + options[:label] + end + def method_missing(method_name, *args, &block) if args.none? && !block options[method_name] else super @@ -126,11 +121,11 @@ line_number: line_number_match ? line_number_match[1] : false })) end @options = Lookbook.config.page_options.deep_merge(frontmatter).with_indifferent_access @options[:id] = @options[:id] ? generate_id(@options[:id]) : generate_id(lookup_path) - @options[:label] ||= (tab? ? tab : name).titleize + @options[:label] ||= name.titleize @options[:title] ||= @options[:label] @options[:hidden] ||= false @options[:landing] ||= false @options[:position] = @options[:position] ? @options[:position].to_i : get_position_prefix(path_name) @options[:markdown] ||= markdown_file? @@ -155,32 +150,20 @@ def exists?(path) !!find(path) end def all - pages, tabs = - Array(page_paths).flat_map do |dir| - Dir["#{dir}/**/*.html.*", "#{dir}/**/*.md.*"].sort.map do |page| - page = Lookbook::Page.new(page, dir) - end - end.partition { |page| page.type == :page } - - sorted_pages = pages - .uniq { |page| page.path } - .sort_by { |page| [page.position, page.label] } - - page_dict = sorted_pages.index_by(&:path) - sorted_tabs = tabs.sort_by { |tab| [tab.position, tab.label] } - - sorted_tabs.each do |tab| - page_dict[tab.path].tabs << tab + pages = Array(page_paths).map do |dir| + Dir["#{dir}/**/*.html.*", "#{dir}/**/*.md.*"].sort.map do |page| + Lookbook::Page.new(page, dir) + end end - + sorted_pages = pages.flatten.uniq { |p| p.path }.sort_by { |page| [page.position, page.label] } PageCollection.new(sorted_pages) end def page_paths - Lookbook.config.page_paths.select { |dir| Dir.exist? dir } + Lookbook.config.page_paths.filter { |dir| Dir.exist? dir } end end end end