def scheme_extend_parameterization(args): if len(args) == 0: raise SchemeException("extend-parameterization: expected 1 or more arguments") config = args[0] argc = len(args) if argc < 2 or not isinstance(config, values_parameter.W_Parameterization) or argc % 2 != 1: return config parser = ArgParser("extend-parameterization", args, start_at=1) while parser.has_more(): param = parser.parameter() key = parser.object() config = config.extend([param], [key]) return config
def make_logger(args): parser = ArgParser("make-logger", args) topic = values.w_false parent = values.w_false propagate_level = DEBUG try: topic = parser.expect(values.W_Symbol, values.w_false) parent = parser.expect(values.W_Logger, values.w_false) propagate_level = parser.expect(*LOG_LEVEL) except EndOfInput: pass # Any remaining arguments are propagate topics propagate_topic = parser.expect_many(values.W_Symbol, values.w_false) return values.W_Logger(topic, parent, propagate_level, propagate_topic)
def scheme_extend_parameterization(args): if len(args) == 0: raise SchemeException( "extend-parameterization: expected 1 or more arguments") config = args[0] argc = len(args) if argc < 2 or argc % 2 != 1: # or not isinstance(config, values_parameter.W_Parameterization): return config parser = ArgParser("extend-parameterization", args, start_at=1) while parser.has_more(): param = parser.expect(values_parameter.W_BaseParameter) key = parser.expect(values.W_Object) config = config.extend([param], [key]) return config
def call_with_continuation_prompt(args, env, cont): if not args: raise SchemeException( "call-with-continuation-prompt: not given enough values") parser = ArgParser("call-with-continuation-prompt", args) tag = values.w_default_continuation_prompt_tag handler = values.w_false fun = parser.expect(values.W_Object) try: tag = parser.expect(values.W_ContinuationPromptTag) handler = parser.expect(values.W_Object) except EndOfInput: pass args = parser.expect_many(values.W_Object) if not fun.iscallable(): raise SchemeException( "call-with-continuation-prompt: not given callable function") if handler is not values.w_false and not handler.iscallable(): raise SchemeException( "call-with-continuation-prompt: not given callable handler") if handler is values.w_false: handler = None cont = Prompt(tag, handler, env, cont) return fun.call(args, env, cont)
def make_logger(args): parser = ArgParser("make-logger", args) topic = values.w_false parent = values.w_false propagate_level = DEBUG # propagate everything try: topic = parser.expect(values.W_Symbol, values.w_false) parent = parser.expect(values.W_Logger, values.w_false) propagate_level = parser.expect(*LOG_LEVEL) except EndOfInput: pass # Any remaining arguments are propagate topics propagate_topic = parser.expect_many(values.W_Symbol, values.w_false) init_syslog_level = w_main_logger.get_syslog_level() init_stderr_level = w_main_logger.get_stderr_level() init_stdout_level = w_main_logger.get_stdout_level() return values.W_Logger(topic, parent, propagate_level, propagate_topic, init_syslog_level, init_stderr_level, init_stdout_level)
def call_with_continuation_prompt(args, env, cont): if not args: raise SchemeException("call-with-continuation-prompt: not given enough values") parser = ArgParser("call-with-continuation-prompt", args) tag = values.w_default_continuation_prompt_tag handler = values.w_false fun = parser.expect(values.W_Object) try: tag = parser.expect(values.W_ContinuationPromptTag) handler = parser.expect(values.W_Object) except EndOfInput: pass args = parser.expect_many(values.W_Object) if not fun.iscallable(): raise SchemeException("call-with-continuation-prompt: not given callable function") if handler is not values.w_false and not handler.iscallable(): raise SchemeException("call-with-continuation-prompt: not given callable handler") if handler is values.w_false: handler = None cont = Prompt(tag, handler, env, cont) return fun.call(args, env, cont)
def scheme_extend_parameterization(args, env, cont): from pycket.interpreter import return_value if len(args) == 0: raise SchemeException( "extend-parameterization: expected 1 or more arguments") config = args[0] argc = len(args) if argc < 2 or argc % 2 != 1: # or not isinstance(config, values_parameter.W_Parameterization): return return_value(config, env, cont) parser = ArgParser("extend-parameterization", args, start_at=1) params = [None] * ((argc - 1) / 2) keys = [None] * ((argc - 1) / 2) i = 0 while parser.has_more(): params[i] = parser.expect(values_parameter.W_BaseParameter) keys[i] = parser.expect(values.W_Object) i += 1 assert isinstance(config, values_parameter.W_Parameterization) return config.extend(params, keys, env, cont)
def scheme_extend_parameterization(args, env, cont): from pycket.interpreter import return_value if len(args) == 0: raise SchemeException("extend-parameterization: expected 1 or more arguments") config = args[0] argc = len(args) if argc < 2 or argc % 2 != 1: # or not isinstance(config, values_parameter.W_Parameterization): return return_value(config, env, cont) parser = ArgParser("extend-parameterization", args, start_at=1) params = [None]*((argc-1)/2) keys = [None]*((argc-1)/2) i = 0 while parser.has_more(): params[i] = parser.expect(values_parameter.W_BaseParameter) keys[i] = parser.expect(values.W_Object) i += 1 assert isinstance(config, values_parameter.W_Parameterization) return config.extend(params, keys, env, cont)
def log_message(args): # currently relying on this information about log-level? : # Use this function to avoid work generating an event for # log-message if no receiver is interested in the information; # this shortcut is built into log-fatal, log-error, log-warning, # log-info, log-debug, and forms bound by define-logger # The complete solution is to : # FIXME : implement log_receivers, create an event and distribute it parser = ArgParser("log-message", args) # logger : logger? logger = parser.expect(values.W_Logger) # level : log-level/c level = parser.expect(*LOG_LEVEL) # topic : (or/c symbol? #f) = (logger-name logger) try: topic = parser.expect(values.W_Symbol, values.w_false) except Exception, e: topic = logger.get_name()