dps's notebooks

  • spreadsheet parser example - /dps/spreadsheet-parser-example
    Last edited 3 years ago
    // mygenerator.js var Parser = require("jison").Parser; // a grammar in JSON var grammar = { "comment": "JSON Math Parser", // JavaScript comments also work "lex": { "rules": [ ["\\s+", "/* skip whitespace */"], ["=", "/* skip = */"], ["[0-9]+(?:\\.[0-9]+)?\\b", "return 'NUMBER'"], ["[A-Z][0-9]+", "return 'CELL'"], ["\\*", "return '*'"], ["\\/", "return '/'"], ["-", "return '-'"], ["\\+", "return '+'"], ["\\^", "return '^'"], ["!", "return '!'"], ["%", "return '%'"], ["\\(", "return '('"], ["\\)", "return ')'"], ["PI\\b", "return 'PI'"], ["E\\b", "return 'E'"], ["quot;, "return 'EOF'"] ] }, "operators": [ ["left", "+", "-"], ["left", "*", "/"], ["left", "^"], ["right", "!"], ["right", "%"], ["left", "UMINUS"] ], "bnf": { "expressions": [["e EOF", "return $1"]], "e" :[ ["e + e", "$ = $1+$3"], ["e - e", "$ = $1-$3"], ["e * e", "$ = $1*$3"], ["e / e", "$ = $1/$3"], ["e ^ e", "$ = Math.pow($1, $3)"], ["e !", "$ = (function(n) {if(n==0) return 1; return arguments.callee(n-1) * n})($1)"], ["e %", "$ = $1/100"], ["- e", "$ = -$2", {"prec": "UMINUS"}], ["( e )", "$ = $2"], ["NUMBER", "$ = Number(yytext)"], ["CELL", "$ = Number(global.values[yytext])"], ["E", "$ = Math.E"], ["PI", "$ = Math.PI"] ] } } global.values = {"A1": 48, "A2": 24}; var parser = new Parser(grammar); parser.parse("=A1*A2");
  • toposort example - /dps/toposort-example
    Last edited 3 years ago
    const toposort = require('toposort') const cells = { 'A1': '5', 'A2': '=A1*2', 'A3': '=A2+A4', 'A4': '=A2', } var values = {} const makeGraph = () => { var graph = []; for (var item in cells) { const formula = String(cells[item]); if (!formula.startsWith("=")) { values[item] = formula; } else { var edgesAdded = 0; const matches = formula.match(/[A-Z][0-9]+/g); for (var match in matches) { edgesAdded++; graph.push([matches[match], item]); } if (edgesAdded === 0) { // This cell has no dependencies, but it is a formula so // compute its value right now. (e.g. pure math) values[item] = parse(formula); } } } return graph } const graph = makeGraph() console.log(graph); toposort(graph);
  • dynamic-auth - /dps/dynamic-auth
    Last edited 6 years ago - from: https://runkit.com/docs/endpoint
    exports.endpoint = function(request, response) { response.end("Hello world!"); }
  • playground - /dps/playground
    Last edited 6 years ago
    const quote = require('prog-quote')() var endpoint = require("@runkit/runkit/json-endpoint/1.0.0") endpoint(module.exports, function(req, done) { if (req.query.request === 'manifest') { done({manifest: { types: ['LONG_TEXT'], name: 'Quote of the day', ttl: 24 * 60 * 60, icon_url: 'https://raw.githubusercontent.com/google/material-design-icons/master/communication/drawable-xxhdpi/ic_textsms_white_24dp.png'}}) } else if (req.query.request === 'update') { if (req.query.type === 'LONG_TEXT') { var q = quote var q1 = q.next().value var q2 = q.next().value done({rotate: { content:[{longText: q1.quote + ' -- ' + q1.author}, {longText: q2.quote + ' -- ' + q2.author}], period: 60}}) } else { done({}) } } else { done({req: req}) } })
  • tube status - /dps/tube-status
    Last edited 7 years ago
    const tfl = require ('tfl') var endpoint = require("@runkit/runkit/json-endpoint/1.0.0") var request = require("request") var cheerio = require("cheerio") endpoint(module.exports, function(req, done) { tfl.tube.status({'incidents':true}).then(function(lines) { done({incidents: lines}) }) })
  • RSS headlines - /dps/rss-headlines
    Last edited 7 years ago
    const feed = require ('feed-read') var endpoint = require("@runkit/runkit/json-endpoint/1.0.0") var request = require("request") var cheerio = require("cheerio") endpoint(module.exports, function(req, done) { feed('http://feeds.bbci.co.uk/news/rss.xml?edition=us', function(err, articles) { if (err) return done({error: "could not retrieve feed"}) done({articles: articles}) }) })
  • GBP - /dps/gbp
    Last edited 7 years ago
    This is a playground to test JavaScript. It runs a completely standard copy of Node.js on a virtual server created just for you. Every one of npm’s 300,000+ packages are pre-installed, so try it out: