git.fiddlerwoaroof.com
Raw Blame History
import React from 'react';
import ReactDOM from 'react-dom';
import * as gf from '../src/genfuns';
import '../src/genfun_formatter';

class Animal { 
  constructor() {
  }

}
class Dog extends Animal { }
class Cat extends Animal { }

const Animals = gf.defgeneric("Animals", "animaltorender")
  .primary([gf.Shape("animals")], ({ animals }) => Animals(animals))
  .primary([Array], animals => (<ul>{
    animals.map((a, idx) => Animals(a, idx), animals)
  }</ul>))
  .around([Animal], function (_, key) {
    return (<li {...{key}}>{this.call_next_method()}</li>);
  })
  .primary([Dog], dog => (<div>Dog</div>))
  .primary([Cat], cat => (<div>Cat</div>))
  .fn;

ReactDOM.render(
  <div>
    <h1>animal zoo</h1>
    <Animals animals={[new Dog(), new Cat(), new Dog(), new Dog()]} />
  </div>,
  document.querySelector('main'),
  () => {
    console.log('rendered');
  }
);