From 7edb003cd1c9b53ffdff11ef85532e39f08db16d Mon Sep 17 00:00:00 2001 From: Luke Shumaker Date: Fri, 6 Jan 2017 19:50:45 -0500 Subject: wip --- lib/page_index.rb | 63 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 lib/page_index.rb (limited to 'lib/page_index.rb') diff --git a/lib/page_index.rb b/lib/page_index.rb new file mode 100644 index 0000000..073537e --- /dev/null +++ b/lib/page_index.rb @@ -0,0 +1,63 @@ +# coding: utf-8 +require 'erb' +require 'set' +require 'yaml' + +require 'page_local' +require 'page_remote' +require 'config' + +class IndexPage < LocalPage + def initialize(dirname) + super(dirname) + end + + def _metadata + if @metadata.nil? + yamlfile = _infile+"/index.yaml" + if File::exist?(yamlfile) + @metadata = YAML::load(File::read(yamlfile)) + else + @metadata = {} + end + end + @metadata + end + def _ls + @ls ||= Dir::entries(_infile) + .select{|fname|not fname.start_with?(".")} + .map{|fname|"#{_infile}/#{fname}"} + .select{|path|Dir::exist?(path) or Config::get.html_suffixes.include?(File::extname(path).gsub(/^[.]/, ''))} + end + def pages + if @pages.nil? + @pages = [] + for path in _ls + if Dir::exist?(path) + page = IndexPage::new(path) + @pages.unshift(page) + @pages += page.pages + else + @pages.unshift(LocalPage::new(path)) + end + end + for data in _metadata['external'] + @pages.unshift(RemotePage::new(data)) + end + end + @pages + end + + def _published + return nil + end + def _updated + return nil + end + def _years + return Set[] + end +end + +ERB::new(File::read("tmpl/index.atom.erb")).def_method(IndexPage, 'atom()', "tmpl/index.atom.erb") +ERB::new(File::read("tmpl/index.md.erb")).def_method(IndexPage, '_input()', "tmpl/index.md.erb") -- cgit v1.2.3