Skip to content

Commit

Permalink
added for supports in vkscript
Browse files Browse the repository at this point in the history
  • Loading branch information
kesha1225 committed Apr 6, 2020
1 parent f276378 commit 4d6d80d
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 8 deletions.
16 changes: 8 additions & 8 deletions examples/bots/vkscript_example.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,10 @@ def get_subs_names(api: APIOptionsRequestContext, group_id: int):
subscribers = api.groups.getMembers(group_id=group_id)
subscribers = subscribers.items

while subscribers:
subscriber_id = subscribers.pop()
subscriber_data = api.users.get(user_ids=subscriber_id)
for sub_id in subscribers:
subscriber_data = api.users.get(user_ids=sub_id)
subs_names.append(subscriber_data[0].first_name)

return subs_names


Expand All @@ -34,12 +34,12 @@ async def simple(event: bot.BaseEvent):
print(get_subs_names.build(api=event.api_ctx, group_id=check_group))
"""
var subs_names=[];
var subscribers=API.groups.getMembers({group_id:191949777});
var subscribers=API.groups.getMembers({group_id:1});
var subscribers=subscribers.items;
while(subscribers){
var subscriber_id=subscribers.pop();
var subscriber_data=API.users.get({user_ids:subscriber_id});
subs_names.push(subscriber_data[0].first_name);
while(subscribers.length > 0){
var sub_id=subscribers.pop();
var subscriber_data=API.users.get({user_ids:sub_id});
subs_names.push(subscriber_data[0].first_name);
};
return subs_names;
"""
Expand Down
14 changes: 14 additions & 0 deletions vkwave/bots/vkscript/handlers/blocks.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

WHILE_TEMPLATE = "while(%(test)s){%(body)s};"
IF_TEMPLATE = "if(%(test)s){%(content)s}%(other)s;"
FOR_TEMPLATE = "while(%(iter)s.length > 0){var %(target)s=%(iter)s.pop();%(body)s};"


@VKScriptConverter.register(ast.While)
Expand All @@ -16,6 +17,19 @@ def while_handler(node: ast.While):
return WHILE_TEMPLATE % {"test": test, "body": body}


@VKScriptConverter.register(ast.For)
def for_handler(node: ast.For):
converter = VKScriptConverter.get_current()
if node.orelse:
raise NotImplementedError("for...else not implemented.")

converter.scope.locals.append(node.target.id)
target = converter.convert_node(node.target)
_iter = converter.convert_node(node.iter)
body = converter.convert_block(node.body)
return FOR_TEMPLATE % {"target": target, "iter": _iter, "body": body}


@VKScriptConverter.register(ast.If)
def if_handler(node: ast.If):
converter = VKScriptConverter.get_current()
Expand Down

0 comments on commit 4d6d80d

Please sign in to comment.