private function doReplacements($contents)
	{
		// Replace variables
		if (isset($this->replacements) && count($this->replacements) > 0)
		{
			foreach ($this->replacements as $k => $v)
			{
				if (is_array($v))
				{
					foreach ($v as $replacement)
					{
						foreach ($replacement as $key => $value)
						{
							$contents = preg_replace("/%={$key}=%/", $value, $contents, 1);
						}
					}
				}
				else
				{
					// See if there are any instances of our key with special qualifiers
					if (preg_match_all("/%={$k}\+([[:alpha:]]+)=%/", $contents, $matches) && isset($matches[1]))
					{
						// Remove complete match
						unset($matches[0]);
						foreach ($matches[1] as $match)
						{
							switch ($match)
							{
								// Upper case word
								case 'uc':
									$value = strtoupper($v);
									break;
								// Upper case first character
								case 'ucf':
									$value = ucfirst($v);
									break;
								// Upper case first character and plural
								case 'ucfp':
									$value = ucfirst(Inflector::pluralize($v));
									break;
								// Plural form
								case 'p':
									$value = Inflector::pluralize($v);
									break;
							}

							$contents = str_replace("%={$k}+{$match}=%", $value, $contents);
						}
					}

					// Now do all basic replacements
					$contents = str_replace("%={$k}=%", $v, $contents);

					if ($this->doBlindReplacements)
					{
						$contents = str_replace($k, $v, $contents);
					}
				}
			}
		}

		// Now parse for nested templates
		preg_match_all('/\$\^[[:alpha:]\.]*\^\$/', $contents, $matches, PREG_SET_ORDER);

		if (isset($matches) && count($matches) > 0)
		{
			foreach ($matches as $match)
			{
				foreach ($match as $key)
				{
					// Get template contents
					$keyReal = preg_replace('/\$\^([[:alpha:]\.]*)\^\$/', '$1', $key);
					$subPath = __DIR__ . DS . 'Scaffolding' . DS . 'Templates' . DS . $this->getType() . '.' . $keyReal . '.tmpl';

					if (!is_file($subPath))
					{
						continue;
					}

					$subTmpl = file_get_contents($subPath);

					if (isset($this->replacements[$keyReal]) && is_array($this->replacements[$keyReal]))
					{
						$count    = count($this->replacements[$keyReal]);
						$repeat   = str_repeat($key, $count);
						$contents = str_replace($key, $repeat, $contents);
					}

					$contents = str_replace($key, $subTmpl, $contents);
					$contents = $this->doReplacements($contents);
				}
			}
		}

		return $contents;
	}
private function doReplacements($contents)
	{
		// Replace variables
		if (isset($this->replacements) && count($this->replacements) > 0)
		{
			foreach ($this->replacements as $k => $v)
			{
				if (is_array($v))
				{
					foreach ($v as $replacement)
					{
						foreach ($replacement as $key => $value)
						{
							$contents = preg_replace("/%={$key}=%/", $value, $contents, 1);
						}
					}
				}
				else
				{
					// See if there are any instances of our key with special qualifiers
					if (preg_match_all("/%={$k}\+([[:alpha:]]+)=%/", $contents, $matches) && isset($matches[1]))
					{
						// Remove complete match
						unset($matches[0]);
						foreach ($matches[1] as $match)
						{
							switch ($match)
							{
								// Upper case word
								case 'uc':
									$value = strtoupper($v);
									break;
								// Upper case first character
								case 'ucf':
									$value = ucfirst($v);
									break;
								// Upper case first character and plural
								case 'ucfp':
									$value = ucfirst(Inflector::pluralize($v));
									break;
								// Plural form
								case 'p':
									$value = Inflector::pluralize($v);
									break;
							}

							$contents = str_replace("%={$k}+{$match}=%", $value, $contents);
						}
					}

					// Now do all basic replacements
					$contents = str_replace("%={$k}=%", $v, $contents);

					if ($this->doBlindReplacements)
					{
						$contents = str_replace($k, $v, $contents);
					}
				}
			}
		}

		// Now parse for nested templates
		preg_match_all('/\$\^[[:alpha:]\.]*\^\$/', $contents, $matches, PREG_SET_ORDER);

		if (isset($matches) && count($matches) > 0)
		{
			foreach ($matches as $match)
			{
				foreach ($match as $key)
				{
					// Get template contents
					$keyReal = preg_replace('/\$\^([[:alpha:]\.]*)\^\$/', '$1', $key);
					$subPath = __DIR__ . DS . 'Scaffolding' . DS . 'Templates' . DS . $this->getType() . '.' . $keyReal . '.tmpl';

					if (!is_file($subPath))
					{
						continue;
					}

					$subTmpl = file_get_contents($subPath);

					if (isset($this->replacements[$keyReal]) && is_array($this->replacements[$keyReal]))
					{
						$count    = count($this->replacements[$keyReal]);
						$repeat   = str_repeat($key, $count);
						$contents = str_replace($key, $repeat, $contents);
					}

					$contents = str_replace($key, $subTmpl, $contents);
					$contents = $this->doReplacements($contents);
				}
			}
		}

		return $contents;
	}
