예제 #1
0
 /**
  * Gets the used variables from the provided format
  * @param string $format Data format
  * @return array Array with the variable strings
  */
 private function getVariablesFromFormat($format)
 {
     $symbol = new NestedSymbol(self::SYMBOL_OPEN, self::SYMBOL_CLOSE, null, true);
     $tokenizer = new Tokenizer();
     $tokenizer->addSymbol($symbol);
     $tokens = $tokenizer->tokenize($format);
     $variables = array();
     $isVariableOpen = false;
     $variableFormat = null;
     foreach ($tokens as $token) {
         if ($token == self::SYMBOL_OPEN) {
             $isVariableOpen = true;
             continue;
         }
         if (!$isVariableOpen) {
             continue;
         }
         if ($token == self::SYMBOL_CLOSE) {
             $variables[$variableFormat] = new DataFormatVariable($variableFormat);
             $isVariableOpen = false;
             $variableFormat = null;
         } else {
             $variableFormat .= $token;
         }
     }
     return $variables;
 }
예제 #2
0
 /**
  * Tokenizes the tag content in argument tokens
  *
  * eg. img=150x100 alt="Image description" width=150
  * array {
  *     "img=150x100",
  *     "alt=Image Description",
  *     "width=150",
  * }
  *
  * @param string $tagContent
  * @return array
  */
 private function tokenize($tagContent)
 {
     $positionApo = strpos($tagContent, '"');
     if (!$positionApo) {
         return explode(' ', $tagContent);
     }
     $tokens = array();
     $tokenizer = new Tokenizer();
     $tokenizer->addSymbol(new SimpleSymbol(' ', false));
     $tokenizer->addSymbol(new NestedSymbol('"', '"', null, true));
     $isStringArgument = false;
     $previousToken = null;
     $parsedTokens = $tokenizer->tokenize($tagContent);
     foreach ($parsedTokens as $token) {
         if ($token == '"') {
             $isStringArgument = !$isStringArgument;
             continue;
         }
         if ($isStringArgument) {
             $tokens[count($tokens) - 1] .= $token;
         } else {
             $tokens[] = $token;
         }
     }
     return $tokens;
 }