angular_velocity 0.0.2alpha
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.gitignore +25 -0
- data/.rspec +2 -0
- data/Gemfile +8 -0
- data/lib/generators/angular_velocity/angular_config.rb +23 -0
- data/lib/generators/angular_velocity/controller/controller_generator.rb +22 -0
- data/lib/generators/angular_velocity/controller/templates/controller.coffee +4 -0
- data/lib/generators/angular_velocity/install/install_generator.rb +60 -0
- data/lib/generators/angular_velocity/install/templates/AppLoader.js +3 -0
- data/lib/generators/angular_velocity/install/templates/angular-cookies.js +183 -0
- data/lib/generators/angular_velocity/install/templates/angular-mocks.js +1764 -0
- data/lib/generators/angular_velocity/install/templates/angular-resource.js +445 -0
- data/lib/generators/angular_velocity/install/templates/angular-sanitize.js +535 -0
- data/lib/generators/angular_velocity/install/templates/angular-scenario.js +26195 -0
- data/lib/generators/angular_velocity/install/templates/angular.js +14733 -0
- data/lib/generators/angular_velocity/install/templates/app.coffee +3 -0
- data/lib/generators/angular_velocity/install/templates/index.html.erb +9 -0
- data/lib/generators/angular_velocity/install/templates/jasmine.yml +24 -0
- data/lib/generators/angular_velocity/install/templates/main_control.html +9 -0
- data/lib/generators/angular_velocity/install/templates/main_controller.coffee +4 -0
- data/lib/generators/angular_velocity/install/templates/main_controller.rb +11 -0
- data/lib/generators/angular_velocity/install/templates/main_controller_spec.coffee +19 -0
- data/lib/generators/angular_velocity/install/templates/templates_controller.rb +11 -0
- data/spec/controller/controller_generator_spec.rb +25 -0
- data/spec/install/install_generator_spec.rb +82 -0
- data/spec/spec_helper.rb +50 -0
- data/spec/support/generator_matcher.rb +45 -0
- metadata +143 -0
data/.gitignore
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
# See http://help.github.com/ignore-files/ for more about ignoring files.
|
2
|
+
#
|
3
|
+
# If you find yourself ignoring temporary files generated by your text editor
|
4
|
+
# or operating system, you probably want to add a global ignore instead:
|
5
|
+
# git config --global core.excludesfile ~/.gitignore_global
|
6
|
+
|
7
|
+
# Ignore bundler config
|
8
|
+
/.bundle
|
9
|
+
|
10
|
+
# Ignore the default SQLite database.
|
11
|
+
/db/*.sqlite3
|
12
|
+
|
13
|
+
# Ignore all logfiles and tempfiles.
|
14
|
+
/log/*.log
|
15
|
+
*.gem
|
16
|
+
#because is a generator
|
17
|
+
/spec/tmp
|
18
|
+
/tmp
|
19
|
+
/app
|
20
|
+
/config
|
21
|
+
/db
|
22
|
+
/log
|
23
|
+
/public
|
24
|
+
/tmp
|
25
|
+
Gemfile.lock
|
data/.rspec
ADDED
data/Gemfile
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
module AngularVelocity
|
2
|
+
module Generators
|
3
|
+
module AngularConfig
|
4
|
+
|
5
|
+
def application_name
|
6
|
+
if defined?(Rails) && Rails.application
|
7
|
+
"#{Rails.application.class.name.split('::').first}App"
|
8
|
+
else
|
9
|
+
"App"
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
def angular_path
|
14
|
+
"app/assets/javascripts/#{application_name}"
|
15
|
+
end
|
16
|
+
|
17
|
+
def angular_spec_path
|
18
|
+
"spec/javascripts/#{application_name}"
|
19
|
+
end
|
20
|
+
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'generators/angular_velocity/angular_config'
|
2
|
+
|
3
|
+
#Rails.root.join('public','images','logo.png')
|
4
|
+
|
5
|
+
module AngularVelocity
|
6
|
+
module Generators
|
7
|
+
|
8
|
+
class ControllerGenerator < Rails::Generators::NamedBase
|
9
|
+
include AngularVelocity::Generators::AngularConfig
|
10
|
+
source_root File.expand_path('../templates', __FILE__)
|
11
|
+
desc "This generator creates an angular controller"
|
12
|
+
|
13
|
+
def create_angular_controller
|
14
|
+
template "controller.coffee", "#{angular_path}/controllers/#{file_name}_controller.coffee"
|
15
|
+
end
|
16
|
+
|
17
|
+
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
@@ -0,0 +1,60 @@
|
|
1
|
+
require 'generators/angular_velocity/angular_config'
|
2
|
+
|
3
|
+
module AngularVelocity
|
4
|
+
module Generators
|
5
|
+
class InstallGenerator < Rails::Generators::Base
|
6
|
+
include AngularVelocity::Generators::AngularConfig
|
7
|
+
source_root File.expand_path("../templates", __FILE__)
|
8
|
+
|
9
|
+
desc "This generator installs angular.js with a default folder layout in app/assets/javascripts/"
|
10
|
+
|
11
|
+
def create_angular_application
|
12
|
+
template "app.coffee", "#{angular_path}/app.coffee"
|
13
|
+
%W{controllers services models views}.each do |dir|
|
14
|
+
empty_directory "#{angular_path}/#{dir}"
|
15
|
+
end
|
16
|
+
%W{angular angular-cookies angular-mocks angular-resource angular-sanitize angular-scenario}.each do |file|
|
17
|
+
copy_file "#{file}.js", "#{angular_path}/#{file}.js"
|
18
|
+
end
|
19
|
+
insert_into_file "app/assets/javascripts/application.js", :after =>"//= require jquery_ujs" do
|
20
|
+
"\n//= require ./#{application_name}/angular.js"
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
def create_main_angular_controller
|
25
|
+
template "main_controller.coffee", "#{angular_path}/controllers/main_controller.coffee"
|
26
|
+
copy_file("main_control.html", "#{angular_path}/views/main_control.html")
|
27
|
+
template "main_controller_spec.coffee", "#{angular_spec_path}/controllers/main_controller_spec.coffee"
|
28
|
+
end
|
29
|
+
|
30
|
+
def create_main_rails_controller
|
31
|
+
empty_directory "app/views/main"
|
32
|
+
template "index.html.erb", "app/views/main/index.html.erb"
|
33
|
+
copy_file "AppLoader.js", "#{angular_path}/#{application_name}Loader.js"
|
34
|
+
copy_file "main_controller.rb", "app/controllers/main_controller.rb"
|
35
|
+
insert_into_file "config/routes.rb", :after => "Application.routes.draw do" do
|
36
|
+
"\n" + %{ get "main/index"\n root to: "main#index"\n}
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
def create_templates_serving_rails_controller
|
41
|
+
#http://stackoverflow.com/questions/12116476/rails-static-html-template-files-in-the-asset-pipeline-and-caching-in-developmen
|
42
|
+
template "templates_controller.rb", "app/controllers/templates_controller.rb"
|
43
|
+
insert_into_file "config/routes.rb", :after => "Application.routes.draw do" do
|
44
|
+
"\n" + %{ get "/templates/:path.html" => "templates#file", :constraints => { :path => /.+/ }}
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
def create_angular_jasmine_link
|
49
|
+
template "jasmine.yml", "spec/javascripts/support/jasmine.yml"
|
50
|
+
insert_into_file "config/routes.rb", :after => "Application.routes.draw do" do
|
51
|
+
"\n" + %{ mount JasmineRails::Engine => "/specs" unless Rails.env.production?}
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
|
56
|
+
|
57
|
+
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
@@ -0,0 +1,183 @@
|
|
1
|
+
/**
|
2
|
+
* @license AngularJS v1.0.5
|
3
|
+
* (c) 2010-2012 Google, Inc. http://angularjs.org
|
4
|
+
* License: MIT
|
5
|
+
*/
|
6
|
+
(function(window, angular, undefined) {
|
7
|
+
'use strict';
|
8
|
+
|
9
|
+
/**
|
10
|
+
* @ngdoc overview
|
11
|
+
* @name ngCookies
|
12
|
+
*/
|
13
|
+
|
14
|
+
|
15
|
+
angular.module('ngCookies', ['ng']).
|
16
|
+
/**
|
17
|
+
* @ngdoc object
|
18
|
+
* @name ngCookies.$cookies
|
19
|
+
* @requires $browser
|
20
|
+
*
|
21
|
+
* @description
|
22
|
+
* Provides read/write access to browser's cookies.
|
23
|
+
*
|
24
|
+
* Only a simple Object is exposed and by adding or removing properties to/from
|
25
|
+
* this object, new cookies are created/deleted at the end of current $eval.
|
26
|
+
*
|
27
|
+
* @example
|
28
|
+
<doc:example>
|
29
|
+
<doc:source>
|
30
|
+
<script>
|
31
|
+
function ExampleController($cookies) {
|
32
|
+
// Retrieving a cookie
|
33
|
+
var favoriteCookie = $cookies.myFavorite;
|
34
|
+
// Setting a cookie
|
35
|
+
$cookies.myFavorite = 'oatmeal';
|
36
|
+
}
|
37
|
+
</script>
|
38
|
+
</doc:source>
|
39
|
+
</doc:example>
|
40
|
+
*/
|
41
|
+
factory('$cookies', ['$rootScope', '$browser', function ($rootScope, $browser) {
|
42
|
+
var cookies = {},
|
43
|
+
lastCookies = {},
|
44
|
+
lastBrowserCookies,
|
45
|
+
runEval = false,
|
46
|
+
copy = angular.copy,
|
47
|
+
isUndefined = angular.isUndefined;
|
48
|
+
|
49
|
+
//creates a poller fn that copies all cookies from the $browser to service & inits the service
|
50
|
+
$browser.addPollFn(function() {
|
51
|
+
var currentCookies = $browser.cookies();
|
52
|
+
if (lastBrowserCookies != currentCookies) { //relies on browser.cookies() impl
|
53
|
+
lastBrowserCookies = currentCookies;
|
54
|
+
copy(currentCookies, lastCookies);
|
55
|
+
copy(currentCookies, cookies);
|
56
|
+
if (runEval) $rootScope.$apply();
|
57
|
+
}
|
58
|
+
})();
|
59
|
+
|
60
|
+
runEval = true;
|
61
|
+
|
62
|
+
//at the end of each eval, push cookies
|
63
|
+
//TODO: this should happen before the "delayed" watches fire, because if some cookies are not
|
64
|
+
// strings or browser refuses to store some cookies, we update the model in the push fn.
|
65
|
+
$rootScope.$watch(push);
|
66
|
+
|
67
|
+
return cookies;
|
68
|
+
|
69
|
+
|
70
|
+
/**
|
71
|
+
* Pushes all the cookies from the service to the browser and verifies if all cookies were stored.
|
72
|
+
*/
|
73
|
+
function push() {
|
74
|
+
var name,
|
75
|
+
value,
|
76
|
+
browserCookies,
|
77
|
+
updated;
|
78
|
+
|
79
|
+
//delete any cookies deleted in $cookies
|
80
|
+
for (name in lastCookies) {
|
81
|
+
if (isUndefined(cookies[name])) {
|
82
|
+
$browser.cookies(name, undefined);
|
83
|
+
}
|
84
|
+
}
|
85
|
+
|
86
|
+
//update all cookies updated in $cookies
|
87
|
+
for(name in cookies) {
|
88
|
+
value = cookies[name];
|
89
|
+
if (!angular.isString(value)) {
|
90
|
+
if (angular.isDefined(lastCookies[name])) {
|
91
|
+
cookies[name] = lastCookies[name];
|
92
|
+
} else {
|
93
|
+
delete cookies[name];
|
94
|
+
}
|
95
|
+
} else if (value !== lastCookies[name]) {
|
96
|
+
$browser.cookies(name, value);
|
97
|
+
updated = true;
|
98
|
+
}
|
99
|
+
}
|
100
|
+
|
101
|
+
//verify what was actually stored
|
102
|
+
if (updated){
|
103
|
+
updated = false;
|
104
|
+
browserCookies = $browser.cookies();
|
105
|
+
|
106
|
+
for (name in cookies) {
|
107
|
+
if (cookies[name] !== browserCookies[name]) {
|
108
|
+
//delete or reset all cookies that the browser dropped from $cookies
|
109
|
+
if (isUndefined(browserCookies[name])) {
|
110
|
+
delete cookies[name];
|
111
|
+
} else {
|
112
|
+
cookies[name] = browserCookies[name];
|
113
|
+
}
|
114
|
+
updated = true;
|
115
|
+
}
|
116
|
+
}
|
117
|
+
}
|
118
|
+
}
|
119
|
+
}]).
|
120
|
+
|
121
|
+
|
122
|
+
/**
|
123
|
+
* @ngdoc object
|
124
|
+
* @name ngCookies.$cookieStore
|
125
|
+
* @requires $cookies
|
126
|
+
*
|
127
|
+
* @description
|
128
|
+
* Provides a key-value (string-object) storage, that is backed by session cookies.
|
129
|
+
* Objects put or retrieved from this storage are automatically serialized or
|
130
|
+
* deserialized by angular's toJson/fromJson.
|
131
|
+
* @example
|
132
|
+
*/
|
133
|
+
factory('$cookieStore', ['$cookies', function($cookies) {
|
134
|
+
|
135
|
+
return {
|
136
|
+
/**
|
137
|
+
* @ngdoc method
|
138
|
+
* @name ngCookies.$cookieStore#get
|
139
|
+
* @methodOf ngCookies.$cookieStore
|
140
|
+
*
|
141
|
+
* @description
|
142
|
+
* Returns the value of given cookie key
|
143
|
+
*
|
144
|
+
* @param {string} key Id to use for lookup.
|
145
|
+
* @returns {Object} Deserialized cookie value.
|
146
|
+
*/
|
147
|
+
get: function(key) {
|
148
|
+
return angular.fromJson($cookies[key]);
|
149
|
+
},
|
150
|
+
|
151
|
+
/**
|
152
|
+
* @ngdoc method
|
153
|
+
* @name ngCookies.$cookieStore#put
|
154
|
+
* @methodOf ngCookies.$cookieStore
|
155
|
+
*
|
156
|
+
* @description
|
157
|
+
* Sets a value for given cookie key
|
158
|
+
*
|
159
|
+
* @param {string} key Id for the `value`.
|
160
|
+
* @param {Object} value Value to be stored.
|
161
|
+
*/
|
162
|
+
put: function(key, value) {
|
163
|
+
$cookies[key] = angular.toJson(value);
|
164
|
+
},
|
165
|
+
|
166
|
+
/**
|
167
|
+
* @ngdoc method
|
168
|
+
* @name ngCookies.$cookieStore#remove
|
169
|
+
* @methodOf ngCookies.$cookieStore
|
170
|
+
*
|
171
|
+
* @description
|
172
|
+
* Remove given cookie
|
173
|
+
*
|
174
|
+
* @param {string} key Id of the key-value pair to delete.
|
175
|
+
*/
|
176
|
+
remove: function(key) {
|
177
|
+
delete $cookies[key];
|
178
|
+
}
|
179
|
+
};
|
180
|
+
|
181
|
+
}]);
|
182
|
+
|
183
|
+
})(window, window.angular);
|