Lasso Soft Inc. > Home

[url_normalize]

Linkurl_normalize
AuthorJason Huck
CategoryString
Version8.5.x
LicensePublic Domain
Posted22 Sep 2008
Updated22 Sep 2008
More by this author...

Description

This tag can be used to convert a relative URL into an absolute one. Accepts two parameters: a base URL to compare against (representing the path to the file that calls the relative URL), and a relative URL to convert.

 

Sample Usage

url_normalize(
	-url='../../../foo.jpg',
	-base='/path/to/thing/that/calls/foo/'
);

-> '/path/to/thing/foo.jpg'

Source Code

Click the "Download" button below to retrieve a copy of this tag, including the complete documentation and sample usage shown on this page. Place the downloaded ".inc" file in your LassoStartup folder, restart Lasso, and you can begin using this tag immediately.

define_tag(
	'normalize',
	-namespace='url_',
	-req='url', -copy,
	-req='base', -copy,
	-priority='replace',
	-encodenone,
	-description='Given a base URL, converts the given relative URL to absolute.'
);	
	// URLs beginning with / or http do not need to be converted
	(#url->beginswith('http://') || #url->beginswith('/')) ? return(#url);
	
	!#base->endswith('/') ? #base->append('/');
	
	if(#url->beginswith('../'));
		// count the number of paths to remove
		local('dirsToRemove') = #url->split('../')->size - 1;
		
		#base->removetrailing('/');
		
		loop(#dirsToRemove);
			#base->removetrailing('/' + #base->split('/')->last);
			#url->removeleading('../');
		/loop;
	
		#base->append('/');
	
		return(#base + #url);
		
	else(#url == '.');
		return(#base);
	
	else(#url->beginswith('./'));
		return(#base + #url->removeleading('./')&);
	
	else;
		return(#base + #url);
	/if;
/define_tag;

Related Tags

Comments

No comments

Please log in to comment

Subscribe to the LassoTalk mail list

LassoSoft Inc. > Home

 

 

©LassoSoft Inc 2015 | Web Development by Treefrog Inc | PrivacyLegal terms and Shipping | Contact LassoSoft