def to_table(obj):
    if type(obj) in [tuple, list]:
        return list_to_table(list(to_table(e) for e in obj))
    if type(obj) is dict:
        return dict_to_table(as_attrgetter(
            dict((k, to_table(v)) for k, v in obj.items())))
    return obj
def to_table(obj):
    if type(obj) in [tuple, list]:
        return list_to_table(list(to_table(e) for e in obj))
    if type(obj) is dict:
        return dict_to_table(
            as_attrgetter(dict((k, to_table(v)) for k, v in obj.items())))
    return obj
Exemple #3
0
 def query(cls, queries, doc, **kwargs):
     result = []
     for query in queries:
         lua = LuaRuntime(unpack_returned_tuples=False)
         handle_func = lua.eval(query)
         ret = handle_func(lupa.as_attrgetter(doc), kwargs)
         result.extend(ret)
     return result
Exemple #4
0
def make_table(dict):
    return lua.eval("""
function(d)
    local t = {}
    for key, value in python.iterex(d.items()) do
        t[key] = value
    end
    return t
end
""")(lupa.as_attrgetter(dict))
def make_table(dict):
    return lua.eval("""
function(d)
    local t = {}
    for key, value in python.iterex(d.items()) do
        t[key] = value
    end
    return t
end
""")(lupa.as_attrgetter(dict))
Exemple #6
0
 def test_python_iter_dict_items(self):
     values = self.lua.eval('''
         function(d)
             local t = {}
             for key, value in python.iterex(d.items()) do
                 t[key] = value
             end
             return t
         end
     ''')
     table = values(lupa.as_attrgetter(dict(a=1, b=2, c=3)))
     self.assertEqual(1, table['a'])
     self.assertEqual(2, table['b'])
     self.assertEqual(3, table['c'])
Exemple #7
0
 def test_python_iter_dict_items(self):
     values = self.lua.eval('''
         function(d)
             local t = {}
             for key, value in python.iterex(d.items()) do
                 t[key] = value
             end
             return t
         end
     ''')
     table = values(lupa.as_attrgetter(dict(a=1, b=2, c=3)))
     self.assertEqual(1, table['a'])
     self.assertEqual(2, table['b'])
     self.assertEqual(3, table['c'])
Exemple #8
0
 def act(self):
     env_factory = namedtuple('Env', [
         method_name for method_name in dir(self.env)
         if callable(getattr(self.env, method_name))
         and not method_name.startswith("_")
     ])
     env = env_factory(
         **{
             method_name: getattr(self.env, method_name)
             for method_name in dir(self.env)
             if callable(getattr(self.env, method_name))
             and not method_name.startswith("_")
         })
     ret_val = sandbox.lua_run(lupa.as_attrgetter(env), self.script)
     try:
         if len(ret_val) > 2:
             self.actions[ret_val[1]](int(ret_val[2]))
         else:
             self.actions[ret_val[1]]()
         self.player.have_acted = True
     except (TypeError, KeyError) as e:
         print(ret_val)
         print(traceback.print_exc())
         self.player.fold()
Exemple #9
0
        _G[k] = v
    end
    {0}
end
""".format(source))
    except Exception, e:
        raise e
        #return "Bad source", 400

    globals = _export_globals()
    globals['request'] = adapt_request(request)
    globals['require'] = lua.eval("""
function(name) 
    return loadstring(http.load(name))()
end""")
    return adapt_response(app(lupa.as_attrgetter(globals)))


def adapt_request(request):
    """ builds a request object for lua from a flask request """
    def _default_table(input, filter=None):
        """ converts mapping to lua table """
        table = {}
        for k, v in input.items():
            if filter is None:
                table[k] = v
            else:
                table[k] = filter(v)
        return make_table(table)

    def _file_adaptor(file):
    end
    {0}
end
""".format(source))
    except Exception, e:
        raise e
        #return "Bad source", 400
    
    globals = _export_globals()
    globals['request'] = adapt_request(request)
    globals['require'] = lua.eval("""
function(name) 
    return loadstring(http.load(name))()
end""")
    return adapt_response(
        app(lupa.as_attrgetter(globals)))

def adapt_request(request):
    """ builds a request object for lua from a flask request """
    def _default_table(input, filter=None):
        """ converts mapping to lua table """
        table = {}
        for k,v in input.items():
            if filter is None:
                table[k] = v
            else:
                table[k] = filter(v)
        return make_table(table)
    def _file_adaptor(file):
        return make_table(dict(
            type=file.content_type,