def action()

in src/composer/composer.py [0:0]


def action(name, options = {}):
    ''' action combinator '''
    if not isinstance(options, dict):
        raise ComposerError('Invalid argument "options" in "action" combinator', options)
    exc = None
    if 'sequence' in options and isinstance(options['sequence'], list): # native sequence
        exc = { 'kind': 'sequence', 'components': tuple(map(parse_action_name, options['sequence'])) }
    elif 'filename' in options and isinstance(options['filename'], str): # read action code from file
        raise ComposerError('read from file not implemented')
        # exc = fs.readFileSync(options.filename, { encoding: 'utf8' })

    elif 'action' in options and callable(options['action']):
        if options['action'].__name__ == '<lambda>':
            l = str(base64.b64encode(marshal.dumps(options['action'].__code__)), 'ASCII')
            exc = '''import types\nimport marshal\nimport base64