Gentics Portal.Node PHP API
 All Classes Namespaces Functions Variables Pages
Public Member Functions | List of all members
CssAtKeyframesParserPlugin Class Reference
Inheritance diagram for CssAtKeyframesParserPlugin:
aCssParserPlugin

Public Member Functions

 getTriggerChars ()
 getTriggerStates ()
 parse ($index, $char, $previousChar, $state)
- Public Member Functions inherited from aCssParserPlugin
 __construct (CssParser $parser, array $configuration=null)

Additional Inherited Members

- Protected Attributes inherited from aCssParserPlugin
 $configuration = array()
 $parser = null
 $buffer = ""

Detailed Description

Definition at line 4521 of file cssmin.php.

Member Function Documentation

CssAtKeyframesParserPlugin::getTriggerChars ( )

Implements aCssParserPlugin::getTriggerChars().

Returns
array

Reimplemented from aCssParserPlugin.

Definition at line 4538 of file cssmin.php.

{
return array("@", "{", "}", ":", ",", ";");
}
CssAtKeyframesParserPlugin::getTriggerStates ( )

Implements aCssParserPlugin::getTriggerStates().

Returns
array

Reimplemented from aCssParserPlugin.

Definition at line 4547 of file cssmin.php.

{
return array("T_DOCUMENT", "T_AT_KEYFRAMES::NAME", "T_AT_KEYFRAMES", "T_AT_KEYFRAMES_RULESETS", "T_AT_KEYFRAMES_RULESET", "T_AT_KEYFRAMES_RULESET_DECLARATION");
}
CssAtKeyframesParserPlugin::parse (   $index,
  $char,
  $previousChar,
  $state 
)

Implements aCssParserPlugin::parse().

Parameters
integer$indexCurrent index
string$charCurrent char
string$previousCharPrevious char
Returns
mixed TRUE will break the processing; FALSE continue with the next plugin; integer set a new index and break the processing

Reimplemented from aCssParserPlugin.

Definition at line 4559 of file cssmin.php.

References CssMin\triggerError().

{
// Start of @keyframes at-rule block
if ($char === "@" && $state === "T_DOCUMENT" && strtolower(substr($this->parser->getSource(), $index, 10)) === "@keyframes")
{
$this->atRuleName = "keyframes";
$this->parser->pushState("T_AT_KEYFRAMES::NAME");
$this->parser->clearBuffer();
return $index + 10;
}
// Start of @keyframes at-rule block (@-moz-keyframes)
elseif ($char === "@" && $state === "T_DOCUMENT" && strtolower(substr($this->parser->getSource(), $index, 15)) === "@-moz-keyframes")
{
$this->atRuleName = "-moz-keyframes";
$this->parser->pushState("T_AT_KEYFRAMES::NAME");
$this->parser->clearBuffer();
return $index + 15;
}
// Start of @keyframes at-rule block (@-webkit-keyframes)
elseif ($char === "@" && $state === "T_DOCUMENT" && strtolower(substr($this->parser->getSource(), $index, 18)) === "@-webkit-keyframes")
{
$this->atRuleName = "-webkit-keyframes";
$this->parser->pushState("T_AT_KEYFRAMES::NAME");
$this->parser->clearBuffer();
return $index + 18;
}
// Start of @keyframes rulesets
elseif ($char === "{" && $state === "T_AT_KEYFRAMES::NAME")
{
$name = $this->parser->getAndClearBuffer("{\"'");
$this->parser->setState("T_AT_KEYFRAMES_RULESETS");
$this->parser->clearBuffer();
$this->parser->appendToken(new CssAtKeyframesStartToken($name, $this->atRuleName));
}
// Start of @keyframe ruleset and selectors
if ($char === "," && $state === "T_AT_KEYFRAMES_RULESETS")
{
$this->selectors[] = $this->parser->getAndClearBuffer(",{");
}
// Start of a @keyframes ruleset
elseif ($char === "{" && $state === "T_AT_KEYFRAMES_RULESETS")
{
if ($this->parser->getBuffer() !== "")
{
$this->selectors[] = $this->parser->getAndClearBuffer(",{");
$this->parser->pushState("T_AT_KEYFRAMES_RULESET");
$this->parser->appendToken(new CssAtKeyframesRulesetStartToken($this->selectors));
$this->selectors = array();
}
}
// Start of @keyframes ruleset declaration
elseif ($char === ":" && $state === "T_AT_KEYFRAMES_RULESET")
{
$this->parser->pushState("T_AT_KEYFRAMES_RULESET_DECLARATION");
$this->buffer = $this->parser->getAndClearBuffer(":;", true);
}
// Unterminated @keyframes ruleset declaration
elseif ($char === ":" && $state === "T_AT_KEYFRAMES_RULESET_DECLARATION")
{
// Ignore Internet Explorer filter declarations
if ($this->buffer === "filter")
{
return false;
}
CssMin::triggerError(new CssError(__FILE__, __LINE__, __METHOD__ . ": Unterminated @keyframes ruleset declaration", $this->buffer . ":" . $this->parser->getBuffer() . "_"));
}
// End of declaration
elseif (($char === ";" || $char === "}") && $state === "T_AT_KEYFRAMES_RULESET_DECLARATION")
{
$value = $this->parser->getAndClearBuffer(";}");
if (strtolower(substr($value, -10, 10)) === "!important")
{
$value = trim(substr($value, 0, -10));
$isImportant = true;
}
else
{
$isImportant = false;
}
$this->parser->popState();
$this->parser->appendToken(new CssAtKeyframesRulesetDeclarationToken($this->buffer, $value, $isImportant));
// Declaration ends with a right curly brace; so we have to end the ruleset
if ($char === "}")
{
$this->parser->appendToken(new CssAtKeyframesRulesetEndToken());
$this->parser->popState();
}
$this->buffer = "";
}
// End of @keyframes ruleset
elseif ($char === "}" && $state === "T_AT_KEYFRAMES_RULESET")
{
$this->parser->clearBuffer();
$this->parser->popState();
$this->parser->appendToken(new CssAtKeyframesRulesetEndToken());
}
// End of @keyframes rulesets
elseif ($char === "}" && $state === "T_AT_KEYFRAMES_RULESETS")
{
$this->parser->clearBuffer();
$this->parser->popState();
$this->parser->appendToken(new CssAtKeyframesEndToken());
}
else
{
return false;
}
return true;
}

The documentation for this class was generated from the following file: