UNPKG

react-native

Version:

A framework for building native apps using React

66 lines (58 loc) 1.4 kB
/** * Copyright 2013-present, Facebook, Inc. * All rights reserved. * * This source code is licensed under the BSD-style license found in the * LICENSE file in the root directory of this source tree. An additional grant * of patent rights can be found in the PATENTS file in the same directory. * * @providesModule KeyEscapeUtils * @flow */ 'use strict'; /** * Escape and wrap key so it is safe to use as a reactid * * @param {string} key to be escaped. * @return {string} the escaped key. */ function escape(key: string): string { var escapeRegex = /[=:]/g; var escaperLookup = { '=': '=0', ':': '=2', }; var escapedString = ('' + key).replace( escapeRegex, function(match) { return escaperLookup[match]; } ); return '$' + escapedString; } /** * Unescape and unwrap key for human-readable display * * @param {string} key to unescape. * @return {string} the unescaped key. */ function unescape(key: string): string { var unescapeRegex = /(=0|=2)/g; var unescaperLookup = { '=0': '=', '=2': ':', }; var keySubstring = (key[0] === '.' && key[1] === '$') ? key.substring(2) : key.substring(1); return ('' + keySubstring).replace( unescapeRegex, function(match) { return unescaperLookup[match]; } ); } var KeyEscapeUtils = { escape: escape, unescape: unescape, }; module.exports = KeyEscapeUtils;