From 529afd465fbbfbf923831d8a33fc3ce349dc703f Mon Sep 17 00:00:00 2001 From: Bruce Hill Date: Sun, 8 Oct 2017 15:06:05 -0700 Subject: Fixed permissions to work better with aliases. --- lib/metaprogramming.nom | 8 +++++--- lib/permissions.nom | 8 ++++++++ 2 files changed, 13 insertions(+), 3 deletions(-) (limited to 'lib') diff --git a/lib/metaprogramming.nom b/lib/metaprogramming.nom index 4924e78..a2cf4bf 100644 --- a/lib/metaprogramming.nom +++ b/lib/metaprogramming.nom @@ -80,12 +80,14 @@ compile [nomsu %method %args] to: "nomsu[\(%method as lua)](nomsu, unpack(\(%arg # Get the source code for a function rule [help %rule] =: lua block ".." - |local fn_def = nomsu:get_fn_def(vars.rule); + |local fn_def = nomsu.defs[nomsu:get_stub(vars.rule)] |if not fn_def then; | nomsu:writeln("Rule not found: "..nomsu:repr(vars.rule)); |else; - | nomsu:writeln("rule "..nomsu:repr(nomsu.utils.keys(fn_def.stub)) - | .." ="..(fn_def.src or ":\\n ")); + | local template = fn_def.is_macro and "compile %s to%s" or "rule %s =%s"; + | local src = fn_def.src or ":\\n "; + | if src:sub(1,1) ~= ":" and fn_def.is_macro then; template = "parse %s as: %s"; end; + | nomsu:writeln(template:format(nomsu:repr(fn_def.stub), src)); |end; # Compiler tools diff --git a/lib/permissions.nom b/lib/permissions.nom index 1f297d0..1725683 100644 --- a/lib/permissions.nom +++ b/lib/permissions.nom @@ -7,6 +7,14 @@ require "lib/collections.nom" rule [standardize rules %rules] =: if (lua expr "type(vars.rules) == 'string'"): %rules = [%rules] (nomsu "get_stub" [%]) for all %rules + %set = [] + for %rule in %rules: + %stub = (nomsu "get_stub" [%rule]) + %aliases = (((nomsu's "defs")->%stub)->"aliases") + for all %aliases: %set -> % = (yes) + keys in %set + + rule [restrict %rules to within %elite-rules] =: %rules = (standardize rules %rules) %elite-rules = (standardize rules %elite-rules) -- cgit v1.2.3