mirror of https://github.com/patacrep/patacrep.git
Browse Source
Inclusion de fichier JSON contenant une liste de contenu. Permet d'avoir le même contenu avec plusieurs mises en page.pull/53/head
Luthaf
11 years ago
2 changed files with 51 additions and 0 deletions
@ -0,0 +1,49 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
|
||||
|
"""Include an external list of songs |
||||
|
|
||||
|
This plugin provides keyword 'include', used to include an external list of |
||||
|
songs in JSON format. |
||||
|
""" |
||||
|
|
||||
|
import json |
||||
|
import os |
||||
|
import sys |
||||
|
import logging |
||||
|
|
||||
|
from patacrep.content import process_content |
||||
|
|
||||
|
LOGGER = logging.getLogger(__name__) |
||||
|
|
||||
|
#pylint: disable=unused-argument |
||||
|
def parse(keyword, config, argument, contentlist): |
||||
|
"""Include an external file content. |
||||
|
|
||||
|
Arguments: |
||||
|
- keyword: the string 'sorted'; |
||||
|
- config: the current songbook configuration dictionary; |
||||
|
- argument: None; |
||||
|
- contentlist: a list of file paths to be included. |
||||
|
""" |
||||
|
new_contentlist = [] |
||||
|
for path in contentlist: |
||||
|
filepath = os.path.join(config["_songbook_dir"], path) |
||||
|
try: |
||||
|
with open(filepath, "r") as content_file: |
||||
|
old_songbook_dir = config["_songbook_dir"] |
||||
|
new_content = json.load(content_file) |
||||
|
except Exception as error: # pylint: disable=broad-except |
||||
|
LOGGER.error(error) |
||||
|
LOGGER.error("Error while loading file '{}'.".format(filepath)) |
||||
|
sys.exit(1) |
||||
|
|
||||
|
config["_songbook_dir"] = os.path.abspath( |
||||
|
os.path.dirname(filepath) |
||||
|
) |
||||
|
|
||||
|
new_contentlist += process_content(new_content, config) |
||||
|
config["_songbook_dir"] = old_songbook_dir |
||||
|
|
||||
|
return new_contentlist |
||||
|
|
||||
|
CONTENT_PLUGINS = {'include': parse} |
Loading…
Reference in new issue