mirror of
https://github.com/biobulkbende/biobulkbende.org.git
synced 2025-10-12 07:34:58 +00:00
structure, layout and automation
This commit is contained in:
134
node_modules/fstream/examples/filter-pipe.js
generated
vendored
Normal file
134
node_modules/fstream/examples/filter-pipe.js
generated
vendored
Normal file
@ -0,0 +1,134 @@
|
||||
var fstream = require('../fstream.js')
|
||||
var path = require('path')
|
||||
|
||||
var r = fstream.Reader({
|
||||
path: path.dirname(__dirname),
|
||||
filter: function () {
|
||||
return !this.basename.match(/^\./) &&
|
||||
!this.basename.match(/^node_modules$/) &&
|
||||
!this.basename.match(/^deep-copy$/) &&
|
||||
!this.basename.match(/^filter-copy$/)
|
||||
}
|
||||
})
|
||||
|
||||
// this writer will only write directories
|
||||
var w = fstream.Writer({
|
||||
path: path.resolve(__dirname, 'filter-copy'),
|
||||
type: 'Directory',
|
||||
filter: function () {
|
||||
return this.type === 'Directory'
|
||||
}
|
||||
})
|
||||
|
||||
var indent = ''
|
||||
|
||||
r.on('entry', appears)
|
||||
r.on('ready', function () {
|
||||
console.error('ready to begin!', r.path)
|
||||
})
|
||||
|
||||
function appears (entry) {
|
||||
console.error(indent + 'a %s appears!', entry.type, entry.basename, typeof entry.basename)
|
||||
if (foggy) {
|
||||
console.error('FOGGY!')
|
||||
var p = entry
|
||||
do {
|
||||
console.error(p.depth, p.path, p._paused)
|
||||
p = p.parent
|
||||
} while (p)
|
||||
|
||||
throw new Error('\u001b[mshould not have entries while foggy')
|
||||
}
|
||||
indent += '\t'
|
||||
entry.on('data', missile(entry))
|
||||
entry.on('end', runaway(entry))
|
||||
entry.on('entry', appears)
|
||||
}
|
||||
|
||||
var foggy
|
||||
function missile (entry) {
|
||||
function liftFog (who) {
|
||||
if (!foggy) return
|
||||
if (who) {
|
||||
console.error('%s breaks the spell!', who && who.path)
|
||||
} else {
|
||||
console.error('the spell expires!')
|
||||
}
|
||||
console.error('\u001b[mthe fog lifts!\n')
|
||||
clearTimeout(foggy)
|
||||
foggy = null
|
||||
if (entry._paused) entry.resume()
|
||||
}
|
||||
|
||||
if (entry.type === 'Directory') {
|
||||
var ended = false
|
||||
entry.once('end', function () { ended = true })
|
||||
return function (c) {
|
||||
// throw in some pathological pause()/resume() behavior
|
||||
// just for extra fun.
|
||||
process.nextTick(function () {
|
||||
if (!foggy && !ended) { // && Math.random() < 0.3) {
|
||||
console.error(indent + '%s casts a spell', entry.basename)
|
||||
console.error('\na slowing fog comes over the battlefield...\n\u001b[32m')
|
||||
entry.pause()
|
||||
entry.once('resume', liftFog)
|
||||
foggy = setTimeout(liftFog, 1000)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
return function (c) {
|
||||
var e = Math.random() < 0.5
|
||||
console.error(indent + '%s %s for %d damage!',
|
||||
entry.basename,
|
||||
e ? 'is struck' : 'fires a chunk',
|
||||
c.length)
|
||||
}
|
||||
}
|
||||
|
||||
function runaway (entry) {
|
||||
return function () {
|
||||
var e = Math.random() < 0.5
|
||||
console.error(indent + '%s %s',
|
||||
entry.basename,
|
||||
e ? 'turns to flee' : 'is vanquished!')
|
||||
indent = indent.slice(0, -1)
|
||||
}
|
||||
}
|
||||
|
||||
w.on('entry', attacks)
|
||||
// w.on('ready', function () { attacks(w) })
|
||||
function attacks (entry) {
|
||||
console.error(indent + '%s %s!', entry.basename,
|
||||
entry.type === 'Directory' ? 'calls for backup' : 'attacks')
|
||||
entry.on('entry', attacks)
|
||||
}
|
||||
|
||||
var ended = false
|
||||
var i = 1
|
||||
r.on('end', function () {
|
||||
if (foggy) clearTimeout(foggy)
|
||||
console.error("\u001b[mIT'S OVER!!")
|
||||
console.error('A WINNAR IS YOU!')
|
||||
|
||||
console.log('ok ' + (i++) + ' A WINNAR IS YOU')
|
||||
ended = true
|
||||
// now go through and verify that everything in there is a dir.
|
||||
var p = path.resolve(__dirname, 'filter-copy')
|
||||
var checker = fstream.Reader({ path: p })
|
||||
checker.checker = true
|
||||
checker.on('child', function (e) {
|
||||
var ok = e.type === 'Directory'
|
||||
console.log((ok ? '' : 'not ') + 'ok ' + (i++) +
|
||||
' should be a dir: ' +
|
||||
e.path.substr(checker.path.length + 1))
|
||||
})
|
||||
})
|
||||
|
||||
process.on('exit', function () {
|
||||
console.log((ended ? '' : 'not ') + 'ok ' + (i) + ' ended')
|
||||
console.log('1..' + i)
|
||||
})
|
||||
|
||||
r.pipe(w)
|
118
node_modules/fstream/examples/pipe.js
generated
vendored
Normal file
118
node_modules/fstream/examples/pipe.js
generated
vendored
Normal file
@ -0,0 +1,118 @@
|
||||
var fstream = require('../fstream.js')
|
||||
var path = require('path')
|
||||
|
||||
var r = fstream.Reader({
|
||||
path: path.dirname(__dirname),
|
||||
filter: function () {
|
||||
return !this.basename.match(/^\./) &&
|
||||
!this.basename.match(/^node_modules$/) &&
|
||||
!this.basename.match(/^deep-copy$/)
|
||||
}
|
||||
})
|
||||
|
||||
var w = fstream.Writer({
|
||||
path: path.resolve(__dirname, 'deep-copy'),
|
||||
type: 'Directory'
|
||||
})
|
||||
|
||||
var indent = ''
|
||||
|
||||
r.on('entry', appears)
|
||||
r.on('ready', function () {
|
||||
console.error('ready to begin!', r.path)
|
||||
})
|
||||
|
||||
function appears (entry) {
|
||||
console.error(indent + 'a %s appears!', entry.type, entry.basename, typeof entry.basename, entry)
|
||||
if (foggy) {
|
||||
console.error('FOGGY!')
|
||||
var p = entry
|
||||
do {
|
||||
console.error(p.depth, p.path, p._paused)
|
||||
p = p.parent
|
||||
} while (p)
|
||||
|
||||
throw new Error('\u001b[mshould not have entries while foggy')
|
||||
}
|
||||
indent += '\t'
|
||||
entry.on('data', missile(entry))
|
||||
entry.on('end', runaway(entry))
|
||||
entry.on('entry', appears)
|
||||
}
|
||||
|
||||
var foggy
|
||||
function missile (entry) {
|
||||
function liftFog (who) {
|
||||
if (!foggy) return
|
||||
if (who) {
|
||||
console.error('%s breaks the spell!', who && who.path)
|
||||
} else {
|
||||
console.error('the spell expires!')
|
||||
}
|
||||
console.error('\u001b[mthe fog lifts!\n')
|
||||
clearTimeout(foggy)
|
||||
foggy = null
|
||||
if (entry._paused) entry.resume()
|
||||
}
|
||||
|
||||
if (entry.type === 'Directory') {
|
||||
var ended = false
|
||||
entry.once('end', function () { ended = true })
|
||||
return function (c) {
|
||||
// throw in some pathological pause()/resume() behavior
|
||||
// just for extra fun.
|
||||
process.nextTick(function () {
|
||||
if (!foggy && !ended) { // && Math.random() < 0.3) {
|
||||
console.error(indent + '%s casts a spell', entry.basename)
|
||||
console.error('\na slowing fog comes over the battlefield...\n\u001b[32m')
|
||||
entry.pause()
|
||||
entry.once('resume', liftFog)
|
||||
foggy = setTimeout(liftFog, 10)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
return function (c) {
|
||||
var e = Math.random() < 0.5
|
||||
console.error(indent + '%s %s for %d damage!',
|
||||
entry.basename,
|
||||
e ? 'is struck' : 'fires a chunk',
|
||||
c.length)
|
||||
}
|
||||
}
|
||||
|
||||
function runaway (entry) {
|
||||
return function () {
|
||||
var e = Math.random() < 0.5
|
||||
console.error(indent + '%s %s',
|
||||
entry.basename,
|
||||
e ? 'turns to flee' : 'is vanquished!')
|
||||
indent = indent.slice(0, -1)
|
||||
}
|
||||
}
|
||||
|
||||
w.on('entry', attacks)
|
||||
// w.on('ready', function () { attacks(w) })
|
||||
function attacks (entry) {
|
||||
console.error(indent + '%s %s!', entry.basename,
|
||||
entry.type === 'Directory' ? 'calls for backup' : 'attacks')
|
||||
entry.on('entry', attacks)
|
||||
}
|
||||
|
||||
var ended = false
|
||||
r.on('end', function () {
|
||||
if (foggy) clearTimeout(foggy)
|
||||
console.error("\u001b[mIT'S OVER!!")
|
||||
console.error('A WINNAR IS YOU!')
|
||||
|
||||
console.log('ok 1 A WINNAR IS YOU')
|
||||
ended = true
|
||||
})
|
||||
|
||||
process.on('exit', function () {
|
||||
console.log((ended ? '' : 'not ') + 'ok 2 ended')
|
||||
console.log('1..2')
|
||||
})
|
||||
|
||||
r.pipe(w)
|
68
node_modules/fstream/examples/reader.js
generated
vendored
Normal file
68
node_modules/fstream/examples/reader.js
generated
vendored
Normal file
@ -0,0 +1,68 @@
|
||||
var fstream = require('../fstream.js')
|
||||
var tap = require('tap')
|
||||
var fs = require('fs')
|
||||
var path = require('path')
|
||||
var dir = path.dirname(__dirname)
|
||||
|
||||
tap.test('reader test', function (t) {
|
||||
var children = -1
|
||||
var gotReady = false
|
||||
var ended = false
|
||||
|
||||
var r = fstream.Reader({
|
||||
path: dir,
|
||||
filter: function () {
|
||||
// return this.parent === r
|
||||
return this.parent === r || this === r
|
||||
}
|
||||
})
|
||||
|
||||
r.on('ready', function () {
|
||||
gotReady = true
|
||||
children = fs.readdirSync(dir).length
|
||||
console.error('Setting expected children to ' + children)
|
||||
t.equal(r.type, 'Directory', 'should be a directory')
|
||||
})
|
||||
|
||||
r.on('entry', function (entry) {
|
||||
children--
|
||||
if (!gotReady) {
|
||||
t.fail('children before ready!')
|
||||
}
|
||||
t.equal(entry.dirname, r.path, 'basename is parent dir')
|
||||
})
|
||||
|
||||
r.on('error', function (er) {
|
||||
t.fail(er)
|
||||
t.end()
|
||||
process.exit(1)
|
||||
})
|
||||
|
||||
r.on('end', function () {
|
||||
t.equal(children, 0, 'should have seen all children')
|
||||
ended = true
|
||||
})
|
||||
|
||||
var closed = false
|
||||
r.on('close', function () {
|
||||
t.ok(ended, 'saw end before close')
|
||||
t.notOk(closed, 'close should only happen once')
|
||||
closed = true
|
||||
t.end()
|
||||
})
|
||||
})
|
||||
|
||||
tap.test('reader error test', function (t) {
|
||||
// assumes non-root on a *nix system
|
||||
var r = fstream.Reader({ path: '/etc/shadow' })
|
||||
|
||||
r.once('error', function (er) {
|
||||
t.ok(true)
|
||||
t.end()
|
||||
})
|
||||
|
||||
r.on('end', function () {
|
||||
t.fail('reader ended without error')
|
||||
t.end()
|
||||
})
|
||||
})
|
27
node_modules/fstream/examples/symlink-write.js
generated
vendored
Normal file
27
node_modules/fstream/examples/symlink-write.js
generated
vendored
Normal file
@ -0,0 +1,27 @@
|
||||
var fstream = require('../fstream.js')
|
||||
var notOpen = false
|
||||
process.chdir(__dirname)
|
||||
|
||||
fstream
|
||||
.Writer({
|
||||
path: 'path/to/symlink',
|
||||
linkpath: './file',
|
||||
isSymbolicLink: true,
|
||||
mode: '0755' // octal strings supported
|
||||
})
|
||||
.on('close', function () {
|
||||
notOpen = true
|
||||
var fs = require('fs')
|
||||
var s = fs.lstatSync('path/to/symlink')
|
||||
var isSym = s.isSymbolicLink()
|
||||
console.log((isSym ? '' : 'not ') + 'ok 1 should be symlink')
|
||||
var t = fs.readlinkSync('path/to/symlink')
|
||||
var isTarget = t === './file'
|
||||
console.log((isTarget ? '' : 'not ') + 'ok 2 should link to ./file')
|
||||
})
|
||||
.end()
|
||||
|
||||
process.on('exit', function () {
|
||||
console.log((notOpen ? '' : 'not ') + 'ok 3 should be closed')
|
||||
console.log('1..3')
|
||||
})
|
Reference in New Issue
Block a user