submitting to CS because of being asked nicely

git-svn-id: https://svn.php.net/repository/pear/packages/Spreadsheet_Excel_Writer/trunk@200858 c90b9560-bf6c-de11-be94-00142212c4b1
This commit is contained in:
Xavier Noguer Gallego 2005-11-19 13:35:14 +00:00
parent 2d27e61329
commit a695bee4ef
1 changed files with 23 additions and 32 deletions

View File

@ -538,61 +538,52 @@ class Spreadsheet_Excel_Writer_Parser extends PEAR
*/ */
function _convert($token) function _convert($token)
{ {
if (preg_match("/^\"[^\"]{0,255}\"$/", $token)) if (preg_match("/^\"[^\"]{0,255}\"$/", $token)) {
{
return $this->_convertString($token); return $this->_convertString($token);
}
elseif (is_numeric($token)) } elseif (is_numeric($token)) {
{
return $this->_convertNumber($token); return $this->_convertNumber($token);
}
// match references like A1 or $A$1 // match references like A1 or $A$1
elseif (preg_match('/^\$?([A-Ia-i]?[A-Za-z])\$?(\d+)$/',$token)) } elseif (preg_match('/^\$?([A-Ia-i]?[A-Za-z])\$?(\d+)$/',$token)) {
{
return $this->_convertRef2d($token); return $this->_convertRef2d($token);
}
// match external references like Sheet1!A1 or Sheet1:Sheet2!A1 // match external references like Sheet1!A1 or Sheet1:Sheet2!A1
elseif (preg_match("/^\w+(\:\w+)?\![A-Ia-i]?[A-Za-z](\d+)$/u",$token)) } elseif (preg_match("/^\w+(\:\w+)?\![A-Ia-i]?[A-Za-z](\d+)$/u",$token)) {
{
return $this->_convertRef3d($token); return $this->_convertRef3d($token);
}
// match external references like 'Sheet1'!A1 or 'Sheet1:Sheet2'!A1 // match external references like 'Sheet1'!A1 or 'Sheet1:Sheet2'!A1
elseif (preg_match("/^'[\w -]+(\:[\w -]+)?'\![A-Ia-i]?[A-Za-z](\d+)$/u",$token)) } elseif (preg_match("/^'[\w -]+(\:[\w -]+)?'\![A-Ia-i]?[A-Za-z](\d+)$/u",$token)) {
{
return $this->_convertRef3d($token); return $this->_convertRef3d($token);
}
// match ranges like A1:B2 // match ranges like A1:B2
elseif (preg_match("/^(\$)?[A-Ia-i]?[A-Za-z](\$)?(\d+)\:(\$)?[A-Ia-i]?[A-Za-z](\$)?(\d+)$/",$token)) } elseif (preg_match("/^(\$)?[A-Ia-i]?[A-Za-z](\$)?(\d+)\:(\$)?[A-Ia-i]?[A-Za-z](\$)?(\d+)$/",$token)) {
{
return $this->_convertRange2d($token); return $this->_convertRange2d($token);
}
// match ranges like A1..B2 // match ranges like A1..B2
elseif (preg_match("/^(\$)?[A-Ia-i]?[A-Za-z](\$)?(\d+)\.\.(\$)?[A-Ia-i]?[A-Za-z](\$)?(\d+)$/",$token)) } elseif (preg_match("/^(\$)?[A-Ia-i]?[A-Za-z](\$)?(\d+)\.\.(\$)?[A-Ia-i]?[A-Za-z](\$)?(\d+)$/",$token)) {
{
return $this->_convertRange2d($token); return $this->_convertRange2d($token);
}
// match external ranges like Sheet1!A1 or Sheet1:Sheet2!A1:B2 // match external ranges like Sheet1!A1 or Sheet1:Sheet2!A1:B2
elseif (preg_match("/^\w+(\:\w+)?\!([A-Ia-i]?[A-Za-z])?(\d+)\:([A-Ia-i]?[A-Za-z])?(\d+)$/u",$token)) } elseif (preg_match("/^\w+(\:\w+)?\!([A-Ia-i]?[A-Za-z])?(\d+)\:([A-Ia-i]?[A-Za-z])?(\d+)$/u",$token)) {
{
return $this->_convertRange3d($token); return $this->_convertRange3d($token);
}
// match external ranges like 'Sheet1'!A1 or 'Sheet1:Sheet2'!A1:B2 // match external ranges like 'Sheet1'!A1 or 'Sheet1:Sheet2'!A1:B2
elseif (preg_match("/^'[\w -]+(\:[\w -]+)?'\!([A-Ia-i]?[A-Za-z])?(\d+)\:([A-Ia-i]?[A-Za-z])?(\d+)$/u",$token)) } elseif (preg_match("/^'[\w -]+(\:[\w -]+)?'\!([A-Ia-i]?[A-Za-z])?(\d+)\:([A-Ia-i]?[A-Za-z])?(\d+)$/u",$token)) {
{
return $this->_convertRange3d($token); return $this->_convertRange3d($token);
}
elseif (isset($this->ptg[$token])) // operators (including parentheses) // operators (including parentheses)
{ } elseif (isset($this->ptg[$token])) {
return pack("C", $this->ptg[$token]); return pack("C", $this->ptg[$token]);
}
// commented so argument number can be processed correctly. See toReversePolish(). // commented so argument number can be processed correctly. See toReversePolish().
/*elseif (preg_match("/[A-Z0-9\xc0-\xdc\.]+/",$token)) /*elseif (preg_match("/[A-Z0-9\xc0-\xdc\.]+/",$token))
{ {
return($this->_convertFunction($token,$this->_func_args)); return($this->_convertFunction($token,$this->_func_args));
}*/ }*/
// if it's an argument, ignore the token (the argument remains) // if it's an argument, ignore the token (the argument remains)
elseif ($token == 'arg') } elseif ($token == 'arg') {
{
return ''; return '';
} }
// TODO: use real error codes // TODO: use real error codes