Sha256: 040eff3f8ea31236d78d19603511e38304e556db045fc1c9f3f222fac63bd053
Contents?: true
Size: 1.71 KB
Versions: 2
Compression:
Stored size: 1.71 KB
Contents
import MagicString from 'magic-string'; import { createFilter } from 'rollup-pluginutils'; function escape(str) { return str.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, '\\$&'); } function functor(thing) { if (typeof thing === 'function') return thing; return () => thing; } function longest(a, b) { return b.length - a.length; } export default function replace(options = {}) { const filter = createFilter(options.include, options.exclude); const { delimiters } = options; let values; if (options.values) { values = options.values; } else { values = Object.assign({}, options); delete values.delimiters; delete values.include; delete values.exclude; } const keys = Object.keys(values).sort(longest).map(escape); const pattern = delimiters ? new RegExp( `${escape(delimiters[0])}(${keys.join('|')})${escape(delimiters[1])}`, 'g' ) : new RegExp( `\\b(${keys.join('|')})\\b`, 'g' ); // convert all values to functions Object.keys(values).forEach(key => { values[key] = functor(values[key]); }); return { name: 'replace', transform(code, id) { if (!filter(id)) return null; const magicString = new MagicString(code); let hasReplacements = false; let match; let start, end, replacement; while ((match = pattern.exec(code))) { hasReplacements = true; start = match.index; end = start + match[0].length; replacement = String(values[match[1]](id)); magicString.overwrite(start, end, replacement); } if (!hasReplacements) return null; let result = { code: magicString.toString() }; if (options.sourceMap !== false && options.sourcemap !== false) result.map = magicString.generateMap({ hires: true }); return result; } }; }
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
jass-vue-0.4.0 | vendor/node_modules/rollup-plugin-replace/src/index.js |
jass-vue-0.3.0 | vendor/node_modules/rollup-plugin-replace/src/index.js |