Edit File by line

Deprecated: str_replace(): Passing null to parameter #2 ($replace) of type array|string is deprecated in /home/sportsfever/public_html/filemanger/function.php on line 93

Warning: Undefined array key "page_file_edit_line" in /home/sportsfever/public_html/filemanger/edit_text_line.php on line 32
/home/sportsfe.../httpdocs/wp-conte.../plugins/smart-sl.../Nextend/Framewor.../Asset/Css/Less
File: LessCompiler.php
$rgba[1],
[1500] Fix | Delete
$rgba[2],
[1501] Fix | Delete
$rgba[3]
[1502] Fix | Delete
);
[1503] Fix | Delete
[1504] Fix | Delete
return array(
[1505] Fix | Delete
'color',
[1506] Fix | Delete
$rgba[0],
[1507] Fix | Delete
$rgba[1],
[1508] Fix | Delete
$rgba[2]
[1509] Fix | Delete
);
[1510] Fix | Delete
}
[1511] Fix | Delete
[1512] Fix | Delete
return null;
[1513] Fix | Delete
}
[1514] Fix | Delete
}
[1515] Fix | Delete
[1516] Fix | Delete
// make something string like into a string
[1517] Fix | Delete
protected function coerceString($value) {
[1518] Fix | Delete
switch ($value[0]) {
[1519] Fix | Delete
case "string":
[1520] Fix | Delete
return $value;
[1521] Fix | Delete
case "keyword":
[1522] Fix | Delete
return array(
[1523] Fix | Delete
"string",
[1524] Fix | Delete
"",
[1525] Fix | Delete
array($value[1])
[1526] Fix | Delete
);
[1527] Fix | Delete
}
[1528] Fix | Delete
[1529] Fix | Delete
return null;
[1530] Fix | Delete
}
[1531] Fix | Delete
[1532] Fix | Delete
// turn list of length 1 into value type
[1533] Fix | Delete
protected function flattenList($value) {
[1534] Fix | Delete
if ($value[0] == "list" && count($value[2]) == 1) {
[1535] Fix | Delete
return $this->flattenList($value[2][0]);
[1536] Fix | Delete
}
[1537] Fix | Delete
[1538] Fix | Delete
return $value;
[1539] Fix | Delete
}
[1540] Fix | Delete
[1541] Fix | Delete
protected function toBool($a) {
[1542] Fix | Delete
if ($a) return self::$TRUE; else return self::$FALSE;
[1543] Fix | Delete
}
[1544] Fix | Delete
[1545] Fix | Delete
// evaluate an expression
[1546] Fix | Delete
protected function evaluate($exp) {
[1547] Fix | Delete
list(, $op, $left, $right, $whiteBefore, $whiteAfter) = $exp;
[1548] Fix | Delete
[1549] Fix | Delete
$left = $this->reduce($left, true);
[1550] Fix | Delete
$right = $this->reduce($right, true);
[1551] Fix | Delete
[1552] Fix | Delete
if ($leftColor = $this->coerceColor($left)) {
[1553] Fix | Delete
$left = $leftColor;
[1554] Fix | Delete
}
[1555] Fix | Delete
[1556] Fix | Delete
if ($rightColor = $this->coerceColor($right)) {
[1557] Fix | Delete
$right = $rightColor;
[1558] Fix | Delete
}
[1559] Fix | Delete
[1560] Fix | Delete
$ltype = $left[0];
[1561] Fix | Delete
$rtype = $right[0];
[1562] Fix | Delete
[1563] Fix | Delete
// operators that work on all types
[1564] Fix | Delete
if ($op == "and") {
[1565] Fix | Delete
return $this->toBool($left == self::$TRUE && $right == self::$TRUE);
[1566] Fix | Delete
}
[1567] Fix | Delete
[1568] Fix | Delete
if ($op == "=") {
[1569] Fix | Delete
return $this->toBool($this->eq($left, $right));
[1570] Fix | Delete
}
[1571] Fix | Delete
[1572] Fix | Delete
if ($op == "+" && !is_null($str = $this->stringConcatenate($left, $right))) {
[1573] Fix | Delete
return $str;
[1574] Fix | Delete
}
[1575] Fix | Delete
[1576] Fix | Delete
// type based operators
[1577] Fix | Delete
$fname = "op_{$ltype}_{$rtype}";
[1578] Fix | Delete
if (is_callable(array(
[1579] Fix | Delete
$this,
[1580] Fix | Delete
$fname
[1581] Fix | Delete
))) {
[1582] Fix | Delete
$out = $this->$fname($op, $left, $right);
[1583] Fix | Delete
if (!is_null($out)) return $out;
[1584] Fix | Delete
}
[1585] Fix | Delete
[1586] Fix | Delete
// make the expression look it did before being parsed
[1587] Fix | Delete
$paddedOp = $op;
[1588] Fix | Delete
if ($whiteBefore) $paddedOp = " " . $paddedOp;
[1589] Fix | Delete
if ($whiteAfter) $paddedOp .= " ";
[1590] Fix | Delete
[1591] Fix | Delete
return array(
[1592] Fix | Delete
"string",
[1593] Fix | Delete
"",
[1594] Fix | Delete
array(
[1595] Fix | Delete
$left,
[1596] Fix | Delete
$paddedOp,
[1597] Fix | Delete
$right
[1598] Fix | Delete
)
[1599] Fix | Delete
);
[1600] Fix | Delete
}
[1601] Fix | Delete
[1602] Fix | Delete
protected function stringConcatenate($left, $right) {
[1603] Fix | Delete
if ($strLeft = $this->coerceString($left)) {
[1604] Fix | Delete
if ($right[0] == "string") {
[1605] Fix | Delete
$right[1] = "";
[1606] Fix | Delete
}
[1607] Fix | Delete
$strLeft[2][] = $right;
[1608] Fix | Delete
[1609] Fix | Delete
return $strLeft;
[1610] Fix | Delete
}
[1611] Fix | Delete
[1612] Fix | Delete
if ($strRight = $this->coerceString($right)) {
[1613] Fix | Delete
array_unshift($strRight[2], $left);
[1614] Fix | Delete
[1615] Fix | Delete
return $strRight;
[1616] Fix | Delete
}
[1617] Fix | Delete
}
[1618] Fix | Delete
[1619] Fix | Delete
[1620] Fix | Delete
// make sure a color's components don't go out of bounds
[1621] Fix | Delete
protected function fixColor($c) {
[1622] Fix | Delete
foreach (range(1, 3) as $i) {
[1623] Fix | Delete
if ($c[$i] < 0) $c[$i] = 0;
[1624] Fix | Delete
if ($c[$i] > 255) $c[$i] = 255;
[1625] Fix | Delete
}
[1626] Fix | Delete
[1627] Fix | Delete
return $c;
[1628] Fix | Delete
}
[1629] Fix | Delete
[1630] Fix | Delete
protected function op_number_color($op, $lft, $rgt) {
[1631] Fix | Delete
if ($op == '+' || $op == '*') {
[1632] Fix | Delete
return $this->op_color_number($op, $rgt, $lft);
[1633] Fix | Delete
}
[1634] Fix | Delete
}
[1635] Fix | Delete
[1636] Fix | Delete
protected function op_color_number($op, $lft, $rgt) {
[1637] Fix | Delete
if ($rgt[0] == '%') $rgt[1] /= 100;
[1638] Fix | Delete
[1639] Fix | Delete
return $this->op_color_color($op, $lft, array_fill(1, count($lft) - 1, $rgt[1]));
[1640] Fix | Delete
}
[1641] Fix | Delete
[1642] Fix | Delete
protected function op_color_color($op, $left, $right) {
[1643] Fix | Delete
$out = array('color');
[1644] Fix | Delete
$max = count($left) > count($right) ? count($left) : count($right);
[1645] Fix | Delete
foreach (range(1, $max - 1) as $i) {
[1646] Fix | Delete
$lval = isset($left[$i]) ? $left[$i] : 0;
[1647] Fix | Delete
$rval = isset($right[$i]) ? $right[$i] : 0;
[1648] Fix | Delete
switch ($op) {
[1649] Fix | Delete
case '+':
[1650] Fix | Delete
$out[] = $lval + $rval;
[1651] Fix | Delete
break;
[1652] Fix | Delete
case '-':
[1653] Fix | Delete
$out[] = $lval - $rval;
[1654] Fix | Delete
break;
[1655] Fix | Delete
case '*':
[1656] Fix | Delete
$out[] = $lval * $rval;
[1657] Fix | Delete
break;
[1658] Fix | Delete
case '%':
[1659] Fix | Delete
$out[] = $lval % $rval;
[1660] Fix | Delete
break;
[1661] Fix | Delete
case '/':
[1662] Fix | Delete
if ($rval == 0) $this->throwError("evaluate error: can't divide by zero");
[1663] Fix | Delete
$out[] = $lval / $rval;
[1664] Fix | Delete
break;
[1665] Fix | Delete
default:
[1666] Fix | Delete
$this->throwError('evaluate error: color op number failed on op ' . $op);
[1667] Fix | Delete
}
[1668] Fix | Delete
}
[1669] Fix | Delete
[1670] Fix | Delete
return $this->fixColor($out);
[1671] Fix | Delete
}
[1672] Fix | Delete
[1673] Fix | Delete
function lib_red($color) {
[1674] Fix | Delete
$color = $this->coerceColor($color);
[1675] Fix | Delete
if (is_null($color)) {
[1676] Fix | Delete
$this->throwError('color expected for red()');
[1677] Fix | Delete
}
[1678] Fix | Delete
[1679] Fix | Delete
return $color[1];
[1680] Fix | Delete
}
[1681] Fix | Delete
[1682] Fix | Delete
function lib_green($color) {
[1683] Fix | Delete
$color = $this->coerceColor($color);
[1684] Fix | Delete
if (is_null($color)) {
[1685] Fix | Delete
$this->throwError('color expected for green()');
[1686] Fix | Delete
}
[1687] Fix | Delete
[1688] Fix | Delete
return $color[2];
[1689] Fix | Delete
}
[1690] Fix | Delete
[1691] Fix | Delete
function lib_blue($color) {
[1692] Fix | Delete
$color = $this->coerceColor($color);
[1693] Fix | Delete
if (is_null($color)) {
[1694] Fix | Delete
$this->throwError('color expected for blue()');
[1695] Fix | Delete
}
[1696] Fix | Delete
[1697] Fix | Delete
return $color[3];
[1698] Fix | Delete
}
[1699] Fix | Delete
[1700] Fix | Delete
[1701] Fix | Delete
// operator on two numbers
[1702] Fix | Delete
protected function op_number_number($op, $left, $right) {
[1703] Fix | Delete
$unit = empty($left[2]) ? $right[2] : $left[2];
[1704] Fix | Delete
[1705] Fix | Delete
$value = 0;
[1706] Fix | Delete
switch ($op) {
[1707] Fix | Delete
case '+':
[1708] Fix | Delete
$value = $left[1] + $right[1];
[1709] Fix | Delete
break;
[1710] Fix | Delete
case '*':
[1711] Fix | Delete
$value = $left[1] * $right[1];
[1712] Fix | Delete
break;
[1713] Fix | Delete
case '-':
[1714] Fix | Delete
$value = $left[1] - $right[1];
[1715] Fix | Delete
break;
[1716] Fix | Delete
case '%':
[1717] Fix | Delete
$value = $left[1] % $right[1];
[1718] Fix | Delete
break;
[1719] Fix | Delete
case '/':
[1720] Fix | Delete
if ($right[1] == 0) $this->throwError('parse error: divide by zero');
[1721] Fix | Delete
$value = $left[1] / $right[1];
[1722] Fix | Delete
break;
[1723] Fix | Delete
case '<':
[1724] Fix | Delete
return $this->toBool($left[1] < $right[1]);
[1725] Fix | Delete
case '>':
[1726] Fix | Delete
return $this->toBool($left[1] > $right[1]);
[1727] Fix | Delete
case '>=':
[1728] Fix | Delete
return $this->toBool($left[1] >= $right[1]);
[1729] Fix | Delete
case '=<':
[1730] Fix | Delete
return $this->toBool($left[1] <= $right[1]);
[1731] Fix | Delete
default:
[1732] Fix | Delete
$this->throwError('parse error: unknown number operator: ' . $op);
[1733] Fix | Delete
}
[1734] Fix | Delete
[1735] Fix | Delete
return array(
[1736] Fix | Delete
"number",
[1737] Fix | Delete
$value,
[1738] Fix | Delete
$unit
[1739] Fix | Delete
);
[1740] Fix | Delete
}
[1741] Fix | Delete
[1742] Fix | Delete
[1743] Fix | Delete
/* environment functions */
[1744] Fix | Delete
[1745] Fix | Delete
protected function makeOutputBlock($type, $selectors = null) {
[1746] Fix | Delete
$b = new stdClass;
[1747] Fix | Delete
$b->lines = array();
[1748] Fix | Delete
$b->children = array();
[1749] Fix | Delete
$b->selectors = $selectors;
[1750] Fix | Delete
$b->type = $type;
[1751] Fix | Delete
$b->parent = $this->scope;
[1752] Fix | Delete
[1753] Fix | Delete
return $b;
[1754] Fix | Delete
}
[1755] Fix | Delete
[1756] Fix | Delete
// the state of execution
[1757] Fix | Delete
protected function pushEnv($block = null) {
[1758] Fix | Delete
$e = new stdclass;
[1759] Fix | Delete
$e->parent = $this->env;
[1760] Fix | Delete
$e->store = array();
[1761] Fix | Delete
$e->block = $block;
[1762] Fix | Delete
[1763] Fix | Delete
$this->env = $e;
[1764] Fix | Delete
[1765] Fix | Delete
return $e;
[1766] Fix | Delete
}
[1767] Fix | Delete
[1768] Fix | Delete
// pop something off the stack
[1769] Fix | Delete
protected function popEnv() {
[1770] Fix | Delete
$old = $this->env;
[1771] Fix | Delete
$this->env = $this->env->parent;
[1772] Fix | Delete
[1773] Fix | Delete
return $old;
[1774] Fix | Delete
}
[1775] Fix | Delete
[1776] Fix | Delete
// set something in the current env
[1777] Fix | Delete
protected function set($name, $value) {
[1778] Fix | Delete
$this->env->store[$name] = $value;
[1779] Fix | Delete
}
[1780] Fix | Delete
[1781] Fix | Delete
[1782] Fix | Delete
// get the highest occurrence entry for a name
[1783] Fix | Delete
protected function get($name, $default = null) {
[1784] Fix | Delete
$current = $this->env;
[1785] Fix | Delete
[1786] Fix | Delete
$isArguments = $name == $this->vPrefix . 'arguments';
[1787] Fix | Delete
while ($current) {
[1788] Fix | Delete
if ($isArguments && isset($current->arguments)) {
[1789] Fix | Delete
return array(
[1790] Fix | Delete
'list',
[1791] Fix | Delete
' ',
[1792] Fix | Delete
$current->arguments
[1793] Fix | Delete
);
[1794] Fix | Delete
}
[1795] Fix | Delete
[1796] Fix | Delete
if (isset($current->store[$name])) return $current->store[$name]; else {
[1797] Fix | Delete
$current = isset($current->storeParent) ? $current->storeParent : $current->parent;
[1798] Fix | Delete
}
[1799] Fix | Delete
}
[1800] Fix | Delete
[1801] Fix | Delete
return $default;
[1802] Fix | Delete
}
[1803] Fix | Delete
[1804] Fix | Delete
// inject array of unparsed strings into environment as variables
[1805] Fix | Delete
protected function injectVariables($args) {
[1806] Fix | Delete
$this->pushEnv();
[1807] Fix | Delete
$parser = new LessParser($this, __METHOD__);
[1808] Fix | Delete
foreach ($args as $name => $strValue) {
[1809] Fix | Delete
if ($name[0] != '@') $name = '@' . $name;
[1810] Fix | Delete
$parser->count = 0;
[1811] Fix | Delete
$parser->buffer = (string)$strValue;
[1812] Fix | Delete
if (!$parser->propertyValue($value)) {
[1813] Fix | Delete
throw new Exception("failed to parse passed in variable $name: $strValue");
[1814] Fix | Delete
}
[1815] Fix | Delete
[1816] Fix | Delete
$this->set($name, $value);
[1817] Fix | Delete
}
[1818] Fix | Delete
}
[1819] Fix | Delete
[1820] Fix | Delete
/**
[1821] Fix | Delete
* Initialize any static state, can initialize parser for a file
[1822] Fix | Delete
* $opts isn't used yet
[1823] Fix | Delete
*/
[1824] Fix | Delete
public function __construct($fname = null) {
[1825] Fix | Delete
if ($fname !== null) {
[1826] Fix | Delete
// used for deprecated parse method
[1827] Fix | Delete
$this->_parseFile = $fname;
[1828] Fix | Delete
}
[1829] Fix | Delete
}
[1830] Fix | Delete
[1831] Fix | Delete
public function compile($string, $name = null) {
[1832] Fix | Delete
$locale = setlocale(LC_NUMERIC, 0);
[1833] Fix | Delete
setlocale(LC_NUMERIC, "C");
[1834] Fix | Delete
[1835] Fix | Delete
$this->parser = $this->makeParser($name);
[1836] Fix | Delete
$root = $this->parser->parse($string);
[1837] Fix | Delete
[1838] Fix | Delete
$this->env = null;
[1839] Fix | Delete
$this->scope = null;
[1840] Fix | Delete
[1841] Fix | Delete
$this->formatter = $this->newFormatter();
[1842] Fix | Delete
[1843] Fix | Delete
if (!empty($this->registeredVars)) {
[1844] Fix | Delete
$this->injectVariables($this->registeredVars);
[1845] Fix | Delete
}
[1846] Fix | Delete
[1847] Fix | Delete
$this->sourceParser = $this->parser; // used for error messages
[1848] Fix | Delete
$this->compileBlock($root);
[1849] Fix | Delete
[1850] Fix | Delete
$out = $this->formatter->block($this->scope);
[1851] Fix | Delete
[1852] Fix | Delete
setlocale(LC_NUMERIC, $locale);
[1853] Fix | Delete
[1854] Fix | Delete
return $out;
[1855] Fix | Delete
}
[1856] Fix | Delete
[1857] Fix | Delete
public function compileFile($fname, $outFname = null) {
[1858] Fix | Delete
if (!is_readable($fname)) {
[1859] Fix | Delete
throw new Exception('load error: failed to find ' . $fname);
[1860] Fix | Delete
}
[1861] Fix | Delete
[1862] Fix | Delete
$pi = pathinfo($fname);
[1863] Fix | Delete
[1864] Fix | Delete
$oldImport = $this->importDir;
[1865] Fix | Delete
[1866] Fix | Delete
$this->importDir = (array)$this->importDir;
[1867] Fix | Delete
$this->importDir[] = $pi['dirname'] . '/';
[1868] Fix | Delete
[1869] Fix | Delete
$this->allParsedFiles = array();
[1870] Fix | Delete
$this->addParsedFile($fname);
[1871] Fix | Delete
[1872] Fix | Delete
$out = $this->compile(file_get_contents($fname), $fname);
[1873] Fix | Delete
[1874] Fix | Delete
$this->importDir = $oldImport;
[1875] Fix | Delete
[1876] Fix | Delete
if ($outFname !== null) {
[1877] Fix | Delete
return file_put_contents($outFname, $out);
[1878] Fix | Delete
}
[1879] Fix | Delete
[1880] Fix | Delete
return $out;
[1881] Fix | Delete
}
[1882] Fix | Delete
[1883] Fix | Delete
// compile only if changed input has changed or output doesn't exist
[1884] Fix | Delete
public function checkedCompile($in, $out) {
[1885] Fix | Delete
if (!is_file($out) || filemtime($in) > filemtime($out)) {
[1886] Fix | Delete
$this->compileFile($in, $out);
[1887] Fix | Delete
[1888] Fix | Delete
return true;
[1889] Fix | Delete
}
[1890] Fix | Delete
[1891] Fix | Delete
return false;
[1892] Fix | Delete
}
[1893] Fix | Delete
[1894] Fix | Delete
/**
[1895] Fix | Delete
* Execute lessphp on a .less file or a lessphp cache structure
[1896] Fix | Delete
*
[1897] Fix | Delete
* The lessphp cache structure contains information about a specific
[1898] Fix | Delete
* less file having been parsed. It can be used as a hint for future
[1899] Fix | Delete
* calls to determine whether or not a rebuild is required.
[1900] Fix | Delete
*
[1901] Fix | Delete
* The cache structure contains two important keys that may be used
[1902] Fix | Delete
* externally:
[1903] Fix | Delete
*
[1904] Fix | Delete
* compiled: The final compiled CSS
[1905] Fix | Delete
* updated: The time (in seconds) the CSS was last compiled
[1906] Fix | Delete
*
[1907] Fix | Delete
* The cache structure is a plain-ol' PHP associative array and can
[1908] Fix | Delete
* be serialized and unserialized without a hitch.
[1909] Fix | Delete
*
[1910] Fix | Delete
* @param mixed $in Input
[1911] Fix | Delete
* @param bool $force Force rebuild?
[1912] Fix | Delete
*
[1913] Fix | Delete
* @return array lessphp cache structure
[1914] Fix | Delete
*/
[1915] Fix | Delete
public function cachedCompile($in, $force = false) {
[1916] Fix | Delete
// assume no root
[1917] Fix | Delete
$root = null;
[1918] Fix | Delete
[1919] Fix | Delete
if (is_string($in)) {
[1920] Fix | Delete
$root = $in;
[1921] Fix | Delete
} elseif (is_array($in) and isset($in['root'])) {
[1922] Fix | Delete
if ($force or !isset($in['files'])) {
[1923] Fix | Delete
// If we are forcing a recompile or if for some reason the
[1924] Fix | Delete
// structure does not contain any file information we should
[1925] Fix | Delete
// specify the root to trigger a rebuild.
[1926] Fix | Delete
$root = $in['root'];
[1927] Fix | Delete
} elseif (isset($in['files']) and is_array($in['files'])) {
[1928] Fix | Delete
foreach ($in['files'] as $fname => $ftime) {
[1929] Fix | Delete
if (!file_exists($fname) or filemtime($fname) > $ftime) {
[1930] Fix | Delete
// One of the files we knew about previously has changed
[1931] Fix | Delete
// so we should look at our incoming root again.
[1932] Fix | Delete
$root = $in['root'];
[1933] Fix | Delete
break;
[1934] Fix | Delete
}
[1935] Fix | Delete
}
[1936] Fix | Delete
}
[1937] Fix | Delete
} else {
[1938] Fix | Delete
// TODO: Throw an exception? We got neither a string nor something
[1939] Fix | Delete
// that looks like a compatible lessphp cache structure.
[1940] Fix | Delete
return null;
[1941] Fix | Delete
}
[1942] Fix | Delete
[1943] Fix | Delete
if ($root !== null) {
[1944] Fix | Delete
// If we have a root value which means we should rebuild.
[1945] Fix | Delete
$out = array();
[1946] Fix | Delete
$out['root'] = $root;
[1947] Fix | Delete
$out['compiled'] = $this->compileFile($root);
[1948] Fix | Delete
$out['files'] = $this->allParsedFiles();
[1949] Fix | Delete
$out['updated'] = time();
[1950] Fix | Delete
[1951] Fix | Delete
return $out;
[1952] Fix | Delete
} else {
[1953] Fix | Delete
// No changes, pass back the structure
[1954] Fix | Delete
// we were given initially.
[1955] Fix | Delete
return $in;
[1956] Fix | Delete
}
[1957] Fix | Delete
[1958] Fix | Delete
}
[1959] Fix | Delete
[1960] Fix | Delete
// parse and compile buffer
[1961] Fix | Delete
// This is deprecated
[1962] Fix | Delete
public function parse($str = null, $initialVariables = null) {
[1963] Fix | Delete
if (is_array($str)) {
[1964] Fix | Delete
$initialVariables = $str;
[1965] Fix | Delete
$str = null;
[1966] Fix | Delete
}
[1967] Fix | Delete
[1968] Fix | Delete
$oldVars = $this->registeredVars;
[1969] Fix | Delete
if ($initialVariables !== null) {
[1970] Fix | Delete
$this->setVariables($initialVariables);
[1971] Fix | Delete
}
[1972] Fix | Delete
[1973] Fix | Delete
if ($str == null) {
[1974] Fix | Delete
if (empty($this->_parseFile)) {
[1975] Fix | Delete
throw new Exception("nothing to parse");
[1976] Fix | Delete
}
[1977] Fix | Delete
[1978] Fix | Delete
$out = $this->compileFile($this->_parseFile);
[1979] Fix | Delete
} else {
[1980] Fix | Delete
$out = $this->compile($str);
[1981] Fix | Delete
}
[1982] Fix | Delete
[1983] Fix | Delete
$this->registeredVars = $oldVars;
[1984] Fix | Delete
[1985] Fix | Delete
return $out;
[1986] Fix | Delete
}
[1987] Fix | Delete
[1988] Fix | Delete
protected function makeParser($name) {
[1989] Fix | Delete
$parser = new LessParser($this, $name);
[1990] Fix | Delete
$parser->writeComments = $this->preserveComments;
[1991] Fix | Delete
[1992] Fix | Delete
return $parser;
[1993] Fix | Delete
}
[1994] Fix | Delete
[1995] Fix | Delete
public function setFormatter($name) {
[1996] Fix | Delete
$this->formatterName = $name;
[1997] Fix | Delete
}
[1998] Fix | Delete
[1999] Fix | Delete
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function