diff options
-rw-r--r-- | generate-elm.js | 6 | ||||
-rw-r--r-- | package-lock.json | 188 | ||||
-rw-r--r-- | src/Mapbox/Element.elm | 18 | ||||
-rw-r--r-- | src/Mapbox/Layer.elm | 28 | ||||
-rw-r--r-- | src/js/main.js | 16 | ||||
-rw-r--r-- | style-generator/src/Decoder.elm | 3 | ||||
-rw-r--r-- | style-generator/src/MyElm/Syntax.elm | 9 |
7 files changed, 201 insertions, 67 deletions
diff --git a/generate-elm.js b/generate-elm.js index 181c4c1..ec1e889 100644 --- a/generate-elm.js +++ b/generate-elm.js @@ -258,9 +258,9 @@ filter = Expression.encode >> Top "filter" {-| Whether this layer is displayed. -} -visible : Expression CameraExpression Bool -> LayerAttr any -visible vis = - Layout "visibility" <| Expression.encode <| Expression.ifElse vis (Expression.str "visible") (Expression.str "none") +visible : Bool -> LayerAttr any +visible isVisible = + Layout "visibility" <| Expression.encode <| Expression.str <| if isVisible then "visible" else "none" ${Object.entries(codes) .map(([section, codes]) => `-- ${section}\n\n${codes.join("\n")}`) diff --git a/package-lock.json b/package-lock.json index a17b137..0b802c4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -487,6 +487,12 @@ "readdirp": "^2.0.0" } }, + "chownr": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.2.tgz", + "integrity": "sha512-GkfeAQh+QNy3wquu9oIZr6SS5x7wGdSgNQvD10X3r+AZr1Oys22HW8kAmDMvNg2+Dm0TeGaEuO8gFwdBXxwO8A==", + "dev": true + }, "class-utils": { "version": "0.3.6", "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", @@ -704,12 +710,75 @@ "dev": true }, "elm-format": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/elm-format/-/elm-format-0.8.1.tgz", - "integrity": "sha512-uLcDICdmEoRBaCp3PobcvHtUej2RJFHRYfMd7i3CSH+RsajJYTdiPkviKIq823Kd4gfjQMpNajEyM1lLFez7+A==", + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/elm-format/-/elm-format-0.8.2.tgz", + "integrity": "sha512-BRQaVQOGt9gxK1hqSJn1MISxDGdln22PSYzmHMjqpQY3S9OJY/3kPn5HoiH3bHQYQFwC+X0apsMZldK9VxySow==", "dev": true, "requires": { - "binwrap": "^0.2.0" + "binwrap": "^0.2.2" + }, + "dependencies": { + "binwrap": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/binwrap/-/binwrap-0.2.2.tgz", + "integrity": "sha512-Y+Wvypk3JhH5GPZAvlwJAWOVH/OsOhQMSj37vySuWHwQivoALplPxfBA8b973rFJI7OS+O+1YmmYXIiEXVMAcw==", + "dev": true, + "requires": { + "mustache": "^3.0.1", + "request": "^2.88.0", + "request-promise": "^4.2.4", + "tar": "^4.4.10", + "unzip-stream": "^0.3.0" + } + }, + "mustache": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/mustache/-/mustache-3.0.3.tgz", + "integrity": "sha512-vM5FkMHamTYmVYeAujypihuPrJQDtaUIlKeeVb1AMJ73OZLtWiF7GprqrjxD0gJWT53W9JfqXxf97nXQjMQkqA==", + "dev": true + }, + "request-promise": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/request-promise/-/request-promise-4.2.4.tgz", + "integrity": "sha512-8wgMrvE546PzbR5WbYxUQogUnUDfM0S7QIFZMID+J73vdFARkFy+HElj4T+MWYhpXwlLp0EQ8Zoj8xUA0he4Vg==", + "dev": true, + "requires": { + "bluebird": "^3.5.0", + "request-promise-core": "1.1.2", + "stealthy-require": "^1.1.1", + "tough-cookie": "^2.3.3" + } + }, + "request-promise-core": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.2.tgz", + "integrity": "sha512-UHYyq1MO8GsefGEt7EprS8UrXsm1TxEvFUX1IMTuSLU2Rh7fTIdFtl8xD7JiEYiWU2dl+NYAjCTksTehQUxPag==", + "dev": true, + "requires": { + "lodash": "^4.17.11" + } + }, + "tar": { + "version": "4.4.10", + "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.10.tgz", + "integrity": "sha512-g2SVs5QIxvo6OLp0GudTqEf05maawKUxXru104iaayWA09551tFCTI8f1Asb4lPfkBr91k07iL4c11XO3/b0tA==", + "dev": true, + "requires": { + "chownr": "^1.1.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.3.5", + "minizlib": "^1.2.1", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", + "yallist": "^3.0.3" + } + }, + "yallist": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.3.tgz", + "integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==", + "dev": true + } } }, "elm-test": { @@ -1357,11 +1426,6 @@ "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", "dev": true }, - "esm": { - "version": "3.0.84", - "resolved": "https://registry.npmjs.org/esm/-/esm-3.0.84.tgz", - "integrity": "sha512-SzSGoZc17S7P+12R9cg21Bdb7eybX25RnIeRZ80xZs+VZ3kdQKzqTp2k4hZJjR7p9l0186TTXSgrxzlMDBktlw==" - }, "esprima": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/esprima/-/esprima-1.0.4.tgz", @@ -1554,6 +1618,15 @@ "rimraf": "^2.2.8" } }, + "fs-minipass": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.6.tgz", + "integrity": "sha512-crhvyXcMejjv3Z5d2Fa9sf5xLYVCF5O1c71QxbVnbLsmYMBEvDAftewesN/HhY03YRoA7zOMxjNGrF5svGaaeQ==", + "dev": true, + "requires": { + "minipass": "^2.2.1" + } + }, "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -2141,9 +2214,9 @@ } }, "gl-matrix": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/gl-matrix/-/gl-matrix-3.0.0.tgz", - "integrity": "sha512-PD4mVH/C/Zs64kOozeFnKY8ybhgwxXXQYGWdB4h68krAHknWJgk9uKOn6z8YElh5//vs++90pb6csrTIDWnexA==" + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/gl-matrix/-/gl-matrix-3.1.0.tgz", + "integrity": "sha512-526NA+3EA+ztAQi0IZpSWiM0fyQXIp7IbRvfJ4wS/TjjQD0uv0fVybXwwqqSOlq33UckivI0yMDlVtboWm3k7A==" }, "glob": { "version": "7.1.3", @@ -2435,9 +2508,9 @@ "dev": true }, "is-reference": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.1.2.tgz", - "integrity": "sha512-Kn5g8c7XHKejFOpTf2QN9YjiHHKl5xRj+2uAZf9iM2//nkBNi/NNeB5JMoun28nEaUVHyPUzqzhfRlfAirEjXg==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.1.3.tgz", + "integrity": "sha512-W1iHHv/oyBb2pPxkBxtaewxa1BC58Pn5J0hogyCdefwUIvb6R+TGbAcIa4qPNYLqLhb3EnOgUf2MQkkF76BcKw==", "dev": true, "requires": { "@types/estree": "0.0.39" @@ -2572,9 +2645,9 @@ } }, "magic-string": { - "version": "0.25.2", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.2.tgz", - "integrity": "sha512-iLs9mPjh9IuTtRsqqhNGYcZXGei0Nh/A4xirrsqW7c+QhKVFL2vm7U09ru6cHRD22azaP/wMDgI+HCqbETMTtg==", + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.3.tgz", + "integrity": "sha512-6QK0OpF/phMz0Q2AxILkX2mFhi7m+WMwTRg0LQKq/WBB0cDP4rYH3Wp4/d3OTXlrPLVJT/RFqj8tFeAR4nk8AA==", "dev": true, "requires": { "sourcemap-codec": "^1.4.4" @@ -2596,9 +2669,9 @@ } }, "mapbox-gl": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mapbox-gl/-/mapbox-gl-1.2.0.tgz", - "integrity": "sha512-RDo0kMuo9gs6HFX2Maj+tYO5bUT6WFTQkFbJoKdfe2pK8SY/RgyG3SNJRgZypdBR8loxGCG9geeOwc+JJqblHQ==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/mapbox-gl/-/mapbox-gl-1.3.0.tgz", + "integrity": "sha512-mhxIXNQwyqqlFImVUuFucSydxXIeKS4ul/5ES6A5zA4loLvcEXOrlH1PewjqkGoYjfdRHjqsaxpP8czbVuHg3g==", "requires": { "@mapbox/geojson-rewind": "^0.4.0", "@mapbox/geojson-types": "^1.0.2", @@ -2611,7 +2684,6 @@ "@mapbox/whoots-js": "^3.1.0", "csscolorparser": "~1.0.2", "earcut": "^2.1.5", - "esm": "~3.0.84", "geojson-vt": "^3.2.1", "gl-matrix": "^3.0.0", "grid-index": "^1.1.0", @@ -2689,10 +2761,37 @@ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" }, + "minipass": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.5.0.tgz", + "integrity": "sha512-9FwMVYhn6ERvMR8XFdOavRz4QK/VJV8elU1x50vYexf9lslDcWe/f4HBRxCPd185ekRSjU6CfYyJCECa/CQy7Q==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + }, + "dependencies": { + "yallist": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.3.tgz", + "integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==", + "dev": true + } + } + }, + "minizlib": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.2.1.tgz", + "integrity": "sha512-7+4oTUOWKg7AuL3vloEWekXY2/D20cevzsrNT2kGWm+39J9hGTCBv8VI5Pm5lXZ/o3/mdR4f8rflAPhnQb8mPA==", + "dev": true, + "requires": { + "minipass": "^2.2.1" + } + }, "mixin-deep": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", - "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", "dev": true, "requires": { "for-in": "^1.0.2", @@ -3528,26 +3627,26 @@ } }, "rollup": { - "version": "1.18.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-1.18.0.tgz", - "integrity": "sha512-MBAWr6ectF948gW/bs/yfi0jW7DzwI8n0tEYG/ZMQutmK+blF/Oazyhg3oPqtScCGV8bzCtL9KzlzPtTriEOJA==", + "version": "1.20.3", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-1.20.3.tgz", + "integrity": "sha512-/OMCkY0c6E8tleeVm4vQVDz24CkVgvueK3r8zTYu2AQNpjrcaPwO9hE+pWj5LTFrvvkaxt4MYIp2zha4y0lRvg==", "dev": true, "requires": { "@types/estree": "0.0.39", - "@types/node": "^12.6.3", - "acorn": "^6.2.0" + "@types/node": "^12.7.2", + "acorn": "^7.0.0" }, "dependencies": { "@types/node": { - "version": "12.6.9", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.6.9.tgz", - "integrity": "sha512-+YB9FtyxXGyD54p8rXwWaN1EWEyar5L58GlGWgtH2I9rGmLGBQcw63+0jw+ujqVavNuO47S1ByAjm9zdHMnskw==", + "version": "12.7.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.7.3.tgz", + "integrity": "sha512-3SiLAIBkDWDg6vFo0+5YJyHPWU9uwu40Qe+v+0MH8wRKYBimHvvAOyk3EzMrD/TrIlLYfXrqDqrg913PynrMJQ==", "dev": true }, "acorn": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.2.1.tgz", - "integrity": "sha512-JD0xT5FCRDNyjDda3Lrg/IxFscp9q4tiYtxE1/nOzlKCk7hIRuYjhq1kCNkbPjMRMZuFq20HNQn1I9k8Oj0E+Q==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.0.0.tgz", + "integrity": "sha512-PaF/MduxijYYt7unVGRuds1vBC9bFxbNf+VWqhOClfdgy7RlVkQqt610ig1/yxTgsDIfW1cWDel5EBbOy3jdtQ==", "dev": true } } @@ -3563,9 +3662,9 @@ } }, "rollup-plugin-commonjs": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/rollup-plugin-commonjs/-/rollup-plugin-commonjs-10.0.1.tgz", - "integrity": "sha512-x0PcCVdEc4J8igv1qe2vttz8JKAKcTs3wfIA3L8xEty3VzxgORLrzZrNWaVMc+pBC4U3aDOb9BnWLAQ8J11vkA==", + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/rollup-plugin-commonjs/-/rollup-plugin-commonjs-10.1.0.tgz", + "integrity": "sha512-jlXbjZSQg8EIeAAvepNwhJj++qJWNJw1Cl0YnOqKtP5Djx+fFGkp3WRh+W0ASCaFG5w1jhmzDxgu3SJuVxPF4Q==", "dev": true, "requires": { "estree-walker": "^0.6.1", @@ -3573,17 +3672,6 @@ "magic-string": "^0.25.2", "resolve": "^1.11.0", "rollup-pluginutils": "^2.8.1" - }, - "dependencies": { - "rollup-pluginutils": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.1.tgz", - "integrity": "sha512-J5oAoysWar6GuZo0s+3bZ6sVZAC0pfqKz68De7ZgDi5z63jOVZn1uJL/+z1jeKHNbGII8kAyHF5q8LnxSX5lQg==", - "dev": true, - "requires": { - "estree-walker": "^0.6.1" - } - } } }, "rollup-plugin-node-resolve": { diff --git a/src/Mapbox/Element.elm b/src/Mapbox/Element.elm index 7802983..5a93501 100644 --- a/src/Mapbox/Element.elm +++ b/src/Mapbox/Element.elm @@ -1,6 +1,6 @@ module Mapbox.Element exposing ( map, css, MapboxAttr - , token, id, maxZoom, minZoom, maxBounds, renderWorldCopies, featureState + , token, id, zoom_, center_, maxZoom, minZoom, maxBounds, renderWorldCopies, featureState , EventData, TouchEvent, eventFeaturesFilter, eventFeaturesLayers , onMouseDown, onMouseUp, onMouseOver, onMouseMove, onClick, onDblClick, onMouseOut, onContextMenu, onZoom, onZoomStart, onZoomEnd, onRotate, onRotateStart, onRotateEnd, onTouchEnd, onTouchMove, onTouchCancel, on ) @@ -12,7 +12,7 @@ module Mapbox.Element exposing ### Attributes -@docs token, id, maxZoom, minZoom, maxBounds, renderWorldCopies, featureState +@docs token, id, zoom_, center_, maxZoom, minZoom, maxBounds, renderWorldCopies, featureState ### Events @@ -75,6 +75,20 @@ css = node "link" [ attribute "href" "https://api.tiles.mapbox.com/mapbox-gl-js/v0.53.0/mapbox-gl.css", attribute "rel" "stylesheet" ] [] +{-| Define the default zoom level of the map (0-24). +-} +zoom_ : Float -> MapboxAttr msg +zoom_ = + Encode.float >> property "zoom" >> MapboxAttr + + +{-| The default center pos. +-} +center_ : LngLat -> MapboxAttr msg +center_ = + LngLat.encodeAsPair >> property "center" >> MapboxAttr + + {-| The minimum zoom level of the map (0-24). -} minZoom : Float -> MapboxAttr msg diff --git a/src/Mapbox/Layer.elm b/src/Mapbox/Layer.elm index 1249b0a..24f457d 100644 --- a/src/Mapbox/Layer.elm +++ b/src/Mapbox/Layer.elm @@ -5,7 +5,7 @@ module Mapbox.Layer exposing , LayerAttr , metadata, sourceLayer, minzoom, maxzoom, filter, visible, visible2 , fillAntialias, fillColor, fillOpacity, fillOutlineColor, fillPattern, fillTranslate, fillTranslateAnchor - , lineBlur, lineCap, lineColor, lineDasharray, lineGapWidth, lineGradient, lineJoin, lineMiterLimit, lineOffset, lineOpacity, linePattern, lineRoundLimit, lineTranslate, lineTranslateAnchor, lineWidth + , lineBlur, lineCap, lineColor, lineDasharray, lineDasharray2, lineGapWidth, lineGradient, lineJoin, lineMiterLimit, lineOffset, lineOpacity, linePattern, lineRoundLimit, lineTranslate, lineTranslateAnchor, lineWidth , circleBlur, circleColor, circleOpacity, circlePitchAlignment, circlePitchScale, circleRadius, circleStrokeColor, circleStrokeOpacity, circleStrokeWidth, circleTranslate, circleTranslateAnchor , heatmapColor, heatmapIntensity, heatmapOpacity, heatmapRadius, heatmapWeight , fillExtrusionBase, fillExtrusionColor, fillExtrusionHeight, fillExtrusionOpacity, fillExtrusionPattern, fillExtrusionTranslate, fillExtrusionTranslateAnchor, fillExtrusionVerticalGradient @@ -64,7 +64,7 @@ Paint properties are applied later in the rendering process. Changes to a paint ### Line Attributes -@docs lineBlur, lineCap, lineColor, lineDasharray, lineGapWidth, lineGradient, lineJoin, lineMiterLimit, lineOffset, lineOpacity, linePattern, lineRoundLimit, lineTranslate, lineTranslateAnchor, lineWidth +@docs lineBlur, lineCap, lineColor, lineDasharray, lineDasharray2, lineGapWidth, lineGradient, lineJoin, lineMiterLimit, lineOffset, lineOpacity, linePattern, lineRoundLimit, lineTranslate, lineTranslateAnchor, lineWidth ### Circle Attributes @@ -349,9 +349,16 @@ filter = {-| Whether this layer is displayed. -} -visible : Expression CameraExpression Bool -> LayerAttr any -visible vis = - Layout "visibility" <| Expression.encode <| Expression.ifElse vis (Expression.str "visible") (Expression.str "none") +visible : Bool -> LayerAttr any +visible isVisible = + Layout "visibility" <| + Expression.encode <| + Expression.str <| + if isVisible then + "visible" + + else + "none" {-| Directly use a boolean value to set a layer to visible or not. @@ -492,6 +499,17 @@ lineDasharray = Expression.encode >> Paint "line-dasharray" +{-| Specifies the lengths of the alternating dashes and gaps that form the dash pattern. The lengths are later scaled by the line width. To convert a dash length to pixels, multiply the length by the current line width. Note that GeoJSON sources with `lineMetrics: true` specified won't render dashed lines to the expected scale. Also note that zoom-dependent expressions will be evaluated only at integer zoom levels. Paint property. + +Should be greater than or equal to `0`. +Units in line widths. Disabled by `linePattern`. + +-} +lineDasharray2 : Expression any (Array Float) -> LayerAttr Line +lineDasharray2 = + Expression.encode >> Paint "line-dasharray" + + {-| Stroke thickness. Paint property. Should be greater than or equal to `0`. diff --git a/src/js/main.js b/src/js/main.js index e5112fb..61054cc 100644 --- a/src/js/main.js +++ b/src/js/main.js @@ -255,12 +255,16 @@ export function registerCustomElement(settings) { this._eventRegistrationQueue = {}; options.onMount(this._map, this); if (commandRegistry[this.id]) { - this._map.on("load", () => { - var cmd; - while ((cmd = commandRegistry[this.id].shift())) { - cmd(this._map); - } - }); + function onStyleData(){ + if(map.isStyleLoaded()) { + var cmd; + while ((cmd = commandRegistry[this.id].shift())) { + cmd(this._map); + } + map.off('data', onStyleData) + } + }; + this._map.on("data", onStyleData); } return this._map; } diff --git a/style-generator/src/Decoder.elm b/style-generator/src/Decoder.elm index 1df0a73..ce18306 100644 --- a/style-generator/src/Decoder.elm +++ b/style-generator/src/Decoder.elm @@ -194,6 +194,9 @@ decodeAttrs = "filter" -> decodeAttr "filter" (D.oneOf [ Decoder.Legacy.filter, Decode.expression ]) attrValue + "visibility" -> + decodeAttr "visible" (D.map ((==) "visible" >> bool) D.string) attrValue + other -> decodeAttr (toCamelCaseLower attrName) Decode.expression attrValue ) diff --git a/style-generator/src/MyElm/Syntax.elm b/style-generator/src/MyElm/Syntax.elm index 7b99915..b207d17 100644 --- a/style-generator/src/MyElm/Syntax.elm +++ b/style-generator/src/MyElm/Syntax.elm @@ -1,6 +1,6 @@ module MyElm.Syntax exposing ( QualifiedName, local, valueName, typeName, constructorName - , Expression, string, float, int, list, pair, triple, call0, call1, call2, call3, call4, calln, pipe, record + , Expression, string, float, int, bool, list, pair, triple, call0, call1, call2, call3, call4, calln, pipe, record , Type, type0, type1, type2, typen, recordType, functionType, pairType, tripleType, typeVar , Declaration, variable, fun1, customType, typeAlias , build, Exposing, opaque, withConstructors, exposeFn @@ -321,6 +321,13 @@ int i = Literal (String.fromInt i) +{-| A bool literal. +-} +bool : Bool -> Expression +bool b = + Literal (if b then "True" else "False") + + {-| A list literal -} list : List Expression -> Expression |