diff --git a/songbook_core/content/__init__.py b/songbook_core/content/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/songbook_core/content/example b/songbook_core/content/example new file mode 100644 index 00000000..190cc997 --- /dev/null +++ b/songbook_core/content/example @@ -0,0 +1,70 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +"""Example of a plugin managing a content type. + +TODO: Explain""" + +import songbook.content + +class Example(songbook.content.Content): + """Content item of type 'example'.""" + + def __init__(self): + """Initialization. + + No signature is imposed.""" + pass + + def render(self, TODO): + """Render this content item. + + Returns a string, to be placed verbatim (? TODO) in the generated .tex + file. + """ + return "" + + # Block management + + def begin_new_block(self, previous): + """Return a boolean stating if a new block is to be created. + + # Arguments + + - previous: the songbook.content.Content object of the previous item. + + # Return + + True if the renderer has to close previous block, and begin a new one, + False otherwise. + + # Default + + The default behavior of this method (if not defined in this child + class) is: begin a new block if the previous item is not an instance of + the same class. + """ + return False + + def begin_block(self, TODO): + """Return the string to begin a block.""" + return "" + + def end_block(self, TODO): + """Return the string to end a block.""" + + +def parse(keyword, arguments): + """Parse songbook .sb content item. + + Takes as argument the keyword triggerring this content, and the list of + arguments, e.g. for a content item '["picture", "*.png", "*.jpg"]', the + call of this function is: + + > parse('picture', ["*.png", "*.jpg"]) + + Return a list of (subclasses of) songbook.content.Content objects. + """ + return Example(keyword, arguments) + +songbook.content.register('example', parse)