c12bc4de58
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@9492 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
159 lines
5.8 KiB
Python
159 lines
5.8 KiB
Python
#!/usr/bin/python
|
|
##############################################################################
|
|
#
|
|
# Zope Public License (ZPL) Version 1.0
|
|
# -------------------------------------
|
|
#
|
|
# Copyright (c) Digital Creations. All rights reserved.
|
|
#
|
|
# This license has been certified as Open Source(tm).
|
|
#
|
|
# Redistribution and use in source and binary forms, with or without
|
|
# modification, are permitted provided that the following conditions are
|
|
# met:
|
|
#
|
|
# 1. Redistributions in source code must retain the above copyright
|
|
# notice, this list of conditions, and the following disclaimer.
|
|
#
|
|
# 2. Redistributions in binary form must reproduce the above copyright
|
|
# notice, this list of conditions, and the following disclaimer in
|
|
# the documentation and/or other materials provided with the
|
|
# distribution.
|
|
#
|
|
# 3. Digital Creations requests that attribution be given to Zope
|
|
# in any manner possible. Zope includes a "Powered by Zope"
|
|
# button that is installed by default. While it is not a license
|
|
# violation to remove this button, it is requested that the
|
|
# attribution remain. A significant investment has been put
|
|
# into Zope, and this effort will continue if the Zope community
|
|
# continues to grow. This is one way to assure that growth.
|
|
#
|
|
# 4. All advertising materials and documentation mentioning
|
|
# features derived from or use of this software must display
|
|
# the following acknowledgement:
|
|
#
|
|
# "This product includes software developed by Digital Creations
|
|
# for use in the Z Object Publishing Environment
|
|
# (http://www.zope.org/)."
|
|
#
|
|
# In the event that the product being advertised includes an
|
|
# intact Zope distribution (with copyright and license included)
|
|
# then this clause is waived.
|
|
#
|
|
# 5. Names associated with Zope or Digital Creations must not be used to
|
|
# endorse or promote products derived from this software without
|
|
# prior written permission from Digital Creations.
|
|
#
|
|
# 6. Modified redistributions of any form whatsoever must retain
|
|
# the following acknowledgment:
|
|
#
|
|
# "This product includes software developed by Digital Creations
|
|
# for use in the Z Object Publishing Environment
|
|
# (http://www.zope.org/)."
|
|
#
|
|
# Intact (re-)distributions of any official Zope release do not
|
|
# require an external acknowledgement.
|
|
#
|
|
# 7. Modifications are encouraged but must be packaged separately as
|
|
# patches to official Zope releases. Distributions that do not
|
|
# clearly separate the patches from the original work must be clearly
|
|
# labeled as unofficial distributions. Modifications which do not
|
|
# carry the name Zope may be packaged in any form, as long as they
|
|
# conform to all of the clauses above.
|
|
#
|
|
#
|
|
# Disclaimer
|
|
#
|
|
# THIS SOFTWARE IS PROVIDED BY DIGITAL CREATIONS ``AS IS'' AND ANY
|
|
# EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
|
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL DIGITAL CREATIONS OR ITS
|
|
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
|
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
|
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
|
|
# USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
|
# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
|
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
|
|
# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
|
# SUCH DAMAGE.
|
|
#
|
|
#
|
|
# This software consists of contributions made by Digital Creations and
|
|
# many individuals on behalf of Digital Creations. Specific
|
|
# attributions are listed in the accompanying credits file.
|
|
#
|
|
##############################################################################
|
|
|
|
from Html import HTML
|
|
from string import split
|
|
from ST import DOC
|
|
import re
|
|
|
|
"""
|
|
This is the new structured text type.
|
|
"""
|
|
|
|
class Zwiki_Title:
|
|
def __init__(self,str=''):
|
|
self.expr1 = re.compile('([A-Z]+[A-Z]+[a-zA-Z]*)').search
|
|
self.expr2 = re.compile('([A-Z]+[a-z]+[A-Z]+[a-zA-Z]*)').search
|
|
self.str = [str]
|
|
self.typ = "Zwiki_Title"
|
|
|
|
def type(self):
|
|
return '%s' % self.typ
|
|
|
|
def string(self):
|
|
return self.str
|
|
|
|
def __getitem__(self,index):
|
|
return self.str[index]
|
|
|
|
def __call__(self,raw_string,subs):
|
|
|
|
"""
|
|
The raw_string is checked to see if it matches the rules
|
|
for this structured text expression. If the raw_string does,
|
|
it is parsed for the sub-string which matches and a doc_inner_link
|
|
instance is returned whose string is the matching substring.
|
|
If raw_string does not match, nothing is returned.
|
|
"""
|
|
|
|
if self.expr1(raw_string):
|
|
start,end = self.expr1(raw_string).span()
|
|
result = Zwiki_Title(raw_string[start:end])
|
|
result.start,result.end = self.expr1(raw_string).span()
|
|
return result
|
|
elif self.expr2(raw_string):
|
|
start,end = self.expr2(raw_string).span()
|
|
result = Zwiki_Title(raw_string[start:end])
|
|
result.start,result.end = self.expr2(raw_string).span()
|
|
return result
|
|
else:
|
|
return None
|
|
|
|
def span(self):
|
|
return self.start,self.end
|
|
|
|
class Zwiki_doc(DOC):
|
|
|
|
def __init__(self):
|
|
DOC.__init__(self)
|
|
"""
|
|
Add the new type to self.types
|
|
"""
|
|
self.types.append(Zwiki_Title())
|
|
|
|
class Zwiki_parser(HTML):
|
|
def __init__(self):
|
|
HTML.__init__(self)
|
|
self.types["Zwiki_Title"] = self.zwiki_title
|
|
|
|
def zwiki_title(self,object):
|
|
result = ""
|
|
for x in object.string():
|
|
result = result + x
|
|
result = "<a href=%s>%s</a>" % (result,result)
|
|
#result = "<dtml-wikiname %s>" % result
|
|
self.string = self.string + result
|