firescript
Version:
Firescript language
75 lines (68 loc) • 2.38 kB
JavaScript
const path = require('path')
const fs = require('fs')
const { FirescriptParser, Parser } = require('firescript-parser')
const { FirescriptConfig } = require('firescript-config')
const { JavascriptTranspiler } = require('firescript-transpiler')
module.exports = {
FirescriptParser,
JavascriptTranspiler,
Parser,
tokenize(input, opts = {}) {
const parser = new FirescriptParser(opts)
return parser.tokenize(input)
},
transpileFile(filename, opts = {}) {
const ext = path.extname(filename)
opts.type = opts.type || ext === '.fire' ? 'fire' : 'js'
return this.transpile(fs.readFileSync(filename, 'utf8'), opts)
},
transpile(input, opts = {}) {
const config = new FirescriptConfig(opts)
let ast
if (typeof input === 'string') {
const parserConf = config.getConfig('parser')
parserConf.filename = opts.filename
const parser = new FirescriptParser(parserConf)
ast = parser.parse(input)
} else {
ast = input
}
opts.features = config.getConfig('features')
const transpiler = new JavascriptTranspiler(opts)
return transpiler.transpile(ast)
},
parse (input, opts = {}) {
const parser = new FirescriptParser(opts)
return parser.parse(input)
},
loadConf () {
console.warn('Firescript.loadConf is deprecated! Use FirescriptConfig module instead')
return new FirescriptConfig()
},
version (print) {
const loadVersion = (pkgName) => {
try {
return `v${require(pkgName).version}`
} catch (err) {
return 'Not installed'
}
}
const version = loadVersion('../package.json')
const builderVersion = loadVersion('firescript-builder/package.json')
const parserVersion = loadVersion('firescript-parser/package.json')
const transpilerVersion = loadVersion('firescript-transpiler/package.json')
const linterVersion = loadVersion('firescript-linter/package.json')
if (print) {
console.log(`Firescript: ${version}`)
console.log(`Firescript Builder: ${builderVersion}`)
console.log(`Firescript Parser: ${parserVersion}`)
console.log(`Firescript Transpiler: ${transpilerVersion}`)
}
return {
firescript: version,
'firescript-builder': builderVersion,
'firescript-parser': parserVersion,
'firescript-transpiler': transpilerVersion
}
}
}