diff options
Diffstat (limited to 'Master/texmf-dist/tex/luatex/markdown/markdown.lua')
-rw-r--r-- | Master/texmf-dist/tex/luatex/markdown/markdown.lua | 46 |
1 files changed, 34 insertions, 12 deletions
diff --git a/Master/texmf-dist/tex/luatex/markdown/markdown.lua b/Master/texmf-dist/tex/luatex/markdown/markdown.lua index eb68cc175d5..4241d6cc3b9 100644 --- a/Master/texmf-dist/tex/luatex/markdown/markdown.lua +++ b/Master/texmf-dist/tex/luatex/markdown/markdown.lua @@ -58,7 +58,7 @@ -- those in the standard .ins files. -- local metadata = { - version = "2.11.0-0-g4505824", + version = "2.12.0-1-g976f074", comment = "A module for the conversion from markdown to plain TeX", author = "John MacFarlane, Hans Hagen, Vít Novotný", copyright = {"2009-2016 John MacFarlane, Hans Hagen", @@ -88,10 +88,12 @@ defaultOptions.codeSpans = true defaultOptions.contentBlocks = false defaultOptions.contentBlocksLanguageMap = "markdown-languages.json" defaultOptions.definitionLists = false +defaultOptions.eagerCache = true defaultOptions.fencedCode = false defaultOptions.finalizeCache = false defaultOptions.footnotes = false defaultOptions.frozenCacheCounter = 0 +defaultOptions.hardLineBreaks = false defaultOptions.hashEnumerators = false defaultOptions.headerAttributes = false defaultOptions.html = false @@ -2335,7 +2337,7 @@ function M.writer.new(options) return s end function self.pack(name) - return [[\input ]] .. name .. [[\relax{}]] + return [[\input ]] .. name .. [[\relax]] end function self.interblocksep() if not self.is_writing then return "" end @@ -3762,15 +3764,22 @@ larsers.PipeTable = Ct(larsers.table_row * parsers.newline + larsers.bqstart + larsers.headerstart + larsers.fencestart - ) * parsers.spacechar^0 / writer.space + ) * parsers.spacechar^0 + / (options.hardLineBreaks and writer.linebreak + or writer.space) larsers.OptionalIndent = parsers.spacechar^1 / writer.space larsers.Space = parsers.spacechar^2 * larsers.Endline / writer.linebreak + parsers.spacechar^1 * larsers.Endline^-1 * parsers.eof / "" - + parsers.spacechar^1 * larsers.Endline^-1 - * parsers.optionalspace / writer.space + + parsers.spacechar^1 * larsers.Endline + * parsers.optionalspace + / (options.hardLineBreaks + and writer.linebreak + or writer.space) + + parsers.spacechar^1 * parsers.optionalspace + / writer.space larsers.NonbreakingEndline = parsers.newline * -( -- newline, but not before... @@ -3780,13 +3789,20 @@ larsers.PipeTable = Ct(larsers.table_row * parsers.newline + larsers.bqstart + larsers.headerstart + larsers.fencestart - ) * parsers.spacechar^0 / writer.nbsp + ) * parsers.spacechar^0 + / (options.hardLineBreaks and writer.linebreak + or writer.nbsp) larsers.NonbreakingSpace = parsers.spacechar^2 * larsers.Endline / writer.linebreak + parsers.spacechar^1 * larsers.Endline^-1 * parsers.eof / "" - + parsers.spacechar^1 * larsers.Endline^-1 - * parsers.optionalspace / writer.nbsp + + parsers.spacechar^1 * larsers.Endline + * parsers.optionalspace + / (options.hardLineBreaks + and writer.linebreak + or writer.nbsp) + + parsers.spacechar^1 * parsers.optionalspace + / writer.nbsp if options.underscores then larsers.Strong = ( parsers.between(parsers.Inline, parsers.doubleasterisks, @@ -4299,10 +4315,16 @@ larsers.PipeTable = Ct(larsers.table_row * parsers.newline end table.sort(opt_string) local salt = table.concat(opt_string, ",") .. "," .. metadata.version - local name = util.cache(options.cacheDir, input, salt, function(input) - return util.rope_to_string(parse_blocks_toplevel(input)) .. writer.eof - end, ".md" .. writer.suffix) - local output = writer.pack(name) + local output + local function convert(input) + return util.rope_to_string(parse_blocks_toplevel(input)) .. writer.eof + end + if options.eagerCache or options.finalizeCache then + local name = util.cache(options.cacheDir, input, salt, convert, ".md" .. writer.suffix) + output = writer.pack(name) + else + output = convert(input) + end if options.finalizeCache then local file, mode if options.frozenCacheCounter > 0 then |