UNPKG

data-provider-temporary

Version:

Library that helps with server-to-client synchronization of data

59 lines (49 loc) 1.5 kB
'use strict'; /** * Copyright (c) 2014-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. * * */ const path = require('path'); const chalk = require('chalk'); const colorize = require('./colorize'); const trim = '...'; const relativePathHead = './'; const highlight = ( rawPath, filePath, pattern, rootDir) => { let regexp; try { regexp = new RegExp(pattern, 'i'); } catch (e) { return chalk.dim(filePath); } rawPath = chalk.stripColor(rawPath); filePath = chalk.stripColor(filePath); const match = rawPath.match(regexp); if (!match) { return chalk.dim(filePath); } let offset; let trimLength; if (filePath.startsWith(trim)) { offset = rawPath.length - filePath.length; trimLength = trim.length; } else if (filePath.startsWith(relativePathHead)) { offset = rawPath.length - filePath.length; trimLength = relativePathHead.length; } else { offset = rootDir.length + path.sep.length; trimLength = 0; } const start = match.index - offset; const end = start + match[0].length; return colorize(filePath, Math.max(start, 0), Math.max(end, trimLength)); }; module.exports = highlight;