@classmethod
    def app(cls, slug, asset):
        game = get_game_by_slug(slug)
        if not game:
            abort(404, 'Invalid game: %s' % slug)

        try:
            depth = int(request.params.get('depth', cls.default_depth))
            list_cull = int(request.params.get('list_cull', cls.default_list_cull))
            dict_cull = int(request.params.get('dict_cull', cls.default_dict_cull))
            expand = bool(request.params.get('expand', False))
            userdata = int(request.params.get('userdata', 0))
        except __HOLE__ as e:
            abort(404, 'Invalid parameter: %s' % str(e))

        depth = max(1, depth)
        list_cull = max(1, list_cull)
        dict_cull = max(1, dict_cull)

        node = request.params.get('node', None)
        if node:
            try:
                (json_asset, filename) = get_asset(asset, slug, userdata)

                link_prefix = '/disassemble/%s' % slug

                disassembler = Disassembler(Json2htmlRenderer(), list_cull, dict_cull, depth, link_prefix)
                response.status = 200
                Compactor.disable(request)
                return disassembler.mark_up_asset({'root': json_asset}, expand, node)
            except IOError as e:
                abort(404, str(e))
            except json.JSONDecodeError as e:
                _, ext = os.path.splitext(filename)
                if ext == '.json':
                    abort(404, 'Failed decoding JSON asset: %s\nError was: %s' % (asset, str(e)))
                else:
                    abort(404, 'Currently unable to disassemble this asset: %s' % asset)
        else:
            c.game = game
            local_context = { 'asset': asset,
                              'list_cull': list_cull,
                              'dict_cull': dict_cull,
                              'depth': depth,
                              'userdata': userdata }
            return render('/disassembler/disassembler.html', local_context)
dataset/ETHPy150Open turbulenz/turbulenz_local/turbulenz_local/controllers/disassembler.py/DisassemblerController.app