- PREFIX =
:sprinkles
- APP_NAME =
"#{PREFIX}App"
- CONTROLLER_NAME =
"#{PREFIX}Ctrl"
- CONTROLLER_FN =
"window.#{CONTROLLER_NAME}Fn"
- SERVICE_QUEUE =
"#{CONTROLLER_FN}.serviceQueue"
- PLUGIN =
"(function (window, document, angular) {\n window.sprinkles = angular.module('\#{APP_NAME}', []);\n window.onload = function () {\n var queue,\n app = angular.module('\#{APP_NAME}'),\n doc = document.documentElement,\n ctrlName = 'Ctrl';\n \#{CONTROLLER_FN} = \#{CONTROLLER_FN} || function(){};\n app.controller(ctrlName, \#{CONTROLLER_FN});\n app.config(['$httpProvider', function ($httpProvider) {\n var csrfToken = document.querySelector('meta[name=csrf-token]');\n if (csrfToken) {\n $httpProvider.defaults.headers.common['X-CSRF-Token'] = csrfToken.content;\n }\n }]);\n doc.setAttribute('data-ng-controller', ctrlName + ' as \#{CONTROLLER_NAME}');\n angular.bootstrap(doc, [app.name]);\n };\n}(window, document, window.angular));\n"
- ConstructorWrapper =
->(string) do
" \#{CONTROLLER_FN} = \#{CONTROLLER_FN} || function ($injector) {\n \#{string}\n \#{SERVICE_QUEUE}.forEach(function (service) {\n this[service] = $injector.get(service);\n }.bind(this));\n \#{SERVICE_QUEUE} = [];\n };\n \#{SERVICE_QUEUE} = [];\n BlockOfJavaScript\nend\n"
- ConstructorThis =
->(object, key) do
"this.#{key} = #{object.to_json};"
end
- ControllerPrototypeVariable =
->(*args) do
"#{CONTROLLER_FN}.prototype.#{args.join('.')}"
end
- RegisterService =
->(method) do
"#{SERVICE_QUEUE}.push('#{method}')"
end
- BindService =
->(method, input) do
"#{CONTROLLER_NAME}.#{method}(#{input.join(',')})"
end
- RegisterVariable =
->(*args) do
args.pop
acc, _ = args.inject(['', []]) do |(acc, store), arg|
store.push(arg)
prototype = ControllerPrototypeVariable.call(store)
acc += "#{prototype} = #{prototype} || {};\n"
[acc, store]
end
acc
end
- BindVariable =
->(*args) do
[CONTROLLER_NAME, *args].flatten.compact.join('.')
end
- NoOp =
->(*args) do
args.join('.')
end