Skip to content

Instantly share code, notes, and snippets.

@fwg
Last active August 29, 2015 14:06
Show Gist options
  • Save fwg/8d8e46a3b380af8783aa to your computer and use it in GitHub Desktop.
Save fwg/8d8e46a3b380af8783aa to your computer and use it in GitHub Desktop.
requirebin sketch
var S = require('s-expression');
var e = S("(\"a a\")");
document.body.appendChild(document.createTextNode(JSON.stringify(e)));
require=function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s}({"s-expression":[function(require,module,exports){var not_whitespace_or_end=/^(\S|$)/;var whitespace_or_paren=/^(\s|\(|\)|$)/;var string_or_escaped_or_end=/^(\\|"|$)/;function SParser(stream){this._line=this._col=this._pos=0;this._stream=stream}SParser.prototype={peek:peek,consume:consume,until:until,error:error,string:string,atom:atom,quoted:quoted,expr:expr,list:list};module.exports=function SParse(stream){var parser=new SParser(stream);var expression=parser.expr();if(expression instanceof Error){return expression}if(parser.peek()!=""){return parser.error("Superfluous characters after expression: `"+parser.peek()+"`")}return expression};function error(msg){var e=new Error("Syntax error: "+msg);e.line=this._line+1;e.col=this._col+1;return e}function peek(){if(this._stream.length==this._pos)return"";return this._stream[this._pos]}function consume(){if(this._stream.length==this._pos)return"";var c=this._stream[this._pos];this._pos+=1;if(c=="\r"){if(this.peek()=="\n"){this._pos+=1;c+="\n"}this._line++;this._col=0}else if(c=="\n"){this._line++;this._col=0}else{this._col++}return c}function until(regex){var s="";while(!regex.test(this.peek())){s+=this.consume()}return s}function string(){this.consume();var str="";while(true){str+=this.until(string_or_escaped_or_end);var next=this.peek();if(next==""){return this.error("Unterminated string literal")}if(next=='"'){this.consume();break}if(next=="\\"){this.consume();next=this.peek();if(next=='"'){str+=this.consume()}else if(next=="\\"){this.consume();str+="\\"}else if(next=="r"){this.consume();str+="\r"}else if(next=="t"){this.consume();str+=" "}else if(next=="n"){this.consume();str+="\n"}else if(next=="f"){this.consume();str+="\f"}else if(next=="b"){this.consume();str+="\b"}else{str+="\\"}}}return new String(str)}function atom(){if(this.peek()=='"'){return this.string()}return this.until(whitespace_or_paren)}function quoted(){this.consume();this.until(not_whitespace_or_end);var quotedExpr=this.expr();if(quotedExpr instanceof Error){return quotedExpr}if(quotedExpr instanceof Array){quotedExpr.unshift("quote");return quotedExpr}if(quotedExpr===""){return this.error("Unexpected `"+this.peek()+"` after `'`")}return["quote",quotedExpr]}function expr(){this.until(not_whitespace_or_end);if(this.peek()=="'"){return this.quoted()}var expr=this.peek()=="("?this.list():this.atom();this.until(not_whitespace_or_end);return expr}function list(){if(this.peek()!="("){return this.error("Expected `(` - saw `"+this.peek()+"` instead.")}this.consume();var ls=[];var v=this.expr();if(v instanceof Error){return v}if(v!==""){ls.push(v);while((v=this.expr())!==""){if(v instanceof Error)return v;ls.push(v)}}if(this.peek()!=")"){return this.error("Expected `)` - saw: `"+this.peek()+"`")}this.consume();return ls}},{}]},{},[]);var S=require("s-expression");var e=S('("a a")');document.body.appendChild(document.createTextNode(JSON.stringify(e)));
{
"name": "requirebin-sketch",
"version": "1.0.0",
"dependencies": {
"s-expression": "2.3.0"
}
}
<style type='text/css'>html, body { margin: 0; padding: 0; border: 0; }
body, html { height: 100%; width: 100%; }</style>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment