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