summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorLuke Shumaker <lukeshu@sbcglobal.net>2017-01-07 00:14:22 -0500
committerLuke Shumaker <lukeshu@sbcglobal.net>2017-01-07 00:14:22 -0500
commit3d989e2caf683d8300ae4e8191b81fd6fe0c0948 (patch)
tree3201b014adf279de37f64ac222e551c1781eadcd /lib
parentbae3d88f0d4ab3481cdbd47ae5ddd65ff5f91e0c (diff)
more
Diffstat (limited to 'lib')
-rw-r--r--lib/page_index.rb3
-rw-r--r--lib/page_local.rb3
-rw-r--r--lib/sitegen.rb27
3 files changed, 32 insertions, 1 deletions
diff --git a/lib/page_index.rb b/lib/page_index.rb
index 6354c8a..178525c 100644
--- a/lib/page_index.rb
+++ b/lib/page_index.rb
@@ -72,8 +72,9 @@ class IndexPage < LocalPage
if File::exist?(yamlfile)
deps.add(yamlfile)
end
- index_pages.each{|p|deps.merge(p.local_outfile[''])}
+ index_pages.select{|p|!p.is_a?(RemotePage)}.each{|p|deps.merge(p.local_depends[''])}
@depends = {
+ '' => deps,
"#{basename}/index.html" => deps.clone.merge(["tmpl/index.md.erb", "tmpl/page.html.erb"]),
"#{basename}/index.atom" => deps.clone.merge(["tmpl/index.atom.erb", "tmpl/page.atom.erb"]),
}
diff --git a/lib/page_local.rb b/lib/page_local.rb
index 5b2af3b..ad4e970 100644
--- a/lib/page_local.rb
+++ b/lib/page_local.rb
@@ -8,10 +8,12 @@ require 'license'
require 'page'
require 'pandoc'
require 'person'
+require 'sitegen'
class LocalPage < Page
def initialize(infile)
@infile = infile
+ Sitegen::add(self)
end
# Some of this code looks a little weird because it is
@@ -103,6 +105,7 @@ class LocalPage < Page
if @depends.nil?
basename = local_infile.sub(/^src/, 'out').sub(/\.[^\/.]*$/, '')
@depends = {
+ '' => Set[local_infile],
"#{basename}.html" => Set[local_infile, "tmpl/page.html.erb"],
#"#{basename}.atom" => Set[local_infile, "tmpl/page.atom.erb"]
}
diff --git a/lib/sitegen.rb b/lib/sitegen.rb
index e69de29..f565d20 100644
--- a/lib/sitegen.rb
+++ b/lib/sitegen.rb
@@ -0,0 +1,27 @@
+# coding: utf-8
+require 'set'
+
+module Sitegen
+ def self.init
+ @set = Set[]
+ @mk = {}
+ end
+ def self.add(page)
+ @set.add(page)
+ end
+ def self.pages
+ @set
+ end
+ def self.want(filename)
+ page = pages.select{|page|page.local_depends.keys.include?(filename)}.first
+ @mk[filename] = page
+ end
+ def self.Makefile()
+ str = ''
+ str += "all: #{@mk.keys.sort.join(' ')}\n"
+ @mk.each do |filename, page|
+ str += "#{filename}: #{page.local_depends[filename].sort.join(' ')}\n"
+ end
+ return str
+ end
+end