angular_scaffold 0.0.1

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.
Files changed (104) hide show
  1. checksums.yaml +7 -0
  2. data/MIT-LICENSE +20 -0
  3. data/README.rdoc +3 -0
  4. data/Rakefile +37 -0
  5. data/app/assets/javascripts/angular_scaffold/application.js +13 -0
  6. data/app/assets/stylesheets/angular_scaffold/application.css +15 -0
  7. data/app/controllers/angular_scaffold/application_controller.rb +5 -0
  8. data/app/helpers/angular_scaffold/application_helper.rb +4 -0
  9. data/app/views/layouts/angular_scaffold/application.html.erb +14 -0
  10. data/config/routes.rb +2 -0
  11. data/lib/angular_scaffold.rb +4 -0
  12. data/lib/angular_scaffold/engine.rb +5 -0
  13. data/lib/angular_scaffold/version.rb +3 -0
  14. data/lib/generators/angular_scaffold/install/USAGE +8 -0
  15. data/lib/generators/angular_scaffold/install/install_generator.rb +203 -0
  16. data/lib/generators/angular_scaffold/install/templates/AngularJS-medium.png +0 -0
  17. data/lib/generators/angular_scaffold/install/templates/angularjs/angular-1.0.6.min.js +162 -0
  18. data/lib/generators/angular_scaffold/install/templates/angularjs/angular-bootstrap-1.0.6.min.js +9 -0
  19. data/lib/generators/angular_scaffold/install/templates/angularjs/angular-bootstrap-prettify-1.0.6.min.js +41 -0
  20. data/lib/generators/angular_scaffold/install/templates/angularjs/angular-cookies-1.0.6.min.js +7 -0
  21. data/lib/generators/angular_scaffold/install/templates/angularjs/angular-loader-1.0.6.min.js +7 -0
  22. data/lib/generators/angular_scaffold/install/templates/angularjs/angular-mocks.js +1768 -0
  23. data/lib/generators/angular_scaffold/install/templates/angularjs/angular-resource-1.0.6.min.js +10 -0
  24. data/lib/generators/angular_scaffold/install/templates/angularjs/angular-sanitize-1.0.6.min.js +13 -0
  25. data/lib/generators/angular_scaffold/install/templates/angularjs/angular-scenario.js +26223 -0
  26. data/lib/generators/angular_scaffold/install/templates/application.html.erb +67 -0
  27. data/lib/generators/angular_scaffold/install/templates/application.js +17 -0
  28. data/lib/generators/angular_scaffold/install/templates/bootstrap/css/bootstrap-responsive.min.css +9 -0
  29. data/lib/generators/angular_scaffold/install/templates/bootstrap/css/bootstrap-theme.min.css +6 -0
  30. data/lib/generators/angular_scaffold/install/templates/bootstrap/css/bootstrap-theme.min.css.map +1 -0
  31. data/lib/generators/angular_scaffold/install/templates/bootstrap/css/bootstrap.min.css +6 -0
  32. data/lib/generators/angular_scaffold/install/templates/bootstrap/css/bootstrap.min.css.map +1 -0
  33. data/lib/generators/angular_scaffold/install/templates/bootstrap/img/glyphicons-halflings-white.png +0 -0
  34. data/lib/generators/angular_scaffold/install/templates/bootstrap/img/glyphicons-halflings.png +0 -0
  35. data/lib/generators/angular_scaffold/install/templates/bootstrap/js/bootstrap.min.js +7 -0
  36. data/lib/generators/angular_scaffold/install/templates/bower.json +18 -0
  37. data/lib/generators/angular_scaffold/install/templates/bower.json~ +0 -0
  38. data/lib/generators/angular_scaffold/install/templates/csrf_controller.js +18 -0
  39. data/lib/generators/angular_scaffold/install/templates/favicon.ico +0 -0
  40. data/lib/generators/angular_scaffold/install/templates/fontawesome/font-awesome.css.erb +540 -0
  41. data/lib/generators/angular_scaffold/install/templates/fonts/FontAwesome.otf +0 -0
  42. data/lib/generators/angular_scaffold/install/templates/fonts/fontawesome-webfont.eot +0 -0
  43. data/lib/generators/angular_scaffold/install/templates/fonts/fontawesome-webfont.svg +284 -0
  44. data/lib/generators/angular_scaffold/install/templates/fonts/fontawesome-webfont.ttf +0 -0
  45. data/lib/generators/angular_scaffold/install/templates/fonts/fontawesome-webfont.woff +0 -0
  46. data/lib/generators/angular_scaffold/install/templates/index_welcome.html.erb +6 -0
  47. data/lib/generators/angular_scaffold/install/templates/myangular/app.js +34 -0
  48. data/lib/generators/angular_scaffold/install/templates/myangular/application.html.erb +57 -0
  49. data/lib/generators/angular_scaffold/install/templates/myangular/application.js +27 -0
  50. data/lib/generators/angular_scaffold/install/templates/myangular/welcome_controller.js +5 -0
  51. data/lib/generators/angular_scaffold/install/templates/routes.js.erb +23 -0
  52. data/lib/generators/angular_scaffold/install/templates/underscore/underscore-min.js +1 -0
  53. data/lib/generators/angular_scaffold/install/templates/welcome_controller.js +11 -0
  54. data/lib/generators/angular_scaffold/scaffold/USAGE +8 -0
  55. data/lib/generators/angular_scaffold/scaffold/scaffold_generator.rb +117 -0
  56. data/lib/generators/angular_scaffold/scaffold/templates/edit.html.erb +47 -0
  57. data/lib/generators/angular_scaffold/scaffold/templates/index.html.erb +42 -0
  58. data/lib/generators/angular_scaffold/scaffold/templates/new.html.erb +45 -0
  59. data/lib/generators/angular_scaffold/scaffold/templates/plural_model_name.js +19 -0
  60. data/lib/generators/angular_scaffold/scaffold/templates/plural_model_name.js.coffee +20 -0
  61. data/lib/generators/angular_scaffold/scaffold/templates/plural_model_name_controller.js +71 -0
  62. data/lib/generators/angular_scaffold/scaffold/templates/plural_model_name_controller.js.coffee +62 -0
  63. data/lib/generators/angular_scaffold/scaffold/templates/show.html.erb +22 -0
  64. data/lib/tasks/angular_scaffold_tasks.rake +4 -0
  65. data/test/angular_scaffold_test.rb +7 -0
  66. data/test/dummy/README.rdoc +28 -0
  67. data/test/dummy/Rakefile +6 -0
  68. data/test/dummy/app/assets/javascripts/application.js +13 -0
  69. data/test/dummy/app/assets/stylesheets/application.css +15 -0
  70. data/test/dummy/app/controllers/application_controller.rb +5 -0
  71. data/test/dummy/app/helpers/application_helper.rb +2 -0
  72. data/test/dummy/app/views/layouts/application.html.erb +14 -0
  73. data/test/dummy/bin/bundle +3 -0
  74. data/test/dummy/bin/rails +4 -0
  75. data/test/dummy/bin/rake +4 -0
  76. data/test/dummy/bin/setup +29 -0
  77. data/test/dummy/config.ru +4 -0
  78. data/test/dummy/config/application.rb +26 -0
  79. data/test/dummy/config/boot.rb +5 -0
  80. data/test/dummy/config/database.yml +25 -0
  81. data/test/dummy/config/environment.rb +5 -0
  82. data/test/dummy/config/environments/development.rb +41 -0
  83. data/test/dummy/config/environments/production.rb +79 -0
  84. data/test/dummy/config/environments/test.rb +42 -0
  85. data/test/dummy/config/initializers/assets.rb +11 -0
  86. data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
  87. data/test/dummy/config/initializers/cookies_serializer.rb +3 -0
  88. data/test/dummy/config/initializers/filter_parameter_logging.rb +4 -0
  89. data/test/dummy/config/initializers/inflections.rb +16 -0
  90. data/test/dummy/config/initializers/mime_types.rb +4 -0
  91. data/test/dummy/config/initializers/session_store.rb +3 -0
  92. data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
  93. data/test/dummy/config/locales/en.yml +23 -0
  94. data/test/dummy/config/routes.rb +4 -0
  95. data/test/dummy/config/secrets.yml +22 -0
  96. data/test/dummy/public/404.html +67 -0
  97. data/test/dummy/public/422.html +67 -0
  98. data/test/dummy/public/500.html +66 -0
  99. data/test/dummy/public/favicon.ico +0 -0
  100. data/test/integration/navigation_test.rb +8 -0
  101. data/test/lib/generators/angular_scaffold/angular_scaffold/install_generator_test.rb +16 -0
  102. data/test/lib/generators/angular_scaffold/angular_scaffold/scaffold_generator_test.rb +16 -0
  103. data/test/test_helper.rb +21 -0
  104. metadata +213 -0