private function doReplacements ( $ contents ) { // Replace variables if ( isset ( $ this -> replacements ) && count ( $ this -> replacements ) > 0 ) { foreach ( $ this -> replacements as $ k => $ v ) { if ( is_array ( $ v ) ) { foreach ( $ v as $ replacement ) { foreach ( $ replacement as $ key => $ value ) { $ contents = preg_replace ( "/%={$key}=%/" , $ value , $ contents , 1 ) ; } } } else { // See if there are any instances of our key with special qualifiers if ( preg_match_all ( "/%={$k}\+([[:alpha:]]+)=%/" , $ contents , $ matches ) && isset ( $ matches [ 1 ] ) ) { // Remove complete match unset ( $ matches [ 0 ] ) ; foreach ( $ matches [ 1 ] as $ match ) { switch ( $ match ) { // Upper case word case 'uc' : $ value = strtoupper ( $ v ) ; break ; // Upper case first character case 'ucf' : $ value = ucfirst ( $ v ) ; break ; // Upper case first character and plural case 'ucfp' : $ value = ucfirst ( Inflector :: pluralize ( $ v ) ) ; break ; // Plural form case 'p' : $ value = Inflector :: pluralize ( $ v ) ; break ; } $ contents = str_replace ( "%={$k}+{$match}=%" , $ value , $ contents ) ; } } // Now do all basic replacements $ contents = str_replace ( "%={$k}=%" , $ v , $ contents ) ; if ( $ this -> doBlindReplacements ) { $ contents = str_replace ( $ k , $ v , $ contents ) ; } } } } // Now parse for nested templates preg_match_all ( '/\$\^[[:alpha:]\.]*\^\$/' , $ contents , $ matches , PREG_SET_ORDER ) ; if ( isset ( $ matches ) && count ( $ matches ) > 0 ) { foreach ( $ matches as $ match ) { foreach ( $ match as $ key ) { // Get template contents $ keyReal = preg_replace ( '/\$\^([[:alpha:]\.]*)\^\$/' , '$1' , $ key ) ; $ subPath = __DIR__ . DS . 'Scaffolding' . DS . 'Templates' . DS . $ this -> getType ( ) . '.' . $ keyReal . '.tmpl' ; if ( ! is_file ( $ subPath ) ) { continue ; } $ subTmpl = file_get_contents ( $ subPath ) ; if ( isset ( $ this -> replacements [ $ keyReal ] ) && is_array ( $ this -> replacements [ $ keyReal ] ) ) { $ count = count ( $ this -> replacements [ $ keyReal ] ) ; $ repeat = str_repeat ( $ key , $ count ) ; $ contents = str_replace ( $ key , $ repeat , $ contents ) ; } $ contents = str_replace ( $ key , $ subTmpl , $ contents ) ; $ contents = $ this -> doReplacements ( $ contents ) ; } } } return $ contents ; }
Make replacements in a given content string

@param   string  $contents  Incoming content
@return  string
Make replacements in a given content string