Skip to content

Commit

Permalink
Merge branch '1.1.0RC1'
Browse files Browse the repository at this point in the history
  • Loading branch information
ericmorand committed Mar 13, 2017
2 parents 7dbbfe0 + 1e8b651 commit 0577373
Show file tree
Hide file tree
Showing 13 changed files with 105 additions and 80 deletions.
5 changes: 3 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,10 @@
"repository": "ericmorand/glslify-require",
"license": "Apache-2.0",
"dependencies": {
"browserify-transform-tools": "^1.7.0",
"event-emitter": "^0.3.4",
"glslify": "^6.0.1",
"glslify-deps": "^1.3.0"
"glslify-deps": "^1.3.0",
"through2": "^2.0.3"
},
"devDependencies": {
"browserify": "^14.1.0",
Expand Down
12 changes: 8 additions & 4 deletions src/index.js
Original file line number Diff line number Diff line change
@@ -1,12 +1,16 @@
let transform = require('./transform');
let path = require('path');
let glslify = require('glslify');

module.exports = function (b, opts) {
if (typeof b === 'string') {
throw new Error('glslify-require appears to have been configured as a transform; it must be configured as a plugin.');
}

b.transform(transform, {
b: b
let Glslyfier = require('./lib/glslyfier')(glslify);
let glslyfier = new Glslyfier(opts);

glslyfier.emitter.on('file', function(file) {
b.emit('file', file);
});

b.transform(glslyfier.transform.bind(glslyfier));
};
47 changes: 47 additions & 0 deletions src/lib/glslyfier.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
let through = require('through2');
let glslifyDeps = require('glslify-deps');
let path = require('path');

module.exports = function(glslify) {
let Glslyfier = function() {
this.emitter = require('event-emitter')();
};

Glslyfier.prototype.transform = function(file) {
if (path.extname(file) == '.glsl') {
let emitter = this.emitter;
let src = null;

let transform = function (chunk, enc, cb) {
src = glslify.compile(chunk, {
basedir: path.dirname(file)
});

cb();
};

let flush = function (cb) {
let self = this;
let depper = glslifyDeps();

depper.add(file, function(err, deps) {
deps.forEach(function(dep) {
if (!dep.entry) {
emitter.emit('file', dep.file);
}
});

self.push('module.exports = ' + JSON.stringify(src) + ';');

cb();
});
};

return through(transform, flush);
}

return through();
};

return Glslyfier;
};
46 changes: 0 additions & 46 deletions src/transform/index.js

This file was deleted.

12 changes: 5 additions & 7 deletions test/fixtures/foo.glsl
Original file line number Diff line number Diff line change
@@ -1,9 +1,7 @@
struct Foo {
vec3 bar;
};
#pragma glslify: bar = require(./sub/bar)

struct Foo2 {
vec3 bar;
};
float foo() {
return bar;
}

#pragma glslify: export(Foo)
#pragma glslify: export(foo)
2 changes: 1 addition & 1 deletion test/fixtures/main.glsl
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
#pragma glslify: foo = require(./foo)

void main() {
bar = foo;
foobar = foo();
}
2 changes: 2 additions & 0 deletions test/fixtures/secondary.glsl
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
void secondary() {
}
3 changes: 3 additions & 0 deletions test/fixtures/sub/bar.glsl
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
float v = 5;

#pragma glslify: export(v)
10 changes: 6 additions & 4 deletions test/render.js → test/plugin.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ tap.test('plugin', function (test) {
test.test('should render a valid bundle', function (t) {
let browserify = new Browserify();
let deps = [];
let file = path.resolve('test/render/index.js');
let file = path.resolve('test/plugin/index.js');

browserify
.add(file)
Expand All @@ -20,14 +20,16 @@ tap.test('plugin', function (test) {
.plugin(plugin)
.bundle(function (err, buf) {
if (err) {
t.fail(err);
t.fail(err.message);
}
else {
t.equal(deps.length, 3);
t.equal(deps.length, 5);

let wantedDeps = [
path.resolve('test/fixtures/main.glsl'),
path.resolve('test/fixtures/foo.glsl')
path.resolve('test/fixtures/foo.glsl'),
path.resolve('test/fixtures/sub/bar.glsl'),
path.resolve('test/fixtures/secondary.glsl'),
];

wantedDeps.forEach(function (wantedDep) {
Expand Down
4 changes: 4 additions & 0 deletions test/plugin/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
module.exports = {
main: require('../fixtures/main.glsl'),
secondary: require('../fixtures/secondary.glsl')
};
1 change: 0 additions & 1 deletion test/render/index.js

This file was deleted.

39 changes: 25 additions & 14 deletions test/transform.js
Original file line number Diff line number Diff line change
@@ -1,29 +1,40 @@
const fs = require('fs');
const tap = require('tap');
const path = require('path');
const transformTools = require('browserify-transform-tools');

const transform = require('../src/transform');
const glslify = require('glslify');
const through = require('through2');

tap.test('transform', function (test) {
test.plan(1);

let Glslyfier = require('../src/lib/glslyfier')(glslify);
let glslyfier = new Glslyfier();

let transform = glslyfier.transform.bind(glslyfier);

test.test('should return a valid source', function (t) {
let file = path.resolve('test/fixtures/main.glsl');
let data = null;

fs.createReadStream(file)
.pipe(transform(file))
.pipe(through(function(chunk, enc, cb) {
data = chunk.toString();

transformTools.runTransform(transform, file, {},
function (err, transformed) {
if (err) {
cb();
}))
.on('finish', function () {
fs.readFile(path.resolve('test/transform/wanted.js'), function(err, readData) {
t.same(data, readData.toString());

t.end();
});
})
.on('error', function (err) {
t.fail(err);
}
else {
let wanted = fs.readFileSync(path.resolve('test/transform/wanted.js'));

t.same(transformed, wanted.toString());
t.end();
}

t.end();
}
);
);
});
});
2 changes: 1 addition & 1 deletion test/transform/wanted.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

0 comments on commit 0577373

Please sign in to comment.