class Lookbook::Page
def all
def all 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 content
def content @content ||= strip_frontmatter(file_contents) end
def exists?(path)
def exists?(path) !!find(path) end
def file_contents
def file_contents File.read(full_path) end
def find(path)
def find(path) all.find { |p| p.lookup_path == path } end
def footer?
def footer? options[:footer] == true end
def full_path
def full_path Rails.root.join(@pathname.to_s) end
def get(key)
def get(key) options[key] end
def header?
def header? options[:header] == true end
def hidden?
def hidden? options[:hidden] == true end
def hierarchy_depth
def hierarchy_depth path.split("/").size end
def initialize(path, base_path)
def initialize(path, base_path) @pathname = Pathname.new path @base_path = base_path end
def lookup_path
def lookup_path @lookup_path ||= to_lookup_path(path) end
def markdown?
def markdown? options[:markdown] == true end
def markdown_file?
def markdown_file? @pathname.basename(@pathname.extname).to_s.end_with?(".md") end
def matchers
def matchers normalize_matchers(label) end
def method_missing(method_name, *args, &block)
def method_missing(method_name, *args, &block) if args.none? && !block options[method_name] else super end end
def name
def name remove_position_prefix(path_name) end
def options
def options return @options if @options frontmatter = (get_frontmatter(file_contents) || {}).deep_symbolize_keys 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] ||= 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? options[:header] = true unless options.key? :header options[:footer] = true unless options.key? :footer @options ||= options end
def page_paths
def page_paths Lookbook.config.page_paths.filter { |dir| Dir.exist? dir } end
def parent_collections_names
def parent_collections_names File.dirname(path).split("/") end
def path
def path rel_path = @pathname.relative_path_from(@base_path) (rel_path.dirname.to_s == "." ? name : "#{rel_path.dirname}/#{name}") end
def path_name
def path_name @pathname.basename(@pathname.extname).to_s.gsub(/\.(html|md)$/, "") end
def respond_to_missing?(method_name, include_private = false)
def respond_to_missing?(method_name, include_private = false) FRONTMATTER_FIELDS.include? method_name end
def type
def type :page end