offlineimap rev 516
"Automatic Subversion Change Mailer" <[email protected]> Fri, 18 Jul 2003 22:00:30 -0500 (CDT)
| Newsgroups | gmane.mail.imap.offlineimap.subversion |
|---|---|
| Message-ID | <[email protected]> |
You are receiving this message because
all commits get sent to this address.
Author: jgoerzen
Date: 2003-07-18 22:00:22 -0500 (Fri, 18 Jul 2003)
New Revision: 516
Modified:
imaplib/head/imap2/parser/GrammarClass.py
imaplib/head/imap2/parser/grammar.g
imaplib/head/imap2/parser/grammar.py
imaplib/head/imap2/parser/grammarTest.py
Log:
Finally cleared up the quoted and literal processing problems.
Diff:
Modified: imaplib/head/imap2/parser/GrammarClass.py
==============================================================================
--- imaplib/head/imap2/parser/GrammarClass.py 2003-07-18 21:13:04 UTC (rev 515)
+++ imaplib/head/imap2/parser/GrammarClass.py 2003-07-19 03:00:22 UTC (rev 516)
@@ -23,7 +23,7 @@
from StringIO import StringIO
def parse(rule, text):
- P = grammar.IMAP(grammar.IMAPScanner(text))
+ P = grammar.IMAP(grammar.IMAP_YappsScanner(text))
savedstdout = sys.stdout
try:
try:
Modified: imaplib/head/imap2/parser/grammar.g
==============================================================================
--- imaplib/head/imap2/parser/grammar.g 2003-07-18 21:13:04 UTC (rev 515)
+++ imaplib/head/imap2/parser/grammar.g 2003-07-19 03:00:22 UTC (rev 516)
@@ -23,7 +23,7 @@
%%
-parser IMAP:
+parser IMAP_Yapps:
token END: "$"
token CHAR_EIGHT: r'[\x01-\xff]'
@@ -312,7 +312,7 @@
rule literal: r'\{' number r'\}' CRLF literal_load<<number>> {{ return literal_load }}
rule literal_load<<X>>: {{ if X == 0: return }}
{{ data = '' }}
- ( CHAR_EIGHT {{ data += CHAR_EIGHT; if len(data) == X): break }} )*
+ ( CHAR_EIGHT {{ data += CHAR_EIGHT }} {{ if (len(data) == X): break }} )*
{{ assert len(data) == X, "data len is %d, X is %d" % (len(data), X) }}
{{ return data }}
#rule literal_load<<X>>: {{ if X == 0: return '' }}
@@ -556,3 +556,15 @@
rule test_capability_data: capability_data END {{ return capability_data }}
rule test_nstring: nstring END {{ return nstring }}
+%%
+
+class IMAP(IMAP_Yapps):
+ def literal_load(self, X):
+ # This function is broken in Yapps' generation.
+ count = 0
+ data = ''
+ while count < X:
+ data += self._scan('CHAR_EIGHT')
+ count += 1
+ assert len(data) == X
+ return data
Modified: imaplib/head/imap2/parser/grammar.py
==============================================================================
--- imaplib/head/imap2/parser/grammar.py 2003-07-18 21:13:04 UTC (rev 515)
+++ imaplib/head/imap2/parser/grammar.py 2003-07-19 03:00:22 UTC (rev 516)
@@ -1,5 +1,5 @@
# Implementation of grammar from RFC3501
-# $Id: grammar.g 506 2003-07-17 16:33:45Z jgoerzen $
+# $Id: grammar.g 515 2003-07-17 22:12:41Z jgoerzen $
# COPYRIGHT #
# Copyright (C) 2003 John Goerzen
@@ -26,7 +26,7 @@
import re
from yappsrt import *
-class IMAPScanner(Scanner):
+class IMAP_YappsScanner(Scanner):
patterns = [
('":"', re.compile(':')),
("r'(?i)MIME'", re.compile('(?i)MIME')),
@@ -121,7 +121,7 @@
def __init__(self, str):
Scanner.__init__(self,None,[],str)
-class IMAP(Parser):
+class IMAP_Yapps(Parser):
def goal(self):
response = self.response()
END = self._scan('END')
@@ -699,7 +699,8 @@
data = ''
while self._peek('CHAR_EIGHT', 'SP', 'RPAREN', 'END', 'CRLF') == 'CHAR_EIGHT':
CHAR_EIGHT = self._scan('CHAR_EIGHT')
- data += CHAR_EIGHT; if len(data) == X): break
+ data += CHAR_EIGHT
+ if (len(data) == X): break
assert len(data) == X, "data len is %d, X is %d" % (len(data), X)
return data
@@ -1268,15 +1269,19 @@
def parse(rule, text):
- P = IMAP(IMAPScanner(text))
+ P = IMAP_Yapps(IMAP_YappsScanner(text))
return wrap_error_reporter(P, rule)
-if __name__=='__main__':
- from sys import argv, stdin
- if len(argv) >= 2:
- if len(argv) >= 3:
- f = open(argv[2],'r')
- else:
- f = stdin
- print parse(argv[1], f.read())
- else: print 'Args: <rule> [<filename>]'
+
+
+
+class IMAP(IMAP_Yapps):
+ def literal_load(self, X):
+ # This function is broken in Yapps' generation.
+ count = 0
+ data = ''
+ while count < X:
+ data += self._scan('CHAR_EIGHT')
+ count += 1
+ assert len(data) == X
+ return data
Modified: imaplib/head/imap2/parser/grammarTest.py
==============================================================================
--- imaplib/head/imap2/parser/grammarTest.py 2003-07-18 21:13:04 UTC (rev 515)
+++ imaplib/head/imap2/parser/grammarTest.py 2003-07-19 03:00:22 UTC (rev 516)
@@ -77,7 +77,7 @@
("{5}\r\ntest1", "test1"),
("{7}\r\nTest\r\n2", "Test\r\n2"),
("{7}\r\nTest3\r\n", "Test3\r\n"),
- ("{6}\r\nTest4\n1", "Test4\n1"),
+ ("{6}\r\nTest\n1", "Test\n1"),
('""', ""),
("{0}\r\n", ""),
(r'"Quoted with \"Quotes\""', 'Quoted with "Quotes"'),