]> git.saurik.com Git - wxWidgets.git/blame - wxPython/samples/stxview/StructuredText/Zwiki.py
Corrections in light of recent toolbar and other changes
[wxWidgets.git] / wxPython / samples / stxview / StructuredText / Zwiki.py
CommitLineData
c12bc4de
RD
1#!/usr/bin/python
2##############################################################################
3#
4# Zope Public License (ZPL) Version 1.0
5# -------------------------------------
6#
7# Copyright (c) Digital Creations. All rights reserved.
8#
9# This license has been certified as Open Source(tm).
10#
11# Redistribution and use in source and binary forms, with or without
12# modification, are permitted provided that the following conditions are
13# met:
14#
15# 1. Redistributions in source code must retain the above copyright
16# notice, this list of conditions, and the following disclaimer.
17#
18# 2. Redistributions in binary form must reproduce the above copyright
19# notice, this list of conditions, and the following disclaimer in
20# the documentation and/or other materials provided with the
21# distribution.
22#
23# 3. Digital Creations requests that attribution be given to Zope
24# in any manner possible. Zope includes a "Powered by Zope"
25# button that is installed by default. While it is not a license
26# violation to remove this button, it is requested that the
27# attribution remain. A significant investment has been put
28# into Zope, and this effort will continue if the Zope community
29# continues to grow. This is one way to assure that growth.
30#
31# 4. All advertising materials and documentation mentioning
32# features derived from or use of this software must display
33# the following acknowledgement:
34#
35# "This product includes software developed by Digital Creations
36# for use in the Z Object Publishing Environment
37# (http://www.zope.org/)."
38#
39# In the event that the product being advertised includes an
40# intact Zope distribution (with copyright and license included)
41# then this clause is waived.
42#
43# 5. Names associated with Zope or Digital Creations must not be used to
44# endorse or promote products derived from this software without
45# prior written permission from Digital Creations.
46#
47# 6. Modified redistributions of any form whatsoever must retain
48# the following acknowledgment:
49#
50# "This product includes software developed by Digital Creations
51# for use in the Z Object Publishing Environment
52# (http://www.zope.org/)."
53#
54# Intact (re-)distributions of any official Zope release do not
55# require an external acknowledgement.
56#
57# 7. Modifications are encouraged but must be packaged separately as
58# patches to official Zope releases. Distributions that do not
59# clearly separate the patches from the original work must be clearly
60# labeled as unofficial distributions. Modifications which do not
61# carry the name Zope may be packaged in any form, as long as they
62# conform to all of the clauses above.
63#
64#
65# Disclaimer
66#
67# THIS SOFTWARE IS PROVIDED BY DIGITAL CREATIONS ``AS IS'' AND ANY
68# EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
69# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
70# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL DIGITAL CREATIONS OR ITS
71# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
72# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
73# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
74# USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
75# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
76# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
77# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
78# SUCH DAMAGE.
79#
80#
81# This software consists of contributions made by Digital Creations and
82# many individuals on behalf of Digital Creations. Specific
83# attributions are listed in the accompanying credits file.
84#
85##############################################################################
86
87from Html import HTML
88from string import split
89from ST import DOC
90import re
91
92"""
93This is the new structured text type.
94"""
95
96class Zwiki_Title:
97 def __init__(self,str=''):
98 self.expr1 = re.compile('([A-Z]+[A-Z]+[a-zA-Z]*)').search
99 self.expr2 = re.compile('([A-Z]+[a-z]+[A-Z]+[a-zA-Z]*)').search
100 self.str = [str]
101 self.typ = "Zwiki_Title"
102
103 def type(self):
104 return '%s' % self.typ
105
106 def string(self):
107 return self.str
108
109 def __getitem__(self,index):
110 return self.str[index]
111
112 def __call__(self,raw_string,subs):
113
114 """
115 The raw_string is checked to see if it matches the rules
116 for this structured text expression. If the raw_string does,
117 it is parsed for the sub-string which matches and a doc_inner_link
118 instance is returned whose string is the matching substring.
119 If raw_string does not match, nothing is returned.
120 """
121
122 if self.expr1(raw_string):
123 start,end = self.expr1(raw_string).span()
124 result = Zwiki_Title(raw_string[start:end])
125 result.start,result.end = self.expr1(raw_string).span()
126 return result
127 elif self.expr2(raw_string):
128 start,end = self.expr2(raw_string).span()
129 result = Zwiki_Title(raw_string[start:end])
130 result.start,result.end = self.expr2(raw_string).span()
131 return result
132 else:
133 return None
134
135 def span(self):
136 return self.start,self.end
137
138class Zwiki_doc(DOC):
139
140 def __init__(self):
141 DOC.__init__(self)
142 """
143 Add the new type to self.types
144 """
145 self.types.append(Zwiki_Title())
146
147class Zwiki_parser(HTML):
148 def __init__(self):
149 HTML.__init__(self)
150 self.types["Zwiki_Title"] = self.zwiki_title
151
152 def zwiki_title(self,object):
153 result = ""
154 for x in object.string():
155 result = result + x
156 result = "<a href=%s>%s</a>" % (result,result)
157 #result = "<dtml-wikiname %s>" % result
158 self.string = self.string + result