Module: AngularSprinkles::JavaScript

Defined in:
lib/angular_sprinkles/java_script.rb

Constant Summary collapse

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) {\nwindow.sprinkles = angular.module('\#{APP_NAME}', []);\nwindow.onload = function () {\nvar queue,\napp = angular.module('\#{APP_NAME}'),\ndoc = document.documentElement,\nctrlName = 'Ctrl';\n\#{CONTROLLER_FN} = \#{CONTROLLER_FN} || function(){};\napp.controller(ctrlName, \#{CONTROLLER_FN});\napp.config(['$httpProvider', function ($httpProvider) {\nvar csrfToken = document.querySelector('meta[name=csrf-token]');\nif (csrfToken) {\n$httpProvider.defaults.headers.common['X-CSRF-Token'] = csrfToken.content;\n}\n}]);\ndoc.setAttribute('data-ng-controller', ctrlName + ' as \#{CONTROLLER_NAME}');\nangular.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) {\nthis[service] = $injector.get(service);\n}.bind(this));\n\#{SERVICE_QUEUE} = [];\n};\n\#{SERVICE_QUEUE} = [];\n"
end
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
BindRootService =
->(*args) do
  BindService.call(CONTROLLER_NAME, *args)
end
BindService =
->(controller_name, method, input) do
  "#{controller_name}.#{method}(#{input.map(&:to_json).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
  NoOp.call(*[CONTROLLER_NAME, *args])
end
NoOp =
->(*args) do
  args.flatten.compact.join('.')
end
IsolateController =
->(name) do
  "sprinkles.controller('#{name}', angular.noop);"
end