Skip to content

Instantly share code, notes, and snippets.

@erukiti
erukiti / siblings.js
Last active October 15, 2017 12:05
babel-traverseのsiblingまわりの挙動を確認
const {transform} = require('babel-core')
const src = `
const a = 1
const b = 2
let c, d, e
c = 1 * 2 + 3 + 4 * 2
console.log(c)
`
@erukiti
erukiti / optimizer.js
Created October 12, 2017 11:40
最適化プラグイン
const {transform} = require('babel-core')
const babylon = require('babylon')
const WasCreated = Symbol('WasCreated')
const source = `
let b = 0
console.log(b)
b = b + 2
console.log(b)
@erukiti
erukiti / override.js
Last active October 11, 2017 10:39
演算子オーバライドっぽいbabelプラグインの実験
const {transform} = require('babel-core')
const WasCreated = Symbol('WasCreated')
const src = `
class Integer {
value: number
constructor(value: number) {
this.value = Math.floor(value)
@erukiti
erukiti / index.js
Created September 11, 2017 12:09
AST使った計算機 (引数に"1 * 3"みたいに式を指定)
const babylon = require('babylon')
const parse = (source) => {
try {
const ast = babylon.parse(source)
delete ast.tokens
return {ast}
} catch (err) {
return {error: err}
}
@erukiti
erukiti / typescript.ts
Created August 24, 2017 07:20
TypeScript はダックタイピングな型判定しやがるらしい
class Dog {
voice() {
return 'wanwan'
}
}
class Cat {
voice() {
return 'nya-n'
}
@erukiti
erukiti / serve.js
Created June 4, 2017 16:05
express+browserifyで、トランスパイル・バンドル処理を隠蔽するやつ
#! /usr/bin/env node
const path = require('path')
const express = require('express')
const browserify = require('browserify')
const app = express()
const sourcePath = path.resolve(process.argv.length <= 2 ? './' : process.argv[2])
app.use((req, res, next) => {
@erukiti
erukiti / observable_test.js
Created May 6, 2017 07:38
Observableをthenableにしてbabel-preset-stage-3のawaitに食わせたらどうなるか
class ObservableTest {
times: number
resolve: any
constructor() {
this.times = 2
this.resolve = null
}
then(resolve?) {
@erukiti
erukiti / fetch.coffee
Created November 2, 2015 08:16
ニコ動の動画をfetchするnode (coffeescript)
#! /usr/bin/env coffee
request = require 'request'
fs = require 'fs'
id = process.env['ID']
password = process.env['PASSWORD']
reCookieNicosid = /^nicosid=([0-9]+\.[0-9]+)/
reCookieSession = /^user_session=(user_session_[0-9]+_[0-9a-fA-F]+);/
@erukiti
erukiti / test3.coffee
Created October 22, 2015 13:58
引数だとどうしようもない
#! /usr/bin/env coffee
fs = require 'fs'
sprintf = require 'sprintf'
_snapshot = undefined
fmtKMGT = (n) ->
arr = []
@erukiti
erukiti / test2.coffee
Created October 22, 2015 13:27
Rx でメモリを食いつぶすパターン
#! /usr/bin/env coffee
fs = require 'fs'
Rx = require 'rx'
sprintf = require 'sprintf'
_snapshot = undefined
fmtKMGT = (n) ->
arr = []