summaryrefslogtreecommitdiff
path: root/vendor/leafo/lessphp/tests/sort.php
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/leafo/lessphp/tests/sort.php')
-rw-r--r--vendor/leafo/lessphp/tests/sort.php57
1 files changed, 57 insertions, 0 deletions
diff --git a/vendor/leafo/lessphp/tests/sort.php b/vendor/leafo/lessphp/tests/sort.php
new file mode 100644
index 00000000..70b907ea
--- /dev/null
+++ b/vendor/leafo/lessphp/tests/sort.php
@@ -0,0 +1,57 @@
+<?php
+error_reporting(E_ALL);
+
+require realpath(dirname(__FILE__)).'/../lessc.inc.php';
+
+// sorts the selectors in stylesheet in order to normalize it for comparison
+
+$exe = array_shift($argv); // remove filename
+
+if (!$fname = array_shift($argv)) {
+ $fname = "php://stdin";
+}
+
+class lesscNormalized extends lessc {
+ public $numberPrecision = 3;
+
+ public function compileValue($value) {
+ if ($value[0] == "raw_color") {
+ $value = $this->coerceColor($value);
+ }
+
+ return parent::compileValue($value);
+ }
+}
+
+class SortingFormatter extends lessc_formatter_lessjs {
+ function sortKey($block) {
+ if (!isset($block->sortKey)) {
+ sort($block->selectors, SORT_STRING);
+ $block->sortKey = implode(",", $block->selectors);
+ }
+
+ return $block->sortKey;
+ }
+
+ function sortBlock($block) {
+ usort($block->children, function($a, $b) {
+ $sort = strcmp($this->sortKey($a), $this->sortKey($b));
+ if ($sort == 0) {
+ // TODO
+ }
+ return $sort;
+ });
+
+ }
+
+ function block($block) {
+ $this->sortBlock($block);
+ return parent::block($block);
+ }
+
+}
+
+$less = new lesscNormalized();
+$less->setFormatter(new SortingFormatter);
+echo $less->parse(file_get_contents($fname));
+