(content, onMatch)
| 29 | * @returns {void} |
| 30 | */ |
| 31 | const walkFullHashPlaceholders = (content, onMatch) => { |
| 32 | const prefix = PUBLIC_PATH_FULL_HASH; |
| 33 | const prefixLen = prefix.length; |
| 34 | const len = content.length; |
| 35 | let idx = content.indexOf(prefix); |
| 36 | while (idx !== -1) { |
| 37 | let digitEnd = idx + prefixLen; |
| 38 | while (digitEnd < len) { |
| 39 | const cc = content.charCodeAt(digitEnd); |
| 40 | if (cc < 48 || cc > 57) break; |
| 41 | digitEnd++; |
| 42 | } |
| 43 | // Well-formed placeholder: at least one digit followed by `__`. |
| 44 | if ( |
| 45 | digitEnd > idx + prefixLen && |
| 46 | digitEnd + 1 < len && |
| 47 | content.charCodeAt(digitEnd) === 95 && |
| 48 | content.charCodeAt(digitEnd + 1) === 95 |
| 49 | ) { |
| 50 | const length = Number.parseInt( |
| 51 | content.slice(idx + prefixLen, digitEnd), |
| 52 | 10 |
| 53 | ); |
| 54 | onMatch(idx, digitEnd + 2, length); |
| 55 | idx = content.indexOf(prefix, digitEnd + 2); |
| 56 | } else { |
| 57 | idx = content.indexOf(prefix, idx + prefixLen); |
| 58 | } |
| 59 | } |
| 60 | }; |
| 61 | |
| 62 | module.exports.PUBLIC_PATH_AUTO = PUBLIC_PATH_AUTO; |
| 63 | module.exports.PUBLIC_PATH_FULL_HASH = PUBLIC_PATH_FULL_HASH; |
no test coverage detected