MCPcopy Create free account
hub / github.com/Lobos/react-ui / formatPattern

Function formatPattern

docs/lib/ReactRouter.js:769–809  ·  view source on GitHub ↗

* Returns a version of the given pattern with params interpolated. Throws * if there is a dynamic segment of the pattern for which there is no param.

(pattern, params)

Source from the content-addressed store, hash-verified

767 */
768
769 function formatPattern(pattern, params) {
770 params = params || {};
771
772 var _compilePattern3 = compilePattern(pattern);
773
774 var tokens = _compilePattern3.tokens;
775
776 var parenCount = 0,
777 pathname = '',
778 splatIndex = 0;
779
780 var token = undefined,
781 paramName = undefined,
782 paramValue = undefined;
783 for (var i = 0, len = tokens.length; i < len; ++i) {
784 token = tokens[i];
785
786 if (token === '*' || token === '**') {
787 paramValue = Array.isArray(params.splat) ? params.splat[splatIndex++] : params.splat;
788
789 !(paramValue != null || parenCount > 0) ? false ? _invariant2['default'](false, 'Missing splat #%s for path "%s"', splatIndex, pattern) : _invariant2['default'](false) : undefined;
790
791 if (paramValue != null) pathname += encodeURI(paramValue);
792 } else if (token === '(') {
793 parenCount += 1;
794 } else if (token === ')') {
795 parenCount -= 1;
796 } else if (token.charAt(0) === ':') {
797 paramName = token.substring(1);
798 paramValue = params[paramName];
799
800 !(paramValue != null || parenCount > 0) ? false ? _invariant2['default'](false, 'Missing "%s" parameter for path "%s"', paramName, pattern) : _invariant2['default'](false) : undefined;
801
802 if (paramValue != null) pathname += encodeURIComponent(paramValue);
803 } else {
804 pathname += token;
805 }
806 }
807
808 return pathname.replace(/\/+/g, '/');
809 }
810
811/***/ },
812/* 9 */

Callers

nothing calls this directly

Calls 1

compilePatternFunction · 0.85

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…