on master help sign in
Canonicalize file + initial if/for planning
commita04f722eb1cd426f5285d7ab32e8670efd542446 authorsamgd <sam@samgd.com> dateSat 23 Jul 2016, 15:50 (10 years ago) parent9867094
2 files changed+87
hakyll.cabal+1 src/Hakyll/Web/Template/Canonicalize.hs+86
hakyll.cabal+1
@@ -117,6 +117,7 @@ Library
117117 Hakyll.Web.Paginate
118118 Hakyll.Web.Template
119119 Hakyll.Web.Template.Internal
120+ Hakyll.Web.Template.Canonicalize
120121 Hakyll.Web.Template.Context
121122 Hakyll.Web.Template.List
122123
src/Hakyll/Web/Template/Canonicalize.hsnew file+86
@@ -0,0 +1,86 @@
1+--------------------------------------------------------------------------------
2+-- | TODO
3+module Hakyll.Web.Template.Canonicalize
4+ ( canonicalize
5+ ) where
6+
7+
8+--------------------------------------------------------------------------------
9+import Hakyll.Web.Template.Internal
10+
11+
12+--------------------------------------------------------------------------------
13+--
14+-- Some initial implementation notes. Note: Not valid syntax etc.
15+--
16+--
17+-- Top level ONLY:
18+-- [TrimL, t, TrimR] = [t]
19+--
20+-- Dedupe:
21+--
22+-- List:
23+--
24+-- [t1, TrimR, TrimR, t2] = [t1, TrimR, t2]
25+--
26+-- [t1, TrimL, TrimL, t2] = [t1, TrimL, t2]
27+--
28+-- If:
29+--
30+-- [t1, TrimR, If ex [TrimR, t] e, t2] = [t1, If ex [TrimR, t] e, t2]
31+--
32+-- [t1, If ex t [e, TrimL], TrimL, t2] = [t1, If ex t [e, TrimL], t2]
33+--
34+-- [t1, If ex [t, TrimL] Nothing, TrimL, t2] = [t1, If ex [t, TrimL] Nothing, t2]
35+--
36+-- For:
37+--
38+-- [t1, TrimR, For e [TrimR, b] sep, t2] = [t1, For e [TrimR, b] sep, t2]
39+--
40+-- [t1, For e b [sep, TrimL], TrimL, t2] = [t1, For e b [sep, TrimL], t2]
41+--
42+-- [t1, For e [b, TrimL] Nothing, TrimL, t2] = [t1, For e [b, TrimL] Nothing, t2]
43+--
44+--
45+-- Sink:
46+--
47+-- If:
48+--
49+-- [t1, TrimR, If ex t e, t2] = [t1, If ex [TrimR, t] e, t2]
50+--
51+-- [t1, If ex t e, TrimL, t2] = if isJust e
52+-- then [t1, If ex t [e, TrimL], t2]
53+-- else [t1, If ex [t, TrimL] e, t2]
54+--
55+-- For:
56+--
57+-- [t1, TrimR, For e b sep, t2] = [t1, For e [TrimR, b] sep, t2]
58+--
59+-- [t1, For e b sep, TrimL, t2] = if isJust sep
60+-- then [t1, For e b [sep, TrimL], t2]
61+-- else [t1, For e [b, TrimL] sep, t2]
62+--
63+--
64+-- Shift/Lift:
65+--
66+-- If:
67+--
68+-- If ex [t1, TrimR] (Just e) = If ex t1 [TrimR, e]
69+--
70+-- If ex [t1, TrimR] Nothing = [If ex t1 Nothing, TrimR]
71+--
72+-- If ex t [TrimL, e] = If ex [t, TrimL] e
73+--
74+--
75+-- For:
76+--
77+-- For e [t1, TrimR] (Just sep) = For e t1 [TrimR, sep]
78+--
79+-- For e [t1, TrimR] Nothing = For e t1 [TrimR, sep]
80+--
81+-- For e b [TrimL, sep] = For e [b, TrimL] sep
82+--
83+--
84+--
85+canonicalize :: Template -> Template
86+canonicalize = undefined