Multiline text to escaped Javascript string

Transforms a string to Javascript string declaration

by Adrien Joly

HTML

<link rel="stylesheet" href="http://twitter.github.com/bootstrap/assets/css/bootstrap.css">
<div ng-app>
    <div ng-controller="MainCtrl">
        <textarea data-ng-model="original" rows="30"></textarea>
        <textarea rows="30" readonly>{{ jsConcatEscape(original) }}</textarea>
    </div>
</div>

JavaScript

function MainCtrl($scope) {
    $scope.original = '';

    $scope.jsConcatEscape = function(text) {
        // http://beckism.com/2010/09/splitting-lines-javascript/
        var lines = text.match(/^.*([\n\r]+|$)/gm);
        var concatenated = '';

        lines.forEach(function(line, i, lines) {
            line = line.replace(/[\r\n]/g, '\\n');
            concatenated += /*escape*/(line.replace(/"/g, '\\"'));
        })

        return '"' + concatenated + '"';
    };
};