Дмитрий Владимирович тел.8-937-177-28-84 Воскресенье, 05.05.2024, 21:55
Главная | Регистрация | Вход Приветствую Вас Гость | RSS
Меню сайта
Наш опрос
Оцените мой сайт
Всего ответов: 14
Мини-чат
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0

* @version 0.21 * @copyright 2006-2009 Dmitriy Skorobogatov * @package Natty */ class Natty_TextRandomizer_Node { private $_parent = null; private $_str = ''; private $_type = 'mixing'; private $_subNodes = array(); private $_usedKeys = array(); private $_separator = ''; private $_isSeparator = false; public function __construct(Natty_TextRandomizer_Node $parent = null) { $this->_parent = $parent; if ($parent) { $parent->_subNodes[] = $this; } } public function getText() { $result = ''; switch ($this->_type) { case 'synonyms': if (! count($this->_usedKeys)) { $this->_usedKeys = array_keys($this->_subNodes); } $key = array_rand($this->_usedKeys); $result = $this->_subNodes[$key]->getText(); unset($this->_usedKeys[$key]); break; case 'mixing': shuffle($this->_subNodes); foreach ($this->_subNodes as $v) { if ($result) { $result .= ' ' . $this->_separator; } $result .= ' ' . $v->getText(); } break; case 'series': foreach ($this->_subNodes as $v) { $result .= ' ' . $v->getText(); } break; default: $result = $this->_str; } $result = trim($result); $result = preg_replace('/\s+/u', ' ', $result); $result = str_replace(' ,', ',', $result); $result = str_replace(' .', '.', $result); $result = str_replace(' !', '!', $result); $result = str_replace(' ?', '?', $result); return $result; } public function numVariant() { $result = 1; switch ($this->_type) { case 'synonyms': $result = 0; foreach ($this->_subNodes as $v) { $result += $v->numVariant(); } break; case 'mixing': for ($i=2; $i<=count($this->_subNodes); ++$i) { $result *= $i; } foreach ($this->_subNodes as $v) { $result *= $v->numVariant(); } break; case 'series': foreach ($this->_subNodes as $v) { $result *= $v->numVariant(); } break; } return $result; } public function concat($str) { $str = (string) $str; if ($this->_isSeparator) { $this->_separator .= $str; return $this; } if ('string' == $this->type) { $this->_str .= $str; return $this; } $currentNode = new Natty_TextRandomizer_Node($this); $currentNode->setType('string'); return $currentNode->concat($str); } public function setType($type) { switch ((string) $type) { case 'string': $this->_type = 'string'; break; case 'synonyms': $this->_type = 'synonyms'; break; case 'series': $this->_type = 'series'; break; default: $this->_type = 'mixing'; } } public function __get($var) { $var = strtolower($var); switch ((string) $var) { case 'isseparator': return $this->_isSeparator; break; case 'parent': return $this->_parent; break; case 'type': return $this->_type; break; default: return null; } } public function __set($var, $value) { $var = strtolower($var); switch ((string) $var) { case 'isseparator': $this->_isSeparator = (boolean) $value; } } Рускаталог.ком - каталог русскоязычных сайтов }
Вход на сайт
Поиск
Календарь
«  Май 2024  »
ПнВтСрЧтПтСбВс
  12345
6789101112
13141516171819
20212223242526
2728293031
Архив записей
Друзья сайта

Веснин Дмитрий Владимирович т.8-937-177-28-84 © 2024