![Namecheap Takes Down Polyfill.io Service Following Supply Chain Attack](https://cdn.sanity.io/images/cgdhsj6q/production/6af25114feaaac7179b18127c83327568ff592d1-1024x1024.webp?w=800&fit=max&auto=format)
Security News
Namecheap Takes Down Polyfill.io Service Following Supply Chain Attack
Polyfill.io has been serving malware for months via its CDN, after the project's open source maintainer sold the service to a company based in China.
strings
Advanced tools
Readme
Easily replace and transform :props in strings.
Strings is the result of many hours on screenhero and a truly collaborative effort between Brian Woodward and Jon Schlinkert.
Please report any bugs or feature requests, thanks!
npm install strings --save
bower install strings --save
Strings constructor method
Create a new instance of Strings
, optionally passing a default context to use.
Example
var strings = new Strings({destbase: '_gh_pages/'});
return
{Object} Instance of a Strings objectSet or get a named propstring.
strings.propstring(name, propstring)
Example
strings.propstring('url', ':base/blog/posts/:basename:ext');
name
{String}propstring
{String}return
{Strings} to allow chainingapi
publicSet or get a string or regex pattern to be used for matching.
strings.pattern(name, pattern, flags);
Example
strings.pattern('anyProp', ':([\\w]+)');
name
{String}: The name of the stored pattern.pattern
{String|RegExp|Function}: The pattern to use for matching.flags
{String}: Optionally pass RegExp flags to use.return
{Strings} to allow chainingapi
publicSet or get a replacement pattern. Replacement patterns can be a regular expression, string or function.
strings.replacement(name, replacement)
Example
strings.replacement('prop', function(match) {
return match.toUpperCase();
});
name
{String}replacement
{String|Function}: The replacement to use when patterns are matched.return
{Strings} to allow chainingapi
publicSet a parser that can later be used to parse any given string.
strings.parser (name, replacements)
Example
Pass an object:
strings.parser('prop', {
pattern: /:([\\w]+)/,
replacement: function(match) {
return match.toUpperCase();
}
);
Or an array
strings.parser('prop', [
{
pattern: 'a',
replacement: 'b'
},
{
pattern: 'c',
replacement: 'd'
}
]);
name
{String}arr
{Object|Array}: Object or array of replacement patterns to associate.return
{Strings} to allow chainingapi
publicGet an array of stored parsers by passing a parser name or array of parser names.
strings.parsers(array)
Example
// pass an array of parser names
strings.parsers(['a', 'b', 'c']);
// or a string
strings.parsers('a');
Using parsers
like this:
strings.parsers([
'jumbotron',
'labels',
'progress',
'glyphicons',
'badges',
'alerts',
'newlines'
]);
is just sugar for:
var parsers = [
strings.parser('jumbotron'),
strings.parser('labels'),
strings.parser('progress'),
strings.parser('glyphicons'),
strings.parser('badges'),
strings.parser('alerts'),
strings.parser('newlines'),
];
For an example, see markdown-symbols, which uses this to store replacement patterns for custom markdown symbols.
parsers
{String|Array}: string or array of parsers to get.return
{Array}api
publicExtend a parser with additional replacement patterns. Useful if you're using an external module for replacement patterns and you need to extend it.
strings.extendParser(parser, replacements)
Example
strings.extendParser('prop', {
pattern: /:([\\w]+)/,
replacement: function(str) {
return str.toUpperCase();
}
);
name
{String}: name of the parser to extend.arr
{Object|Array}: array of replacement patterns to store with the given name.pattern
{String|RegExp}replacement
{String|Function}return
{Strings} to allow chainingapi
publicSet or get a reusable Strings template, consisting of a propstring and an array of parsers.
Templates are useful since they can be stored and then later used with any context.
strings.template(name, propstring, parsers);
Example
strings.template('abc', ':a/:b/:c', ['a', 'b', 'c']);
// or use a named propstring
strings.template('abc', 'foo', ['a', 'b', 'c']);
here ^
name
{String}propstring
{String}parsers
{Array}: Names of the parsers to use with the template.return
{Strings} to allow chainingapi
publicReplace :propstrings
with the real values.
strings.replace(str, context)
Example
strings.replace(':a/:b/:c', {
a: 'foo',
b: 'bar',
c: 'baz'
});
//=> foo/bar/baz
str
{String}: The string with :propstrings
to replace.context
{String}: The object with replacement properties.return
{Strings} to allow chainingapi
publicDirectly process the given prop-string, using a named replacement pattern or array of named replacement patterns, with the given context.
strings.process(str, parsers, context)
Examples:
Pass a propstring and the parsers to use:
// define some parsers to do simple key-value replacements
strings.parser('a', {'{foo}': 'AAA'});
strings.parser('b', {'{bar}': 'BBB'});
strings.parser('c', {'{baz}': 'CCC'});
console.log(strings.process('{foo}/{bar}/{baz}', ['a', 'b', 'c']));
// => 'AAA/BBB/CCC'
str
{String}: the string to processparsers
{String|Object|Array}: named parsers or parser objects to use when processing.context
{Object}: context to use. optional if a global context is passed.return
{String}api
publicProcess a template with the given context.
strings.run(template, context)
Example
strings.run('blogTemplate', {
dest: '_gh_pages',
basename: '2014-07-01-post',
ext: '.html'
});
template
{String}: The template to process.context
{Object}: Optional context object, to bind to replacement function as this
return
{String}api
publicJon Schlinkert
Brian Woodward
Copyright (c) 2014 Brian Woodward, contributors.
Released under the MIT license
This file was generated by verb-cli on June 30, 2014.
FAQs
Easily replace and transform :props in strings.
We found that strings demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 2 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Polyfill.io has been serving malware for months via its CDN, after the project's open source maintainer sold the service to a company based in China.
Security News
OpenSSF is warning open source maintainers to stay vigilant against reputation farming on GitHub, where users artificially inflate their status by manipulating interactions on closed issues and PRs.
Security News
A JavaScript library maintainer is under fire after merging a controversial PR to support legacy versions of Node.js.