From 3ee4fed8f3ec79c49a9244bd2c58604c470971f5 Mon Sep 17 00:00:00 2001 From: mtardy Date: Wed, 12 Aug 2020 22:29:45 +0200 Subject: [PATCH] Fix isHidden and add map_allkeys --- object.c | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/object.c b/object.c index 56696c8..3741212 100644 --- a/object.c +++ b/object.c @@ -374,14 +374,11 @@ oop map_append(oop map, oop value) } bool isHidden(oop obj) { - if (!is(Symbol, obj)) { - return false; - } - char *s = get(obj, Symbol, name); - size_t l = strlen(s); - // maybe 'l > 5' because of ____? - if (l > 4 && s[0] == '_' && s[1] == '_' && s[l-2] == '_' && s[l-1] == '_') { - return true; + if (is(Symbol, obj)) { + char *s = get(obj, Symbol, name); + size_t l = strlen(s); + // maybe 'l > 5' because of ____? + return (l > 4 && s[0] == '_' && s[1] == '_' && s[l-2] == '_' && s[l-1] == '_'); } return false; } @@ -398,6 +395,16 @@ oop map_keys(oop map) return keys; } +oop map_allKeys(oop map) +{ + assert(is(Map, map)); + oop keys = makeMap(); + for (size_t i = 0; i < get(map, Map, size); i++) { + map_append(keys, get(map, Map, elements)[i].key); + } + return keys; +} + oop map_values(oop map) { assert(is(Map, map)); @@ -451,7 +458,7 @@ void print(oop ast) printf("%i", getInteger(ast)); return; case String: - printf("'%s'", get(ast, String, value)); + printf("%s", get(ast, String, value)); return; case Symbol: printf("%s", get(ast, Symbol, name));