mirror of
https://github.com/Ekokumppanit/ystavakylaecard.git
synced 2026-02-14 07:47:17 +00:00
Sparks: Assets, 1.5.1
http://getsparks.org/packages/assets/versions/HEAD/show Creates our minified and combined .js and .css files
This commit is contained in:
105
sparks/assets/1.5.1/libraries/coffeescript/Nodes.php
Executable file
105
sparks/assets/1.5.1/libraries/coffeescript/Nodes.php
Executable file
@@ -0,0 +1,105 @@
|
||||
<?php
|
||||
|
||||
namespace CoffeeScript;
|
||||
|
||||
Init::init();
|
||||
|
||||
define('LEVEL_TOP', 1);
|
||||
define('LEVEL_PAREN', 2);
|
||||
define('LEVEL_LIST', 3);
|
||||
define('LEVEL_COND', 4);
|
||||
define('LEVEL_OP', 5);
|
||||
define('LEVEL_ACCESS', 6);
|
||||
|
||||
define('TAB', ' ');
|
||||
|
||||
define('IDENTIFIER_STR', '[$A-Za-z_\x7f-\x{ffff}][$\w\x7f-\x{ffff}]*');
|
||||
define('IDENTIFIER', '/^'.IDENTIFIER_STR.'$/u');
|
||||
define('IS_STRING', '/^[\'"]/');
|
||||
define('SIMPLENUM', '/^[+-]?\d+$/');
|
||||
define('METHOD_DEF', '/^(?:('.IDENTIFIER_STR.')\.prototype(?:\.('.IDENTIFIER_STR.')|\[("(?:[^\\\\"\r\n]|\\\\.)*"|\'(?:[^\\\\\'\r\n]|\\\\.)*\')\]|\[(0x[\da-fA-F]+|\d*\.?\d+(?:[eE][+-]?\d+)?)\]))|('.IDENTIFIER_STR.')$/u');
|
||||
|
||||
class Nodes {
|
||||
|
||||
static function multident($code, $tab)
|
||||
{
|
||||
$code = preg_replace('/\n/', "\n{$tab}", $code);
|
||||
return preg_replace('/\s+$/', '', $code);
|
||||
}
|
||||
|
||||
static function unfold_soak($options, $parent, $name)
|
||||
{
|
||||
if ( ! (isset($parent->{$name}) && $parent->{$name} && $ifn = $parent->{$name}->unfold_soak($options)))
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
$parent->{$name} = $ifn->body;
|
||||
$ifn->body = yy('Value', $parent);
|
||||
|
||||
return $ifn;
|
||||
}
|
||||
|
||||
static function utility($name)
|
||||
{
|
||||
Scope::$root->assign($ref = "__$name", call_user_func(array(__CLASS__, "utility_$name")));
|
||||
|
||||
return $ref;
|
||||
}
|
||||
|
||||
static function utility_bind()
|
||||
{
|
||||
return 'function(fn, me){ return function(){ return fn.apply(me, arguments); }; }';
|
||||
}
|
||||
|
||||
static function utility_extends()
|
||||
{
|
||||
return 'function(child, parent) { '
|
||||
. 'for (var key in parent) { '
|
||||
. 'if ('.self::utility('hasProp').'.call(parent, key)) '
|
||||
. 'child[key] = parent[key]; '
|
||||
. '} '
|
||||
. 'function ctor() { '
|
||||
. 'this.constructor = child; '
|
||||
. '} '
|
||||
. 'ctor.prototype = parent.prototype; child.prototype = new ctor; child.__super__ = parent.prototype; '
|
||||
. 'return child; '
|
||||
. '}';
|
||||
}
|
||||
|
||||
static function utility_hasProp()
|
||||
{
|
||||
return '{}.hasOwnProperty';
|
||||
}
|
||||
|
||||
static function utility_indexOf()
|
||||
{
|
||||
return '[].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; }';
|
||||
}
|
||||
|
||||
static function utility_slice()
|
||||
{
|
||||
return '[].slice';
|
||||
}
|
||||
|
||||
/**
|
||||
* Since PHP can't return values from __construct, and some of the node
|
||||
* classes rely heavily on this feature in JavaScript, we use this function
|
||||
* instead of 'new'.
|
||||
*/
|
||||
static function yy($type)
|
||||
{
|
||||
$args = func_get_args();
|
||||
array_shift($args);
|
||||
|
||||
$type = __NAMESPACE__.'\yy_'.$type;
|
||||
|
||||
$inst = new $type;
|
||||
$inst = call_user_func_array(array($inst, 'constructor'), $args);
|
||||
|
||||
return $inst;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
?>
|
||||
Reference in New Issue
Block a user