/** * Converte cada um dos tokens em um elemento. * É considerado token a sequência de texto separado por ';' * * @param string $content * @return Element[] * */ public static function tokenize($content) { $tokens = array(); foreach (json_decode($content) as $element) { $tokens[] = Element::factory($element); } reset($tokens); return $tokens; }
/** * Fábrica de Command. * * @param Language $language * @param Element $element * @return Command * @throws IllegalArgumentException * */ public static function factory(Language $laguage, Element $element) { # formata nome da linguagem e do command para uso $language = strtolower($laguage->name()); $command = ucfirst($element->type()); # monta o namespace do commando alvo levando em consideracao a # linguagem inforamda $namespace = sprintf('br\\gov\\sial\\core\\mvcb\\view\\skeleton\\%s\\command\\%s', $language, $command); $message = sprintf(self::UNAVAILABLE_COMMAND, $language, $command); IllegalArgumentException::throwsExceptionIfParamIsNull(self::isAvailable($namespace), $message); return new $namespace($laguage, $element); }