diff options
| author | Kenneth Reitz <me@kennethreitz.com> | 2011-03-23 01:59:19 -0400 |
|---|---|---|
| committer | Kenneth Reitz <me@kennethreitz.com> | 2011-03-23 01:59:19 -0400 |
| commit | b113f49ce6aa4dec565b5c0ee30074a9ecdaf3f4 (patch) | |
| tree | fdea5cad26524d5c59ef54c41499fdcba64a40d3 /tablib/packages/xlwt/ExcelFormula.py | |
| parent | 1429b9f8c4324df31a52342e52c55d9794fe02dc (diff) | |
| download | tablib-b113f49ce6aa4dec565b5c0ee30074a9ecdaf3f4.tar.gz | |
python3 AND python2 packages.
Diffstat (limited to 'tablib/packages/xlwt/ExcelFormula.py')
| -rw-r--r-- | tablib/packages/xlwt/ExcelFormula.py | 84 |
1 files changed, 43 insertions, 41 deletions
diff --git a/tablib/packages/xlwt/ExcelFormula.py b/tablib/packages/xlwt/ExcelFormula.py index c72cb86..698d970 100644 --- a/tablib/packages/xlwt/ExcelFormula.py +++ b/tablib/packages/xlwt/ExcelFormula.py @@ -1,41 +1,43 @@ -from . import ExcelFormulaParser, ExcelFormulaLexer
-import struct
-from .antlr import ANTLRException
-
-
-class Formula(object):
- __slots__ = ["__init__", "__s", "__parser", "__sheet_refs", "__xcall_refs"]
-
-
- def __init__(self, s):
- try:
- self.__s = s
- lexer = ExcelFormulaLexer.Lexer(s)
- self.__parser = ExcelFormulaParser.Parser(lexer)
- self.__parser.formula()
- self.__sheet_refs = self.__parser.sheet_references
- self.__xcall_refs = self.__parser.xcall_references
- except ANTLRException as e:
- # print e
- raise ExcelFormulaParser.FormulaParseException("can't parse formula " + s)
-
- def get_references(self):
- return self.__sheet_refs, self.__xcall_refs
-
- def patch_references(self, patches):
- for offset, idx in patches:
- self.__parser.rpn = self.__parser.rpn[:offset] + struct.pack('<H', idx) + self.__parser.rpn[offset+2:]
-
- def text(self):
- return self.__s
-
- def rpn(self):
- '''
- Offset Size Contents
- 0 2 Size of the following formula data (sz)
- 2 sz Formula data (RPN token array)
- [2+sz] var. (optional) Additional data for specific tokens
-
- '''
- return struct.pack("<H", len(self.__parser.rpn)) + self.__parser.rpn
-
+# -*- coding: windows-1252 -*- + +import ExcelFormulaParser, ExcelFormulaLexer +import struct +from antlr import ANTLRException + + +class Formula(object): + __slots__ = ["__init__", "__s", "__parser", "__sheet_refs", "__xcall_refs"] + + + def __init__(self, s): + try: + self.__s = s + lexer = ExcelFormulaLexer.Lexer(s) + self.__parser = ExcelFormulaParser.Parser(lexer) + self.__parser.formula() + self.__sheet_refs = self.__parser.sheet_references + self.__xcall_refs = self.__parser.xcall_references + except ANTLRException, e: + # print e + raise ExcelFormulaParser.FormulaParseException, "can't parse formula " + s + + def get_references(self): + return self.__sheet_refs, self.__xcall_refs + + def patch_references(self, patches): + for offset, idx in patches: + self.__parser.rpn = self.__parser.rpn[:offset] + struct.pack('<H', idx) + self.__parser.rpn[offset+2:] + + def text(self): + return self.__s + + def rpn(self): + ''' + Offset Size Contents + 0 2 Size of the following formula data (sz) + 2 sz Formula data (RPN token array) + [2+sz] var. (optional) Additional data for specific tokens + + ''' + return struct.pack("<H", len(self.__parser.rpn)) + self.__parser.rpn + |
