Added ability to record metadata at top of page data file.
authorAaron Taylor <ataylor@subgeniuskitty.com>
Sun, 7 Jan 2018 12:30:01 +0000 (04:30 -0800)
committerAaron Taylor <ataylor@subgeniuskitty.com>
Sun, 7 Jan 2018 12:30:01 +0000 (04:30 -0800)
Added a couple starting examples using this feature.

bin/cmless.py
bin/misc.py
bin/template.py
site_sample/data/index.md
site_sample/template/template.tpl

index 84d5b69..825ec25 100755 (executable)
@@ -16,6 +16,8 @@ def main():
     content = template.page_title(content)
     content = template.site_title(content)
     content = template.current_year(content)
     content = template.page_title(content)
     content = template.site_title(content)
     content = template.current_year(content)
+    content = template.head_meta_description(content)
+    content = template.head_meta_keywords(content)
     content = template.body(content)
     print(content)
 
     content = template.body(content)
     print(content)
 
index 821ef34..846ebfe 100644 (file)
@@ -2,10 +2,10 @@
 # See LICENSE file for copyright and license details.
 
 # Python imports
 # See LICENSE file for copyright and license details.
 
 # Python imports
-import sys, subprocess
+import os, sys, subprocess, configparser
 
 # CMless imports
 
 # CMless imports
-import debug, config
+import debug, config, template
 
 # Accepts a string containing a filesystem path to a text file.
 # Returns a string containing the contents of that file.
 
 # Accepts a string containing a filesystem path to a text file.
 # Returns a string containing the contents of that file.
@@ -30,3 +30,31 @@ def process_markup(text):
         sys.exit("Unable to open markup processor: " + config.markup_processor)
     text = p.communicate(text.encode('UTF-8'))[0]
     return(text.decode('UTF-8'))
         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 ""
index a39090f..cdc7fe7 100644 (file)
@@ -7,27 +7,34 @@ import os, datetime
 # CMless imports
 import config, misc
 
 # CMless imports
 import config, misc
 
+def add_delimiter(keyword):
+    return config.template_delimiter + keyword + config.template_delimiter
+
+def head_meta_description(template):
+    keyword = add_delimiter("meta_description")
+    return template.replace(keyword,'<meta name="description" content="' + misc.lookup_page_metadata("meta_description") + '">')
+
+def head_meta_keywords(template):
+    keyword = add_delimiter("meta_keywords")
+    return template.replace(keyword,'<meta name="keywords" content="' + misc.lookup_page_metadata("meta_keywords") + '">')
+
 def page_title(template):
 def page_title(template):
-    keyword = "page_title"
-    return template.replace(config.template_delimiter + keyword +
-            config.template_delimiter, config.site_name + " - " +
-            os.environ['REQUEST_URI'])
+    keyword = add_delimiter("page_title")
+    return template.replace(keyword, config.site_name + " - " + misc.lookup_page_metadata("page_title"))
 
 def site_title(template):
 
 def site_title(template):
-    keyword = "site_title"
-    return template.replace(config.template_delimiter + keyword +
-            config.template_delimiter, config.site_name)
+    keyword = add_delimiter("site_title")
+    return template.replace(keyword, config.site_name)
 
 def body(template):
 
 def body(template):
-    keyword = "page_content"
+    keyword = add_delimiter("page_content")
     body = misc.load_file(config.site_data_prefix + os.environ['REQUEST_URI'] +
             config.markup_file_extension)
     body = misc.load_file(config.site_data_prefix + os.environ['REQUEST_URI'] +
             config.markup_file_extension)
+    body = misc.strip_page_metadata(body)
     body = misc.process_markup(body)
     body = misc.process_markup(body)
-    return template.replace(config.template_delimiter + keyword +
-            config.template_delimiter, body)
+    return template.replace(keyword, body)
 
 def current_year(template):
 
 def current_year(template):
-    keyword = "current_year"
+    keyword = add_delimiter("current_year")
     now = datetime.datetime.now()
     now = datetime.datetime.now()
-    return template.replace(config.template_delimiter + keyword +
-            config.template_delimiter, str(now.year))
+    return template.replace(keyword, str(now.year))
index 57f362a..ed61039 100644 (file)
@@ -1,3 +1,10 @@
+%%BEGIN_PAGE_METADATA%%
+[DEFAULT]
+page_title = Markdown Reference
+meta_keywords = Words,that,describe,the,page
+meta_description = A description of the page.
+%%END_PAGE_METADATA%%
+
 Markdown Test
 =============
 
 Markdown Test
 =============
 
index 18fcc43..d42acb4 100644 (file)
@@ -3,6 +3,8 @@
     <title>%%page_title%%</title>
     <link rel="stylesheet" href="/style.css" type="text/css" media="screen, handheld" title="default">
     <meta charset="UTF-8">
     <title>%%page_title%%</title>
     <link rel="stylesheet" href="/style.css" type="text/css" media="screen, handheld" title="default">
     <meta charset="UTF-8">
+    %%meta_description%%
+    %%meta_keywords%%
 </head>
 <body>
     <div id="header">
 </head>
 <body>
     <div id="header">