Skip to content
Snippets Groups Projects
jekyllcat 1.34 KiB
Newer Older
#!/usr/bin/env python

import sys
from optparse import OptionParser


def main():
    '''Main driver.'''

    parser = OptionParser()
    parser.add_option('-o', '--opening',
                      default=None, dest='opening', help='Header string')
    parser.add_option('-c', '--closing',
                      default=None, dest='closing', help='Footer string')
    args, extras = parser.parse_args()
    assert args.opening and args.closing, \
        'Must specify opening (-o) and closing (-c) delimiters'

    opening = closing = None
    bodies = []

    if not extras:
        opening, content, closing = extract(args, sys.stdin)

    else:
        for filename in extras:
            with open(filename, 'r') as reader:
                o, content, c = extract(args, reader)
                if opening is None:
                    opening = o
                    closing = c
                bodies.append(content)

    display(opening, *bodies, closing)


def extract(args, reader):
    '''Extract content from named file.'''

    data = reader.read()
    i_opening = data.find(args.opening) + len(args.opening)
    i_closing = data.rfind(args.closing)
    return data[:i_opening], data[i_opening:i_closing], data[i_closing:]


def display(*blocks):
    '''Display all the text.'''

    for b in blocks:
        print(b)


if __name__ == '__main__':
    main()