The homepage of PySed is still under construction. I cut the comments
of sed.py module here to give you a hint about what it is.
Last updated 2005-03-30 00:30:33 CST
[Back to pysed@sourceforge.net]
Introduction:
Sed.py is a Python module that used for stream editing. Just like the
module name, it tries to provide ability like sed(a popular stream editor
for UNIX) does. However, it DOES NOT work as the same way as sed. When you
use Sed.py, you have to write Python script. Don't worry. It's piece of
cake. The hardest work is handled by Sed.py. All you need to do is to
specify the pattern to search and the file to process. A pattern is a
description of the string you want to handle. It is often described in
regular expression. However, if you just want to process some strings in
simple and fixed form, regular expression may not be necessary.
Before you go into the detail of Sed class, you should know about filter
first. Simply speaking, Filter is a list in Python form. it consists of
four items: patterns, replace strings, function and extra flags. The
function and extra flags item are optional.
The syntax looks like:
[ [patterns, replace] , ... ]
[ [patterns, replace , function] , ... ]
[ [patterns, replace , function , extraFlag] , ... ]
pattens is the string you want to handle in the content. It can be a string
in regexp format, a compiled regexp object or a mixed type of sequence that
contains string and compiled regexp object. The default filter will search
the content according to the patterns. If the patterns is a sequence, it
will be processed one by one.
replace is the string to substitute those string matched the pattern in
original content. It can be a single string or a dict. When it is a dict,
the pattern must be a regular expression(or a sequence of regular
expression) with named group specified. If the group is found and its name
is one of the key of dict, the value will replace the corresponding string.
Actually the meaning of replace field is defined by the filter function.
Here we are taking about is based on the FilterDefault function. If you
use other filter function, the meaning of replace parameter should refer
to the document of filter function.
function is used to specified what kind of filter you want to used. If this
field is omitted, FilterDefault will be appliedby default.
Before describe the behavior of FilterDefault, we will show you how to
implement your own filter function first.
A filter function has following prototype:
line, doNext = FILTER_FUNC(sedObj, line, patterns, replace, flags)
The sedObj is the instance of Sed class which is the caller of FILTER_FUNC.
The sedObj will pass the content to filter function line by line. So,
filter function will handle one line each time it has been called. The
return value of filter function is the modified line. The patterns and
replace arguments are represented the patterns and replace field in pattern
configuration list. However, you can define it with other meaning for these
two fields. Or, just follow the same definition of FilterDefault. The flags
is additional fields right after function field in pattern setting. It must
be a list for FILTER_FUNC. No default meaning for it. It depends on the
FILTER_FUNC.
A filter function must return 2 value. The first value is the line which is
processed by this filter. The second value is a int flag to instruct the
ProcessStream function how to do with next filter. There are three accepted
values.
DO_NEXT_FILTER -- Continue to next filter.
SKIP_NEXT_FILTER -- Skip next filter.
SKIP_ALL_OTHER_FILTERS -- Skip all other filters which did not execute yet.
Author:
"Gary W. Lee"
License:
Python License.
NOTE 1:
Apology to my poor English. If you find any erratum, incorrect grammar or
sentence which make no sence, please let me know. Suggestions are also
welcome.