Changelog for doctemplates-0.8.1
doctemplates
0.8.1
- Depend on doclayout 0.3, which adds an additional method on the HasChars class. This fixes some stack overflows in rendering very long lines.
0.8
- Change
Filter
data type toPipe
. Use the nomenclature of "pipe" instead of "filter" to avoid confusion in pandoc between two notions of filter. Otherwise everything works the same.
0.7.2
-
Add
nowrap
filter. -
Improve
alpha
,roman
,uppercase
,lowercase
filters so they apply recursively within a list or map. -
Allow
for
loops to bind map value. In this case there is no iteration, but the anophoric variable 'it' is assigned, which may help in using filters that destructure a string into a map (if we add any).
0.7.1
-
Add
chomp
filter. -
Allow filters to be applied to output of partials.
0.7
-
Add haddock Makefile target, which regenerates haddocks from README and tests the code example.
-
Remove
BreakingSpace
constructor onTemplate
. Now we use doclayoutBreakingSpace
inside aLiteral
. -
Add instance for
ToContext a (Doc a)
. -
Get benchmarks compiling again.
-
Use (doclayout)
Doc
internally and for rendered output.TemplateTarget
is now a type constraint synonym, not a regular typeclass.- Constraint on
compileTemplate
andapplyTemplate
simplified using TemplateTarget. - DocTemplates reexports Text.DocLayout.Doc.
- The
Literal
costructor ofTemplate
now takes aDoc a
rather than ana
. - The
SimpleVal
constructor ofVal
now takes aDoc a
rather than ana
. renderTemplate
now returns aDoc a
rather than ana
. (This value can be converted to an a usingrender Nothing
.)
-
Remove fromText from
TemplateTarget
. Now we usefromString
from Data.String. -
Parameterize
Template
on underlying stringlike type. -
Improved behavior of partials.
-
Improve indent functions: don't drop final newline.
-
Allow blank lines in nested section.
-
Indent for Text/String: don't indent empty lines.
-
Additional tests and documentation about nesting.
-
Render items in for loop before separator. Otherwise we throw off column calculation.
-
Remove
+-reflow
; replace with toggle$~$
. -
Remove pNewline parser; it isn't needed now.
-
Remove
+-nest
. -
Fix nest parsing bug.
-
Improve nesting.
- Change
Nested
constructor forTemplate
so it doesn't take a parameter. - Nesting level is now determined dynamically at render time rather than at compile time. This gives much better results when nesting occurs after template directives. Benchmarks show a slight penalty in performance (from 3.5ms to 3.1ms in rendering), but it's not too much.
- Change
-
Add filters. Filters transform the value of a variable, e.g. changing a map into an array of key/value pairs. Closes #5.
- Internal: Add
Filter
type and[Filter]
parameter onVariable
. - Remove
unVariable
; now we havevarParts
andvarFilters
. - Document filters in README.md.
- Implement filters.
- Add tests.
- Internal: Add
-
Add
ToYAML
,FromYAML
instances forContext
,Val
.
0.6.2
-
Remove unnecessary
TemplateTarget
constraints onToContext
instances. -
Add
ToContext
instance forMap Text a
. -
Add
Data
,Typeable
instances forContext
andVal
.
0.6.1
- Indent bare partials.
0.6
-
Add
+nest
/-nest
keywords. -
Add
+reflow
/-reflow
keywords. -
Add Nested constructor to Template, remove Indented and Indented parameter for Interpolate.
-
More expansive description of library.
0.5.1
-
Add elseif keyword.
-
Improve compile error source locations with partials.
-
Handle templates that don't end in newlines. Previously this caused problems in some cases.
0.5
-
Add toText method to TemplateTarget class.
-
Add String and Lazy Text instances for TemplateTarget.
-
Swap Parameters in ToContext (so that the first parameter for both ToContext and FromContext refers to the parameter of Context).
-
Add toVal method to ToContext.
-
Default instance definition for toContext in terms of toVal, so that defining toVal is sufficient.
-
Add instances for ToContext and FromContext.
-
Remove valueToContext. Add ToJSON, FromJSON instances for Context and Val instead.
-
isEmpty: For Doc, treat
Text 0 _
as empty. AlsoConcat x y
when x and y are empty. This differs from isEmpty in DocLayout itself, which only applies to Empty. -
Code cleanup.
0.4
-
Split into three modules. Main module only exports an opaque version of the Template type. Import Internal if you need to manipulate a Template.
-
Add Context type, parameterized on the underlying content's type.
-
Add Val type.
-
Add valueToContext for converting an Aeson Value to a Context.
-
Make renderTemplate and applyTemplate polymorphic in both context and target. Context parameter is now any instance of ToContext (instead of ToJSON). Result is now any instance of TemplateTarget.
-
Change type of getPartial in TemplateMonad so it runs in the TemplateMonad instance, not the Parser. Return a simple value rather than an Either; error handling can vary with the monad.
-
Remove TemplatePart. Template is now an algebraci data type, not a list of TemplateParts.
-
Add an Indented type to indicate indentation for interpolated variables.
-
Improve architecture, doing more at compile time.
-
Depend on doclayout. Context can be parameterized on a doclayout Doc type, allowing intelligent reflowing of content.
-
Remove single final newline in interpolated variable.
-
Remove final newline from partial.
-
Don't iterate when the variable evaluates to NullVal.
-
Only indented interpolated variables if by themselves on line.
-
Add Indented parameter to Interpolate constructor.
-
Update documentation and haddocks.
-
Add benchmark.
0.3.0.1
-
Bump lower bound on base to 4.9, drop support for ghc 7.10.
-
Add needed import for older base versions.
-
Add test.hs to repository.
0.3
-
Note that all of the changes to template syntax described below are backwards compatible, and all old pandoc templates should continue to work as before.
-
Allow
${...}
style delimiters around variables and directives, in addition to$...$
. Allow space around the delimiters. -
Support
$it$
as a variable for the current value in an iteration. (The old method, where the containing variable name is used, still works.) -
Support partials (subtemplates defined in different files).
-
Interpolated array variables now have all elements rendered, concatenated, with an optional separator that can be specified using a new bracketed syntax.
-
Remove
TemplateTarget
class. It was pointless; the calling program can just do these trivial transformations. Avoids dependencies on bytestring, blaze-html, blaze-markup. -
Change type of
renderTemplate
andapplyTemplate
to produce aText
, instead of being polymorphic. -
Changed type of
compileTemplate
: it now takes a template path and the template contents, and returns either a template or an error. It runs in an instance ofTemplateMonad
, which is an abstraction around different ways of getting partials. (For example, in IO we can get partials by reading them from a file system, but in a web application one might want to obtain them from the database or have a set of them baked in.) -
Remove
varListToJSON
. -
Changed the architecture:
Template
is no longer just a newtype around a function, but a list ofTemplatePart
s. -
Added a newtype for
Variable
. -
Improved documentation in README.md.
-
Added a new test framework and much more extensive tests.