Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Output formats enhancements #1351

Merged
merged 6 commits into from
Sep 7, 2016
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
54 changes: 6 additions & 48 deletions api.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,9 @@
import parsers
from google.appengine.ext import ndb


import apirdflib
#from apirdflib import rdfGetTargets, rdfGetSources

from apimarkdown import Markdown

logging.basicConfig(level=logging.INFO) # dev_appserver.py --log_level debug .
log = logging.getLogger(__name__)
Expand Down Expand Up @@ -56,8 +55,9 @@ def getAllLayersList():

def getMasterStore():
return apirdflib.STORE



def getQueryGraph():
return apirdflib.queryGraph()
# Core API: we have a single schema graph built from triples and units.

NodeIDMap = {}
Expand Down Expand Up @@ -244,7 +244,7 @@ def getCurrent(self):
def setCurrent(self,current):
self.tlocal.CurrentStoreSet = current
log.debug("HeaderStore setting CurrentStoreSet: %s",current)

def put(self, key, val,cache=None):
ca = self.getCurrent()
if cache != None:
Expand Down Expand Up @@ -662,7 +662,7 @@ def GetComment(node, layers='core') :
"""Get the first rdfs:comment we find on this node (or "No comment"), within any of the specified layers."""
tx = GetComments(node, layers)
if len(tx) > 0:
return MD.parse(tx[0])
return Markdown.parse(tx[0])
else:
return "No comment"

Expand Down Expand Up @@ -1095,7 +1095,6 @@ def read_extensions(extensions):
expfiles = glob.glob("data/ext/%s/*examples.txt" % i)
read_examples(expfiles,i)

log.info("Extensions found: %s ." % " , ".join(extfiles) )
# fnstrip_re = re.compile("\/.*")
# for ext in extfiles:
# ext_file_path = full_path(ext)
Expand Down Expand Up @@ -1146,45 +1145,4 @@ def ShortenOnSentence(source,lengthHint=250):
source = com
return source

WIKILINKPATTERN = r'\[\[([\w0-9_ -]+)\]\]'

class MarkdownTool():
def __init__ (self):
import markdown2
from markdown2 import Markdown
#from markdown.extensions.wikilinks import WikiLinkExtension
#self._md = markdown2.Markdown(extensions=[WikiLinkExtension(base_url='/', end_url='', html_class='localLink')])
self._md = Markdown()
self.wclass = "localLink"
self.wpre = "/"
self.wpost = ""
self.parselock = threading.Lock()

def parse(self,source,preservePara=False):
if not source or len(source) == 0:
return ""
source = source.strip()
source = source.replace("\\n","\n")
try:
self.parselock.acquire()
ret = self._md.convert(source)
finally:
self.parselock.release()

if not preservePara:
#Remove wrapping <p> </p>\n that Markdown2 adds by default
if len(ret) > 7 and ret.startswith("<p>") and ret.endswith("</p>\n"):
ret = ret[3:len(ret)-5]

return self.parseWiklinks(ret)

def parseWiklinks(self,source):
return re.sub(WIKILINKPATTERN, self.wikilinkReplace, source)

def wikilinkReplace(self,match):
t = match.group(1)
return '<a class="%s" href="%s%s%s">%s</a>' % (self.wclass,self.wpre,t,self.wpost,t)


MD = MarkdownTool()

49 changes: 49 additions & 0 deletions apimarkdown.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
import markdown2
from markdown2 import Markdown
import re
import threading
WIKILINKPATTERN = r'\[\[([\w0-9_ -]+)\]\]'

class MarkdownTool():
def __init__ (self):
#from markdown.extensions.wikilinks import WikiLinkExtension
#self._md = markdown2.Markdown(extensions=[WikiLinkExtension(base_url='/', end_url='', html_class='localLink')])
self._md = Markdown()
self.wclass = "localLink"
self.wpre = "/"
self.wpost = ""
self.parselock = threading.Lock()

def setPre(self,pre="/"):
self.wpre = pre

def setPost(self,post=""):
self.wpost = post

def parse(self,source,preservePara=False):
if not source or len(source) == 0:
return ""
source = source.strip()
source = source.replace("\\n","\n")
try:
self.parselock.acquire()
ret = self._md.convert(source)
finally:
self.parselock.release()

if not preservePara:
#Remove wrapping <p> </p>\n that Markdown2 adds by default
if len(ret) > 7 and ret.startswith("<p>") and ret.endswith("</p>\n"):
ret = ret[3:len(ret)-5]

return self.parseWiklinks(ret)

def parseWiklinks(self,source):
return re.sub(WIKILINKPATTERN, self.wikilinkReplace, source)

def wikilinkReplace(self,match):
t = match.group(1)
return '<a class="%s" href="%s%s%s">%s</a>' % (self.wclass,self.wpre,t,self.wpost,t)


Markdown = MarkdownTool()
Loading