Added ability to record metadata at top of page data file.
[cmless] / bin / misc.py
CommitLineData
d955cfad
AT
1# (c) 2017 Aaron Taylor <ataylor at subgeniuskitty dot com>
2# See LICENSE file for copyright and license details.
3
4# Python imports
1debf034 5import os, sys, subprocess, configparser
d955cfad
AT
6
7# CMless imports
1debf034 8import debug, config, template
d955cfad
AT
9
10# Accepts a string containing a filesystem path to a text file.
11# Returns a string containing the contents of that file.
12def load_file(path):
13 try:
14 with open(path) as f:
15 contents = f.read()
16 except:
17 if debug.print_to_browser: print("Unable to open " + path + " for reading.")
18 sys.exit("Unable to open " + path + " for reading.")
19 return contents
20
21# Accepts a string containing markup'ed text
22# Returns a string containing HTML'ed text
23def process_markup(text):
24 try:
25 p = subprocess.Popen(config.markup_processor,
26 stdout=subprocess.PIPE,stdin=subprocess.PIPE)
27 except:
28 if debug.print_to_browser: print("Unable to open markup processor: " +
29 config.markup_processor)
30 sys.exit("Unable to open markup processor: " + config.markup_processor)
31 text = p.communicate(text.encode('UTF-8'))[0]
32 return(text.decode('UTF-8'))
1debf034
AT
33
34def strip_page_metadata(content):
35 keyword = template.add_delimiter("END_PAGE_METADATA")
36 index = content.find(keyword)
37 if index != -1:
38 return content[index+len(keyword):]
39 else:
40 return content
41
42def lookup_page_metadata(key):
43 page_file = load_file(config.site_data_prefix + os.environ['REQUEST_URI'] +
44 config.markup_file_extension)
45
46 keyword_begin = template.add_delimiter("BEGIN_PAGE_METADATA")
47 keyword_end = template.add_delimiter("END_PAGE_METADATA")
48 index = page_file.find(keyword_end)
49 if index != -1:
50 page_file = page_file[len(keyword_begin):index]
51 else:
52 page_file = ""
53
54 page_metadata = configparser.ConfigParser()
55 page_metadata.read_string(page_file)
56
57 if 'DEFAULT' in page_metadata and key in page_metadata['DEFAULT']:
58 return page_metadata['DEFAULT'][key]
59 else:
60 return ""