/home/lnzliplg/www/example.tar
index.js000064400000000432151730716020006212 0ustar00var pz = require('../promzard')

var path = require('path')
var file = path.resolve(__dirname, 'substack-input.js')
var ctx = { basename: path.basename(path.dirname(file)) }

pz(file, ctx, function (er, res) {
  if (er)
    throw er
  console.error(JSON.stringify(res, null, 2))
})
buffer.js000064400000000517151730716020006360 0ustar00var pz = require('../promzard')

var path = require('path')
var file = path.resolve(__dirname, 'substack-input.js')
var buf = require('fs').readFileSync(file)
var ctx = { basename: path.basename(path.dirname(file)) }

pz.fromBuffer(buf, ctx, function (er, res) {
  if (er)
    throw er
  console.error(JSON.stringify(res, null, 2))
})
npm-init/README.md000064400000000234151730716020007557 0ustar00# npm-init

An initter you init wit, innit?

## More stuff here

Blerp derp herp lerg borgle pop munch efemerate baz foo a gandt synergy
jorka chatt slurm.
npm-init/init-input.js000064400000013652151730716020010746 0ustar00var fs = require('fs')
var path = require('path');

module.exports = {
  "name" : prompt('name',
    typeof name === 'undefined'
    ? basename.replace(/^node-|[.-]js$/g, ''): name),
  "version" : prompt('version', typeof version !== "undefined"
                              ? version : '0.0.0'),
  "description" : (function () {
      if (typeof description !== 'undefined' && description) {
        return description
      }
      var value;
      try {
          var src = fs.readFileSync('README.md', 'utf8');
          value = src.split('\n').filter(function (line) {
              return /\s+/.test(line)
                  && line.trim() !== basename.replace(/^node-/, '')
                  && !line.trim().match(/^#/)
              ;
          })[0]
              .trim()
              .replace(/^./, function (c) { return c.toLowerCase() })
              .replace(/\.$/, '')
          ;
      }
      catch (e) {
        try {
          // Wouldn't it be nice if that file mattered?
          var d = fs.readFileSync('.git/description', 'utf8')
        } catch (e) {}
        if (d.trim() && !value) value = d
      }
      return prompt('description', value);
  })(),
  "main" : (function () {
    var f
    try {
      f = fs.readdirSync(dirname).filter(function (f) {
        return f.match(/\.js$/)
      })
      if (f.indexOf('index.js') !== -1)
        f = 'index.js'
      else if (f.indexOf('main.js') !== -1)
        f = 'main.js'
      else if (f.indexOf(basename + '.js') !== -1)
        f = basename + '.js'
      else
        f = f[0]
    } catch (e) {}

    return prompt('entry point', f || 'index.js')
  })(),
  "bin" : function (cb) {
    fs.readdir(dirname + '/bin', function (er, d) {
      // no bins
      if (er) return cb()
      // just take the first js file we find there, or nada
      return cb(null, d.filter(function (f) {
        return f.match(/\.js$/)
      })[0])
    })
  },
  "directories" : function (cb) {
    fs.readdir('.', function (er, dirs) {
      if (er) return cb(er)
      var res = {}
      dirs.forEach(function (d) {
        switch (d) {
          case 'example': case 'examples': return res.example = d
          case 'test': case 'tests': return res.test = d
          case 'doc': case 'docs': return res.doc = d
          case 'man': return res.man = d
        }
      })
      if (Object.keys(res).length === 0) res = undefined
      return cb(null, res)
    })
  },
  "dependencies" : typeof dependencies !== 'undefined' ? dependencies
    : function (cb) {
      fs.readdir('node_modules', function (er, dir) {
        if (er) return cb()
        var deps = {}
        var n = dir.length
        dir.forEach(function (d) {
          if (d.match(/^\./)) return next()
          if (d.match(/^(expresso|mocha|tap|coffee-script|coco|streamline)$/))
            return next()
          fs.readFile('node_modules/' + d + '/package.json', function (er, p) {
            if (er) return next()
            try { p = JSON.parse(p) } catch (e) { return next() }
            if (!p.version) return next()
            deps[d] = '~' + p.version
            return next()
          })
        })
        function next () {
          if (--n === 0) return cb(null, deps)
        }
      })
    },
  "devDependencies" : typeof devDependencies !== 'undefined' ? devDependencies
    : function (cb) {
      // same as dependencies but for dev deps
      fs.readdir('node_modules', function (er, dir) {
        if (er) return cb()
        var deps = {}
        var n = dir.length
        dir.forEach(function (d) {
          if (d.match(/^\./)) return next()
          if (!d.match(/^(expresso|mocha|tap|coffee-script|coco|streamline)$/))
            return next()
          fs.readFile('node_modules/' + d + '/package.json', function (er, p) {
            if (er) return next()
            try { p = JSON.parse(p) } catch (e) { return next() }
            if (!p.version) return next()
            deps[d] = '~' + p.version
            return next()
          })
        })
        function next () {
          if (--n === 0) return cb(null, deps)
        }
      })
    },
  "scripts" : (function () {
    // check to see what framework is in use, if any
    try { var d = fs.readdirSync('node_modules') }
    catch (e) { d = [] }
    var s = typeof scripts === 'undefined' ? {} : scripts

    if (d.indexOf('coffee-script') !== -1)
      s.prepublish = prompt('build command',
                            s.prepublish || 'coffee src/*.coffee -o lib')

    var notest = 'echo "Error: no test specified" && exit 1'
    function tx (test) {
      return test || notest
    }

    if (!s.test || s.test === notest) {
      if (d.indexOf('tap') !== -1)
        s.test = prompt('test command', 'tap test/*.js', tx)
      else if (d.indexOf('expresso') !== -1)
        s.test = prompt('test command', 'expresso test', tx)
      else if (d.indexOf('mocha') !== -1)
        s.test = prompt('test command', 'mocha', tx)
      else
        s.test = prompt('test command', tx)
    }

    return s

  })(),

  "repository" : (function () {
    try { var gconf = fs.readFileSync('.git/config') }
    catch (e) { gconf = null }
    if (gconf) {
      gconf = gconf.split(/\r?\n/)
      var i = gconf.indexOf('[remote "origin"]')
      if (i !== -1) {
        var u = gconf[i + 1]
        if (!u.match(/^\s*url =/)) u = gconf[i + 2]
        if (!u.match(/^\s*url =/)) u = null
        else u = u.replace(/^\s*url = /, '')
      }
      if (u && u.match(/^git@github.com:/))
        u = u.replace(/^git@github.com:/, 'git://github.com/')
    }

    return prompt('git repository', u)
  })(),

  "keywords" : prompt(function (s) {
    if (!s) return undefined
    if (Array.isArray(s)) s = s.join(' ')
    if (typeof s !== 'string') return s
    return s.split(/[\s,]+/)
  }),
  "author" : config['init.author.name']
    ? {
        "name" : config['init.author.name'],
        "email" : config['init.author.email'],
        "url" : config['init.author.url']
      }
    : undefined,
  "license" : prompt('license', 'BSD')
}
npm-init/package.json000064400000000263151730716020010570 0ustar00{
  "name": "npm-init",
  "version": "0.0.0",
  "description": "an initter you init wit, innit?",
  "main": "index.js",
  "scripts": {
    "test": "asdf"
  },
  "license": "BSD"
}npm-init/init.js000064400000002010151730716020007573 0ustar00var PZ = require('../../promzard').PromZard
var path = require('path')
var input = path.resolve(__dirname, 'init-input.js')

var fs = require('fs')
var package = path.resolve(__dirname, 'package.json')
var pkg

fs.readFile(package, 'utf8', function (er, d) {
  if (er) ctx = {}
  try { ctx = JSON.parse(d); pkg = JSON.parse(d) }
  catch (e) { ctx = {} }

  ctx.dirname = path.dirname(package)
  ctx.basename = path.basename(ctx.dirname)
  if (!ctx.version) ctx.version = undefined

  // this should be replaced with the npm conf object
  ctx.config = {}

  console.error('ctx=', ctx)

  var pz = new PZ(input, ctx)

  pz.on('data', function (data) {
    console.error('pz data', data)
    if (!pkg) pkg = {}
    Object.keys(data).forEach(function (k) {
      if (data[k] !== undefined && data[k] !== null) pkg[k] = data[k]
    })
    console.error('package data %s', JSON.stringify(data, null, 2))
    fs.writeFile(package, JSON.stringify(pkg, null, 2), function (er) {
      if (er) throw er
      console.log('ok')
    })
  })
})
substack-input.js000064400000003413151730716020010061 0ustar00module.exports = {
    "name" : basename.replace(/^node-/, ''),
    "version" : "0.0.0",
    "description" : (function (cb) {
        var fs = require('fs');
        var value;
        try {
            var src = fs.readFileSync('README.markdown', 'utf8');
            value = src.split('\n').filter(function (line) {
                return /\s+/.test(line)
                    && line.trim() !== basename.replace(/^node-/, '')
                ;
            })[0]
                .trim()
                .replace(/^./, function (c) { return c.toLowerCase() })
                .replace(/\.$/, '')
            ;
        }
        catch (e) {}
        
        return prompt('description', value);
    })(),
    "main" : prompt('entry point', 'index.js'),
    "bin" : function (cb) {
        var path = require('path');
        var fs = require('fs');
        var exists = fs.exists || path.exists;
        exists('bin/cmd.js', function (ex) {
            var bin
            if (ex) {
                var bin = {}
                bin[basename.replace(/^node-/, '')] = 'bin/cmd.js'
            }
            cb(null, bin);
        });
    },
    "directories" : {
        "example" : "example",
        "test" : "test"
    },
    "dependencies" : {},
    "devDependencies" : {
        "tap" : "~0.2.5"
    },
    "scripts" : {
        "test" : "tap test/*.js"
    },
    "repository" : {
        "type" : "git",
        "url" : "git://github.com/substack/" + basename + ".git"
    },
    "homepage" : "https://github.com/substack/" + basename,
    "keywords" : prompt(function (s) { return s.split(/\s+/) }),
    "author" : {
        "name" : "James Halliday",
        "email" : "mail@substack.net",
        "url" : "http://substack.net"
    },
    "license" : "MIT",
    "engine" : { "node" : ">=0.6" }
}
value_cmp.js000064400000000274151731625710007070 0ustar00var stringify = require('../');

var obj = { d: 6, c: 5, b: [{z:3,y:2,x:1},9], a: 10 };
var s = stringify(obj, function (a, b) {
    return a.value < b.value ? 1 : -1;
});
console.log(s);
str.js000064400000000141151731625710005716 0ustar00var stringify = require('../');
var obj = { c: 6, b: [4,5], a: 3 };
console.log(stringify(obj));
key_cmp.js000064400000000261151731625720006541 0ustar00var stringify = require('../');

var obj = { c: 8, b: [{z:6,y:5,x:4},7], a: 3 };
var s = stringify(obj, function (a, b) {
    return a.key < b.key ? 1 : -1;
});
console.log(s);
nested.js000064400000000155151731625730006377 0ustar00var stringify = require('../');
var obj = { c: 8, b: [{z:6,y:5,x:4},7], a: 3 };
console.log(stringify(obj));