Skip to content

Commit a3bf746

Browse files
committed
Fix sass operation overloads for inverted operands
1 parent 9b50135 commit a3bf746

File tree

1 file changed

+23
-17
lines changed

1 file changed

+23
-17
lines changed

lib/CSS/Sass/Value.pm

Lines changed: 23 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -47,30 +47,36 @@ use CSS::Sass qw(sass_stringify);
4747
################################################################################
4848
use overload '""' => 'stringify'; # allow further overloading
4949
################################################################################
50-
use overload '&' => sub { sass_operation(CSS::Sass::AND, $_[0], $_[1])->value ? 1 : 0; };
51-
use overload '|' => sub { sass_operation(CSS::Sass::OR, $_[0], $_[1])->value ? 1 : 0; };
5250
use overload 'bool' => sub { sass_operation(CSS::Sass::OR, $_[0], undef)->value ? 1 : 0; };
5351
################################################################################
52+
use overload '&' => sub { sass_operation(CSS::Sass::AND, ($_[2] ? $_[1] : $_[0]), ($_[2] ? $_[0] : $_[1]))->value ? 1 : 0; };
53+
use overload '|' => sub { sass_operation(CSS::Sass::OR, ($_[2] ? $_[1] : $_[0]), ($_[2] ? $_[0] : $_[1]))->value ? 1 : 0; };
54+
################################################################################
5455
use overload 'eq' => sub { sass_stringify($_[0])->value eq sass_stringify($_[1])->value ? 1 : 0; };
5556
use overload 'ne' => sub { sass_stringify($_[0])->value ne sass_stringify($_[1])->value ? 1 : 0; };
5657
use overload '==' => sub { sass_operation(CSS::Sass::EQ, $_[0], $_[1])->value ? 1 : 0; };
5758
use overload '!=' => sub { sass_operation(CSS::Sass::NEQ, $_[0], $_[1])->value ? 1 : 0; };
5859
################################################################################
59-
use overload 'lt' => sub { sass_stringify($_[0])->value lt sass_stringify($_[1])->value ? 1 : 0; };
60-
use overload 'le' => sub { sass_stringify($_[0])->value le sass_stringify($_[1])->value ? 1 : 0; };
61-
use overload 'gt' => sub { sass_stringify($_[0])->value gt sass_stringify($_[1])->value ? 1 : 0; };
62-
use overload 'ge' => sub { sass_stringify($_[0])->value ge sass_stringify($_[1])->value ? 1 : 0; };
63-
################################################################################
64-
use overload '<' => sub { sass_operation(CSS::Sass::LT , $_[0], $_[1])->value ? 1 : 0; };
65-
use overload '<=' => sub { sass_operation(CSS::Sass::LTE, $_[0], $_[1])->value ? 1 : 0; };
66-
use overload '>' => sub { sass_operation(CSS::Sass::GT , $_[0], $_[1])->value ? 1 : 0; };
67-
use overload '>=' => sub { sass_operation(CSS::Sass::GTE, $_[0], $_[1])->value ? 1 : 0; };
68-
################################################################################
69-
use overload '+' => sub { sass_operation(CSS::Sass::ADD, $_[0], $_[1]); };
70-
use overload '-' => sub { sass_operation(CSS::Sass::SUB, $_[0], $_[1]); };
71-
use overload '*' => sub { sass_operation(CSS::Sass::MUL, $_[0], $_[1]); };
72-
use overload '/' => sub { sass_operation(CSS::Sass::DIV, $_[0], $_[1]); };
73-
use overload '%' => sub { sass_operation(CSS::Sass::MOD, $_[0], $_[1]); };
60+
use overload 'eq' => sub { sass_stringify($_[2] ? $_[1] : $_[0])->value eq sass_stringify($_[2] ? $_[0] : $_[1])->value ? 1 : 0; };
61+
use overload 'ne' => sub { sass_stringify($_[2] ? $_[1] : $_[0])->value ne sass_stringify($_[2] ? $_[0] : $_[1])->value ? 1 : 0; };
62+
use overload '==' => sub { sass_operation(CSS::Sass::EQ, ($_[2] ? $_[1] : $_[0]), ($_[2] ? $_[0] : $_[1]))->value ? 1 : 0; };
63+
use overload '!=' => sub { sass_operation(CSS::Sass::NEQ, ($_[2] ? $_[1] : $_[0]), ($_[2] ? $_[0] : $_[1]))->value ? 1 : 0; };
64+
################################################################################
65+
use overload 'lt' => sub { sass_stringify($_[2] ? $_[1] : $_[0])->value lt sass_stringify($_[2] ? $_[0] : $_[1])->value ? 1 : 0; };
66+
use overload 'le' => sub { sass_stringify($_[2] ? $_[1] : $_[0])->value le sass_stringify($_[2] ? $_[0] : $_[1])->value ? 1 : 0; };
67+
use overload 'gt' => sub { sass_stringify($_[2] ? $_[1] : $_[0])->value gt sass_stringify($_[2] ? $_[0] : $_[1])->value ? 1 : 0; };
68+
use overload 'ge' => sub { sass_stringify($_[2] ? $_[1] : $_[0])->value ge sass_stringify($_[2] ? $_[0] : $_[1])->value ? 1 : 0; };
69+
################################################################################
70+
use overload '<' => sub { sass_operation(CSS::Sass::LT , ($_[2] ? $_[1] : $_[0]), ($_[2] ? $_[0] : $_[1]))->value ? 1 : 0; };
71+
use overload '<=' => sub { sass_operation(CSS::Sass::LTE, ($_[2] ? $_[1] : $_[0]), ($_[2] ? $_[0] : $_[1]))->value ? 1 : 0; };
72+
use overload '>' => sub { sass_operation(CSS::Sass::GT , ($_[2] ? $_[1] : $_[0]), ($_[2] ? $_[0] : $_[1]))->value ? 1 : 0; };
73+
use overload '>=' => sub { sass_operation(CSS::Sass::GTE, ($_[2] ? $_[1] : $_[0]), ($_[2] ? $_[0] : $_[1]))->value ? 1 : 0; };
74+
################################################################################
75+
use overload '+' => sub { sass_operation(CSS::Sass::ADD, ($_[2] ? $_[1] : $_[0]), ($_[2] ? $_[0] : $_[1])); };
76+
use overload '-' => sub { sass_operation(CSS::Sass::SUB, ($_[2] ? $_[1] : $_[0]), ($_[2] ? $_[0] : $_[1])); };
77+
use overload '*' => sub { sass_operation(CSS::Sass::MUL, ($_[2] ? $_[1] : $_[0]), ($_[2] ? $_[0] : $_[1])); };
78+
use overload '/' => sub { sass_operation(CSS::Sass::DIV, ($_[2] ? $_[1] : $_[0]), ($_[2] ? $_[0] : $_[1])); };
79+
use overload '%' => sub { sass_operation(CSS::Sass::MOD, ($_[2] ? $_[1] : $_[0]), ($_[2] ? $_[0] : $_[1])); };
7480
################################################################################
7581

7682
sub new { import_sv($_[1]) }

0 commit comments

Comments
 (0)