Toggle menu
Toggle preferences menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

User:WindBOT/LinkClass: Difference between revisions

From the Portal Wiki
Created page with "<pre>class link: def __init__(self, content): content = u(content) self.joined = False self.setBody(content) self.setType(u'unknown') self.setLabel(None) self.setLin..."
 
m +anchor
 
Line 7: Line 7:
self.setLabel(None)
self.setLabel(None)
self.setLink(u'')
self.setLink(u'')
self.anchor = None
self.joined = False
self.joined = False
if len(content) > 2:
if len(content) > 2:
Line 16: Line 17:
if lnk.find(u':') == -1:
if lnk.find(u':') == -1:
lnk = lnk.replace(u'_', u' ')
lnk = lnk.replace(u'_', u' ')
anchor = None
if lnk.find(u'#') != -1:
lnk, anchor = lnk.split(u'#', 1)
self.setAnchor(anchor)
self.setLink(lnk)
self.setLink(lnk)
if len(split) == 2:
if len(split) == 2:
Line 21: Line 26:
else:
else:
self.setLabel(split[0])
self.setLabel(split[0])
self.joined = True
self.joined = anchor is None
elif content[0] == u'[' and content[-1] == u']':
elif content[0] == u'[' and content[-1] == u']':
split = content[1:-1].split(u' ', 1)
split = content[1:-1].split(u' ', 1)
Line 34: Line 39:
def getBody(self):
def getBody(self):
return u(self.body)
return u(self.body)
def getLink(self):
def getLink(self, withAnchor=False):
if withAnchor and self.getAnchor() is not None:
return u(self.link) + u'#' + self.getAnchor()
return u(self.link)
return u(self.link)
def getAnchor(self):
return self.anchor
def getLabel(self):
def getLabel(self):
if self.label is None:
if self.label is None:
Line 47: Line 56:
self.body = u(body)
self.body = u(body)
def setLink(self, link):
def setLink(self, link):
self.link = u(link)
link = u(link)
if self.getType() == u'internal' and link.find(u'#') != -1:
link, anchor = link.split(u'#', 1)
self.setAnchor(anchor)
self.link = link
if self.joined:
if self.joined:
self.label = u(link)
self.label = u(link)
replaceDots = compileRegex(r'(?:\.[a-f\d][a-f\d])+')
def _replaceDots(self, g):
s = ''
g = g.group(0)
for i in xrange(0, len(g), 3):
s += chr(int(g[i + 1:i + 3], 16))
return s.decode('utf8')
def setAnchor(self, anchor):
if self.getType() == u'internal':
u(anchor).replace(u'_', u' ')
try:
anchor = link.replaceDots.sub(self._replaceDots, anchor)
except:
pass
self.anchor = anchor
def setLabel(self, label):
def setLabel(self, label):
if label is None:
if label is None:
Line 63: Line 91:
def __unicode__(self):
def __unicode__(self):
label = self.getLabel()
label = self.getLabel()
tmpLink = self.getLink()
tmpLink = self.getLink(withAnchor=True)
if self.getType() == u'internal':
if self.getType() == u'internal':
tmpLink2 = tmpLink.replace(u'_', u' ')
tmpLink2 = tmpLink.replace(u'_', u' ')
if label in (tmpLink2, tmpLink):
if label in (tmpLink2, tmpLink) or (label and tmpLink and (label[0].lower() == tmpLink[0].lower() and tmpLink[1:] == label[1:]) or (label[0].lower() == tmpLink2[0].lower() and tmpLink2[1:] == label[1:])):
return u'[[' + label + u']]'
elif label and tmpLink and (label[0].lower() == tmpLink[0].lower() and tmpLink[1:] == label[1:]) or (label[0].lower() == tmpLink2[0].lower() and tmpLink2[1:] == label[1:]):
return u'[[' + label + u']]'
return u'[[' + label + u']]'
elif tmpLink and label and len(label) > len(tmpLink) and (label.lower().find(tmpLink2.lower()) != -1 or label.lower().find(tmpLink.lower()) != -1):
elif tmpLink and label and len(label) > len(tmpLink) and (label.lower().find(tmpLink2.lower()) == 0 or label.lower().find(tmpLink.lower()) == 0):
index = max(label.lower().find(tmpLink2.lower()), label.lower().find(tmpLink.lower()))
index = max(label.lower().find(tmpLink2.lower()), label.lower().find(tmpLink.lower()))
badchars = (u' ', u'_')
badchars = (u' ', u'_')