From 97c2137716ac77bfa1f6a89c7eb003b3ab82f907 Mon Sep 17 00:00:00 2001 From: Michael Savage Date: Fri, 27 Dec 2019 18:47:47 +0200 Subject: [PATCH] Add a script to extract examples from man pages --- doc/man/man3/test_examples.lua | 42 ++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100755 doc/man/man3/test_examples.lua 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" ) ) -- 2.47.3