Skip to content

Make [[[end]]] optional to allow inline templating #12

@tw39124-1

Description

@tw39124-1

Firstly, thanks for Cog, it is such a great way to generate files against a template using Python.

However, the major downside of the current implementation (for me at least) is that it is line-based. There doesn't appear to be a way to do inline templating. For example, let's say I want to generate a Doxygen C source file header:

[[[cog import cog ]]] [[[end]]]
/**
 * @file [[[cog cog.out(filename) ]]] [[[end]]]
 * @copyright Copyright (c) [[[ cog.out(current_year + " " + company_name) ]]] [[[end]]]
 * @author [[[cog cog.out(file_author) ]]] [[[end]]]
 */

However, the Cog source code mandates that the [[[end]]] tag is present, and is on a different line to the Python code block, which prevents this rather useful ability. If the -d option is used to delete the source code and the [[[end]]] tag was optional, I could just do:

/**
 * @file [[[cog cog.out(filename) ]]]
 * @copyright Copyright (c) [[[ cog.out(current_year + " " + company_name) ]]]
 * @author [[[cog cog.out(file_author) ]]]
 */

which would get transformed rather neatly into:

/**
 * @file my_first_file.h
 * @copyright Copyright (c) 2020 AcmeCorp
 * @author Joe Bloggs
 */

This is kinda similar to how PHP works inline with HTML, and would be a really useful feature IMO.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions