Skip to content

Instantly share code, notes, and snippets.

@jongacnik
Created September 28, 2017 20:14
Show Gist options
  • Save jongacnik/3ce977e66352a89bd241a399dda54203 to your computer and use it in GitHub Desktop.
Save jongacnik/3ce977e66352a89bd241a399dda54203 to your computer and use it in GitHub Desktop.
requirebin sketch
var pelo = require('pelo')
var el = pelo`<div ${{ className: 'boop', style: 'color:red' }}>beep</div>`
document.write(el)
setTimeout(function(){
;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})({1:[function(require,module,exports){
},{}],"pelo":[function(require,module,exports){
'use strict'
const Module = require('module')
function handleValue (value) {
if (Array.isArray(value)) {
// Suppose that each item is a result of html``.
return value.join('')
}
// Ignore event handlers.
// onclick=${(e) => doSomething(e)}
// will become
// onclick=""
if (typeof value === 'function') {
return '""'
}
if (value === null || value === undefined) {
return ''
}
if (value.__encoded) {
return value
}
const str = value.toString()
return str
.replace(/&/g, '&amp;')
.replace(/</g, '&lt;')
.replace(/>/g, '&gt;')
.replace(/"/g, '&quot;')
.replace(/'/g, '&#039;')
}
function stringify () {
const pieces = arguments[0]
let output = ''
for (let i = 0; i < pieces.length; i++) {
output += pieces[i]
if (i < pieces.length - 1) {
output += handleValue(arguments[i + 1])
}
}
// HACK: Avoid double encoding by marking encoded string
// You cannot add properties to string literals
// eslint-disable-next-line no-new-wrappers
const wrapper = new String(output)
wrapper.__encoded = true
return wrapper
}
function replace(moduleId) {
const originalRequire = Module.prototype.require
Module.prototype.require = function (id) {
if (id === moduleId) {
return stringify
} else {
return originalRequire.apply(this, arguments)
}
}
}
stringify.replace = replace
module.exports = stringify
},{"module":1}]},{},[])
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2hvbWUvYWRtaW4vYnJvd3NlcmlmeS1jZG4vbm9kZV9tb2R1bGVzL2Jyb3dzZXJpZnkvbm9kZV9tb2R1bGVzL2Jyb3dzZXItcGFjay9fcHJlbHVkZS5qcyIsIi4uLy4uLy4uLy4uL2hvbWUvYWRtaW4vYnJvd3NlcmlmeS1jZG4vbm9kZV9tb2R1bGVzL2Jyb3dzZXJpZnkvbGliL19lbXB0eS5qcyIsInBlbG8iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUNBQTs7QUNBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6ImdlbmVyYXRlZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIoZnVuY3Rpb24gZSh0LG4scil7ZnVuY3Rpb24gcyhvLHUpe2lmKCFuW29dKXtpZighdFtvXSl7dmFyIGE9dHlwZW9mIHJlcXVpcmU9PVwiZnVuY3Rpb25cIiYmcmVxdWlyZTtpZighdSYmYSlyZXR1cm4gYShvLCEwKTtpZihpKXJldHVybiBpKG8sITApO3ZhciBmPW5ldyBFcnJvcihcIkNhbm5vdCBmaW5kIG1vZHVsZSAnXCIrbytcIidcIik7dGhyb3cgZi5jb2RlPVwiTU9EVUxFX05PVF9GT1VORFwiLGZ9dmFyIGw9bltvXT17ZXhwb3J0czp7fX07dFtvXVswXS5jYWxsKGwuZXhwb3J0cyxmdW5jdGlvbihlKXt2YXIgbj10W29dWzFdW2VdO3JldHVybiBzKG4/bjplKX0sbCxsLmV4cG9ydHMsZSx0LG4scil9cmV0dXJuIG5bb10uZXhwb3J0c312YXIgaT10eXBlb2YgcmVxdWlyZT09XCJmdW5jdGlvblwiJiZyZXF1aXJlO2Zvcih2YXIgbz0wO288ci5sZW5ndGg7bysrKXMocltvXSk7cmV0dXJuIHN9KSIsIiIsIid1c2Ugc3RyaWN0J1xuXG5jb25zdCBNb2R1bGUgPSByZXF1aXJlKCdtb2R1bGUnKVxuXG5mdW5jdGlvbiBoYW5kbGVWYWx1ZSAodmFsdWUpIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgLy8gU3VwcG9zZSB0aGF0IGVhY2ggaXRlbSBpcyBhIHJlc3VsdCBvZiBodG1sYGAuXG4gICAgcmV0dXJuIHZhbHVlLmpvaW4oJycpXG4gIH1cbiAgLy8gSWdub3JlIGV2ZW50IGhhbmRsZXJzLlxuICAvLyAgICAgb25jbGljaz0keyhlKSA9PiBkb1NvbWV0aGluZyhlKX1cbiAgLy8gd2lsbCBiZWNvbWVcbiAgLy8gICAgIG9uY2xpY2s9XCJcIlxuICBpZiAodHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuICdcIlwiJ1xuICB9XG4gIGlmICh2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuICcnXG4gIH1cbiAgaWYgKHZhbHVlLl9fZW5jb2RlZCkge1xuICAgIHJldHVybiB2YWx1ZVxuICB9XG4gIGNvbnN0IHN0ciA9IHZhbHVlLnRvU3RyaW5nKClcbiAgcmV0dXJuIHN0clxuICAgIC5yZXBsYWNlKC8mL2csICcmYW1wOycpXG4gICAgLnJlcGxhY2UoLzwvZywgJyZsdDsnKVxuICAgIC5yZXBsYWNlKC8+L2csICcmZ3Q7JylcbiAgICAucmVwbGFjZSgvXCIvZywgJyZxdW90OycpXG4gICAgLnJlcGxhY2UoLycvZywgJyYjMDM5OycpXG59XG5cbmZ1bmN0aW9uIHN0cmluZ2lmeSAoKSB7XG4gIGNvbnN0IHBpZWNlcyA9IGFyZ3VtZW50c1swXVxuICBsZXQgb3V0cHV0ID0gJydcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBwaWVjZXMubGVuZ3RoOyBpKyspIHtcbiAgICBvdXRwdXQgKz0gcGllY2VzW2ldXG4gICAgaWYgKGkgPCBwaWVjZXMubGVuZ3RoIC0gMSkge1xuICAgICAgb3V0cHV0ICs9IGhhbmRsZVZhbHVlKGFyZ3VtZW50c1tpICsgMV0pXG4gICAgfVxuICB9XG4gIC8vIEhBQ0s6IEF2b2lkIGRvdWJsZSBlbmNvZGluZyBieSBtYXJraW5nIGVuY29kZWQgc3RyaW5nXG4gIC8vIFlvdSBjYW5ub3QgYWRkIHByb3BlcnRpZXMgdG8gc3RyaW5nIGxpdGVyYWxzXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1uZXctd3JhcHBlcnNcbiAgY29uc3Qgd3JhcHBlciA9IG5ldyBTdHJpbmcob3V0cHV0KVxuICB3cmFwcGVyLl9fZW5jb2RlZCA9IHRydWVcbiAgcmV0dXJuIHdyYXBwZXJcbn1cblxuZnVuY3Rpb24gcmVwbGFjZShtb2R1bGVJZCkge1xuICBjb25zdCBvcmlnaW5hbFJlcXVpcmUgPSBNb2R1bGUucHJvdG90eXBlLnJlcXVpcmVcbiAgTW9kdWxlLnByb3RvdHlwZS5yZXF1aXJlID0gZnVuY3Rpb24gKGlkKSB7XG4gICAgaWYgKGlkID09PSBtb2R1bGVJZCkge1xuICAgICAgcmV0dXJuIHN0cmluZ2lmeVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gb3JpZ2luYWxSZXF1aXJlLmFwcGx5KHRoaXMsIGFyZ3VtZW50cylcbiAgICB9XG4gIH1cbn1cbnN0cmluZ2lmeS5yZXBsYWNlID0gcmVwbGFjZVxuXG5tb2R1bGUuZXhwb3J0cyA9IHN0cmluZ2lmeVxuIl19
var pelo = require('pelo')
var el = pelo`<div ${{ className: 'boop', style: 'color:red' }}>beep</div>`
document.write(el)
;}, 0)
{
"name": "requirebin-sketch",
"version": "1.0.0",
"dependencies": {
"pelo": "0.0.2"
}
}
<!-- contents of this file will be placed inside the <body> -->
<!-- contents of this file will be placed inside the <head> -->
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment