def _process_external_key()

in src/externals.py [0:0]


def _process_external_key(build_mode, data) -> list:
    """
    :param build_mode: current build mode
    :param data: the element from the _nav.yml to process
    :return: the _list_ of items to replace the data item with
    """
    if not isinstance(data, dict):
        return [data]

    if 'external' not in data:
        return [data]

    mount = ExternalMount(build_mode, data['external'])
    del data['external']

    if not _rant_if_external_nav_is_not_found(mount):
        # TODO: side effect
        data['content'] = [{'url': '/', 'title': 'external "%s" is it included' % mount.external_path}]
        return [data]

    with open(mount.nav_file) as stream:
        external_yml = yaml.load(stream)
        assert isinstance(external_yml, list)

    url_mappers = _build_url_mappers(external_yml, mount)
    contents = [
        entry
        for item in external_yml
        for entry in _process_external_entry(mount, url_mappers, item)
    ]

    if mount.inline:
        return contents
    else:
        # TODO: side effect
        data['content'] = contents
        return [data]