Sha256: 73096e169d022484be95b434dd44ace0e1a96c6c19112165145679d08736c996
Contents?: true
Size: 1.39 KB
Versions: 1
Compression:
Stored size: 1.39 KB
Contents
# frozen_string_literal: true require 'json' # require 'uri' module Cosensee # To search for pages class PageStore def initialize(project:) @project = project @pages = project.pages @pages_by_title = nil @linking_pages = nil @linked_pages = nil end def pages_by_title @pages_by_title ||= create_title_index(@pages) end def linking_pages setup_link_indexes unless @linking_pages @linking_pages end def linked_pages setup_link_indexes unless @linked_pages @linked_pages end def title_exist?(title) !!pages_by_title[title] end def orphan_page_titles linked_pages.keys.reject { |title| title_exist?(title) } end def create_title_index(pages) pages.each_with_object({}) do |page, hash| hash[page.title] = page end end def find_link_pages_by_title(title) pages = linking_pages[title] + linked_pages[title] pages.sort_by(&:updated) end def setup_link_indexes @linking_pages = Hash.new { |h, k| h[k] = [] } @linked_pages = Hash.new { |h, k| h[k] = [] } @project.pages.each do |page| page.linking_page_titles.each do |linking_title| @linking_pages[page.title] << pages_by_title[linking_title] if pages_by_title[linking_title] @linked_pages[linking_title] << page end end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
cosensee-0.6.0 | lib/cosensee/page_store.rb |