neft
Version:
JavaScript. Everywhere.
53 lines (39 loc) • 1.45 kB
text/coffeescript
'use strict'
pathUtils = require 'path'
nmlParser = require 'src/nml-parser'
{utils, Renderer} = Neft
module.exports = (file) ->
data = file.data
name = file.filename
parts = name.split '/'
for part, i in parts
parts[i] = part[0].toUpperCase() + part.slice(1)
scopeItemName = parts.join ''
scopeName = scopeItemName[0].toLowerCase() + scopeItemName.slice(1)
code = ""
code += "Renderer = require('neft-renderer')\n"
code += "onReady = require('neft-signal').create()\n"
code += "{Image, Device, Navigator, Screen, RotationSensor} = Renderer\n"
code += "view = app = null\n"
if pathUtils.extname(file.path) isnt '.js'
return new Error "No js files are not supported"
data = nmlParser file.data, file.filename
if data.bootstrap
code += "`#{data.bootstrap}`\n"
for fileId, val of data.codes
if typeof val?.link is 'string'
code += "exports.#{fileId} = exports.#{val.link}\n"
else
code += "exports.#{fileId} = `(function(){ #{val} }())`\n"
code += "exports._init = (opts) -> \n"
code += " {view, app} = opts\n"
code += " onReady.emit app\n"
for autoInitCode in data.autoInitCodes
code += " `(function(){#{autoInitCode}}())`\n"
file.name = scopeItemName
file.data = code
file.queries = data.queries