summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog1
-rw-r--r--app/Core/Filter/Lexer.php2
-rw-r--r--tests/units/Core/Filter/LexerTest.php44
3 files changed, 46 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index 3ea3f2c6..12754948 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -21,6 +21,7 @@ Bug fixes:
* Fixed broken CSV exports
* Fixed identical background color for LetterAvatar on 32bits platforms (Hash greater than PHP_MAX_INT)
+* Fixed lexer issue with non word characters
Version 1.0.30
--------------
diff --git a/app/Core/Filter/Lexer.php b/app/Core/Filter/Lexer.php
index fa5b8d2d..3ff57641 100644
--- a/app/Core/Filter/Lexer.php
+++ b/app/Core/Filter/Lexer.php
@@ -30,7 +30,7 @@ class Lexer
'/^([<=>]{1,2}\w+)/u' => 'T_STRING',
'/^([<=>]{1,2}".+")/' => 'T_STRING',
'/^("(.+)")/' => 'T_STRING',
- '/^(\w+)/u' => 'T_STRING',
+ '/^(\S+)/u' => 'T_STRING',
'/^(#\d+)/' => 'T_STRING',
);
diff --git a/tests/units/Core/Filter/LexerTest.php b/tests/units/Core/Filter/LexerTest.php
index b777531d..d57a7953 100644
--- a/tests/units/Core/Filter/LexerTest.php
+++ b/tests/units/Core/Filter/LexerTest.php
@@ -214,4 +214,48 @@ class LexerTest extends Base
$this->assertSame($expected, $lexer->tokenize('tag:"tag 1" tag:tag2'));
}
+
+ public function testTokenizeWithDash()
+ {
+ $lexer = new Lexer();
+ $lexer->addToken("/^(test:)/", 'T_TEST');
+
+ $expected = array(
+ 'T_TEST' => array('PO-123'),
+ );
+
+ $this->assertSame($expected, $lexer->tokenize('test:PO-123'));
+
+ $lexer = new Lexer();
+ $lexer->setDefaultToken('myDefaultToken');
+
+ $expected = array(
+ 'myDefaultToken' => array('PO-123'),
+ );
+
+ $this->assertSame($expected, $lexer->tokenize('PO-123'));
+ }
+
+ public function testTokenizeWithUnderscore()
+ {
+ $lexer = new Lexer();
+ $lexer->addToken("/^(test:)/", 'T_TEST');
+
+ $expected = array(
+ 'T_TEST' => array('PO_123'),
+ );
+
+ $this->assertSame($expected, $lexer->tokenize('test:PO_123'));
+
+ $lexer = new Lexer();
+ $lexer->addToken("/^(test:)/", 'T_TEST');
+ $lexer->setDefaultToken('myDefaultToken');
+
+ $expected = array(
+ 'T_TEST' => array('ABC-123'),
+ 'myDefaultToken' => array('PO_123'),
+ );
+
+ $this->assertSame($expected, $lexer->tokenize('test:ABC-123 PO_123'));
+ }
}