@@ -0,0 +1 @@
1
+ (function(){var n=this,t=n._,r={},e=Array.prototype,u=Object.prototype,i=Function.prototype,a=e.push,o=e.slice,c=e.concat,l=u.toString,f=u.hasOwnProperty,s=e.forEach,p=e.map,h=e.reduce,v=e.reduceRight,d=e.filter,g=e.every,m=e.some,y=e.indexOf,b=e.lastIndexOf,x=Array.isArray,_=Object.keys,j=i.bind,w=function(n){return n instanceof w?n:this instanceof w?(this._wrapped=n,void 0):new w(n)};"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=w),exports._=w):n._=w,w.VERSION="1.4.4";var A=w.each=w.forEach=function(n,t,e){if(null!=n)if(s&&n.forEach===s)n.forEach(t,e);else if(n.length===+n.length){for(var u=0,i=n.length;i>u;u++)if(t.call(e,n[u],u,n)===r)return}else for(var a in n)if(w.has(n,a)&&t.call(e,n[a],a,n)===r)return};w.map=w.collect=function(n,t,r){var e=[];return null==n?e:p&&n.map===p?n.map(t,r):(A(n,function(n,u,i){e[e.length]=t.call(r,n,u,i)}),e)};var O="Reduce of empty array with no initial value";w.reduce=w.foldl=w.inject=function(n,t,r,e){var u=arguments.length>2;if(null==n&&(n=[]),h&&n.reduce===h)return e&&(t=w.bind(t,e)),u?n.reduce(t,r):n.reduce(t);if(A(n,function(n,i,a){u?r=t.call(e,r,n,i,a):(r=n,u=!0)}),!u)throw new TypeError(O);return r},w.reduceRight=w.foldr=function(n,t,r,e){var u=arguments.length>2;if(null==n&&(n=[]),v&&n.reduceRight===v)return e&&(t=w.bind(t,e)),u?n.reduceRight(t,r):n.reduceRight(t);var i=n.length;if(i!==+i){var a=w.keys(n);i=a.length}if(A(n,function(o,c,l){c=a?a[--i]:--i,u?r=t.call(e,r,n[c],c,l):(r=n[c],u=!0)}),!u)throw new TypeError(O);return r},w.find=w.detect=function(n,t,r){var e;return E(n,function(n,u,i){return t.call(r,n,u,i)?(e=n,!0):void 0}),e},w.filter=w.select=function(n,t,r){var e=[];return null==n?e:d&&n.filter===d?n.filter(t,r):(A(n,function(n,u,i){t.call(r,n,u,i)&&(e[e.length]=n)}),e)},w.reject=function(n,t,r){return w.filter(n,function(n,e,u){return!t.call(r,n,e,u)},r)},w.every=w.all=function(n,t,e){t||(t=w.identity);var u=!0;return null==n?u:g&&n.every===g?n.every(t,e):(A(n,function(n,i,a){return(u=u&&t.call(e,n,i,a))?void 0:r}),!!u)};var E=w.some=w.any=function(n,t,e){t||(t=w.identity);var u=!1;return null==n?u:m&&n.some===m?n.some(t,e):(A(n,function(n,i,a){return u||(u=t.call(e,n,i,a))?r:void 0}),!!u)};w.contains=w.include=function(n,t){return null==n?!1:y&&n.indexOf===y?n.indexOf(t)!=-1:E(n,function(n){return n===t})},w.invoke=function(n,t){var r=o.call(arguments,2),e=w.isFunction(t);return w.map(n,function(n){return(e?t:n[t]).apply(n,r)})},w.pluck=function(n,t){return w.map(n,function(n){return n[t]})},w.where=function(n,t,r){return w.isEmpty(t)?r?null:[]:w[r?"find":"filter"](n,function(n){for(var r in t)if(t[r]!==n[r])return!1;return!0})},w.findWhere=function(n,t){return w.where(n,t,!0)},w.max=function(n,t,r){if(!t&&w.isArray(n)&&n[0]===+n[0]&&65535>n.length)return Math.max.apply(Math,n);if(!t&&w.isEmpty(n))return-1/0;var e={computed:-1/0,value:-1/0};return A(n,function(n,u,i){var a=t?t.call(r,n,u,i):n;a>=e.computed&&(e={value:n,computed:a})}),e.value},w.min=function(n,t,r){if(!t&&w.isArray(n)&&n[0]===+n[0]&&65535>n.length)return Math.min.apply(Math,n);if(!t&&w.isEmpty(n))return 1/0;var e={computed:1/0,value:1/0};return A(n,function(n,u,i){var a=t?t.call(r,n,u,i):n;e.computed>a&&(e={value:n,computed:a})}),e.value},w.shuffle=function(n){var t,r=0,e=[];return A(n,function(n){t=w.random(r++),e[r-1]=e[t],e[t]=n}),e};var k=function(n){return w.isFunction(n)?n:function(t){return t[n]}};w.sortBy=function(n,t,r){var e=k(t);return w.pluck(w.map(n,function(n,t,u){return{value:n,index:t,criteria:e.call(r,n,t,u)}}).sort(function(n,t){var r=n.criteria,e=t.criteria;if(r!==e){if(r>e||r===void 0)return 1;if(e>r||e===void 0)return-1}return n.index<t.index?-1:1}),"value")};var F=function(n,t,r,e){var u={},i=k(t||w.identity);return A(n,function(t,a){var o=i.call(r,t,a,n);e(u,o,t)}),u};w.groupBy=function(n,t,r){return F(n,t,r,function(n,t,r){(w.has(n,t)?n[t]:n[t]=[]).push(r)})},w.countBy=function(n,t,r){return F(n,t,r,function(n,t){w.has(n,t)||(n[t]=0),n[t]++})},w.sortedIndex=function(n,t,r,e){r=null==r?w.identity:k(r);for(var u=r.call(e,t),i=0,a=n.length;a>i;){var o=i+a>>>1;u>r.call(e,n[o])?i=o+1:a=o}return i},w.toArray=function(n){return n?w.isArray(n)?o.call(n):n.length===+n.length?w.map(n,w.identity):w.values(n):[]},w.size=function(n){return null==n?0:n.length===+n.length?n.length:w.keys(n).length},w.first=w.head=w.take=function(n,t,r){return null==n?void 0:null==t||r?n[0]:o.call(n,0,t)},w.initial=function(n,t,r){return o.call(n,0,n.length-(null==t||r?1:t))},w.last=function(n,t,r){return null==n?void 0:null==t||r?n[n.length-1]:o.call(n,Math.max(n.length-t,0))},w.rest=w.tail=w.drop=function(n,t,r){return o.call(n,null==t||r?1:t)},w.compact=function(n){return w.filter(n,w.identity)};var R=function(n,t,r){return A(n,function(n){w.isArray(n)?t?a.apply(r,n):R(n,t,r):r.push(n)}),r};w.flatten=function(n,t){return R(n,t,[])},w.without=function(n){return w.difference(n,o.call(arguments,1))},w.uniq=w.unique=function(n,t,r,e){w.isFunction(t)&&(e=r,r=t,t=!1);var u=r?w.map(n,r,e):n,i=[],a=[];return A(u,function(r,e){(t?e&&a[a.length-1]===r:w.contains(a,r))||(a.push(r),i.push(n[e]))}),i},w.union=function(){return w.uniq(c.apply(e,arguments))},w.intersection=function(n){var t=o.call(arguments,1);return w.filter(w.uniq(n),function(n){return w.every(t,function(t){return w.indexOf(t,n)>=0})})},w.difference=function(n){var t=c.apply(e,o.call(arguments,1));return w.filter(n,function(n){return!w.contains(t,n)})},w.zip=function(){for(var n=o.call(arguments),t=w.max(w.pluck(n,"length")),r=Array(t),e=0;t>e;e++)r[e]=w.pluck(n,""+e);return r},w.object=function(n,t){if(null==n)return{};for(var r={},e=0,u=n.length;u>e;e++)t?r[n[e]]=t[e]:r[n[e][0]]=n[e][1];return r},w.indexOf=function(n,t,r){if(null==n)return-1;var e=0,u=n.length;if(r){if("number"!=typeof r)return e=w.sortedIndex(n,t),n[e]===t?e:-1;e=0>r?Math.max(0,u+r):r}if(y&&n.indexOf===y)return n.indexOf(t,r);for(;u>e;e++)if(n[e]===t)return e;return-1},w.lastIndexOf=function(n,t,r){if(null==n)return-1;var e=null!=r;if(b&&n.lastIndexOf===b)return e?n.lastIndexOf(t,r):n.lastIndexOf(t);for(var u=e?r:n.length;u--;)if(n[u]===t)return u;return-1},w.range=function(n,t,r){1>=arguments.length&&(t=n||0,n=0),r=arguments[2]||1;for(var e=Math.max(Math.ceil((t-n)/r),0),u=0,i=Array(e);e>u;)i[u++]=n,n+=r;return i},w.bind=function(n,t){if(n.bind===j&&j)return j.apply(n,o.call(arguments,1));var r=o.call(arguments,2);return function(){return n.apply(t,r.concat(o.call(arguments)))}},w.partial=function(n){var t=o.call(arguments,1);return function(){return n.apply(this,t.concat(o.call(arguments)))}},w.bindAll=function(n){var t=o.call(arguments,1);return 0===t.length&&(t=w.functions(n)),A(t,function(t){n[t]=w.bind(n[t],n)}),n},w.memoize=function(n,t){var r={};return t||(t=w.identity),function(){var e=t.apply(this,arguments);return w.has(r,e)?r[e]:r[e]=n.apply(this,arguments)}},w.delay=function(n,t){var r=o.call(arguments,2);return setTimeout(function(){return n.apply(null,r)},t)},w.defer=function(n){return w.delay.apply(w,[n,1].concat(o.call(arguments,1)))},w.throttle=function(n,t){var r,e,u,i,a=0,o=function(){a=new Date,u=null,i=n.apply(r,e)};return function(){var c=new Date,l=t-(c-a);return r=this,e=arguments,0>=l?(clearTimeout(u),u=null,a=c,i=n.apply(r,e)):u||(u=setTimeout(o,l)),i}},w.debounce=function(n,t,r){var e,u;return function(){var i=this,a=arguments,o=function(){e=null,r||(u=n.apply(i,a))},c=r&&!e;return clearTimeout(e),e=setTimeout(o,t),c&&(u=n.apply(i,a)),u}},w.once=function(n){var t,r=!1;return function(){return r?t:(r=!0,t=n.apply(this,arguments),n=null,t)}},w.wrap=function(n,t){return function(){var r=[n];return a.apply(r,arguments),t.apply(this,r)}},w.compose=function(){var n=arguments;return function(){for(var t=arguments,r=n.length-1;r>=0;r--)t=[n[r].apply(this,t)];return t[0]}},w.after=function(n,t){return 0>=n?t():function(){return 1>--n?t.apply(this,arguments):void 0}},w.keys=_||function(n){if(n!==Object(n))throw new TypeError("Invalid object");var t=[];for(var r in n)w.has(n,r)&&(t[t.length]=r);return t},w.values=function(n){var t=[];for(var r in n)w.has(n,r)&&t.push(n[r]);return t},w.pairs=function(n){var t=[];for(var r in n)w.has(n,r)&&t.push([r,n[r]]);return t},w.invert=function(n){var t={};for(var r in n)w.has(n,r)&&(t[n[r]]=r);return t},w.functions=w.methods=function(n){var t=[];for(var r in n)w.isFunction(n[r])&&t.push(r);return t.sort()},w.extend=function(n){return A(o.call(arguments,1),function(t){if(t)for(var r in t)n[r]=t[r]}),n},w.pick=function(n){var t={},r=c.apply(e,o.call(arguments,1));return A(r,function(r){r in n&&(t[r]=n[r])}),t},w.omit=function(n){var t={},r=c.apply(e,o.call(arguments,1));for(var u in n)w.contains(r,u)||(t[u]=n[u]);return t},w.defaults=function(n){return A(o.call(arguments,1),function(t){if(t)for(var r in t)null==n[r]&&(n[r]=t[r])}),n},w.clone=function(n){return w.isObject(n)?w.isArray(n)?n.slice():w.extend({},n):n},w.tap=function(n,t){return t(n),n};var I=function(n,t,r,e){if(n===t)return 0!==n||1/n==1/t;if(null==n||null==t)return n===t;n instanceof w&&(n=n._wrapped),t instanceof w&&(t=t._wrapped);var u=l.call(n);if(u!=l.call(t))return!1;switch(u){case"[object String]":return n==t+"";case"[object Number]":return n!=+n?t!=+t:0==n?1/n==1/t:n==+t;case"[object Date]":case"[object Boolean]":return+n==+t;case"[object RegExp]":return n.source==t.source&&n.global==t.global&&n.multiline==t.multiline&&n.ignoreCase==t.ignoreCase}if("object"!=typeof n||"object"!=typeof t)return!1;for(var i=r.length;i--;)if(r[i]==n)return e[i]==t;r.push(n),e.push(t);var a=0,o=!0;if("[object Array]"==u){if(a=n.length,o=a==t.length)for(;a--&&(o=I(n[a],t[a],r,e)););}else{var c=n.constructor,f=t.constructor;if(c!==f&&!(w.isFunction(c)&&c instanceof c&&w.isFunction(f)&&f instanceof f))return!1;for(var s in n)if(w.has(n,s)&&(a++,!(o=w.has(t,s)&&I(n[s],t[s],r,e))))break;if(o){for(s in t)if(w.has(t,s)&&!a--)break;o=!a}}return r.pop(),e.pop(),o};w.isEqual=function(n,t){return I(n,t,[],[])},w.isEmpty=function(n){if(null==n)return!0;if(w.isArray(n)||w.isString(n))return 0===n.length;for(var t in n)if(w.has(n,t))return!1;return!0},w.isElement=function(n){return!(!n||1!==n.nodeType)},w.isArray=x||function(n){return"[object Array]"==l.call(n)},w.isObject=function(n){return n===Object(n)},A(["Arguments","Function","String","Number","Date","RegExp"],function(n){w["is"+n]=function(t){return l.call(t)=="[object "+n+"]"}}),w.isArguments(arguments)||(w.isArguments=function(n){return!(!n||!w.has(n,"callee"))}),"function"!=typeof/./&&(w.isFunction=function(n){return"function"==typeof n}),w.isFinite=function(n){return isFinite(n)&&!isNaN(parseFloat(n))},w.isNaN=function(n){return w.isNumber(n)&&n!=+n},w.isBoolean=function(n){return n===!0||n===!1||"[object Boolean]"==l.call(n)},w.isNull=function(n){return null===n},w.isUndefined=function(n){return n===void 0},w.has=function(n,t){return f.call(n,t)},w.noConflict=function(){return n._=t,this},w.identity=function(n){return n},w.times=function(n,t,r){for(var e=Array(n),u=0;n>u;u++)e[u]=t.call(r,u);return e},w.random=function(n,t){return null==t&&(t=n,n=0),n+Math.floor(Math.random()*(t-n+1))};var M={escape:{"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#x27;","/":"&#x2F;"}};M.unescape=w.invert(M.escape);var S={escape:RegExp("["+w.keys(M.escape).join("")+"]","g"),unescape:RegExp("("+w.keys(M.unescape).join("|")+")","g")};w.each(["escape","unescape"],function(n){w[n]=function(t){return null==t?"":(""+t).replace(S[n],function(t){return M[n][t]})}}),w.result=function(n,t){if(null==n)return null;var r=n[t];return w.isFunction(r)?r.call(n):r},w.mixin=function(n){A(w.functions(n),function(t){var r=w[t]=n[t];w.prototype[t]=function(){var n=[this._wrapped];return a.apply(n,arguments),D.call(this,r.apply(w,n))}})};var N=0;w.uniqueId=function(n){var t=++N+"";return n?n+t:t},w.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g};var T=/(.)^/,q={"'":"'","\\":"\\","\r":"r","\n":"n"," ":"t","\u2028":"u2028","\u2029":"u2029"},B=/\\|'|\r|\n|\t|\u2028|\u2029/g;w.template=function(n,t,r){var e;r=w.defaults({},r,w.templateSettings);var u=RegExp([(r.escape||T).source,(r.interpolate||T).source,(r.evaluate||T).source].join("|")+"|$","g"),i=0,a="__p+='";n.replace(u,function(t,r,e,u,o){return a+=n.slice(i,o).replace(B,function(n){return"\\"+q[n]}),r&&(a+="'+\n((__t=("+r+"))==null?'':_.escape(__t))+\n'"),e&&(a+="'+\n((__t=("+e+"))==null?'':__t)+\n'"),u&&(a+="';\n"+u+"\n__p+='"),i=o+t.length,t}),a+="';\n",r.variable||(a="with(obj||{}){\n"+a+"}\n"),a="var __t,__p='',__j=Array.prototype.join,"+"print=function(){__p+=__j.call(arguments,'');};\n"+a+"return __p;\n";try{e=Function(r.variable||"obj","_",a)}catch(o){throw o.source=a,o}if(t)return e(t,w);var c=function(n){return e.call(this,n,w)};return c.source="function("+(r.variable||"obj")+"){\n"+a+"}",c},w.chain=function(n){return w(n).chain()};var D=function(n){return this._chain?w(n).chain():n};w.mixin(w),A(["pop","push","reverse","shift","sort","splice","unshift"],function(n){var t=e[n];w.prototype[n]=function(){var r=this._wrapped;return t.apply(r,arguments),"shift"!=n&&"splice"!=n||0!==r.length||delete r[0],D.call(this,r)}}),A(["concat","join","slice"],function(n){var t=e[n];w.prototype[n]=function(){return D.call(this,t.apply(this._wrapped,arguments))}}),w.extend(w.prototype,{chain:function(){return this._chain=!0,this},value:function(){return this._wrapped}})}).call(this);
@@ -0,0 +1,11 @@
1
+ // Generated by CoffeeScript 1.4.0
2
+ (function() {
3
+ var root, thisApp;
4
+
5
+ root = typeof global !== "undefined" && global !== null ? global : window;
6
+
7
+ thisApp = root.thisApp;
8
+
9
+ thisApp.controller("WelcomeCtrl", function() {});
10
+
11
+ }).call(this);
@@ -0,0 +1,8 @@
1
+ Description:
2
+ Explain the generator
3
+
4
+ Example:
5
+ rails generate scaffold Thing
6
+
7
+ This will create:
8
+ what/will/it/create
@@ -0,0 +1,117 @@
1
+ require 'rails/generators'
2
+ require 'rails/generators/generated_attribute'
3
+
4
+ module AngularScaffold
5
+ class ScaffoldGenerator < Rails::Generators::Base
6
+ source_root File.expand_path('../templates', __FILE__)
7
+
8
+ argument :controller_name, type: :string
9
+
10
+ def language_option
11
+ # if File.exist?("app/assets/javascripts/routes.js.erb")
12
+ answer = 'javascript'
13
+ # else
14
+ # answer = 'coffeescript'
15
+ # end
16
+ answer
17
+ end
18
+
19
+ def init_vars
20
+ @model_name = controller_name.singularize #"Post"
21
+ @controller = controller_name #"Posts"
22
+ @resource_name = @model_name.demodulize.underscore #post
23
+ @plural_model_name = @resource_name.pluralize #posts
24
+ end
25
+
26
+ def columns
27
+ begin
28
+ excluded_column_names = %w[id _id _type created_at updated_at]
29
+ @model_name.constantize.columns.
30
+ reject{|c| excluded_column_names.include?(c.name) }.
31
+ collect{|c| ::Rails::Generators::GeneratedAttribute.
32
+ new(c.name, c.type)}
33
+ rescue NoMethodError
34
+ @model_name.constantize.fields.
35
+ collect{|c| c[1]}.
36
+ reject{|c| excluded_column_names.include?(c.name) }.
37
+ collect{|c|
38
+ ::Rails::Generators::GeneratedAttribute.
39
+ new(c.name, c.type.to_s)}
40
+ end
41
+ end
42
+
43
+ def generate
44
+ remove_file "app/assets/stylesheets/scaffolds.css.scss"
45
+ # append_to_file "app/assets/javascripts/application.js",
46
+ # "//= require #{@plural_model_name}_controller\n"
47
+ # append_to_file "app/assets/javascripts/application.js",
48
+ # "//= require #{@plural_model_name}\n"
49
+ # if language_option == 'coffeescript'
50
+ # insert_into_file "app/assets/javascripts/routes.coffee.erb",
51
+ # ", \'#{@plural_model_name}\'", :after => "'ngCookies'"
52
+ # insert_into_file "app/assets/javascripts/routes.coffee.erb",
53
+ # %{when("/#{@plural_model_name}",
54
+ # controller: #{@controller}IndexCtrl
55
+ # templateUrl: '<%= asset_path(\"#{@plural_model_name}/index.html\") %>'
56
+ # ).when("/#{@plural_model_name}/new",
57
+ # controller: #{@controller}CreateCtrl
58
+ # templateUrl: '<%= asset_path(\"#{@plural_model_name}/new.html\") %>'
59
+ # ).when("/#{@plural_model_name}/:id",
60
+ # controller: #{@controller}ShowCtrl
61
+ # templateUrl: '<%= asset_path(\"#{@plural_model_name}/show.html\") %>'
62
+ # ).when("/#{@plural_model_name}/:id/edit",
63
+ # controller: #{@controller}EditCtrl
64
+ # templateUrl: '<%= asset_path(\"#{@plural_model_name}/edit.html\") %>'
65
+ # ).}, :before => 'otherwise'
66
+ # else
67
+ insert_into_file "app/assets/javascripts/angular-app/app.js.erb",
68
+ ", '#{@plural_model_name}'", :after => "'ngCookies'"
69
+ insert_into_file "app/assets/javascripts/angular-app/app.js.erb",
70
+ %{\n when('/#{@plural_model_name}', {controller:#{@controller}IndexCtrl,
71
+ templateUrl:'<%= asset_path("#{@plural_model_name}/index.html") %>'}).
72
+ when('/#{@plural_model_name}/new', {controller:#{@controller}CreateCtrl,
73
+ templateUrl:'<%= asset_path("#{@plural_model_name}/new.html") %>'}).
74
+ when('/#{@plural_model_name}/:id', {controller:#{@controller}ShowCtrl,
75
+ templateUrl:'<%= asset_path("#{@plural_model_name}/show.html") %>'}).
76
+ when('/#{@plural_model_name}/:id/edit', {controller:#{@controller}EditCtrl,
77
+ templateUrl:'<%= asset_path("#{@plural_model_name}/edit.html") %>'}).}, :before => 'otherwise'
78
+ # end
79
+
80
+ inject_into_class "app/controllers/#{@plural_model_name}_controller.rb",
81
+ "#{@controller}Controller".constantize, "respond_to :json\n"
82
+
83
+ template "new.html.erb",
84
+ "app/assets/templates/#{@plural_model_name}/new.html.erb"
85
+ template "edit.html.erb",
86
+ "app/assets/templates/#{@plural_model_name}/edit.html.erb"
87
+ template "show.html.erb",
88
+ "app/assets/templates/#{@plural_model_name}/show.html.erb"
89
+ template "index.html.erb",
90
+ "app/assets/templates/#{@plural_model_name}/index.html.erb"
91
+
92
+ model_index_link = "\n<li><%= link_to \'#{@controller_name}\', #{@plural_model_name}_path %></li>"
93
+
94
+ # insert_into_file "app/views/layouts/application.html.erb", model_index_link,
95
+ # after: "<!-- sidebar menu models -->"
96
+
97
+ insert_into_file "app/views/layouts/application.html.erb", model_index_link,
98
+ after: "<!-- main menu models -->"
99
+
100
+ # if language_option == 'coffeescript'
101
+ # remove_file "app/assets/javascripts/#{@plural_model_name}.js"
102
+ # remove_file "app/assets/javascripts/#{@plural_model_name}_controller.js"
103
+ # template "plural_model_name.js.coffee", "app/assets/javascripts/#{@plural_model_name}.js.coffee"
104
+ # template "plural_model_name_controller.js.coffee",
105
+ # "app/assets/javascripts/#{@plural_model_name}_controller.js.coffee"
106
+ # else
107
+ # remove_file "app/assets/javascripts/#{@plural_model_name}.js.coffee"
108
+ # remove_file "app/assets/javascripts/#{@plural_model_name}_controller.js.coffee"
109
+ template "plural_model_name.js", "app/assets/javascripts/angular-app/service/#{@plural_model_name}.js"
110
+ template "plural_model_name_controller.js",
111
+ "app/assets/javascripts/angular-app/controller/#{@plural_model_name}_controller.js"
112
+ # remove the default .js.coffee file added by rails.
113
+ # remove_file "app/assets/javascripts/#{@plural_model_name}.js.coffee"
114
+ # end
115
+ end
116
+ end
117
+ end
@@ -0,0 +1,47 @@
1
+ <form name="edit<%= @model_name%>">
2
+ <fieldset>
3
+ <legend>
4
+ Edit <%= @model_name.titleize %>
5
+ </legend>
6
+ <%- columns.each do |column| -%>
7
+ <div class="control-group">
8
+ <label class="control-label">
9
+ <%= column.name.titleize %>
10
+ </label>
11
+ <div class="controls">
12
+ <%- if ['description', 'body'].include? column.name -%>
13
+ <textarea name="<%= @resource_name%>[<%= column.name %>]"
14
+ ng-model="<%= @resource_name%>.<%= column.name %>"
15
+ class="<%= column.field_type %>"
16
+ required></textarea>
17
+ <%- else -%>
18
+ <input type="<%= column.field_type.to_s.split('_').first %>"
19
+ name="<%= @resource_name%>[<%= column.name %>]"
20
+ ng-model="<%= @resource_name%>.<%= column.name %>"
21
+ class="<%= column.field_type %>"
22
+ required>
23
+ <%- end -%>
24
+ <span ng-show="edit<%= @model_name%>.<%= column.name %>.$error.required"
25
+ class="help-inline">
26
+ Required
27
+ </span>
28
+ </div>
29
+ </div>
30
+ <%- end -%>
31
+ <div class="form-actions">
32
+ <button class="btn btn-success" ng-click="save()"
33
+ ng-disabled="isClean() || edit<%= @model_name%>.$invalid">
34
+ Save
35
+ </button>
36
+ <button ng-click="destroy()"
37
+ ng-show="<%= @resource_name%>.id"
38
+ class="btn btn-danger">
39
+ <i class="icon-trash"></i>Delete
40
+ </button>
41
+ <a href="/<%= @plural_model_name%>" class="btn">
42
+ Back to <%= @plural_model_name%>
43
+ </a>
44
+ </div>
45
+ </fieldset>
46
+ </form>
47
+
@@ -0,0 +1,42 @@
1
+ <h1><%= @controller %></h1>
2
+ <table class="table table-striped">
3
+ <thead>
4
+ <tr>
5
+ <%- columns.each do |column| -%>
6
+ <th><%= column.name.humanize %></th>
7
+ <%- end -%>
8
+ <th>Actions</th>
9
+ </tr>
10
+ </thead>
11
+ <%- @columns = columns -%>
12
+ <%- tag_column = @columns.shift -%>
13
+ <tbody>
14
+ <tr ng-repeat="<%= @resource_name%> in <%= @plural_model_name%>">
15
+ <td>
16
+ <a href="/<%= @plural_model_name%>/{{<%= @resource_name%>.id}}">
17
+ {{<%= "#{@resource_name}.#{tag_column.name}"%>}}
18
+ </a>
19
+ </td>
20
+ <%- @columns.each do |column| -%>
21
+ <td>
22
+ {{<%= @resource_name%>.<%= column.name %>}}
23
+ </td>
24
+ <%- end -%>
25
+ <td>
26
+ <a href="/<%= @plural_model_name%>/{{<%= @resource_name%>.id}}/edit"
27
+ class="btn btn-primary"><i class="icon-edit"></i>
28
+ Edit
29
+ </a>
30
+ <button ng-click="destroy()" class="btn btn-danger">
31
+ <i class="icon-trash"></i> Delete
32
+ </button>
33
+ </td>
34
+ </tr>
35
+ </tbody>
36
+ </table>
37
+
38
+ <p>
39
+ <a href='/<%= @plural_model_name%>/new' class="btn btn-primary">
40
+ <i class="icon-plus"></i>New
41
+ </a>
42
+ </p>
@@ -0,0 +1,45 @@
1
+ <form name="new<%= @model_name%>">
2
+ <fieldset>
3
+ <legend>
4
+ New <%= @model_name.titleize %>
5
+ </legend>
6
+ <%- columns.each do |column| -%>
7
+ <div class="control-group">
8
+ <label class="control-label">
9
+ <%= column.name.titleize %>
10
+ </label>
11
+ <div class="controls">
12
+ <%- if ['description', 'body'].include? column.name -%>
13
+ <textarea name="<%= @resource_name%>[<%= column.name %>]"
14
+ ng-model="<%= @resource_name%>.<%= column.name %>"
15
+ class="<%= column.field_type %>"
16
+ required></textarea>
17
+ <%- else -%>
18
+ <input type="<%= column.field_type.to_s.split('_').first %>"
19
+ name="<%= @resource_name%>[<%= column.name %>]"
20
+ ng-model="<%= @resource_name%>.<%= column.name %>"
21
+ class="<%= column.field_type %>"
22
+ required>
23
+ <%- end -%>
24
+ <span ng-show="new<%= @model_name%>.<%= column.name %>.$error.required"
25
+ class="help-inline">
26
+ Required
27
+ </span>
28
+ </div>
29
+ </div>
30
+ <%- end -%>
31
+ <div class="form-actions">
32
+ <button class="btn btn-success" ng-click="save()"
33
+ ng-disabled="isClean() || new<%= @model_name%>.$invalid">
34
+ <i class="icon-save"></i> Save
35
+ </button>
36
+ <button ng-click="destroy()"
37
+ ng-show="<%= @resource_name%>.id"
38
+ class="btn btn-danger">
39
+ <i class="icon-trash"></i> Delete
40
+ </button>
41
+ <a href="/<%= @plural_model_name%>" class="btn">Back to <%= @plural_model_name%></a>
42
+ </div>
43
+ </fieldset>
44
+ </form>
45
+
@@ -0,0 +1,19 @@
1
+ angular.module("<%= @plural_model_name %>", ["ngResource"]).
2
+ factory("<%= @model_name %>", ['$resource', function($resource) {
3
+ var <%= @model_name %>;
4
+ <%= @model_name %> = $resource("/<%= @plural_model_name %>/:id.json",
5
+ { id: "@id" },
6
+ {
7
+ update: { method: "PUT" },
8
+ destroy: { method: "DELETE" }
9
+ });
10
+
11
+ <%= @model_name %>.prototype.destroy = function(cb) {
12
+ return <%= @model_name %>.remove({
13
+ id: this.id
14
+ }, cb);
15
+ };
16
+
17
+ return <%= @model_name %>;
18
+ }
19
+ ]);
@@ -0,0 +1,20 @@
1
+ root = global ? window
2
+
3
+ angular.module("<%= @plural_model_name %>", ["ngResource"]).factory "<%= @model_name %>", ['$resource', ($resource) ->
4
+ <%= "#{@model_name}" %> = $resource("/<%= @plural_model_name %>/:id",
5
+ id: "@id"
6
+ ,
7
+ update:
8
+ method: "PUT"
9
+
10
+ destroy:
11
+ method: "DELETE"
12
+ )
13
+ <%= "#{@model_name}" %>::destroy = (cb) ->
14
+ <%= "#{@model_name}" %>.remove
15
+ id: @id
16
+ , cb
17
+
18
+ <%= "#{@model_name}" %>
19
+ ]
20
+ root.angular = angular
@@ -0,0 +1,71 @@
1
+ <%= @controller %>IndexCtrl = function($scope, <%= @model_name %>) {
2
+ $scope.<%= @plural_model_name %> = <%= @model_name %>.query();
3
+
4
+ return $scope.destroy = function() {
5
+ var original;
6
+ if (confirm("Are you sure?")) {
7
+ original = this.<%= @resource_name %>;
8
+ return this.<%= @resource_name %>.destroy(function() {
9
+ return $scope.<%= @plural_model_name %> = _.without($scope.<%= @plural_model_name %>, original);
10
+ });
11
+ }
12
+ };
13
+ };
14
+
15
+ <%= @controller %>IndexCtrl.$inject = ['$scope', '<%= @model_name %>'];
16
+
17
+ <%= @controller %>CreateCtrl = function($scope, $location, <%= @model_name %>) {
18
+ return $scope.save = function() {
19
+ return <%= @model_name %>.save($scope.<%= @resource_name %>, function(<%= @resource_name %>) {
20
+ return $location.path("/<%= @plural_model_name %>/" + <%= @resource_name %>.id + "/edit");
21
+ });
22
+ };
23
+ };
24
+
25
+ <%= @controller %>CreateCtrl.$inject = ['$scope', '$location', '<%= @model_name %>'];
26
+
27
+ <%= @controller %>ShowCtrl = function($scope, $location, $routeParams, <%= @model_name %>) {
28
+ <%= @model_name %>.get({
29
+ id: $routeParams.id
30
+ }, function(<%= @resource_name %>) {
31
+ this.original = <%= @resource_name %>;
32
+ return $scope.<%= @resource_name %> = new <%= @model_name %>(this.original);
33
+ });
34
+ return $scope.destroy = function() {
35
+ if (confirm("Are you sure?")) {
36
+ return $scope.<%= @resource_name %>.destroy(function() {
37
+ return $location.path("/<%= @plural_model_name %>");
38
+ });
39
+ }
40
+ };
41
+ };
42
+
43
+ <%= @controller %>ShowCtrl.$inject = ['$scope', '$location', '$routeParams', '<%= @model_name %>'];
44
+
45
+ <%= @controller %>EditCtrl = function($scope, $location, $routeParams, <%= @model_name %>) {
46
+ <%= @model_name %>.get({
47
+ id: $routeParams.id
48
+ }, function(<%= @resource_name %>) {
49
+ this.original = <%= @resource_name %>;
50
+ return $scope.<%= @resource_name %> = new <%= @model_name %>(this.original);
51
+ });
52
+ $scope.isClean = function() {
53
+ return angular.equals(this.original, $scope.<%= @resource_name %>);
54
+ };
55
+ $scope.destroy = function() {
56
+ if (confirm("Are you sure?")) {
57
+ return $scope.<%= @resource_name %>.destroy(function() {
58
+ return $location.path("/<%= @plural_model_name %>");
59
+ });
60
+ }
61
+ };
62
+ return $scope.save = function() {
63
+ return <%= @model_name %>.update($scope.<%= @resource_name %>, function(<%= @resource_name %>) {
64
+ return $location.path("/<%= @plural_model_name %>");
65
+ });
66
+ };
67
+ };
68
+
69
+ <%= @controller %>EditCtrl.$inject = ['$scope', '$location', '$routeParams', '<%= @model_name %>'];
70
+
71
+
@@ -0,0 +1,62 @@
1
+
2
+ root = global ? window
3
+
4
+ <%= @controller %>IndexCtrl = ($scope, <%= @model_name %>) ->
5
+ $scope.<%= @plural_model_name %> = <%= @model_name %>.query()
6
+
7
+ $scope.destroy = ->
8
+ if confirm("Are you sure?")
9
+ original = @<%= @resource_name %>
10
+ @<%= @resource_name %>.destroy ->
11
+ $scope.<%= @plural_model_name %> = _.without($scope.<%= @plural_model_name %>, original)
12
+
13
+ <%= @controller %>IndexCtrl.$inject = ['$scope', '<%= @model_name %>'];
14
+
15
+ <%= @controller %>CreateCtrl = ($scope, $location, <%= @model_name %>) ->
16
+ $scope.save = ->
17
+ <%= @model_name %>.save $scope.<%= @resource_name %>, (<%= @resource_name %>) ->
18
+ $location.path "/<%= @plural_model_name %>/#{<%= @resource_name %>.id}/edit"
19
+
20
+ <%= @controller %>CreateCtrl.$inject = ['$scope', '$location', '<%= @model_name %>'];
21
+
22
+ <%= @controller %>ShowCtrl = ($scope, $location, $routeParams, <%= @model_name %>) ->
23
+ <%= @model_name %>.get
24
+ id: $routeParams.id
25
+ , (<%= @resource_name %>) ->
26
+ @original = <%= @resource_name %>
27
+ $scope.<%= @resource_name %> = new <%= @model_name %>(@original)
28
+
29
+ $scope.destroy = ->
30
+ if confirm("Are you sure?")
31
+ $scope.<%= @resource_name %>.destroy ->
32
+ $location.path "/<%= @plural_model_name %>"
33
+
34
+ <%= @controller %>ShowCtrl.$inject = ['$scope', '$location', '$routeParams', '<%= @model_name %>'];
35
+
36
+ <%= @controller %>EditCtrl = ($scope, $location, $routeParams, <%= @model_name %>) ->
37
+ <%= @model_name %>.get
38
+ id: $routeParams.id
39
+ , (<%= @resource_name %>) ->
40
+ @original = <%= @resource_name %>
41
+ $scope.<%= @resource_name %> = new <%= @model_name %>(@original)
42
+
43
+ $scope.isClean = ->
44
+ console.log "[<%= @controller %>EditCtrl, $scope.isClean]"
45
+ angular.equals @original, $scope.<%= @resource_name %>
46
+
47
+ $scope.destroy = ->
48
+ if confirm("Are you sure?")
49
+ $scope.<%= @resource_name %>.destroy ->
50
+ $location.path "/<%= @plural_model_name %>"
51
+
52
+ $scope.save = ->
53
+ <%= @model_name %>.update $scope.<%= @resource_name %>, (<%= @resource_name %>) ->
54
+ $location.path "/<%= @plural_model_name %>"
55
+
56
+ <%= @controller %>EditCtrl.$inject = ['$scope', '$location', '$routeParams', '<%= @model_name %>'];
57
+
58
+ # exports
59
+ root.<%= @controller %>IndexCtrl = <%= @controller %>IndexCtrl
60
+ root.<%= @controller %>CreateCtrl = <%= @controller %>CreateCtrl
61
+ root.<%= @controller %>ShowCtrl = <%= @controller %>ShowCtrl
62
+ root.<%= @controller %>EditCtrl = <%= @controller %>EditCtrl