Files
ystavakylaecard/sparks/assets/1.5.1/libraries/coffeescript/yy/Obj.php
Ismo Vuorinen 7e73994e40 Sparks: Assets, 1.5.1
http://getsparks.org/packages/assets/versions/HEAD/show

Creates our minified and combined .js and .css files
2013-07-11 07:46:29 +03:00

127 lines
2.6 KiB
PHP
Executable File

<?php
namespace CoffeeScript;
class yy_Obj extends yy_Base
{
public $children = array('properties');
function constructor($props, $generated = FALSE)
{
$this->generated = $generated;
$this->properties = $props ? $props : array();
$this->objects = $this->properties;
return $this;
}
function assigns($name)
{
foreach ($this->properties as $prop)
{
if ($prop->assigns($name))
{
return TRUE;
}
}
return FALSE;
}
function compile_node($options)
{
$props = $this->properties;
$prop_names = array();
foreach ($this->properties as $prop)
{
if ($prop->is_complex())
{
$prop = isset($prop->variable) ? $prop->variable : NULL;
}
if ($prop)
{
$prop_name = $prop->unwrap_all();
$prop_name = isset($prop_name->value) ? $prop_name->value.'' : NULL;
if (in_array($prop_name, $prop_names))
{
throw new SyntaxError('multiple object literal properties named "'.$prop_name.'"');
}
$prop_names[] = $prop_name;
}
}
if ( ! count($props))
{
return ($this->front ? '({})' : '{}');
}
if ($this->generated)
{
foreach ($props as $node)
{
if ($node instanceof yy_Value)
{
throw new Error('cannot have an implicit value in an implicit object');
}
}
}
$idt = $options['indent'] .= TAB;
$last_non_com = $this->last_non_comment($this->properties);
foreach ($props as $i => $prop)
{
if ($i === count($props) - 1)
{
$join = '';
}
else if ($prop === $last_non_com || $prop instanceof yy_Comment)
{
$join = "\n";
}
else
{
$join = ",\n";
}
$indent = $prop instanceof yy_Comment ? '' : $idt;
if ($prop instanceof yy_Value && (isset($prop->this) && $prop->this))
{
$prop = yy('Assign', $prop->properties[0]->name, $prop, 'object');
}
if ( ! ($prop instanceof yy_Comment))
{
if ( ! ($prop instanceof yy_Assign))
{
$prop = yy('Assign', $prop, $prop, 'object');
}
if (isset($prop->variable->base))
{
$prop->variable->base->as_key = TRUE;
}
else
{
$prop->variable->as_key = TRUE;
}
}
$props[$i] = $indent.$prop->compile($options, LEVEL_TOP).$join;
}
$props = implode('', $props);
$obj = '{'.($props ? "\n{$props}\n{$this->tab}" : '').'}';
return ($this->front ? "({$obj})" : $obj);
}
}
?>