Added ability to record metadata at top of page data file.
[cmless] / bin / misc.py
# (c) 2017 Aaron Taylor <ataylor at subgeniuskitty dot com>
# See LICENSE file for copyright and license details.
# Python imports
import os, sys, subprocess, configparser
# CMless imports
import debug, config, template
# Accepts a string containing a filesystem path to a text file.
# Returns a string containing the contents of that file.
def load_file(path):
try:
with open(path) as f:
contents = f.read()
except:
if debug.print_to_browser: print("Unable to open " + path + " for reading.")
sys.exit("Unable to open " + path + " for reading.")
return contents
# Accepts a string containing markup'ed text
# Returns a string containing HTML'ed text
def process_markup(text):
try:
p = subprocess.Popen(config.markup_processor,
stdout=subprocess.PIPE,stdin=subprocess.PIPE)
except:
if debug.print_to_browser: print("Unable to open markup processor: " +
config.markup_processor)
sys.exit("Unable to open markup processor: " + config.markup_processor)
text = p.communicate(text.encode('UTF-8'))[0]
return(text.decode('UTF-8'))
def strip_page_metadata(content):
keyword = template.add_delimiter("END_PAGE_METADATA")
index = content.find(keyword)
if index != -1:
return content[index+len(keyword):]
else:
return content
def lookup_page_metadata(key):
page_file = load_file(config.site_data_prefix + os.environ['REQUEST_URI'] +
config.markup_file_extension)
keyword_begin = template.add_delimiter("BEGIN_PAGE_METADATA")
keyword_end = template.add_delimiter("END_PAGE_METADATA")
index = page_file.find(keyword_end)
if index != -1:
page_file = page_file[len(keyword_begin):index]
else:
page_file = ""
page_metadata = configparser.ConfigParser()
page_metadata.read_string(page_file)
if 'DEFAULT' in page_metadata and key in page_metadata['DEFAULT']:
return page_metadata['DEFAULT'][key]
else:
return ""