livetext 0.5.2 → 0.5.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/bin/livetext +20 -0
- data/lib/bookish.rb +212 -0
- data/lib/calibre.rb +24 -0
- data/lib/liveblog.rb +195 -0
- data/lib/livemagick.rb +131 -0
- data/lib/livetext.rb +605 -0
- data/lib/markdown.rb +30 -0
- data/lib/pyggish.rb +194 -0
- data/lib/tutorial.rb +89 -0
- data/livetext-0.5.2.gem +0 -0
- data/livetext.gemspec +99 -4
- data/test/cleanup +1 -0
- data/test/newtest +10 -0
- data/test/rawtext.inc +4 -0
- data/test/simple_mixin.rb +3 -0
- data/test/simplefile.inc +2 -0
- data/test/test.rb +77 -0
- data/test/testfiles/basic_formatting/expected-error.txt +0 -0
- data/test/testfiles/basic_formatting/expected-output.txt +10 -0
- data/test/testfiles/basic_formatting/source.ltx +8 -0
- data/test/testfiles/block_comment/expected-error.txt +0 -0
- data/test/testfiles/block_comment/expected-output.txt +5 -0
- data/test/testfiles/block_comment/source.ltx +19 -0
- data/test/testfiles/comments_ignored_1/expected-error.txt +0 -0
- data/test/testfiles/comments_ignored_1/expected-output.txt +4 -0
- data/test/testfiles/comments_ignored_1/source.ltx +7 -0
- data/test/testfiles/copy_is_raw/expected-error.txt +0 -0
- data/test/testfiles/copy_is_raw/expected-output.txt +7 -0
- data/test/testfiles/copy_is_raw/source.ltx +4 -0
- data/test/testfiles/def_method/expected-error.txt +2 -0
- data/test/testfiles/def_method/expected-output.txt +5 -0
- data/test/testfiles/def_method/source.ltx +10 -0
- data/test/testfiles/example_alpha/expected-error.txt +0 -0
- data/test/testfiles/example_alpha/expected-output.txt +23 -0
- data/test/testfiles/example_alpha/source.ltx +17 -0
- data/test/testfiles/example_alpha2/expected-error.txt +0 -0
- data/test/testfiles/example_alpha2/expected-output.txt +12 -0
- data/test/testfiles/example_alpha2/source.ltx +24 -0
- data/test/testfiles/fixit +6 -0
- data/test/testfiles/functions/expected-error.txt +0 -0
- data/test/testfiles/functions/expected-output.txt +8 -0
- data/test/testfiles/functions/source.ltx +11 -0
- data/test/testfiles/hello_world/expected-error.txt +0 -0
- data/test/testfiles/hello_world/expected-output.txt +2 -0
- data/test/testfiles/hello_world/source.ltx +2 -0
- data/test/testfiles/more_complex_vars/expected-error.txt +0 -0
- data/test/testfiles/more_complex_vars/expected-output.txt +4 -0
- data/test/testfiles/more_complex_vars/source.ltx +5 -0
- data/test/testfiles/raw_text_block/expected-error.txt +0 -0
- data/test/testfiles/raw_text_block/expected-output.txt +14 -0
- data/test/testfiles/raw_text_block/source.ltx +16 -0
- data/test/testfiles/sigil_can_change/expected-error.txt +0 -0
- data/test/testfiles/sigil_can_change/expected-output.txt +6 -0
- data/test/testfiles/sigil_can_change/source.ltx +11 -0
- data/test/testfiles/simple_copy/expected-error.txt +0 -0
- data/test/testfiles/simple_copy/expected-output.txt +7 -0
- data/test/testfiles/simple_copy/source.ltx +6 -0
- data/test/testfiles/simple_include/expected-error.txt +0 -0
- data/test/testfiles/simple_include/expected-output.txt +7 -0
- data/test/testfiles/simple_include/source.ltx +6 -0
- data/test/testfiles/simple_mixin/expected-error.txt +0 -0
- data/test/testfiles/simple_mixin/expected-output.txt +5 -0
- data/test/testfiles/simple_mixin/source.ltx +6 -0
- data/test/testfiles/simple_vars/expected-error.txt +0 -0
- data/test/testfiles/simple_vars/expected-output.txt +6 -0
- data/test/testfiles/simple_vars/source.ltx +7 -0
- data/test/testfiles/single_raw_line/expected-error.txt +0 -0
- data/test/testfiles/single_raw_line/expected-output.txt +10 -0
- data/test/testfiles/single_raw_line/source.ltx +8 -0
- metadata +76 -9
- data/dlt +0 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6e687858325843870a52b6326917c6fd29064dd8
|
4
|
+
data.tar.gz: ab6d2aedac807c98a661267f3143037f7404be69
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 00972e0a5a2256bbac5a88aad28dd0feb601c14907b8c8daac46bb7dbf162842b0447f65db2f755f52296f168d078aa9ee298ca867b9c0feacbe3832ed7941c2
|
7
|
+
data.tar.gz: a597ae81fa81400a6c15571de5fad559e4c748d7113d19899aa415909ad2ac87c748bfd92b1d6e23fba39f4e27515211447a9495fb097d02692ab489b741fc23
|
data/bin/livetext
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require_relative '../lib/livetext'
|
4
|
+
|
5
|
+
def handle_ltx(src)
|
6
|
+
abort "Unknown file extension" unless src =~ /.ltx$/
|
7
|
+
|
8
|
+
Livetext.handle_file(src)
|
9
|
+
end
|
10
|
+
|
11
|
+
# Main
|
12
|
+
|
13
|
+
if ARGV.first == "--clean-all"
|
14
|
+
clean_all
|
15
|
+
exit
|
16
|
+
end
|
17
|
+
|
18
|
+
src = ARGV.first
|
19
|
+
handle_ltx(src)
|
20
|
+
|
data/lib/bookish.rb
ADDED
@@ -0,0 +1,212 @@
|
|
1
|
+
# noinspection RubyQuotedStringsInspection
|
2
|
+
def hardbreaks
|
3
|
+
@hard = false
|
4
|
+
@hard = true unless @_args.first == "off"
|
5
|
+
end
|
6
|
+
|
7
|
+
def hardbreaks?
|
8
|
+
@hard
|
9
|
+
end
|
10
|
+
|
11
|
+
def credit
|
12
|
+
# really just a place marker in source
|
13
|
+
end
|
14
|
+
|
15
|
+
def list
|
16
|
+
_puts "<ul>"
|
17
|
+
_body {|line| _puts "<li>#{line}</li>" }
|
18
|
+
_puts "</ul>"
|
19
|
+
end
|
20
|
+
|
21
|
+
def list!
|
22
|
+
_puts "<ul>"
|
23
|
+
lines = _body.each # {|line| _puts "<li>#{line}</li>" }
|
24
|
+
loop do
|
25
|
+
line = lines.next
|
26
|
+
line = _formatting(line)
|
27
|
+
if line[0] == " "
|
28
|
+
_puts line
|
29
|
+
else
|
30
|
+
_puts "<li>#{line}</li>"
|
31
|
+
end
|
32
|
+
end
|
33
|
+
_puts "</ul>"
|
34
|
+
end
|
35
|
+
|
36
|
+
def alpha_columns
|
37
|
+
n = @_args.first.to_i # FIXME: what if missing?
|
38
|
+
words = []
|
39
|
+
_body do |line|
|
40
|
+
words << line.chomp
|
41
|
+
end
|
42
|
+
words.sort!
|
43
|
+
_puts "<table cellpadding=10>"
|
44
|
+
words.each_slice(n) do |w|
|
45
|
+
items = w.map {|x| "<tt>#{x}</tt>" }
|
46
|
+
_puts "<tr><td width=5%></td><td>" + items.join("</td><td>") + "</td></tr>"
|
47
|
+
end
|
48
|
+
_puts "</table>"
|
49
|
+
end
|
50
|
+
|
51
|
+
def comment
|
52
|
+
_body { } # ignore body
|
53
|
+
end
|
54
|
+
|
55
|
+
def _errout(*args)
|
56
|
+
::STDERR.puts *args
|
57
|
+
end
|
58
|
+
|
59
|
+
def _nbsp(n)
|
60
|
+
" "*n
|
61
|
+
end
|
62
|
+
|
63
|
+
def _slug(str)
|
64
|
+
s2 = str.chomp.strip.gsub(/[?:,()'"\/]/,"").gsub(/ /, "-").downcase
|
65
|
+
# _errout "SLUG: #{str} => #{s2}"
|
66
|
+
s2
|
67
|
+
end
|
68
|
+
|
69
|
+
def image
|
70
|
+
name = @_args[0]
|
71
|
+
_puts "<img src='#{name}'></img>"
|
72
|
+
end
|
73
|
+
|
74
|
+
def figure
|
75
|
+
name = @_args[0]
|
76
|
+
num = @_args[1]
|
77
|
+
title = @_args[2..-1].join(" ")
|
78
|
+
title = _formatting(title)
|
79
|
+
_puts "<img src='#{name}'></img>"
|
80
|
+
_puts "<center><b>Figure #{num}</b> #{title}</center>"
|
81
|
+
end
|
82
|
+
|
83
|
+
def chapter
|
84
|
+
# _errout("chapter")
|
85
|
+
@chapter = @_args.first.to_i
|
86
|
+
@sec = @sec2 = 0
|
87
|
+
title = @_data.split(" ",2)[1]
|
88
|
+
@toc << "<br><b>#@chapter</b> #{title}<br>"
|
89
|
+
_next_output(_slug(title))
|
90
|
+
_puts "<title>#{@chapter}. #{title}</title>"
|
91
|
+
_puts <<-HTML
|
92
|
+
<h2>Chapter #{@chapter}</h1>
|
93
|
+
<h1>#{title}</h1>
|
94
|
+
|
95
|
+
HTML
|
96
|
+
end
|
97
|
+
|
98
|
+
def chapterN
|
99
|
+
@chapter += 1
|
100
|
+
@sec = @sec2 = 0
|
101
|
+
title = @_data # .split(" ",2)[1]
|
102
|
+
_errout("Chapter #@chapter: #{title}")
|
103
|
+
@toc << "<br><b>#@chapter</b> #{title}<br>"
|
104
|
+
_next_output(_slug(title))
|
105
|
+
_puts "<title>#{@chapter}. #{title}</title>"
|
106
|
+
_puts <<-HTML
|
107
|
+
<h2>Chapter #{@chapter}</h1>
|
108
|
+
<h1>#{title}</h1>
|
109
|
+
|
110
|
+
HTML
|
111
|
+
end
|
112
|
+
|
113
|
+
def sec
|
114
|
+
@sec += 1
|
115
|
+
@sec2 = 0
|
116
|
+
@section = "#@chapter.#@sec"
|
117
|
+
# _errout("section #@section")
|
118
|
+
@toc << "#{_nbsp(3)}<b>#@section</b> #@_data<br>"
|
119
|
+
_next_output(_slug(@_data))
|
120
|
+
_puts "<h3>#@section #{@_data}</h3>\n"
|
121
|
+
end
|
122
|
+
|
123
|
+
def subsec
|
124
|
+
@sec2 += 1
|
125
|
+
@subsec = "#@chapter.#@sec.#@sec2"
|
126
|
+
@toc << "#{_nbsp(6)}<b>#@subsec</b> #@_data<br>"
|
127
|
+
# _errout("section #@subsec")
|
128
|
+
_next_output(_slug(@_data))
|
129
|
+
_puts "<h3>#@subsec #{@_data}</h3>\n"
|
130
|
+
end
|
131
|
+
|
132
|
+
def table
|
133
|
+
@table_num ||= 0
|
134
|
+
@table_num += 1
|
135
|
+
title = @_data
|
136
|
+
delim = " :: "
|
137
|
+
_puts "<br><center><table border=1 width=90% cellpadding=5>"
|
138
|
+
lines = _body
|
139
|
+
maxw = nil
|
140
|
+
lines.each do |line|
|
141
|
+
_formatting(line)
|
142
|
+
cells = line.split(delim)
|
143
|
+
wide = cells.map {|x| x.length }
|
144
|
+
maxw = [0] * cells.size
|
145
|
+
maxw = maxw.map.with_index {|x, i| [x, wide[i]].max }
|
146
|
+
end
|
147
|
+
|
148
|
+
sum = maxw.inject(0, :+)
|
149
|
+
maxw.map! {|x| (x/sum*100).floor }
|
150
|
+
|
151
|
+
lines.each do |line|
|
152
|
+
cells = line.split(delim)
|
153
|
+
_puts "<tr>"
|
154
|
+
cells.each.with_index {|cell, i| ; _puts " <td width=#{maxw}%>#{cell}</td>" }
|
155
|
+
_puts "</tr>"
|
156
|
+
end
|
157
|
+
_puts "</table>"
|
158
|
+
@toc << "#{_nbsp(8)}<b>Table #@chapter.#@table_num</b> #{title}<br>"
|
159
|
+
_next_output(_slug("table_#{title}"))
|
160
|
+
_puts "<b>Table #@chapter.#@table_num #{title}</b></center><br>"
|
161
|
+
end
|
162
|
+
|
163
|
+
def toc!
|
164
|
+
_debug "Closing TOC"
|
165
|
+
@toc.close
|
166
|
+
rescue => err
|
167
|
+
_errout "Exception: #{err.inspect}"
|
168
|
+
end
|
169
|
+
|
170
|
+
def toc2
|
171
|
+
file = @_args[0]
|
172
|
+
@toc.close
|
173
|
+
::File.write(file, <<-EOS)
|
174
|
+
<p style="page-break-after:always;"></p>
|
175
|
+
<meta charset='UTF-8'>
|
176
|
+
|
177
|
+
<center><h2>Fake (non-hyperlinked) Table of Contents</h2></center>
|
178
|
+
|
179
|
+
EOS
|
180
|
+
system("cat toc.tmp >>#{file}")
|
181
|
+
end
|
182
|
+
|
183
|
+
def missing
|
184
|
+
@toc << "#{_nbsp(8)}<font color=red>TBD: #@_data</font><br>"
|
185
|
+
_print "<br><font color=red><i>[Material missing"
|
186
|
+
_print ": #@_data" unless @_data.empty?
|
187
|
+
_puts "]</i></font><br>\n "
|
188
|
+
end
|
189
|
+
|
190
|
+
def TBC
|
191
|
+
@toc << "#{_nbsp(8)}<font color=red>To be continued...</font><br>"
|
192
|
+
_print "<br><font color=red><i>To be continued...</i></font><br>"
|
193
|
+
end
|
194
|
+
|
195
|
+
def note
|
196
|
+
_puts "<br><font color=red><i>Note: "
|
197
|
+
_puts @_data
|
198
|
+
_puts "</i></font><br>\n "
|
199
|
+
end
|
200
|
+
|
201
|
+
def quote
|
202
|
+
_puts "<blockquote>"
|
203
|
+
_puts _body
|
204
|
+
_puts "</blockquote>"
|
205
|
+
end
|
206
|
+
|
207
|
+
def init_bookish
|
208
|
+
@toc_file = "toc.tmp"
|
209
|
+
@toc = ::File.new(@toc_file, "w")
|
210
|
+
@chapter = -1
|
211
|
+
end
|
212
|
+
|
data/lib/calibre.rb
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
require 'fileutils'
|
2
|
+
|
3
|
+
def epub!
|
4
|
+
out = _var_substitution(@_args[0])
|
5
|
+
src = @_args[1]
|
6
|
+
@cover = @_args[2]
|
7
|
+
if ::File.directory?(src)
|
8
|
+
files = ::Dir["#{src}/*"].grep /\.html$/
|
9
|
+
cmd = "cat #{files.join(' ')} >TEMP.html"
|
10
|
+
system(cmd)
|
11
|
+
else
|
12
|
+
raise "Not supported yet"
|
13
|
+
end
|
14
|
+
|
15
|
+
cmd = "ebook-convert "
|
16
|
+
cmd << "TEMP.html #{out}.epub "
|
17
|
+
cmd << "--cover #@cover " if @cover
|
18
|
+
system(cmd)
|
19
|
+
|
20
|
+
str = `links -dump TEMP.html | wc -w`
|
21
|
+
nw = str.split[0]
|
22
|
+
puts "Approx words: #{nw}"
|
23
|
+
::FileUtils.rm("TEMP.html")
|
24
|
+
end
|
data/lib/liveblog.rb
ADDED
@@ -0,0 +1,195 @@
|
|
1
|
+
require 'ostruct'
|
2
|
+
require 'yaml'
|
3
|
+
|
4
|
+
def init_liveblog
|
5
|
+
@teaser = ""
|
6
|
+
@body = ""
|
7
|
+
@dest = @teaser
|
8
|
+
@meta = ::OpenStruct.new
|
9
|
+
# @views = ::Dir.entries("#{@config.root}/views") - %w[. ..]
|
10
|
+
@deployment = {}
|
11
|
+
# @views.each do |per|
|
12
|
+
# file = ""#{@config.root}views/#{per}/deploy"
|
13
|
+
# server, destdir = ::File.readlines(file).map {|x| x.chomp }
|
14
|
+
# @deployment[per] = [server, destdir]
|
15
|
+
# end
|
16
|
+
end
|
17
|
+
|
18
|
+
def _errout(*args)
|
19
|
+
::STDERR.puts *args
|
20
|
+
end
|
21
|
+
|
22
|
+
def _passthru(line)
|
23
|
+
OLD_formatting(line)
|
24
|
+
_var_substitution(line)
|
25
|
+
@dest << line
|
26
|
+
end
|
27
|
+
|
28
|
+
def title
|
29
|
+
@meta.title = _data
|
30
|
+
end
|
31
|
+
|
32
|
+
def pubdate
|
33
|
+
_debug "data = #@_data"
|
34
|
+
match = /(\d{4}).(\d{2}).(\d{2})/.match _data
|
35
|
+
junk, y, m, d = match.to_a
|
36
|
+
y, m, d = y.to_i, m.to_i, d.to_i
|
37
|
+
@meta.date = ::Date.new(y, m, d)
|
38
|
+
@meta.pubdate = "%04d%02d%02d" % [y, m, d]
|
39
|
+
end
|
40
|
+
|
41
|
+
def categories
|
42
|
+
_debug "args = #{_args}"
|
43
|
+
@meta.categories = _args
|
44
|
+
end
|
45
|
+
|
46
|
+
def views
|
47
|
+
_debug "data = #{_args}"
|
48
|
+
@meta.views = _args # + ["main"]
|
49
|
+
end
|
50
|
+
|
51
|
+
def readmore
|
52
|
+
@meta.teaser = @dest
|
53
|
+
@dest = @dest + @body
|
54
|
+
end
|
55
|
+
|
56
|
+
def liveblog_version
|
57
|
+
end
|
58
|
+
|
59
|
+
def _slug(str)
|
60
|
+
date = @meta.pubdate
|
61
|
+
s2 = date + "-" + str.chomp.strip.gsub(/[?:,\.()'"\/]/,"").gsub(/ /, "-").downcase
|
62
|
+
# _errout "SLUG: #{str} => #{s2}"
|
63
|
+
s2
|
64
|
+
end
|
65
|
+
|
66
|
+
def finalize
|
67
|
+
@meta.slug = _slug(@meta.title)
|
68
|
+
@meta.body = @dest
|
69
|
+
# @list = {} # FIXME Make hash by view
|
70
|
+
# @meta.views.each {|per| generate(per) }
|
71
|
+
# deploy
|
72
|
+
p @meta
|
73
|
+
@meta
|
74
|
+
end
|
75
|
+
|
76
|
+
#####
|
77
|
+
|
78
|
+
def generate(view)
|
79
|
+
dir = "views/#{view}"
|
80
|
+
_errout("dir = #{dir}")
|
81
|
+
out = "#{dir}/compiled/#{@meta.slug}.html"
|
82
|
+
@post_header = ::File.read("#{dir}/post_header.html")
|
83
|
+
@post_trailer = ::File.read("#{dir}/post_trailer.html")
|
84
|
+
@template = ::File.read("#{dir}/template.html")
|
85
|
+
|
86
|
+
title = @meta.title
|
87
|
+
title.gsub!("'",''')
|
88
|
+
title.gsub!('"','_')
|
89
|
+
teaser = @meta.teaser
|
90
|
+
server, dir = @deployment[view]
|
91
|
+
url = "http://#{server}/#{server}/#{@meta.slug}.html"
|
92
|
+
tweet = ""#{title}"\n"
|
93
|
+
tweet.gsub!("'",''')
|
94
|
+
|
95
|
+
text = eval("<<HEREDOC\n#@template\nHEREDOC")
|
96
|
+
_errout "Writing #{text.size} bytes to #{out}"
|
97
|
+
::File.write(out, text)
|
98
|
+
|
99
|
+
metaname = out.sub(/html/, "yaml")
|
100
|
+
_errout "Writing #{@meta.to_yaml.size} bytes to #{metaname}"
|
101
|
+
::File.write(metaname, @meta.to_yaml)
|
102
|
+
@list[view] ||= []
|
103
|
+
@list[view] << out << metaname
|
104
|
+
generate_index(view)
|
105
|
+
rescue => err
|
106
|
+
::STDERR.puts "#{err}\n#{err.backtrace.map {|x| " " + x }.join("\n") }"
|
107
|
+
end
|
108
|
+
|
109
|
+
def generate_index(view) # FIXME
|
110
|
+
dir = "views/#{view}"
|
111
|
+
cdir = "views/#{view}/compiled"
|
112
|
+
posts = ::Dir["#{cdir}/*.yaml"].sort {|a,b| b <=> a }
|
113
|
+
out = ::File.read("#{dir}/blogheader.html")
|
114
|
+
|
115
|
+
server, destdir = @deployment[view]
|
116
|
+
|
117
|
+
posts.each do |fname|
|
118
|
+
meta = ::YAML.load(::File.read(fname))
|
119
|
+
# name2 = fname.sub("compiled",) # FIXME
|
120
|
+
name2 = fname.sub("compiled",destdir)
|
121
|
+
html = name2.sub(/yaml/, "html")
|
122
|
+
out << <<-HTML
|
123
|
+
<br>
|
124
|
+
<font size=+1>#{meta["pubdate"]} </font>
|
125
|
+
<font size=+2 color=blue><a href=../#{html} style="text-decoration: none">#{meta["title"]}</font></a>
|
126
|
+
<br>
|
127
|
+
#{meta["teaser"]}
|
128
|
+
<a href=../#{html} style="text-decoration: none">Read more...</a>
|
129
|
+
<br><br>
|
130
|
+
<hr>
|
131
|
+
HTML
|
132
|
+
end
|
133
|
+
|
134
|
+
out << <<-HTML
|
135
|
+
</body>
|
136
|
+
</html>
|
137
|
+
HTML
|
138
|
+
::File.write("#{cdir}/index.html", out)
|
139
|
+
@list[view] << "#{cdir}/index.html"
|
140
|
+
_errout @list.inspect
|
141
|
+
end
|
142
|
+
|
143
|
+
def deploy # FIXME
|
144
|
+
if @list.empty?
|
145
|
+
puts "No changes to deploy."
|
146
|
+
return
|
147
|
+
end
|
148
|
+
puts "Want to deploy? (y/N):"
|
149
|
+
inp = ::File.open("/dev/tty")
|
150
|
+
resp = inp.gets.chomp
|
151
|
+
return unless resp == "y"
|
152
|
+
|
153
|
+
puts "Deploying:"
|
154
|
+
@list.each_pair do |per, files|
|
155
|
+
server, dir = @deployment[per]
|
156
|
+
cmd = "scp #{files.join(' ')} root@#{server}:#{dir}"
|
157
|
+
puts cmd
|
158
|
+
system cmd
|
159
|
+
end
|
160
|
+
end
|
161
|
+
|
162
|
+
def redeploy(per)
|
163
|
+
puts "Redeploying:"
|
164
|
+
server, dir = @deployment[per]
|
165
|
+
cmd = "scp #{files.join(' ')} root@#{server}:#{dir}"
|
166
|
+
puts cmd
|
167
|
+
# system cmd
|
168
|
+
end
|
169
|
+
|
170
|
+
################ Logic...
|
171
|
+
|
172
|
+
=begin
|
173
|
+
New post:
|
174
|
+
specify file name
|
175
|
+
output metadata (yaml), html
|
176
|
+
output task list??
|
177
|
+
How handle views?
|
178
|
+
Generate indices
|
179
|
+
Deploy
|
180
|
+
|
181
|
+
Handling views:
|
182
|
+
Each view has its own index
|
183
|
+
Separate boilerplate (header/trailer)
|
184
|
+
Separate deployments (separate host info)
|
185
|
+
'main' linked to default?
|
186
|
+
'test' view
|
187
|
+
generate is now dependent on view
|
188
|
+
|
189
|
+
Under view dir:
|
190
|
+
header/trailer
|
191
|
+
index
|
192
|
+
host info? (only for deploy)
|
193
|
+
separate compiled/ directory??
|
194
|
+
=end
|
195
|
+
|