From: Michael Savage Date: Fri, 27 Dec 2019 16:47:47 +0000 (+0200) Subject: Add a script to extract examples from man pages X-Git-Url: https://git.codecow.com/?a=commitdiff_plain;h=97c2137716ac77bfa1f6a89c7eb003b3ab82f907;p=Monocypher.git Add a script to extract examples from man pages --- diff --git a/doc/man/man3/test_examples.lua b/doc/man/man3/test_examples.lua new file mode 100755 index 0000000..37a1c49 --- /dev/null +++ b/doc/man/man3/test_examples.lua @@ -0,0 +1,42 @@ +#! /usr/bin/env lua + +local lfs = require( "lfs" ) + +local all = { + "#include \"../../../src/monocypher.h\"", + "#include \"../../../src/optional/monocypher-ed25519.h\"", + "#include ", + "int main() {", +} + +local function AddExamples( man ) + for code in man:gmatch( "%.Bd[^\n]*\n(.-)%.Ed" ) do + table.insert( all, "{" ) + table.insert( all, code ) + table.insert( all, "}" ) + end +end + +local function AddDir( path ) + for file in lfs.dir( path ) do + local attr = lfs.symlinkattributes( path .. "/" .. file ) + if file:match( "%.3monocypher$" ) and attr.mode == "file" then + table.insert( all, "// " .. path .. "/" .. file ) + + local f = assert( io.open( path .. "/" .. file, "r" ) ) + local contents = assert( f:read( "*all" ) ) + f:close() + + AddExamples( contents ) + + table.insert( all, "" ) + end + end +end + +AddDir( "." ) +AddDir( "optional" ) + +table.insert( all, "}" ) + +print( table.concat( all, "\n" ) )