Skip to content

Instantly share code, notes, and snippets.

@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

@erukiti
erukiti / babel-types-all.md
Last active November 8, 2017 12:43
babel-types のcore定義を表にしたもの
where Node property alias
core.js ArrayExpression elements (null, Expression, SpreadElement) Expression
core.js AssignmentExpression operator (string), left (LVal), right (Expression) Expression
core.js BinaryExpression operator (BINARY_OPERATORS), left (Expression), right (Expression) Binary, Expression
core.js Directive value (DirectiveLiteral)
core.js DirectiveLiteral value (string)
core.js BlockStatement body (Statement), directives (Directive) Scopable, BlockParent, Block, Statement
core.js BreakStatement label (Identifier) Statement, Terminatorless, CompletionStatement
core.js CallExpression callee (Expression), arguments (Expression, SpreadElement, JSXNamespacedName), typeParameters (TypeParameterInstantiation), optional (true, false) Expression