Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 | 11x 11x 11x 11x 11x 11x 11x 11x 11x 11x 11x 11x 11x 11x 11x 11x 11x 11x 11x 11x 11x 11x 11x 11x 11x 11x 11x 11x 11x 11x 11x 11x 11x 11x 11x 11x 11x 11x 11x 11x 11x 11x 275x 275x 275x 275x 275x 275x 275x 275x 275x 275x 275x 275x 275x 275x 275x 275x 275x 275x 275x 5775x 5775x 5775x 5775x 5775x 5500x 5500x 5775x 275x 275x 275x 275x 275x 275x 275x 275x 275x 275x 275x 275x 275x 275x 275x 275x 275x 275x 275x 275x 275x 275x 275x 275x 275x 275x 275x 275x 275x 275x 275x 275x 275x 11x 11x 11x 11x 11x | /** * @license Apache-2.0 * * Copyright (c) 2019 The Stdlib Authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ 'use strict'; // MODULES // var replace = require( '@stdlib/string/replace' ); var FS_ALIASES = require( './fs_aliases.js' ); // MAIN // /** * Returns a regular expression for matching file system APIs. * * ## Notes * * - Example output: * * ```text * /\b(?:(exists|exists\.sync|readFile|readFile\.sync|readJSON|readJSON\.sync|readWASM|readWASM\.sync)\s*\(\s*(.*,\s*)*(?:\[\s*(?:[^\]]*,\s*)*)?['"]([^'"]*))$/ * ``` * * @private * @returns {RegExp} regular expression */ function createRegExp() { var re; var N; var M; var i; N = FS_ALIASES.length; M = N - 1; re = ''; // Match a word boundary: re += '\\b'; // Create a capture group for detecting a file system alias with an incomplete invocation (e.g., `readFile.sync( './foo/bar`): re += '(?:'; // Create a capture group for matching the file system alias... re += '('; for ( i = 0; i < N; i++ ) { // Append the alias, making sure to escape periods (e.g., `readFile.sync` => `readFile\.sync`): re += replace( FS_ALIASES[i][0], '.', '\\.' ); // Separate aliases with an OR separator: if ( i < M ) { re += '|'; } } // Close the file system alias capture group: re += ')'; // Match zero or more whitespace characters after the alias: re += '\\s*'; // Match an opening parenthesis literal: re += '\\('; // Match zero or more whitespace characters after the opening parenthesis: re += '\\s*'; // Capture provided (comma-separated) arguments which precede the last argument: re += '(.*,\\s*)*'; // Capture, but don't remember, an incomplete array argument (including all items except for the last) which occurs zero or one time: re += '(?:\\[\\s*(?:[^\\]]*,\\s*)*)?'; // Match either a `'` or `"` literal: re += '[\'"]'; // Capture the last (incomplete) path argument (or array item): re += '([^\'"]*)'; // Close the incomplete invocation capture group: re += ')'; // Match the end of input (i.e., ensure that the match is an incomplete invocation): re += '$'; // Return the regular expression: return new RegExp( re ); } // EXPORTS // module.exports = createRegExp; |