grunt-better-classify
Version:
Small hack of ng-classify to support better module names and requirejs
63 lines (46 loc) • 2.04 kB
text/coffeescript
ngClassify = require 'ng-classify'
coffee = require 'coffee-script'
util = require './util'
class Classifier
constructor: (, ) ->
compile: (file = '') ->
= file.split('\n') or []
= ngClassify(, or )
return
process: () ->
isOneLiner = /.*\s*\(.*\).*/.test([0])
if (isOneLiner)
annotation = .shift()
else
stopIndex = do => return i for line, i in when /^class/.test(line.trim()) # returns first match
annotation = .splice(0, stopIndex).join('\n')
.log.debug("@annotation: multiline => #{!isOneLiner}")
.log.debug("@annotation: content => #{content}")
eval(coffee.compile(annotation))
classify: (def) ->
.verbose.ok('@classify: ' + JSON.stringify(def || {}))
if def.require
if def.module
if def.prefix
postClassify: () ->
= "#{@define}\n" + .split('\n').map(util.pad).join('\n') if
require: (isRequire, dependencies = []) ->
dependencies.push('angular')
quotedDependencies = dependencies.map((d) -> "'#{d}'").join(', ')
dependencies = dependencies.map((d) -> d.substring(d.lastIndexOf('/') + 1)).join(', ')
.verbose.ok("@require: dependencies => #{dependencies}; quotedDependencies => #{quotedDependencies}")
= !!isRequire
= "define [#{quotedDependencies}], (#{dependencies}) ->"
= .join '\n'
module: (name = .appName) ->
.verbose.ok("@module: name => #{name}")
.appName = name
prefix: (name = .prefix) ->
.verbose.ok("@prefix: name => #{name}")
.prefix = name
callback: () ->
return .callback() if !!.callback and .callback instanceof Function
return null
module.exports = Classifier