def replace_git_url(generator):
    """Replace gist tags in the article content."""
    template = g_jinja2.get_template(GIT_TEMPLATE)

    should_cache = generator.context.get('GIT_CACHE_ENABLED')
    cache_location = generator.context.get('GIT_CACHE_LOCATION')

    for article in generator.articles:
        for match in git_regex.findall(article._content):
            params = collections.defaultdict(str)
            repo = match[1]
            filename = match[3]
            branch = match[5]
            hash = match[7]

            params['repo'] = match[1]
            params['filename'] = match[3]
            if match[5]:
                params['branch'] = match[5]
            if match[7]:
                params['hash'] = match[7]

            logger.info('[git]: Found repo {}, filename {}, branch {} and hash {}'.format(repo, filename, branch, hash))
            logger.info('[git]: {}'.format(params))

            body = None if not should_cache else get_cache(cache_location, **params)

            # Fetch the git
            if not body:
                logger.info('[git]: Git did not exist in cache, fetching...')
                response = fetch_git(**params)
                body = get_body(response)

                if should_cache:
                    logger.info('[git]: Saving git to cache...')
                    cache_params = copy.copy(params)
                    cache_params['body'] = body
                    set_cache(cache_location, **cache_params)
            else:
                logger.info('[git]: Found git in cache.')

            # Create a context to render with
            context = generator.context.copy()
            context.update({
                'code': body,
                'footer': 'full',
                'base': __url__,
                'filename': filename,
                'url': git_url(**params)
            })
            replacement = template.render(context)
            article._content = article._content.replace(match[0], replacement)
def replace_git_url ( generator ) : template = g_jinja2 . get_template ( GIT_TEMPLATE ) should_cache = generator . context . get ( 'GIT_CACHE_ENABLED' ) cache_location = generator . context . get ( 'GIT_CACHE_LOCATION' ) for article in generator . articles : for match in git_regex . findall ( article . _content ) : params = collections . defaultdict ( str ) repo = match [ 1 ] filename = match [ 3 ] branch = match [ 5 ] hash = match [ 7 ] params [ 'repo' ] = match [ 1 ] params [ 'filename' ] = match [ 3 ] if match [ 5 ] : params [ 'branch' ] = match [ 5 ] if match [ 7 ] : params [ 'hash' ] = match [ 7 ] logger . info ( '[git]: Found repo {}, filename {}, branch {} and hash {}' . format ( repo , filename , branch , hash ) ) logger . info ( '[git]: {}' . format ( params ) ) body = None if not should_cache else get_cache ( cache_location , ** params ) if not body : logger . info ( '[git]: Git did not exist in cache, fetching...' ) response = fetch_git ( ** params ) body = get_body ( response ) if should_cache : logger . info ( '[git]: Saving git to cache...' ) cache_params = copy . copy ( params ) cache_params [ 'body' ] = body set_cache ( cache_location , ** cache_params ) else : logger . info ( '[git]: Found git in cache.' ) context = generator . context . copy ( ) context . update ( { 'code' : body , 'footer' : 'full' , 'base' : __url__ , 'filename' : filename , 'url' : git_url ( ** params ) } ) replacement = template . render ( context ) article . _content = article . _content . replace ( match [ 0 ] , replacement )
Replace gist tags in the article content.