All pastes #361823 Raw Edit

Miscellany

public php v1 · immutable
·published 2007-02-18 11:05 UTC
rendered paste body
<?php/** * Namespace converter for mootools *  * @version		1.0rc1 *  * @license		MIT-style license * @author		Harald Kirschner <mail [at] digitarald.de> * @copyright	Author  */function makeNamespaced($input, $ns = 'Moo'){	preg_match_all('/^(?:var|function) ([a-zA-Z$]*)/m', $input, $bits, PREG_PATTERN_ORDER);	$replace = $bits[1];	usort($replace, 'length_cmp');	array_walk($replace, 'preg_quote');	$replace = implode('|', $replace);	$input = preg_replace('/(function )(' . $replace . ')([^a-zA-Z\/])/', $ns .'.$2 = function$3', $input);	/**	 * FIXME: Optimize regexp to don't ignore matched words with only 1 character bewteen ( $native(Element) )	 */	for ($i = 0; $i < 2; $i++)	{		$input = preg_replace('/(?!<[^a-zA-Z0-9.^$_])(var )?(' . $replace . ')(?![a-zA-Z\/])/', $ns .'.$2', $input);	}	$input = preg_replace('/(\*\/)/', '$1/*Object: '. $ns .'	The root namespace object for all replaced classes and methods	Contains:		'. wordwrap(implode(', ', $bits[1]), 75, "\n		") .'*/var '. $ns .' = {};', $input, 1);	return $input;}/** * Helper function */function length_cmp($a, $b){	return strlen($b) - strlen($a);}header("Content-type: application/x-javascript");echo makeNamespaced(implode('', file('mootools.js')), 'Moo');?>