Skip to content

Commit c53f5f9

Browse files
author
Eduardo García Sanz
committed
tested and documented...
1 parent 3807c8c commit c53f5f9

4 files changed

Lines changed: 54 additions & 5 deletions

File tree

README.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,9 @@ var browserify = require('browserify'),
3131

3232
browserify({
3333
transform: [svgrt({
34-
svgo : {}, // options passed to svgo
35-
react: {} // options passed to react-tools
34+
icon : true, // wrap it with a span with class "icon icon-filename"
35+
svgo : {}, // options passed to svgo
36+
react: {} // options passed to react-tools
3637
})]
3738
})
3839
.bundle()

index.js

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
var through = require('through'),
2+
path = require('path'),
23
extend = require('extend'),
34
SVGO = require('svgo'),
45
react = require('react-tools'),
@@ -19,6 +20,18 @@ var isSVG = function (filename) {
1920
return (/\.svg$/i).test(filename);
2021
};
2122

23+
var wrapScript = function (filename, data) {
24+
25+
return 'module.exports = require("react").createClass({render: function () { return (' + data + '); }});';
26+
};
27+
28+
var wrapSpan = function (filename, data) {
29+
30+
return wrapScript(filename, '<span class="icon icon-' + path.basename(filename, '.svg') + '">' + data + '</span>');
31+
};
32+
33+
var wrap = wrapScript;
34+
2235
var transform = function (filename) {
2336

2437
var write = function (buffer) {
@@ -33,7 +46,7 @@ var transform = function (filename) {
3346

3447
var out = function (svg) {
3548

36-
var source = 'module.exports = require("react").createClass({render: function () { return (' + svg.data + '); }});',
49+
var source = wrap(filename, svg.data),
3750
output = react.transform(source, settings.react);
3851

3952
stream.queue(output);
@@ -58,5 +71,10 @@ module.exports = function (a) {
5871

5972
svgo = new SVGO(settings.svgo);
6073

74+
if (a.icon) {
75+
76+
wrap = wrapSpan;
77+
}
78+
6179
return transform;
6280
};

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
"homepage" : "https://github.com/coma/svg-reactify",
55
"repository" : "https://github.com/coma/svg-reactify",
66
"main" : "./index.js",
7-
"version" : "0.4.0",
7+
"version" : "0.5.0",
88
"license" : "MIT",
99
"private" : false,
1010
"authors" : [

test/main.js

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ describe('when passing a string', function () {
4141
return;
4242
}
4343

44-
assert.strictEqual(output, 'module.exports = require(\"react\").createClass({render: function () { return (React.createElement(\"svg\", {viewBox: \"0 0 100 100\", xmlns: \"http://www.w3.org/2000/svg\"}, React.createElement(\"path\", {d: \"M0 0h100v100H0z\"}))); }});');
44+
assert.strictEqual(output, 'module.exports = require("react").createClass({render: function () { return (React.createElement("svg", {viewBox: "0 0 100 100", xmlns: "http://www.w3.org/2000/svg"}, React.createElement("path", {d: "M0 0h100v100H0z"}))); }});');
4545
done();
4646
}
4747
};
@@ -51,4 +51,34 @@ describe('when passing a string', function () {
5151
svg.forEach(write);
5252
end();
5353
});
54+
55+
it('wraps the svg with a span to use them as icons', function (done) {
56+
57+
var write, end;
58+
59+
svgrt.__set__('through', function () {
60+
61+
assert.strictEqual(arguments.length, 2);
62+
63+
write = arguments[0];
64+
end = arguments[1];
65+
66+
return {
67+
queue: function (output) {
68+
69+
if (!output) {
70+
71+
return;
72+
}
73+
74+
assert.strictEqual(output, 'module.exports = require("react").createClass({render: function () { return (React.createElement("span", {class: "icon icon-foo"}, React.createElement("svg", {viewBox: "0 0 100 100", xmlns: "http://www.w3.org/2000/svg"}, React.createElement("path", {d: "M0 0h100v100H0z"})))); }});');
75+
done();
76+
}
77+
};
78+
});
79+
80+
svgrt({icon: true})('foo.svg');
81+
svg.forEach(write);
82+
end();
83+
});
5484
});

0 commit comments

Comments
 (0)