From 42ec7286b2d36a9ba22925f816a17cb1cc2aa5ce Mon Sep 17 00:00:00 2001 From: chai Date: Sat, 30 Oct 2021 11:32:16 +0800 Subject: + Penlight --- Data/Libraries/Penlight/examples/testglobal.lua | 28 +++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 Data/Libraries/Penlight/examples/testglobal.lua (limited to 'Data/Libraries/Penlight/examples/testglobal.lua') diff --git a/Data/Libraries/Penlight/examples/testglobal.lua b/Data/Libraries/Penlight/examples/testglobal.lua new file mode 100644 index 0000000..0baaaef --- /dev/null +++ b/Data/Libraries/Penlight/examples/testglobal.lua @@ -0,0 +1,28 @@ +-- very simple lexer program which looks at all identifiers in a Lua +-- file and checks whether they're in the global namespace. +-- At the end, we dump out the result of count_map, which will give us +-- unique identifiers with their usage count. +-- (an example of a program which itself needs to be careful about what +-- goes into the global namespace) + +local utils = require 'pl.utils' +local file = require 'pl.file' +local lexer = require 'pl.lexer' +local List = require 'pl.List' +local pretty = require 'pl.pretty' +local seq = require 'pl.seq' +local path = require 'pl.path' + +utils.on_error 'quit' + +local txt = file.read(arg[1] or path.normpath('examples/testglobal.lua')) +local globals = List() +for t,v in lexer.lua(txt) do + if t == 'iden' and rawget(_G,v) then + globals:append(v) + end +end + +pretty.dump(seq.count_map(globals)) + + -- cgit v1.1-26-g67d0