|
|
@@ -0,0 +1,18 @@
|
|
|
+JSON_ESCAPE_REGEXP = /[\u2028\u2029&><]/g
|
|
|
+
|
|
|
+JSON_ESCAPE =
|
|
|
+ '&': '\\u0026'
|
|
|
+ '>': '\\u003e'
|
|
|
+ '<': '\\u003c'
|
|
|
+ '\u2028': '\\u2028'
|
|
|
+ '\u2029': '\\u2029'
|
|
|
+
|
|
|
+module.exports = StringHelper =
|
|
|
+ # stringifies and escapes a json object for use in a script. This ensures that &, < and > characters are escaped,
|
|
|
+ # along with quotes. This ensures that the string can be safely rendered into HTML. See rationale at:
|
|
|
+ # https://api.rubyonrails.org/classes/ERB/Util.html#method-c-json_escape
|
|
|
+ # and implementation lifted from:
|
|
|
+ # https://github.com/ember-fastboot/fastboot/blob/cafd96c48564d8384eb83dc908303dba8ece10fd/src/ember-app.js#L496-L510
|
|
|
+ stringifyJsonForScript: (object) ->
|
|
|
+ return JSON.stringify(object).replace JSON_ESCAPE_REGEXP, (match) ->
|
|
|
+ return JSON_ESCAPE[match]
|