summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGustavo Niemeyer <gustavo@niemeyer.net>2003-04-20 01:57:03 (GMT)
committerGustavo Niemeyer <gustavo@niemeyer.net>2003-04-20 01:57:03 (GMT)
commit48f3dcc93e57e75e43f9e1a82daa02d2c2f29ec8 (patch)
tree565d184f58251dabce4907b80cf999593d888c17
parentcf146d31e72467db55a97169563c813706cef681 (diff)
downloadcpython-48f3dcc93e57e75e43f9e1a82daa02d2c2f29ec8.zip
cpython-48f3dcc93e57e75e43f9e1a82daa02d2c2f29ec8.tar.gz
cpython-48f3dcc93e57e75e43f9e1a82daa02d2c2f29ec8.tar.bz2
- Changed shlex.split() method to have more useful and
meaningful parameters.
-rw-r--r--Doc/lib/libshlex.tex11
-rw-r--r--Lib/shlex.py8
-rw-r--r--Lib/test/test_shlex.py10
3 files changed, 13 insertions, 16 deletions
diff --git a/Doc/lib/libshlex.tex b/Doc/lib/libshlex.tex
index 9ebe16b..56125d3 100644
--- a/Doc/lib/libshlex.tex
+++ b/Doc/lib/libshlex.tex
@@ -25,12 +25,11 @@ Python applications) or for parsing quoted strings.
The \module{shlex} module defines the following functions:
-\begin{funcdesc}{split}{s\optional{, posix=\code{True}\optional{,
- spaces=\code{True}}}}
-Split the string \var{s} using shell-like syntax. If \var{posix} is
-\code{True}, operate in \POSIX{} mode. If \var{spaces} is \code{True}, it
-will only split words in whitespaces (setting the
-\member{whitespace_split} member of the \class{shlex} instance).
+\begin{funcdesc}{split}{s\optional{, comments=\code{False}}}
+Split the string \var{s} using shell-like syntax. If \var{comments} is
+\code{False}, the parsing of comments in the given string will be
+disabled (setting the \member{commenters} member of the \class{shlex}
+instance to the empty string). This function operates in \POSIX{} mode.
\versionadded{2.3}
\end{funcdesc}
diff --git a/Lib/shlex.py b/Lib/shlex.py
index dd10447..b302699 100644
--- a/Lib/shlex.py
+++ b/Lib/shlex.py
@@ -271,9 +271,11 @@ class shlex:
raise StopIteration
return token
-def split(s, posix=True, spaces=True):
- lex = shlex(s, posix=posix)
- lex.whitespace_split = spaces
+def split(s, comments=False):
+ lex = shlex(s, posix=True)
+ lex.whitespace_split = True
+ if not comments:
+ lex.commenters = ''
return list(lex)
if __name__ == '__main__':
diff --git a/Lib/test/test_shlex.py b/Lib/test/test_shlex.py
index ed0ab47..1678c7d 100644
--- a/Lib/test/test_shlex.py
+++ b/Lib/test/test_shlex.py
@@ -151,9 +151,9 @@ class ShlexTest(unittest.TestCase):
for item in self.posix_data:
item[0] = item[0].replace(r"\n", "\n")
- def splitTest(self, data, posix, spaces):
+ def splitTest(self, data, comments):
for i in range(len(data)):
- l = shlex.split(data[i][0], posix=posix, spaces=spaces)
+ l = shlex.split(data[i][0], comments=comments)
self.assertEqual(l, data[i][1:],
"%s: %s != %s" %
(data[i][0], l, data[i][1:]))
@@ -167,13 +167,9 @@ class ShlexTest(unittest.TestCase):
tok = lex.get_token()
return ret
- def testSplit(self):
- """Test data splitting with non-posix parser"""
- self.splitTest(self.data, posix=0, spaces=0)
-
def testSplitPosix(self):
"""Test data splitting with posix parser"""
- self.splitTest(self.posix_data, posix=1, spaces=1)
+ self.splitTest(self.posix_data, comments=True)
def testCompat(self):
"""Test compatibility interface"""