actually tokenize the !~ operator
authorTony Cook <tony@develop-help.com>
Sat, 2 Mar 2013 00:30:02 +0000 (11:30 +1100)
committerTony Cook <tony@develop-help.com>
Sat, 2 Mar 2013 00:30:02 +0000 (11:30 +1100)
site/cgi-bin/modules/Squirrel/Template/Expr.pm
t/020-templater/040-original.t

index 3a1f378bd6cc5fa84f4e60a3c8ff933b0e8bfc0b..1df96528873bef8134a46227fd79a9f07c8d0319 100644 (file)
@@ -1,7 +1,7 @@
 package Squirrel::Template::Expr;
 use strict;
 
-our $VERSION = "1.010";
+our $VERSION = "1.011";
 
 package Squirrel::Template::Expr::Eval;
 use Scalar::Util ();
@@ -663,7 +663,7 @@ sub get {
         $self->[TEXT] =~ s!\A(\s*/((?:[^/\\]|\\.)+)/([ismx]*\s)?\s*)!!) {
     push @$queue, [ re => $1, $2, $3 || "" ];
   }
-  elsif ($self->[TEXT] =~ s/\A(\s*(not\b|eq\b|ne\b|le\b|lt\b|ge\b|gt\b|<=|>=|[!=]\=|\=\~|[_\?:,\[\]\(\)<>=!.*\/+\{\};\$-])\s*)//) {
+  elsif ($self->[TEXT] =~ s/\A(\s*(not\b|eq\b|ne\b|le\b|lt\b|ge\b|gt\b|<=|>=|[!=]\=|\=\~|!~|[_\?:,\[\]\(\)<>=!.*\/+\{\};\$-])\s*)//) {
     push @$queue, [ "op$2" => $1 ];
   }
   elsif ($self->[TEXT] =~ s/\A(\s*([A-Za-z_][a-zA-Z_0-9]*)\s*)//) {
index 4869b62f203da40ad04292e22c93655d3967eacc..ac984fe72c5b4bebb15634fffe66b69336c79dcc 100644 (file)
@@ -1,7 +1,7 @@
 #!perl -w
 # Basic tests for Squirrel::Template
 use strict;
-use Test::More tests => 168;
+use Test::More tests => 170;
 use HTML::Entities;
 
 sub template_test($$$$;$$);
@@ -467,7 +467,9 @@ OUT
      [ 'not 1 or 1', 1 ],
      [ 'not 1 and 1', "" ],
      [ '"xabcy" =~ /abc/', 1 ],
+     [ '"xabcy" !~ /abc/', "" ],
      [ '[ "abc" =~ /(.)(.)/ ][1]', "b" ],
+     [ '"xabcy" !~ /abg/', 1 ],
      [ '{ "a": 11, "b": 12, "c": 20 }["b"]', 12 ],
      [ '[ 1, 2, 3 ][1]', 2 ],
      [ 'testclass.foo', "[TestClass.foo]" ],