neft
Version:
Universal Platform
51 lines (38 loc) • 1.42 kB
text/coffeescript
'use strict'
pathUtils = require 'path'
module.exports = (nmlParser) -> (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} = Neft\n'
code += 'onReady = Neft.signal.create()\n'
code += '{Image, Device, Navigator, Screen, RotationSensor} = Renderer\n'
code += 'view = app = null\n'
if pathUtils.extname(file.path) not in ['.js', '.nml']
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
file.codes = data.codes