diff --git a/codegen/consts.js b/codegen/consts.js new file mode 100644 index 0000000..2e6fee8 --- /dev/null +++ b/codegen/consts.js @@ -0,0 +1,43 @@ +module.exports.props = require("react-html-attributes"); +module.exports.voids = ["area", "base", "br", "col", "embed", "hr", "img", "input", "link", "meta", "param", "source", "track", "wbr"]; +module.exports.types = { + "allowFullScreen": "Boolean", + "async": "Boolean", + "autoPlay": "Boolean", + "capture": "Boolean", + "checked": "Boolean", + "children": "Array JSX", + "cols": "Number", + "controls": "Boolean", + "default": "Boolean", + "defer": "Boolean", + "disabled": "Boolean", + "formNoValidate": "Boolean", + "hidden": "Boolean", + "itemScope": "Boolean", + "loop": "Boolean", + "max": "Number", + "min": "Number", + "multiple": "Boolean", + "muted": "Boolean", + "onClick": "EventHandler", + "onInput": "EventHandler", + "onInvalid": "EventHandler", + "onSubmit": "EventHandler", + "noValidate": "Boolean", + "onChange": "EventHandler", + "open": "Boolean", + "playsInline": "Boolean", + "readOnly": "Boolean", + "required": "Boolean", + "reversed": "Boolean", + "rowSpan": "Number", + "rows": "Number", + "scoped": "Boolean", + "seamless": "Boolean", + "selected": "Boolean", + "size": "Number", + "span": "Number", + "start": "Number" +}; +module.exports.reserved = ["module", "data", "type", "newtype", "class", "instance", "where", "derive", "if", "then", "else", "case", "of"]; diff --git a/codegen/index.js b/codegen/index.js index e31b130..2ac0bb7 100644 --- a/codegen/index.js +++ b/codegen/index.js @@ -1,48 +1,6 @@ -const props = require("react-html-attributes"); -const voids = ["area", "base", "br", "col", "embed", "hr", "img", "input", "link", "meta", "param", "source", "track", "wbr"]; -const types = { - "allowFullScreen": "Boolean", - "async": "Boolean", - "autoPlay": "Boolean", - "capture": "Boolean", - "checked": "Boolean", - "children": "Array JSX", - "cols": "Number", - "controls": "Boolean", - "default": "Boolean", - "defer": "Boolean", - "disabled": "Boolean", - "formNoValidate": "Boolean", - "hidden": "Boolean", - "itemScope": "Boolean", - "loop": "Boolean", - "max": "Number", - "min": "Number", - "multiple": "Boolean", - "muted": "Boolean", - "onClick": "EventHandler", - "onInput": "EventHandler", - "onInvalid": "EventHandler", - "onSubmit": "EventHandler", - "noValidate": "Boolean", - "onChange": "EventHandler", - "open": "Boolean", - "playsInline": "Boolean", - "readOnly": "Boolean", - "required": "Boolean", - "reversed": "Boolean", - "rowSpan": "Number", - "rows": "Number", - "scoped": "Boolean", - "seamless": "Boolean", - "selected": "Boolean", - "size": "Number", - "span": "Number", - "start": "Number" -}; -const reserved = ["module", "data", "type", "newtype", "class", "instance", "where", "derive", "if", "then", "else", "case", "of"]; +const { props, voids, types, reserved } = require('./consts'); -printRecord = (elProps) => elProps.length ? ` +const printRecord = (elProps) => elProps.length ? ` ( ${ elProps.map((p) => `${p} :: ${types[p] || "String"}`).join("\n , ") }