Skip to content

Instantly share code, notes, and snippets.

@erukiti
erukiti / clone.js
Created December 11, 2017 08:36
clone問題
const old = {
hoge: 0,
fuga: {
piyo: 0
}
}
const new1 = old
new1.hoge = 1
@erukiti
erukiti / index.js
Created December 1, 2017 11:58
telettype-crdtの実験
const { Document, serializeOperation, deserializeOperation } = require('@atom/teletype-crdt')
const doc1 = new Document({siteId: 1})
const doc2 = new Document({siteId: 2})
const ZP = {...{row: 0, column: 0}}
doc1.setTextInRange(ZP, ZP, 'a')
doc2.setTextInRange(ZP, ZP, 'b')
doc1.integrateOperations(doc2.getOperations())
@erukiti
erukiti / README.md
Last active November 18, 2017 02:56

https://teratail.com/questions/100985?sip=n0070000_019&uid=60668

babel-preset-gas で、gas適用できるように変換できるのだけど、それはコンパイル対象のソースだけ。 なので、自分の書いたソースだけはgas適用されるけど、babel-core より先は、既にコンパイルされているものを、 browserifyが愚直に結合するだけなので、module.default が残っちゃう

解決方法

  1. babel-coreやその他を自前でbuildしてしまう (かなり面倒)
  2. dist/ にはき出したソースを原始的に置換する
@erukiti
erukiti / add-jsdoc
Created November 15, 2017 15:40
関数にJsDocを追加するやつ
const template = require('babel-template')
const {parse} = require('babylon')
const {transform} = require('@babel/core')
const prettier = require('prettier')
const assert = require('assert')
const src =
`/**
* @hoge fuga - piyo
@erukiti
erukiti / add-comment.js
Created November 15, 2017 13:57
結論: 素直に NodePath の addComment 使え
const template = require('babel-template')
const {parse} = require('babylon')
const {transform} = require('@babel/core')
const prettier = require('prettier')
const assert = require('assert')
const src =
`function hoge(a: number): number {
return a
@erukiti
erukiti / add-comment.js
Created November 15, 2017 13:51
templateを使ったヤツ、ソース中一回しか有効にならない件
const template = require('babel-template')
const {parse} = require('babylon')
const {transform} = require('@babel/core')
const prettier = require('prettier')
const assert = require('assert')
const src =
`function hoge(a: number): number {
return a
@erukiti
erukiti / add-comment.js
Last active November 15, 2017 13:10
AST操作でコメント付与の実験
const template = require('babel-template')
const {parse} = require('babylon')
const {transform} = require('@babel/core')
const prettier = require('prettier')
const src =
`function hoge() {
}
`
@erukiti
erukiti / index.js
Last active November 12, 2017 13:26
s2s-handler-pegjs
//@flow
import peg from 'pegjs'
import type { Code } from 'types'
export default function pegjsHandler(code: Code): Code {
if (code === '') {
return ''
}
@erukiti
erukiti / s2s.config.js
Last active November 11, 2017 10:42
s2s-handler-peg s2s-handler-json
const path = require('path')
const peg = require('pegjs')
const pegHandler = (code, {eventPath, plugin, filename}) => {
return peg.generate(code, {output: 'source', format: 'commonjs'})
}
const jsonHandler = (code, {eventPath, plugin, filename}) => {
const objectName = path.basename(filename, '.json').replace(/-[a-z]/g, s => s.substr(1).toUpperCase())
return `const ${objectName} = ${code}\nmodule.exports = ${objectName}`
@erukiti
erukiti / definition2.md
Last active November 10, 2017 07:26
定義を元に、t.hogeExpression(....) を自動生成できるようにしたやつ

ArrayExpression

aliases

Expression

AssignmentExpression

aliases