<commit_before><?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

/**
 * L_Controller extends Letcoc Class.
 * 
 * PHP Version 5.3.9
 * 
 * @name		Letcoc Controller Class.
 * @package		Letcoc.
 * @author		<NAME>.
 * @title		Класс расширения Letcoc, для Контроллеров CodeIgniter.
 */
class L_Controller extends Letcoc{
	
	public function __construct(){parent::__construct();}

	/**
	 * МАРШРУТИЗАТОР.
	 *
	 * @access	public
	 * @param	string	$method
	 * @return	object	[ссылка на этот класс]
	 */
	public function _remap( $method = "index" )
	{
		$segments	= $this->CI->uri->rsegments;
		/** check segments */
		
		IF (
			is_array( $segments )
			and mb_ereg( "^\w+(\.php)?$", @$segments[2] )
			and !mb_ereg( "^_+",  @$segments[2] )
		){
			$segments[2] = mb_ereg_replace( ".php$", "", $segments[2] );
			if ( method_exists( $this->CI, $segments[2] ) )
			{
				call_user_func_array( array( &$this->CI, $segments[2] ), $segments );
				return $this;
			}
		} /** end IF */
		$this->CI->index( $method, $segments );
		return $this;
	}
	
	
	/**
	 * Загрузка файла с конфигами в параметры контроллера.
	 *
	 * @access	public
	 * @param	string	$name	[Имя файла конфигураций]
	 * @return	object			[ссылка на этот класс]
	 */
	public function config( $name = NULL )
	{
		if( !is_string( $name ) )
			return $this;
		if ( !$isLoad = $this->CI->config->load( $name, TRUE, TRUE ) )
			return $this;

		$_CONFIG	= $this->CI->config->item( $name );
		
		unset( $this->CI->config->config[ $name ] );
		
		/**
		 * Загружаем загруженный массив конфигураций в публичные свойства класса.
		 * 
		 * @info	Используем `Reflection`, чтобы игнорировать уже существующие
		 * 			приваатные свойства в классе.
		 */
		
		/** Получаем все приватные и защищенные свойства класса. */
		$_class_Properties	= array();
		$_Reflection		= new ReflectionClass( $this->CI );
		FOREACH( $_Reflection->getProperties() as $_Property )
		{
			if ( $_Property->isPrivate() OR $_Property->isProtected() )
			{
				$_class_Properties[]	= $_Property->name;
			}
		}
	
		/** Добавляем в класс свойства из файла конфигураций. */
		FOREACH ( $_CONFIG as $KEY	=> $v )
		{
			// Игнорируем определенные ранее приватные и защищенные свойства класса
			if ( in_array( $KEY, $_class_Properties ) ) continue;
			
			// Создаем в классе свойство и передаем значение по ссылке.
			$this->CI->$KEY	= $_CONFIG[ $KEY ];
		}
		return $this;
	}
}

/* End of file L_Controller.php */
/* Location: ./application/libraries/Letcoc_extends/L_Controller.php */<commit_msg>ADD: - новый метод `clear_parse` очищает блоки переменных ({a-z}) оставшиеся после парсера.<commit_after><?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

/**
 * L_Controller extends Letcoc Class.
 * 
 * PHP Version 5.3.9
 * 
 * @name		Letcoc Controller Class.
 * @package		Letcoc.
 * @author		<NAME>.
 * @title		Класс расширения Letcoc, для Контроллеров CodeIgniter.
 */
class L_Controller extends Letcoc{
	
	public function __construct(){parent::__construct();}

	/**
	 * МАРШРУТИЗАТОР.
	 *
	 * @access	public
	 * @param	string	$method
	 * @return	object	[this - L_Controller class]
	 */
	public function _remap( $method = "index" )
	{
		$segments	= $this->CI->uri->rsegments;
		/** check segments */
		
		IF (
			is_array( $segments )
			and mb_ereg( "^\w+(\.php)?$", @$segments[2] )
			and !mb_ereg( "^_+",  @$segments[2] )
		){
			$segments[2] = mb_ereg_replace( ".php$", "", $segments[2] );
			if ( method_exists( $this->CI, $segments[2] ) )
			{
				call_user_func_array( array( &$this->CI, $segments[2] ), $segments );
				return $this;
			}
		} /** end IF */
		$this->CI->index( $method, $segments );
		return $this;
	}
	
	
	/**
	 * Загрузка файла с конфигами в параметры контроллера.
	 *
	 * @access	public
	 * @param	string	$name	[Имя файла конфигураций]
	 * @return	object			[this - L_Controller class]
	 */
	public function config( $name = NULL )
	{
		if( !is_string( $name ) )
			return $this;
		if ( !$isLoad = $this->CI->config->load( $name, TRUE, TRUE ) )
			return $this;

		$_CONFIG	= $this->CI->config->item( $name );
		
		unset( $this->CI->config->config[ $name ] );
		
		/**
		 * Загружаем загруженный массив конфигураций в публичные свойства класса.
		 * 
		 * @info	Используем `Reflection`, чтобы игнорировать уже существующие
		 * 			приваатные свойства в классе.
		 */
		
		/** Получаем все приватные и защищенные свойства класса. */
		$_class_Properties	= array();
		$_Reflection		= new ReflectionClass( $this->CI );
		FOREACH( $_Reflection->getProperties() as $_Property )
		{
			if ( $_Property->isPrivate() OR $_Property->isProtected() )
			{
				$_class_Properties[]	= $_Property->name;
			}
		}
	
		/** Добавляем в класс свойства из файла конфигураций. */
		FOREACH ( $_CONFIG as $KEY	=> $v )
		{
			// Игнорируем определенные ранее приватные и защищенные свойства класса
			if ( in_array( $KEY, $_class_Properties ) ) continue;
			
			// Создаем в классе свойство и передаем значение по ссылке.
			$this->CI->$KEY	= $_CONFIG[ $KEY ];
		}
		return $this;
	}
	
	
	
	/**
	 * Метод очищает блоки переменных ({a-z}) оставшиеся после парсера.
	 * 
	 * @access	public
	 * @return	object	[this - L_Controller class]
	 * 
	 */
	public function clear_parse()
	{
		$this->CI->output->set_output(
			preg_replace(
				"/\{\/?(\w*?)\}/",
				"",
				$this->CI->output->get_output()
			)
		);
	}
	
}

/* End of file L_Controller.php */
/* Location: ./application/libraries/Letcoc_extends/L_Controller.php */
{'fraction_non_alphanumeric': 0.15995627618874111, 'fraction_numerical': 0.003279285844416105, 'mean_word_length': 3.1465256797583083, 'pattern_counts': {'":': 0, '<': 7, '<?xml version=': 0, '>': 59, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '7565028', 'n_tokens_mistral': 2356, 'n_tokens_neox': 2216, 'n_words': 474}