UNPKG

rio-de-js

Version:
106 lines (72 loc) 2.51 kB
const fs = require('fs') const { rio, resolveImports, buildScope, compile } = require('../index.js') const R = require('ramda') const ramda = require('../imports/ramda.js') const math = require('../imports/math.js') const number = require('../imports/number.js') const http = require('../imports/http.js') const io = require('../libs/io.js') const promise = require('../libs/promise.js') /* * riolibs:: { * <url>:: { * names::[String], * functions:[Function] * } * } */ var riolibs = { 'http://divsense.com/io': io, 'http://divsense.com/ramda': ramda, 'http://divsense.com/http': http, 'http://divsense.com/math': math, 'http://divsense.com/number': number, 'http://divsense.com/promise': promise, } const defaultLibs = ['http://divsense.com/ramda', 'http://divsense.com/io'] //const inp = 'maybe.rio' //const inp = 'highlight_xml.rio' const inp = 'p_calc.rio' //const inp = 'sample.rio' const rioCode = fs.readFileSync(__dirname + '/' + inp).toString() try { const ast = rio.parse(rioCode) const missingImports = resolveImports(ast, riolibs) if(missingImports.length) { // download missing libs and add them to the riolibs ... console.log('Missing libs', missingImports) } //console.log(JSON.stringify(missingImports, null, 2)) const {scope, imports} = buildScope(ast, riolibs, defaultLibs) //console.log(JSON.stringify(imports, null, 2)) const {code, exports} = compile(ast, imports) console.log(code) } catch(e) { console.log(e) } //console.log(JSON.stringify(ast, null, 2)) //return /* const {libScope, imports} = rio.buildLibScope(ast, riolibs, defaultLibs) const {code, exports, error} = rio.compile(ast, imports) //console.log(code, exports, error) if(error) { console.log(JSON.stringify(error, null, 2)) } else { console.log(code) const {lib, error} = rio.makeLib(code, libScope, imports, exports) //const just = lib.functions[0] //const nothing = lib.functions[1] //const isJust = lib.functions[2] //const isNothing = lib.functions[3] //const getOrElse = lib.functions[4] //const test1 = lib.functions[5] //const x1 = x => just(x + 1) //const x2 = just(2) //const x3 = R.chain(x1, x2) //console.log(getOrElse('nothing', x3)) //console.log( test1() ) } //const x = res.functions[0](-99)([1,2]) //console.log(x)*/