Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
C
cpython
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
cpython
Commits
aa4d9012
Commit
aa4d9012
authored
Apr 10, 1998
by
Guido van Rossum
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
tabnanny stuff
parent
309d5929
Changes
4
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
508 additions
and
507 deletions
+508
-507
Tools/modulator/Tkextra.py
Tools/modulator/Tkextra.py
+97
-97
Tools/modulator/genmodule.py
Tools/modulator/genmodule.py
+85
-85
Tools/modulator/modulator.py
Tools/modulator/modulator.py
+295
-294
Tools/modulator/varsubst.py
Tools/modulator/varsubst.py
+31
-31
No files found.
Tools/modulator/Tkextra.py
View file @
aa4d9012
...
...
@@ -18,54 +18,54 @@ def dialog(master, title, text, bitmap, default, *args):
w
.
iconname
(
'Dialog'
)
top
=
Frame
(
w
,
{
'relief'
:
'raised'
,
'bd'
:
1
,
Pack
:
{
'side'
:
'top'
,
'fill'
:
'both'
}})
Pack
:
{
'side'
:
'top'
,
'fill'
:
'both'
}})
bot
=
Frame
(
w
,
{
'relief'
:
'raised'
,
'bd'
:
1
,
Pack
:
{
'side'
:
'bottom'
,
'fill'
:
'both'
}})
Pack
:
{
'side'
:
'bottom'
,
'fill'
:
'both'
}})
# 2. Fill the top part with the bitmap and message.
msg
=
Message
(
top
,
{
'width'
:
'3i'
,
'text'
:
text
,
'font'
:
'-Adobe-Times-Medium-R-Normal-*-180-*'
,
Pack
:
{
'side'
:
'right'
,
'expand'
:
1
,
'fill'
:
'both'
,
'padx'
:
'3m'
,
'pady'
:
'3m'
}})
{
'width'
:
'3i'
,
'text'
:
text
,
'font'
:
'-Adobe-Times-Medium-R-Normal-*-180-*'
,
Pack
:
{
'side'
:
'right'
,
'expand'
:
1
,
'fill'
:
'both'
,
'padx'
:
'3m'
,
'pady'
:
'3m'
}})
if
bitmap
:
bm
=
Label
(
top
,
{
'bitmap'
:
bitmap
,
Pack
:
{
'side'
:
'left'
,
'padx'
:
'3m'
,
'pady'
:
'3m'
}})
bm
=
Label
(
top
,
{
'bitmap'
:
bitmap
,
Pack
:
{
'side'
:
'left'
,
'padx'
:
'3m'
,
'pady'
:
'3m'
}})
# 3. Create a row of buttons at the bottom of the dialog.
buttons
=
[]
i
=
0
for
but
in
args
:
b
=
Button
(
bot
,
{
'text'
:
but
,
'command'
:
(
'set'
,
'button'
,
i
)})
buttons
.
append
(
b
)
if
i
==
default
:
bd
=
Frame
(
bot
,
{
'relief'
:
'sunken'
,
'bd'
:
1
,
Pack
:
{
'side'
:
'left'
,
'expand'
:
1
,
'padx'
:
'3m'
,
'pady'
:
'2m'
}})
b
.
lift
()
b
.
pack
({
'in'
:
bd
,
'side'
:
'left'
,
'padx'
:
'2m'
,
'pady'
:
'2m'
,
'ipadx'
:
'2m'
,
'ipady'
:
'1m'
})
else
:
b
.
pack
({
'side'
:
'left'
,
'expand'
:
1
,
'padx'
:
'3m'
,
'pady'
:
'3m'
,
'ipady'
:
'2m'
,
'ipady'
:
'1m'
})
i
=
i
+
1
b
=
Button
(
bot
,
{
'text'
:
but
,
'command'
:
(
'set'
,
'button'
,
i
)})
buttons
.
append
(
b
)
if
i
==
default
:
bd
=
Frame
(
bot
,
{
'relief'
:
'sunken'
,
'bd'
:
1
,
Pack
:
{
'side'
:
'left'
,
'expand'
:
1
,
'padx'
:
'3m'
,
'pady'
:
'2m'
}})
b
.
lift
()
b
.
pack
({
'in'
:
bd
,
'side'
:
'left'
,
'padx'
:
'2m'
,
'pady'
:
'2m'
,
'ipadx'
:
'2m'
,
'ipady'
:
'1m'
})
else
:
b
.
pack
({
'side'
:
'left'
,
'expand'
:
1
,
'padx'
:
'3m'
,
'pady'
:
'3m'
,
'ipady'
:
'2m'
,
'ipady'
:
'1m'
})
i
=
i
+
1
# 4. Set up a binding for <Return>, if there's a default,
# set a grab, and claim the focus too.
if
default
>=
0
:
w
.
bind
(
'<Return>'
,
lambda
e
,
b
=
buttons
[
default
],
i
=
default
:
(
b
.
flash
(),
b
.
setvar
(
'button'
,
i
)))
w
.
bind
(
'<Return>'
,
lambda
e
,
b
=
buttons
[
default
],
i
=
default
:
(
b
.
flash
(),
b
.
setvar
(
'button'
,
i
)))
oldFocus
=
w
.
tk
.
call
(
'focus'
)
# XXX
w
.
grab_set
()
...
...
@@ -89,69 +89,69 @@ def strdialog(master, title, text, bitmap, default, *args):
w
.
iconname
(
'Dialog'
)
top
=
Frame
(
w
,
{
'relief'
:
'raised'
,
'bd'
:
1
,
Pack
:
{
'side'
:
'top'
,
'fill'
:
'both'
}})
Pack
:
{
'side'
:
'top'
,
'fill'
:
'both'
}})
if
args
:
bot
=
Frame
(
w
,
{
'relief'
:
'raised'
,
'bd'
:
1
,
Pack
:
{
'side'
:
'bottom'
,
'fill'
:
'both'
}})
bot
=
Frame
(
w
,
{
'relief'
:
'raised'
,
'bd'
:
1
,
Pack
:
{
'side'
:
'bottom'
,
'fill'
:
'both'
}})
# 2. Fill the top part with the bitmap, message and input field.
if
bitmap
:
bm
=
Label
(
top
,
{
'bitmap'
:
bitmap
,
Pack
:
{
'side'
:
'left'
,
'padx'
:
'3m'
,
'pady'
:
'3m'
}})
bm
=
Label
(
top
,
{
'bitmap'
:
bitmap
,
Pack
:
{
'side'
:
'left'
,
'padx'
:
'3m'
,
'pady'
:
'3m'
}})
msg
=
Message
(
top
,
{
'width'
:
'3i'
,
'text'
:
text
,
'font'
:
'-Adobe-Times-Medium-R-Normal-*-180-*'
,
Pack
:
{
'side'
:
'left'
,
'fill'
:
'both'
,
'padx'
:
'3m'
,
'pady'
:
'3m'
}})
{
'width'
:
'3i'
,
'text'
:
text
,
'font'
:
'-Adobe-Times-Medium-R-Normal-*-180-*'
,
Pack
:
{
'side'
:
'left'
,
'fill'
:
'both'
,
'padx'
:
'3m'
,
'pady'
:
'3m'
}})
field
=
Entry
(
top
,
{
'relief'
:
'sunken'
,
Pack
:{
'side'
:
'left'
,
'fill'
:
'x'
,
'expand'
:
1
,
'padx'
:
'3m'
,
'pady'
:
'3m'
}})
{
'relief'
:
'sunken'
,
Pack
:{
'side'
:
'left'
,
'fill'
:
'x'
,
'expand'
:
1
,
'padx'
:
'3m'
,
'pady'
:
'3m'
}})
# 3. Create a row of buttons at the bottom of the dialog.
buttons
=
[]
i
=
0
for
but
in
args
:
b
=
Button
(
bot
,
{
'text'
:
but
,
'command'
:
(
'set'
,
'button'
,
i
)})
buttons
.
append
(
b
)
if
i
==
default
:
bd
=
Frame
(
bot
,
{
'relief'
:
'sunken'
,
'bd'
:
1
,
Pack
:
{
'side'
:
'left'
,
'expand'
:
1
,
'padx'
:
'3m'
,
'pady'
:
'2m'
}})
b
.
lift
()
b
.
pack
({
'in'
:
bd
,
'side'
:
'left'
,
'padx'
:
'2m'
,
'pady'
:
'2m'
,
'ipadx'
:
'2m'
,
'ipady'
:
'1m'
})
else
:
b
.
pack
({
'side'
:
'left'
,
'expand'
:
1
,
'padx'
:
'3m'
,
'pady'
:
'3m'
,
'ipady'
:
'2m'
,
'ipady'
:
'1m'
})
i
=
i
+
1
b
=
Button
(
bot
,
{
'text'
:
but
,
'command'
:
(
'set'
,
'button'
,
i
)})
buttons
.
append
(
b
)
if
i
==
default
:
bd
=
Frame
(
bot
,
{
'relief'
:
'sunken'
,
'bd'
:
1
,
Pack
:
{
'side'
:
'left'
,
'expand'
:
1
,
'padx'
:
'3m'
,
'pady'
:
'2m'
}})
b
.
lift
()
b
.
pack
({
'in'
:
bd
,
'side'
:
'left'
,
'padx'
:
'2m'
,
'pady'
:
'2m'
,
'ipadx'
:
'2m'
,
'ipady'
:
'1m'
})
else
:
b
.
pack
({
'side'
:
'left'
,
'expand'
:
1
,
'padx'
:
'3m'
,
'pady'
:
'3m'
,
'ipady'
:
'2m'
,
'ipady'
:
'1m'
})
i
=
i
+
1
# 4. Set up a binding for <Return>, if there's a default,
# set a grab, and claim the focus too.
if
not
args
:
w
.
bind
(
'<Return>'
,
lambda
arg
,
top
=
top
:
top
.
setvar
(
'button'
,
0
))
field
.
bind
(
'<Return>'
,
lambda
arg
,
top
=
top
:
top
.
setvar
(
'button'
,
0
))
w
.
bind
(
'<Return>'
,
lambda
arg
,
top
=
top
:
top
.
setvar
(
'button'
,
0
))
field
.
bind
(
'<Return>'
,
lambda
arg
,
top
=
top
:
top
.
setvar
(
'button'
,
0
))
elif
default
>=
0
:
w
.
bind
(
'<Return>'
,
lambda
e
,
b
=
buttons
[
default
],
i
=
default
:
(
b
.
flash
(),
b
.
setvar
(
'button'
,
i
)))
field
.
bind
(
'<Return>'
,
lambda
e
,
b
=
buttons
[
default
],
i
=
default
:
(
b
.
flash
(),
b
.
setvar
(
'button'
,
i
)))
w
.
bind
(
'<Return>'
,
lambda
e
,
b
=
buttons
[
default
],
i
=
default
:
(
b
.
flash
(),
b
.
setvar
(
'button'
,
i
)))
field
.
bind
(
'<Return>'
,
lambda
e
,
b
=
buttons
[
default
],
i
=
default
:
(
b
.
flash
(),
b
.
setvar
(
'button'
,
i
)))
oldFocus
=
w
.
tk
.
call
(
'focus'
)
# XXX
w
.
grab_set
()
...
...
@@ -165,9 +165,9 @@ def strdialog(master, title, text, bitmap, default, *args):
w
.
destroy
()
w
.
tk
.
call
(
'focus'
,
oldFocus
)
# XXX
if
args
:
return
v
,
w
.
getint
(
w
.
getvar
(
'button'
))
return
v
,
w
.
getint
(
w
.
getvar
(
'button'
))
else
:
return
v
return
v
def
message
(
str
):
i
=
dialog
(
mainWidget
,
'Message'
,
str
,
''
,
0
,
'OK'
)
...
...
@@ -184,7 +184,7 @@ def askstr(str):
i
=
strdialog
(
mainWidget
,
'Question'
,
str
,
''
,
0
)
return
i
def
askfile
(
str
):
# XXXX For now...
def
askfile
(
str
):
# XXXX For now...
i
=
strdialog
(
mainWidget
,
'Question'
,
str
,
''
,
0
)
return
i
...
...
@@ -192,30 +192,30 @@ def askfile(str): # XXXX For now...
def
_go
():
i
=
dialog
(
mainWidget
,
'Not Responding'
,
"The file server isn't responding right now; "
"I'll keep trying."
,
''
,
-
1
,
'OK'
)
'Not Responding'
,
"The file server isn't responding right now; "
"I'll keep trying."
,
''
,
-
1
,
'OK'
)
print
'pressed button'
,
i
i
=
dialog
(
mainWidget
,
'File Modified'
,
'File "tcl.h" has been modified since '
'the last time it was saved. '
'Do you want to save it before exiting the application?'
,
'warning'
,
0
,
'Save File'
,
'Discard Changes'
,
'Return To Editor'
)
'File Modified'
,
'File "tcl.h" has been modified since '
'the last time it was saved. '
'Do you want to save it before exiting the application?'
,
'warning'
,
0
,
'Save File'
,
'Discard Changes'
,
'Return To Editor'
)
print
'pressed button'
,
i
print
message
(
'Test of message'
)
print
askyn
(
'Test of yes/no'
)
print
askync
(
'Test of yes/no/cancel'
)
print
askstr
(
'Type a string:'
)
print
strdialog
(
mainWidget
,
'Question'
,
'Another string:'
,
''
,
0
,
'Save'
,
'Save as text'
)
0
,
'Save'
,
'Save as text'
)
def
_test
():
import
sys
...
...
@@ -223,12 +223,12 @@ def _test():
mainWidget
=
Frame
()
Pack
.
config
(
mainWidget
)
start
=
Button
(
mainWidget
,
{
'text'
:
'Press Here To Start'
,
'command'
:
_go
})
{
'text'
:
'Press Here To Start'
,
'command'
:
_go
})
start
.
pack
()
endit
=
Button
(
mainWidget
,
{
'text'
:
'Exit'
,
'command'
:
'exit'
,
Pack
:
{
'fill'
:
'both'
}})
{
'text'
:
'Exit'
,
'command'
:
'exit'
,
Pack
:
{
'fill'
:
'both'
}})
mainWidget
.
mainloop
()
if
__name__
==
'__main__'
:
...
...
Tools/modulator/genmodule.py
View file @
aa4d9012
...
...
@@ -28,7 +28,7 @@ error = 'genmodule.error'
# Names of functions in the object-description struct.
#
FUNCLIST
=
[
'new'
,
'tp_dealloc'
,
'tp_print'
,
'tp_getattr'
,
'tp_setattr'
,
'tp_compare'
,
'tp_repr'
,
'tp_hash'
,
'tp_call'
,
'tp_str'
]
'tp_compare'
,
'tp_repr'
,
'tp_hash'
,
'tp_call'
,
'tp_str'
]
TYPELIST
=
[
'tp_as_number'
,
'tp_as_sequence'
,
'tp_as_mapping'
,
'structure'
]
#
...
...
@@ -37,112 +37,112 @@ TYPELIST = ['tp_as_number', 'tp_as_sequence', 'tp_as_mapping', 'structure']
#
class
writer
:
def
__init__
(
self
):
self
.
_subst
=
None
self
.
_subst
=
None
def
makesubst
(
self
):
if
not
self
.
_subst
:
if
not
self
.
__dict__
.
has_key
(
'abbrev'
):
self
.
abbrev
=
self
.
name
self
.
Abbrev
=
string
.
upper
(
self
.
abbrev
[
0
])
+
self
.
abbrev
[
1
:]
subst
=
varsubst
.
Varsubst
(
self
.
__dict__
)
subst
.
useindent
(
1
)
self
.
_subst
=
subst
.
subst
if
not
self
.
_subst
:
if
not
self
.
__dict__
.
has_key
(
'abbrev'
):
self
.
abbrev
=
self
.
name
self
.
Abbrev
=
string
.
upper
(
self
.
abbrev
[
0
])
+
self
.
abbrev
[
1
:]
subst
=
varsubst
.
Varsubst
(
self
.
__dict__
)
subst
.
useindent
(
1
)
self
.
_subst
=
subst
.
subst
def
addcode
(
self
,
name
,
fp
):
ifp
=
self
.
opentemplate
(
name
)
self
.
makesubst
()
d
=
ifp
.
read
()
d
=
self
.
_subst
(
d
)
fp
.
write
(
d
)
ifp
=
self
.
opentemplate
(
name
)
self
.
makesubst
()
d
=
ifp
.
read
()
d
=
self
.
_subst
(
d
)
fp
.
write
(
d
)
def
opentemplate
(
self
,
name
):
for
p
in
sys
.
path
:
fn
=
os
.
path
.
join
(
p
,
name
)
if
os
.
path
.
exists
(
fn
):
return
open
(
fn
,
'r'
)
fn
=
os
.
path
.
join
(
p
,
'Templates'
)
fn
=
os
.
path
.
join
(
fn
,
name
)
if
os
.
path
.
exists
(
fn
):
return
open
(
fn
,
'r'
)
raise
error
,
'Template '
+
name
+
' not found for '
+
self
.
_type
+
' '
+
\
self
.
name
for
p
in
sys
.
path
:
fn
=
os
.
path
.
join
(
p
,
name
)
if
os
.
path
.
exists
(
fn
):
return
open
(
fn
,
'r'
)
fn
=
os
.
path
.
join
(
p
,
'Templates'
)
fn
=
os
.
path
.
join
(
fn
,
name
)
if
os
.
path
.
exists
(
fn
):
return
open
(
fn
,
'r'
)
raise
error
,
'Template '
+
name
+
' not found for '
+
self
.
_type
+
' '
+
\
self
.
name
class
module
(
writer
):
_type
=
'module'
def
writecode
(
self
,
fp
):
self
.
addcode
(
'copyright'
,
fp
)
self
.
addcode
(
'module_head'
,
fp
)
for
o
in
self
.
objects
:
o
.
writehead
(
fp
)
for
o
in
self
.
objects
:
o
.
writebody
(
fp
)
new_ml
=
''
for
fn
in
self
.
methodlist
:
self
.
method
=
fn
self
.
addcode
(
'module_method'
,
fp
)
new_ml
=
new_ml
+
(
'{"%s",
\
t
(PyCFunction)%s_%s,
\
t
METH_VARARGS,
\
t
%s_%s__doc__},
\
n
'
%
(
fn
,
self
.
abbrev
,
fn
,
self
.
abbrev
,
fn
))
self
.
methodlist
=
new_ml
self
.
addcode
(
'module_tail'
,
fp
)
self
.
addcode
(
'copyright'
,
fp
)
self
.
addcode
(
'module_head'
,
fp
)
for
o
in
self
.
objects
:
o
.
writehead
(
fp
)
for
o
in
self
.
objects
:
o
.
writebody
(
fp
)
new_ml
=
''
for
fn
in
self
.
methodlist
:
self
.
method
=
fn
self
.
addcode
(
'module_method'
,
fp
)
new_ml
=
new_ml
+
(
'{"%s",
\
t
(PyCFunction)%s_%s,
\
t
METH_VARARGS,
\
t
%s_%s__doc__},
\
n
'
%
(
fn
,
self
.
abbrev
,
fn
,
self
.
abbrev
,
fn
))
self
.
methodlist
=
new_ml
self
.
addcode
(
'module_tail'
,
fp
)
class
object
(
writer
):
_type
=
'object'
def
__init__
(
self
):
self
.
typelist
=
[]
self
.
methodlist
=
[]
self
.
funclist
=
[
'new'
]
writer
.
__init__
(
self
)
self
.
typelist
=
[]
self
.
methodlist
=
[]
self
.
funclist
=
[
'new'
]
writer
.
__init__
(
self
)
def
writecode
(
self
,
fp
):
self
.
addcode
(
'copyright'
,
fp
)
self
.
writehead
(
fp
)
self
.
writebody
(
fp
)
self
.
addcode
(
'copyright'
,
fp
)
self
.
writehead
(
fp
)
self
.
writebody
(
fp
)
def
writehead
(
self
,
fp
):
self
.
addcode
(
'object_head'
,
fp
)
self
.
addcode
(
'object_head'
,
fp
)
def
writebody
(
self
,
fp
):
new_ml
=
''
for
fn
in
self
.
methodlist
:
self
.
method
=
fn
self
.
addcode
(
'object_method'
,
fp
)
new_ml
=
new_ml
+
(
'{"%s",
\
t
(PyCFunction)%s_%s,
\
t
METH_VARARGS,
\
t
%s_%s__doc__},
\
n
'
%
(
fn
,
self
.
abbrev
,
fn
,
self
.
abbrev
,
fn
))
self
.
methodlist
=
new_ml
self
.
addcode
(
'object_mlist'
,
fp
)
new_ml
=
''
for
fn
in
self
.
methodlist
:
self
.
method
=
fn
self
.
addcode
(
'object_method'
,
fp
)
new_ml
=
new_ml
+
(
'{"%s",
\
t
(PyCFunction)%s_%s,
\
t
METH_VARARGS,
\
t
%s_%s__doc__},
\
n
'
%
(
fn
,
self
.
abbrev
,
fn
,
self
.
abbrev
,
fn
))
self
.
methodlist
=
new_ml
self
.
addcode
(
'object_mlist'
,
fp
)
# Add getattr if we have methods
if
self
.
methodlist
and
not
'tp_getattr'
in
self
.
funclist
:
self
.
funclist
.
insert
(
0
,
'tp_getattr'
)
for
fn
in
FUNCLIST
:
setattr
(
self
,
fn
,
'0'
)
# Add getattr if we have methods
if
self
.
methodlist
and
not
'tp_getattr'
in
self
.
funclist
:
self
.
funclist
.
insert
(
0
,
'tp_getattr'
)
for
fn
in
FUNCLIST
:
setattr
(
self
,
fn
,
'0'
)
#
# Special case for structure-access objects: put getattr in the
# list of functions but don't generate code for it directly,
# the code is obtained from the object_structure template.
# The same goes for setattr.
#
if
'structure'
in
self
.
typelist
:
if
'tp_getattr'
in
self
.
funclist
:
self
.
funclist
.
remove
(
'tp_getattr'
)
if
'tp_setattr'
in
self
.
funclist
:
self
.
funclist
.
remove
(
'tp_setattr'
)
self
.
tp_getattr
=
self
.
abbrev
+
'_getattr'
self
.
tp_setattr
=
self
.
abbrev
+
'_setattr'
for
fn
in
self
.
funclist
:
self
.
addcode
(
'object_'
+
fn
,
fp
)
setattr
(
self
,
fn
,
'%s_%s'
%
(
self
.
abbrev
,
fn
[
3
:]))
for
tn
in
TYPELIST
:
setattr
(
self
,
tn
,
'0'
)
for
tn
in
self
.
typelist
:
self
.
addcode
(
'object_'
+
tn
,
fp
)
setattr
(
self
,
tn
,
'&%s_%s'
%
(
self
.
abbrev
,
tn
[
3
:]))
self
.
addcode
(
'object_tail'
,
fp
)
#
# Special case for structure-access objects: put getattr in the
# list of functions but don't generate code for it directly,
# the code is obtained from the object_structure template.
# The same goes for setattr.
#
if
'structure'
in
self
.
typelist
:
if
'tp_getattr'
in
self
.
funclist
:
self
.
funclist
.
remove
(
'tp_getattr'
)
if
'tp_setattr'
in
self
.
funclist
:
self
.
funclist
.
remove
(
'tp_setattr'
)
self
.
tp_getattr
=
self
.
abbrev
+
'_getattr'
self
.
tp_setattr
=
self
.
abbrev
+
'_setattr'
for
fn
in
self
.
funclist
:
self
.
addcode
(
'object_'
+
fn
,
fp
)
setattr
(
self
,
fn
,
'%s_%s'
%
(
self
.
abbrev
,
fn
[
3
:]))
for
tn
in
TYPELIST
:
setattr
(
self
,
tn
,
'0'
)
for
tn
in
self
.
typelist
:
self
.
addcode
(
'object_'
+
tn
,
fp
)
setattr
(
self
,
tn
,
'&%s_%s'
%
(
self
.
abbrev
,
tn
[
3
:]))
self
.
addcode
(
'object_tail'
,
fp
)
def
write
(
fp
,
obj
):
obj
.
writecode
(
fp
)
...
...
Tools/modulator/modulator.py
View file @
aa4d9012
This diff is collapsed.
Click to expand it.
Tools/modulator/varsubst.py
View file @
aa4d9012
...
...
@@ -9,42 +9,42 @@ error = 'varsubst.error'
class
Varsubst
:
def
__init__
(
self
,
dict
):
self
.
dict
=
dict
self
.
prog
=
regex
.
compile
(
'
\
$[
a
-zA-Z0-9_]*
\
$
'
)
self.do_useindent = 0
self
.
dict
=
dict
self
.
prog
=
regex
.
compile
(
'
\
$[
a
-zA-Z0-9_]*
\
$
'
)
self.do_useindent = 0
def useindent(self, onoff):
self.do_useindent = onoff
self.do_useindent = onoff
def subst(self, str):
rv = ''
while 1:
pos = self.prog.search(str)
if pos < 0:
return rv + str
if pos:
rv = rv + str[:pos]
str = str[pos:]
len = self.prog.match(str)
if len == 2:
# Escaped dollar
rv = rv + '
$
'
str = str[2:]
continue
name = str[1:len-1]
str = str[len:]
if not self.dict.has_key(name):
raise error, '
No
such
variable
:
'+name
value = self.dict[name]
if self.do_useindent and '
\
n
' in value:
value = self._modindent(value, rv)
rv = rv + value
rv = ''
while 1:
pos = self.prog.search(str)
if pos < 0:
return rv + str
if pos:
rv = rv + str[:pos]
str = str[pos:]
len = self.prog.match(str)
if len == 2:
# Escaped dollar
rv = rv + '
$
'
str = str[2:]
continue
name = str[1:len-1]
str = str[len:]
if not self.dict.has_key(name):
raise error, '
No
such
variable
:
'+name
value = self.dict[name]
if self.do_useindent and '
\
n
' in value:
value = self._modindent(value, rv)
rv = rv + value
def _modindent(self, value, old):
lastnl = string.rfind(old, '
\
n
', 0) + 1
lastnl = len(old) - lastnl
sub = '
\
n
' + ('
'*lastnl)
return regsub.gsub('
\
n
', sub, value)
lastnl = string.rfind(old, '
\
n
', 0) + 1
lastnl = len(old) - lastnl
sub = '
\
n
' + ('
'*lastnl)
return regsub.gsub('
\
n
', sub, value)
def _test():
import sys
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment