[{"data":1,"prerenderedAt":387},["ShallowReactive",2],{"content-\u002Fdownload":3},{"id":4,"title":5,"author":6,"body":7,"date":6,"description":380,"extension":381,"meta":382,"navigation":123,"order":6,"path":383,"seo":384,"stem":385,"version":6,"__hash__":386},"content\u002Fdownload.md","Download",null,{"type":8,"value":9,"toc":376},"minimark",[10,25,43,48,58,69,95,212,219,223,230,239,253,267,361,372],[11,12,13,14,18,19,24],"p",{},"The projects below provide ",[15,16,17],"em",{},"Finitio"," implementations in various host\nlanguages. ",[20,21,23],"a",{"href":22},"mailto:info@enspirit.be","Contact us"," or fork this page on github\nto add your own binding to this list!",[11,26,27,28,32,33,37,38,42],{},"Both implementations cover the Finitio 0.4 language: the\n",[20,29,31],{"href":30},"\u002Freference\u002F0.4.x\u002Ftype-system","type system",", ",[20,34,36],{"href":35},"\u002Freference\u002F0.4.x\u002Fimports","imports","\nand the ",[20,39,41],{"href":40},"\u002Freference\u002F0.4.x\u002Fstdlib","standard library",". They differ on a handful\nof points, each flagged in the reference where it applies.",[44,45,47],"h2",{"id":46},"ruby","Ruby",[11,49,50,51,57],{},"The ",[20,52,56],{"href":53,"rel":54},"https:\u002F\u002Frubygems.org\u002Fgems\u002Ffinitio",[55],"nofollow","finitio"," ruby gem provides a mature\nimplementation in Ruby. You'll also find the source code on github:",[59,60,61],"ul",{},[62,63,64],"li",{},[20,65,68],{"href":66,"rel":67},"https:\u002F\u002Fgithub.com\u002Fenspirit\u002Ffinitio-rb",[55],"enspirit\u002Ffinitio-rb",[70,71,76],"pre",{"className":72,"code":73,"language":74,"meta":75,"style":75},"language-bash shiki shiki-themes github-light github-dark","gem install finitio\n","bash","",[77,78,79],"code",{"__ignoreMap":75},[80,81,84,88,92],"span",{"class":82,"line":83},"line",1,[80,85,87],{"class":86},"sScJk","gem",[80,89,91],{"class":90},"sZZnC"," install",[80,93,94],{"class":90}," finitio\n",[70,96,99],{"className":97,"code":98,"language":46,"meta":75,"style":75},"language-ruby shiki shiki-themes github-light github-dark","require 'finitio'\nrequire 'json'\n\nsystem = Finitio.system \u003C\u003C~FIO\n  @import finitio\u002Fdata\n\n  { name: String( s | s.length > 0 ), at: Date }\nFIO\n\nsystem.dress(JSON.parse('{ \"name\": \"Finitio\", \"at\": \"2014-03-01\" }'))\n# => {name: \"Finitio\", at: #\u003CDate: 2014-03-01 ...>}\n",[77,100,101,110,118,125,148,154,159,165,171,176,205],{"__ignoreMap":75},[80,102,103,107],{"class":82,"line":83},[80,104,106],{"class":105},"szBVR","require",[80,108,109],{"class":90}," 'finitio'\n",[80,111,113,115],{"class":82,"line":112},2,[80,114,106],{"class":105},[80,116,117],{"class":90}," 'json'\n",[80,119,121],{"class":82,"line":120},3,[80,122,124],{"emptyLinePlaceholder":123},true,"\n",[80,126,128,132,135,139,143,145],{"class":82,"line":127},4,[80,129,131],{"class":130},"s4XuR","system",[80,133,134],{"class":105}," =",[80,136,138],{"class":137},"sj4cs"," Finitio",[80,140,142],{"class":141},"sVt8B",".",[80,144,131],{"class":137},[80,146,147],{"class":90}," \u003C\u003C~FIO\n",[80,149,151],{"class":82,"line":150},5,[80,152,153],{"class":90},"  @import finitio\u002Fdata\n",[80,155,157],{"class":82,"line":156},6,[80,158,124],{"emptyLinePlaceholder":123},[80,160,162],{"class":82,"line":161},7,[80,163,164],{"class":90},"  { name: String( s | s.length > 0 ), at: Date }\n",[80,166,168],{"class":82,"line":167},8,[80,169,170],{"class":90},"FIO\n",[80,172,174],{"class":82,"line":173},9,[80,175,124],{"emptyLinePlaceholder":123},[80,177,179,181,183,186,189,192,194,197,199,202],{"class":82,"line":178},10,[80,180,131],{"class":137},[80,182,142],{"class":141},[80,184,185],{"class":86},"dress",[80,187,188],{"class":141},"(",[80,190,191],{"class":137},"JSON",[80,193,142],{"class":141},[80,195,196],{"class":86},"parse",[80,198,188],{"class":141},[80,200,201],{"class":90},"'{ \"name\": \"Finitio\", \"at\": \"2014-03-01\" }'",[80,203,204],{"class":141},"))\n",[80,206,208],{"class":82,"line":207},11,[80,209,211],{"class":210},"sJ8bj","# => {name: \"Finitio\", at: #\u003CDate: 2014-03-01 ...>}\n",[11,213,214,215,142],{},"Tuples are represented as Ruby hashes with symbol keys, and constraint\nexpressions are Ruby code — see\n",[20,216,218],{"href":217},"\u002Freference\u002F0.4.x\u002Ftype-system#constraint-expressions-are-host-language-code","constraint expressions",[44,220,222],{"id":221},"javascript","JavaScript",[11,224,50,225,229],{},[20,226,56],{"href":227,"rel":228},"https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002Ffinitio",[55]," package brings Finitio to\nNode and to the browser. The source code is available on github:",[59,231,232],{},[62,233,234],{},[20,235,238],{"href":236,"rel":237},"https:\u002F\u002Fgithub.com\u002Fenspirit\u002Ffinitio.js",[55],"enspirit\u002Ffinitio.js",[70,240,242],{"className":72,"code":241,"language":74,"meta":75,"style":75},"npm install finitio\n",[77,243,244],{"__ignoreMap":75},[80,245,246,249,251],{"class":82,"line":83},[80,247,248],{"class":86},"npm",[80,250,91],{"class":90},[80,252,94],{"class":90},[254,255,256],"callout",{},[11,257,50,258,261,262,266],{},[77,259,260],{},"latest"," tag on npm currently points at a ",[263,264,265],"strong",{},"2.0.1 release candidate",", so\nthat is what the command above installs. It is the line to be on: 2.0 brought\ngeneric types, TypeScript definitions and a dual CommonJS\u002FESM build. Pin an\nexact version if you need reproducible installs.",[70,268,271],{"className":269,"code":270,"language":221,"meta":75,"style":75},"language-javascript shiki shiki-themes github-light github-dark","import Finitio from 'finitio'\n\nconst system = Finitio.system(`\n  @import finitio\u002Fdata\n\n  { name: String( s | s.length > 0 ), at: Date }\n`)\n\nsystem.dress({ name: 'Finitio', at: '2014-03-01' })\n\u002F\u002F => { name: 'Finitio', at: 2014-03-01T00:00:00.000Z }\n",[77,272,273,286,290,310,314,318,322,330,334,356],{"__ignoreMap":75},[80,274,275,278,281,284],{"class":82,"line":83},[80,276,277],{"class":105},"import",[80,279,280],{"class":141}," Finitio ",[80,282,283],{"class":105},"from",[80,285,109],{"class":90},[80,287,288],{"class":82,"line":112},[80,289,124],{"emptyLinePlaceholder":123},[80,291,292,295,298,300,303,305,307],{"class":82,"line":120},[80,293,294],{"class":105},"const",[80,296,297],{"class":137}," system",[80,299,134],{"class":105},[80,301,302],{"class":141}," Finitio.",[80,304,131],{"class":86},[80,306,188],{"class":141},[80,308,309],{"class":90},"`\n",[80,311,312],{"class":82,"line":127},[80,313,153],{"class":90},[80,315,316],{"class":82,"line":150},[80,317,124],{"emptyLinePlaceholder":123},[80,319,320],{"class":82,"line":156},[80,321,164],{"class":90},[80,323,324,327],{"class":82,"line":161},[80,325,326],{"class":90},"`",[80,328,329],{"class":141},")\n",[80,331,332],{"class":82,"line":167},[80,333,124],{"emptyLinePlaceholder":123},[80,335,336,339,341,344,347,350,353],{"class":82,"line":173},[80,337,338],{"class":141},"system.",[80,340,185],{"class":86},[80,342,343],{"class":141},"({ name: ",[80,345,346],{"class":90},"'Finitio'",[80,348,349],{"class":141},", at: ",[80,351,352],{"class":90},"'2014-03-01'",[80,354,355],{"class":141}," })\n",[80,357,358],{"class":82,"line":178},[80,359,360],{"class":210},"\u002F\u002F => { name: 'Finitio', at: 2014-03-01T00:00:00.000Z }\n",[11,362,363,364,366,367,371],{},"It ships TypeScript definitions, a ",[77,365,56],{}," command line for validating\ndocuments and bundling schemas, and — as the ",[20,368,370],{"href":369},"\u002Ftry","playground"," on this site\ndemonstrates — runs entirely in the browser.",[373,374,375],"style",{},"html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}",{"title":75,"searchDepth":120,"depth":120,"links":377},[378,379],{"id":46,"depth":112,"text":47},{"id":221,"depth":112,"text":222},"Finitio implementations for Ruby and JavaScript.","md",{},"\u002Fdownload",{"title":5,"description":380},"download","eng4PRDbSLOcKXRH8M_9tVldHOte4VV9N2sd5ujg_xA",1786026251326]