View nfapply.js
const nfapply = function (fn, args) {
return new Promise(function (resolve, reject) {
var cb = function (err, data) {
if (err) { reject(err); }
fn.apply(null, args);
View exec
const spawn = require('child_process').spawn;
// const exec = require('child_process').execSync;
const exec = function (cmd, args) {
return new Promise(function (resolve) {
const execution = spawn(cmd, args);
execution.stdout.on('data', (data) => {
var str = data.toString();
var lines = str.split(/(\r?\n)/g);
for (var i = 0; i < lines.length; i++) {
?exists: //article/div[@id="comments"]
author: "othree"
channel: "@othree"
body: //article
title: $body//h3[1]
cover: $body/section[@itemprop="articleBody"]/p[1]/a[@itemprop="image"]/img

Keybase proof

I hereby claim:

  • I am othree on github.
  • I am othree ( on keybase.
  • I have a public key ASD8QgnNRrlnxy-XpqdiCk2-CHr3ejT_H0zWozq8zm1r7Qo

To claim this, I am signing this object:

View .tigrc
bind generic f !@git fetch
bind generic p !@git pull
bind generic P !@git push
bind generic { !?git push -f
bind generic r !git rebase -i master
bind generic U !@sh -c "git checkout master && git pull && git checkout - && git rebase master"
bind generic M !@git checkout master
bind generic ! !@git reset HEAD^
for branch in `git branch -a | grep remotes | grep -v HEAD | grep -v master `; do
git branch --track ${branch#remotes/origin/} $branch
  • Metadata
    • Provide metadata
    • Provide descriptive metadata
    • Provide structural metadata
  • Data Licenses
    • Provide data license information
  • Data Provenance
    • Provide data provenance information
  • Data Quality
    • Provide data quality information
View secret-es.mdown