Mimicking fixNewLine in ColdFusion Script

A few days ago a reader asked me if there was a way to mimic the "fixNewLine" attribute in ColdFusion script. I thought he meant addNewLine, the feature that handles adding a new line character for you when you write text to a file. Turns out this is a feature I've never even heard of. From the docs:

fixNewLine: yes: changes embedded line-ending characters in string variables to operating-system specific line endings.

no: does not change embedded line-ending characters in string variables.

I checked and there is not a way to do this via fileWrite or FileWriteLine. I whipped up the following little function that should have the same behavior.

function fixNewLine(s) {
	var isWindows = server.os.name contains "windows";
	// http://stackoverflow.com/a/6374360/52160
	if(isWindows) {
		return rereplace(s, "\r\n|\n|\r","#chr(13)##chr(10)#", "all");
	} else {
		return rereplace(s, "\r\n|\n|\r","#chr(10)#", "all");
	}
}

The code is based on a StackOverflow answer (I credited the link in the code) and just does a simple regex on the string based on the operating system. You could also modify this to force a style instead of sniffing the OS.

Any thoughts on this? I did some basic testing and it seems to work OK. If folks like this I'll put it up on CFLib.

Raymond Camden's Picture

About Raymond Camden

Raymond is a developer advocate for Extend by Auth0. He focuses on serverless and enterprise cat demos. If you like this article, please consider visiting my Amazon Wishlist or donating via PayPal to show your support.

Lafayette, LA https://www.raymondcamden.com

Comments