Skip to content

Instantly share code, notes, and snippets.

View malte-wessel's full-sized avatar

Malte Wessel malte-wessel

View GitHub Profile
@malte-wessel
malte-wessel / index.js
Created June 6, 2017 19:36
requirebin sketch
const code = 'console.log("foo")';
console.log(require("babylon").parse(code, {
// parse in strict mode and allow module declarations
sourceType: "module",
plugins: [
// enable jsx and flow syntax
"jsx",
const Box = props => {
const { children, childrenArgs, title } = props;
o('div', { className: 'box' });
if (title) {
o('div', { className: 'box__title' });
text(title);
c('div');
}
o('div', { className: 'box__body' });
children(...childrenArgs);
import { component } from 'melody-component';
const mapProps = mapper => Component => props => component(Component, props.key, mapper(props));
{% property 'expandable' with { type: 'boolean', required: true } %}
{% property 'expanded' with { type: 'boolean', required: true } %}
{% property 'toggle' with { type: 'function' } %}
{% property 'modifier' with { type: 'string' } %}
{% property 'children' with { type: 'node', required: true } %}
{% property 'title' with { type: 'node' } %}
<div
class={{ "box box--" + modifier }}
// Stateful
const MyComponent = createComponent({
render(state, props, children, childrenArgs) {
elementOpen('section');
children(...childrenArgs);
elementClose('section');
}
});
// Stateless
import { createComponent } from 'melody-component';
import { component } from 'melody-idom';
export default function mapProps(mapper) {
return Component => createComponent({
render() {
return component(Component, 'child', mapper(props));
}
});
}
import { Component } from 'melody-component';
import { component } from 'melody-idom';
export default function mapProps(mapper) {
return Component => class MapPropsComponent extends Component {
render() {
return component(Component, 'child', mapper(props));
}
};
}
@malte-wessel
malte-wessel / hos.js
Created February 5, 2017 12:59
Higher order sagas
function doWhile(test) {
return function*(task, ...args) {
let result;
do {
result = yield call(task, ...args);
} while(yield test(result))
};
}
function retryable(maxRetries = 0) {
@malte-wessel
malte-wessel / Box.js
Last active October 8, 2016 15:47
Melody templates
import { createComponent } from 'melody-component';
import template from './Box.twig';
export default createComponent(template);
@malte-wessel
malte-wessel / index.js
Created October 6, 2016 18:20
requirebin sketch
var React = require('react');
var ReactDOMServer = require('react-dom/server');
function App() {
return React.createElement("div", null,
"Hallo ",
name,
", Wie gehts?"
);
}