浏览代码

Fix isHidden and add map_allkeys

master
mtardy 4 年前
父节点
当前提交
3ee4fed8f3
共有 1 个文件被更改,包括 16 次插入9 次删除
  1. +16
    -9
      object.c

+ 16
- 9
object.c 查看文件

@ -374,14 +374,11 @@ oop map_append(oop map, oop value)
} }
bool isHidden(oop obj) { 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; return false;
} }
@ -398,6 +395,16 @@ oop map_keys(oop map)
return keys; 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) oop map_values(oop map)
{ {
assert(is(Map, map)); assert(is(Map, map));
@ -451,7 +458,7 @@ void print(oop ast)
printf("%i", getInteger(ast)); printf("%i", getInteger(ast));
return; return;
case String: case String:
printf("'%s'", get(ast, String, value));
printf("%s", get(ast, String, value));
return; return;
case Symbol: case Symbol:
printf("%s", get(ast, Symbol, name)); printf("%s", get(ast, Symbol, name));

正在加载...
取消
保存