Socket
Socket
Sign inDemoInstall

strings

Package Overview
Dependencies
137
Maintainers
2
Versions
14
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 0.3.0 to 0.3.1

test/group.js

2

bower.json
{
"name": "strings",
"version": "0.3.0",
"version": "0.3.1",
"main": [

@@ -5,0 +5,0 @@ "index.js"

@@ -26,3 +26,5 @@ /**

this._context = context || {};
this._templates = {};
this._replacements = {};
this._propstrings = {};
this._patterns = {};
this._parsers = {};

@@ -36,3 +38,3 @@ this._groups = {};

*
* Set a propstring to be stored for later use.
* Get or set a propstring.
*

@@ -47,5 +49,5 @@ * @param {String} `name`

if (_.isUndefined(template)) {
return this._templates[name];
return this._propstrings[name];
}
this._templates[name] = template;
this._propstrings[name] = template;
return this;

@@ -56,2 +58,45 @@ };

/**
* .pattern (name, pattern)
*
* Get or set regular expression or string.
*
* @param {String} `name`
* @param {String} `pattern`
* @return {Object} Instance of the current Strings object
* @api public
*/
Strings.prototype.pattern = function (name, pattern, flags) {
if (_.isUndefined(pattern)) {
return this._patterns[name];
}
if (!(pattern instanceof RegExp)) {
pattern = new RegExp(pattern, flags || '');
}
this._patterns[name] = pattern;
return this;
};
/**
* .replacement (name, replacement)
*
* Get or set a replacement string or function.
*
* @param {String} `name`
* @param {String} `replacement`
* @return {Object} Instance of the current Strings object
* @api public
*/
Strings.prototype.replacement = function (name, replacement) {
if (_.isUndefined(replacement)) {
return this._replacements[name];
}
this._replacements[name] = replacement;
return this;
};
/**
* .parser (name, replacements)

@@ -127,3 +172,4 @@ *

var _parsers = this.parsers(parsers);
return frep.strWithArr(template, utils._bind(_parsers, _.extend({}, this._context, context)));
var ctx = utils._bind(_parsers, _.extend({}, this._context, context));
return frep.strWithArr(template, ctx);
};

@@ -130,0 +176,0 @@

{
"name": "strings",
"version": "0.3.0",
"version": "0.3.1",
"description": "Easily replace and transform :props in strings.",

@@ -5,0 +5,0 @@ "homepage": "https://github.com/doowb/strings",

@@ -12,290 +12,3 @@ /**

describe('.propstring()', function() {
var strings = new Strings();
describe('when a propstring is propstring()', function() {
it('should be stored by Strings on the `_template` object:', function () {
var name = 'test1';
var template = ':foo/:baz/:basename/index:ext';
strings.propstring(name, template);
var actual = strings._templates[name];
expect(strings._templates).to.have.property(name);
expect(actual).to.eql(template);
});
it('should be retrievable using `propstring(name)`', function () {
var name = 'test2';
var template = ':basename/index:ext';
strings.propstring(name, template);
var actual = strings.propstring(name);
expect(template).to.eql(template);
});
});
});
describe('.parser() - add', function() {
var strings = new Strings();
describe('when a named parser is defined', function() {
it('should replace values with strings', function () {
var name = 'test-parser-1';
var actual = {
':basename': 'foo',
':ext': '.html'
};
strings.parser(name, actual);
expect(strings._parsers).to.have.property(name);
expect(actual).to.eql(strings._parsers[name]);
});
it('should replace values with functions', function () {
var name = 'test-parser-1';
var actual = {
':basename': function () {
return 'foo';
},
':ext': function () {
return '.html';
}
};
strings.parser(name, actual);
expect(strings._parsers).to.have.property(name);
expect(actual).to.eql(strings._parsers[name]);
});
});
});
describe('.parser() - get', function() {
var strings = new Strings();
describe('when only one paramter is passed', function() {
it('it should retrieve the stored parser with the given name', function () {
var name = 'test-parser-2';
var actual = {
':basename': function () {
return 'foo';
},
':ext': function () {
return '.html';
}
};
strings.parser(name, actual);
expect(actual).to.eql(strings.parser(name));
});
});
});
describe('.parsers() -list', function () {
var strings;
before(function () {
strings = new Strings();
strings.parser('objLiteralParser', {':foo': 'bar'});
strings.parser('objReplacementsParser', {pattern: ':bar', replacement: 'baz'});
strings.parser('objReplacementsFnParser', {pattern: ':baz', replacement: function () {return 'bing';}});
strings.parser('arrObjLiteralParser', [{ ':arrFoo': 'arrBar' }, { ':arrBar': 'arrBaz' }]);
strings.parser('arrObjReplacementsParser', [
{ pattern: ':arrBaz', replacement: 'arrBing' },
{ pattern: ':arrBing', replacement: 'arrBang' }
]);
strings.parser('arrObjReplacementsFnParser', [
{ pattern: ':arrBang', replacement: function () { return 'arrBong'; } },
{ pattern: ':arrBeep', replacement: function () { return 'arrBoop'; } }
]);
});
describe('when passing in a single string as a replacement', function () {
it('should parse and return the modified string', function () {
var expected = [{ pattern: ':foo', replacement: 'bar' }];
var actual = strings.parsers('objLiteralParser');
expect(actual).to.eql(expected);
});
it('when passing in an array with a single string', function () {
var expected = [{ pattern: ':bar', replacement: 'baz' }];
var actual = strings.parsers(['objReplacementsParser']);
expect(actual).to.eql(expected);
});
it('when passing in an array with a multiple strings', function () {
var expected = [
{ pattern: ':bar', replacement: 'baz' },
{ pattern: ':baz', replacement: function () { return 'bing'; } }
];
var actual = strings.parsers(['objReplacementsParser', 'objReplacementsFnParser']);
expect(actual.length).to.eql(expected.length);
});
it('when passing in an array with a multiple types', function () {
var expected = [
{ pattern: ':bar', replacement: 'baz' },
{ pattern: ':basename', replacement: 'file' },
{ pattern: ':ext', replacement: 'ext' }
];
var actual = strings.parsers(['objReplacementsParser', {':basename': 'file', ':ext': 'ext'}]);
expect(actual).to.eql(expected);
});
it('when passing in `undefined`', function () {
var actual = strings.parsers();
expect(actual.length).to.eql(9);
});
});
});
describe('.group()', function() {
var strings;
before(function () {
strings = new Strings();
});
it('when adding a named group, it should be in `_groups`', function () {
var name = 'a';
var propstring = 'b';
var parsers = ['a', 'b'];
var expected = {propstring: propstring, parsers: parsers};
strings.group(name, propstring, parsers);
expect(strings._groups).to.have.property(name);
expect(expected).to.eql(strings._groups[name]);
});
it('when adding a named group, it should be gotten through `group(name)`', function () {
var name = 'a';
var propstring = 'b';
var parsers = ['a', 'b'];
var actual = strings.group(name);
var expected = {propstring: propstring, parsers: parsers};
strings.group(name, propstring, parsers);
expect(expected).to.eql(strings.group(name));
});
});
describe('.template()', function () {
var strings;
before(function () {
strings = new Strings();
});
it('when a template is passed in', function () {
var expected = ':basename/index:ext';
var actual = strings.template(':basename/index:ext');
expect(actual).to.eql(expected);
});
it('when a template and parser object are passed in', function () {
var expected = 'file/index.html';
var parser = {
':basename': 'file',
':ext': '.html'
};
var actual = strings.template(':basename/index:ext', parser);
expect(actual).to.eql(expected);
});
it('when a template, parser object, and context are passed in', function () {
var path = require('path');
var expected = 'file/index.html';
var parser = {
':basename': function () {
return path.basename(this.filepath, path.extname(this.filepath));
},
':ext': function () {
return path.extname(this.filepath);
}
};
var context = {
filepath: 'path/to/my/file.html'
};
var actual = strings.template(':basename/index:ext', parser, context);
expect(actual).to.eql(expected);
});
it('when a template, named parser, and context are passed in', function () {
var path = require('path');
var expected = 'file/index.html';
var parser = {
':basename': function () {
return path.basename(this.filepath, path.extname(this.filepath));
},
':ext': function () {
return path.extname(this.filepath);
}
};
var context = {
filepath: 'path/to/my/file.html'
};
strings.parser('path', parser);
var actual = strings.template(':basename/index:ext', 'path', context);
expect(actual).to.eql(expected);
});
});
describe('.process()', function () {
var strings;
before(function () {
strings = new Strings();
strings.propstring('pretty', ':basename/index:ext');
});
it('when a propstring is passed in', function () {
var expected = ':basename/index:ext';
var actual = strings.process('pretty');
expect(actual).to.eql(expected);
});
it('when a propstring and parser object are passed in', function () {
var expected = 'file/index.html';
var parser = {
':basename': 'file',
':ext': '.html'
};
var actual = strings.process('pretty', parser);
expect(actual).to.eql(expected);
});
it('when a propstring, parser object, and context are passed in', function () {
var path = require('path');
var expected = 'file/index.html';
var parser = {
':basename': function () {
return path.basename(this.filepath, path.extname(this.filepath));
},
':ext': function () {
return path.extname(this.filepath);
}
};
var context = {
filepath: 'path/to/my/file.html'
};
var actual = strings.process('pretty', parser, context);
expect(actual).to.eql(expected);
});
it('when a propstring, named parser, and context are passed in', function () {
var path = require('path');
var expected = 'file/index.html';
var parser = {
':basename': function () {
return path.basename(this.filepath, path.extname(this.filepath));
},
':ext': function () {
return path.extname(this.filepath);
}
};
var context = {
filepath: 'path/to/my/file.html'
};
strings.parser('path', parser);
var actual = strings.process('pretty', 'path', context);
expect(actual).to.eql(expected);
});
});
describe('.run()', function () {

@@ -302,0 +15,0 @@

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc