diff options
Diffstat (limited to 'Data/Libraries/Penlight/examples/testglobal.lua')
-rw-r--r-- | Data/Libraries/Penlight/examples/testglobal.lua | 28 |
1 files changed, 28 insertions, 0 deletions
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)) + + |