def _infer_parameter_type(name): if name == 'context' or name == '__context': return yaqltypes.Context() elif name == 'engine' or name == '__engine': return yaqltypes.Engine() elif name == 'yaql_interface' or name == '__yaql_interface': return yaqltypes.YaqlInterface()
def _setup_context(data, context, finalizer, convention): if context is None: context = contexts.Context( convention=convention or conventions.CamelCaseConvention()) if finalizer is None: @specs.parameter('iterator', yaqltypes.Iterable()) @specs.name('#iter') def limit(iterator): return iterator @specs.inject('limiter', yaqltypes.Delegate('#iter')) @specs.inject('engine', yaqltypes.Engine()) @specs.name('#finalize') def finalize(obj, limiter, engine): if engine.options.get('yaql.convertOutputData', True): return utils.convert_output_data(obj, limiter, engine) return obj context.register_function(limit) context.register_function(finalize) else: context.register_function(finalizer) if data is not utils.NO_VALUE: context['$'] = utils.convert_input_data(data) return context
def _infer_parameter_type(name, class_name): if name == 'context': return yaqltypes.Context() if name == 'this': return dsl.ThisParameter() if name == 'interfaces': return dsl.InterfacesParameter() if name == 'yaql_engine': return yaqltypes.Engine() if name.startswith('__'): return _infer_parameter_type(name[2:], class_name) if class_name and name.startswith('_{0}__'.format(class_name)): return _infer_parameter_type(name[3 + len(class_name):], class_name)