praxis 0.0.1 → 0.9

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 (484) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +11 -0
  3. data/.rspec +3 -0
  4. data/.ruby-version +1 -0
  5. data/.simplecov +7 -0
  6. data/.travis.yml +4 -0
  7. data/CONTRIBUTING.md +183 -0
  8. data/Gemfile +3 -0
  9. data/Guardfile +8 -0
  10. data/LICENSE +22 -0
  11. data/MAINTAINERS +2 -0
  12. data/MAINTAINERS.md +86 -0
  13. data/README.md +69 -3
  14. data/Rakefile +18 -0
  15. data/bin/praxis +10 -0
  16. data/lib/api_browser/.bowerrc +3 -0
  17. data/lib/api_browser/.editorconfig +21 -0
  18. data/lib/api_browser/Gruntfile.js +264 -0
  19. data/lib/api_browser/app/bower_components/angular/.bower.json +16 -0
  20. data/lib/api_browser/app/bower_components/angular/README.md +48 -0
  21. data/lib/api_browser/app/bower_components/angular/angular-csp.css +18 -0
  22. data/lib/api_browser/app/bower_components/angular/angular.js +21464 -0
  23. data/lib/api_browser/app/bower_components/angular/angular.min.js +210 -0
  24. data/lib/api_browser/app/bower_components/angular/angular.min.js.gzip +0 -0
  25. data/lib/api_browser/app/bower_components/angular/angular.min.js.map +8 -0
  26. data/lib/api_browser/app/bower_components/angular/bower.json +7 -0
  27. data/lib/api_browser/app/bower_components/angular-sanitize/.bower.json +19 -0
  28. data/lib/api_browser/app/bower_components/angular-sanitize/README.md +54 -0
  29. data/lib/api_browser/app/bower_components/angular-sanitize/angular-sanitize.js +624 -0
  30. data/lib/api_browser/app/bower_components/angular-sanitize/angular-sanitize.min.js +14 -0
  31. data/lib/api_browser/app/bower_components/angular-sanitize/angular-sanitize.min.js.map +8 -0
  32. data/lib/api_browser/app/bower_components/angular-sanitize/bower.json +8 -0
  33. data/lib/api_browser/app/bower_components/angular-ui-bootstrap-bower/.bower.json +24 -0
  34. data/lib/api_browser/app/bower_components/angular-ui-bootstrap-bower/bower.json +11 -0
  35. data/lib/api_browser/app/bower_components/angular-ui-bootstrap-bower/ui-bootstrap-tpls.js +4116 -0
  36. data/lib/api_browser/app/bower_components/angular-ui-bootstrap-bower/ui-bootstrap-tpls.min.js +10 -0
  37. data/lib/api_browser/app/bower_components/angular-ui-bootstrap-bower/ui-bootstrap.js +3799 -0
  38. data/lib/api_browser/app/bower_components/angular-ui-bootstrap-bower/ui-bootstrap.min.js +9 -0
  39. data/lib/api_browser/app/bower_components/angular-ui-router/.bower.json +34 -0
  40. data/lib/api_browser/app/bower_components/angular-ui-router/CHANGELOG.md +23 -0
  41. data/lib/api_browser/app/bower_components/angular-ui-router/LICENSE +21 -0
  42. data/lib/api_browser/app/bower_components/angular-ui-router/README.md +280 -0
  43. data/lib/api_browser/app/bower_components/angular-ui-router/bower.json +23 -0
  44. data/lib/api_browser/app/bower_components/angular-ui-router/release/angular-ui-router.js +3223 -0
  45. data/lib/api_browser/app/bower_components/angular-ui-router/release/angular-ui-router.min.js +7 -0
  46. data/lib/api_browser/app/bower_components/angular-ui-router/src/common.js +246 -0
  47. data/lib/api_browser/app/bower_components/angular-ui-router/src/compat.js +146 -0
  48. data/lib/api_browser/app/bower_components/angular-ui-router/src/resolve.js +242 -0
  49. data/lib/api_browser/app/bower_components/angular-ui-router/src/state.js +1204 -0
  50. data/lib/api_browser/app/bower_components/angular-ui-router/src/stateDirectives.js +226 -0
  51. data/lib/api_browser/app/bower_components/angular-ui-router/src/stateFilters.js +35 -0
  52. data/lib/api_browser/app/bower_components/angular-ui-router/src/templateFactory.js +110 -0
  53. data/lib/api_browser/app/bower_components/angular-ui-router/src/urlMatcherFactory.js +325 -0
  54. data/lib/api_browser/app/bower_components/angular-ui-router/src/urlRouter.js +273 -0
  55. data/lib/api_browser/app/bower_components/angular-ui-router/src/view.js +71 -0
  56. data/lib/api_browser/app/bower_components/angular-ui-router/src/viewDirective.js +290 -0
  57. data/lib/api_browser/app/bower_components/angular-ui-router/src/viewScroll.js +52 -0
  58. data/lib/api_browser/app/bower_components/bootstrap-sass/.bower.json +26 -0
  59. data/lib/api_browser/app/bower_components/bootstrap-sass/CNAME +1 -0
  60. data/lib/api_browser/app/bower_components/bootstrap-sass/CONTRIBUTING.md +61 -0
  61. data/lib/api_browser/app/bower_components/bootstrap-sass/DOCS-LICENSE +319 -0
  62. data/lib/api_browser/app/bower_components/bootstrap-sass/Gemfile +5 -0
  63. data/lib/api_browser/app/bower_components/bootstrap-sass/Gemfile.lock +14 -0
  64. data/lib/api_browser/app/bower_components/bootstrap-sass/Gruntfile.js +244 -0
  65. data/lib/api_browser/app/bower_components/bootstrap-sass/LICENSE +176 -0
  66. data/lib/api_browser/app/bower_components/bootstrap-sass/LICENSE-MIT +21 -0
  67. data/lib/api_browser/app/bower_components/bootstrap-sass/README.md +277 -0
  68. data/lib/api_browser/app/bower_components/bootstrap-sass/Rakefile +44 -0
  69. data/lib/api_browser/app/bower_components/bootstrap-sass/_config.yml +25 -0
  70. data/lib/api_browser/app/bower_components/bootstrap-sass/_includes/ads.html +1 -0
  71. data/lib/api_browser/app/bower_components/bootstrap-sass/_includes/footer.html +34 -0
  72. data/lib/api_browser/app/bower_components/bootstrap-sass/_includes/header.html +42 -0
  73. data/lib/api_browser/app/bower_components/bootstrap-sass/_includes/nav-about.html +12 -0
  74. data/lib/api_browser/app/bower_components/bootstrap-sass/_includes/nav-components.html +137 -0
  75. data/lib/api_browser/app/bower_components/bootstrap-sass/_includes/nav-css.html +99 -0
  76. data/lib/api_browser/app/bower_components/bootstrap-sass/_includes/nav-customize.html +40 -0
  77. data/lib/api_browser/app/bower_components/bootstrap-sass/_includes/nav-getting-started.html +44 -0
  78. data/lib/api_browser/app/bower_components/bootstrap-sass/_includes/nav-javascript.html +88 -0
  79. data/lib/api_browser/app/bower_components/bootstrap-sass/_includes/nav-main.html +37 -0
  80. data/lib/api_browser/app/bower_components/bootstrap-sass/_includes/old-bs-docs.html +8 -0
  81. data/lib/api_browser/app/bower_components/bootstrap-sass/_includes/social-buttons.html +16 -0
  82. data/lib/api_browser/app/bower_components/bootstrap-sass/_layouts/default.html +79 -0
  83. data/lib/api_browser/app/bower_components/bootstrap-sass/_layouts/home.html +47 -0
  84. data/lib/api_browser/app/bower_components/bootstrap-sass/about.html +93 -0
  85. data/lib/api_browser/app/bower_components/bootstrap-sass/bower.json +11 -0
  86. data/lib/api_browser/app/bower_components/bootstrap-sass/browserstack.json +37 -0
  87. data/lib/api_browser/app/bower_components/bootstrap-sass/components.html +3689 -0
  88. data/lib/api_browser/app/bower_components/bootstrap-sass/composer.json +28 -0
  89. data/lib/api_browser/app/bower_components/bootstrap-sass/css.html +2674 -0
  90. data/lib/api_browser/app/bower_components/bootstrap-sass/customize.html +1715 -0
  91. data/lib/api_browser/app/bower_components/bootstrap-sass/dist/css/bootstrap-theme.css +427 -0
  92. data/lib/api_browser/app/bower_components/bootstrap-sass/dist/css/bootstrap-theme.min.css +1 -0
  93. data/lib/api_browser/app/bower_components/bootstrap-sass/dist/css/bootstrap.css +6350 -0
  94. data/lib/api_browser/app/bower_components/bootstrap-sass/dist/css/bootstrap.min.css +1 -0
  95. data/lib/api_browser/app/bower_components/bootstrap-sass/dist/fonts/glyphicons-halflings-regular.eot +0 -0
  96. data/lib/api_browser/app/bower_components/bootstrap-sass/dist/fonts/glyphicons-halflings-regular.svg +229 -0
  97. data/lib/api_browser/app/bower_components/bootstrap-sass/dist/fonts/glyphicons-halflings-regular.ttf +0 -0
  98. data/lib/api_browser/app/bower_components/bootstrap-sass/dist/fonts/glyphicons-halflings-regular.woff +0 -0
  99. data/lib/api_browser/app/bower_components/bootstrap-sass/dist/js/bootstrap.js +2002 -0
  100. data/lib/api_browser/app/bower_components/bootstrap-sass/dist/js/bootstrap.min.js +9 -0
  101. data/lib/api_browser/app/bower_components/bootstrap-sass/docs-assets/css/docs.css +1195 -0
  102. data/lib/api_browser/app/bower_components/bootstrap-sass/docs-assets/css/pygments-manni.css +66 -0
  103. data/lib/api_browser/app/bower_components/bootstrap-sass/docs-assets/ico/apple-touch-icon-144-precomposed.png +0 -0
  104. data/lib/api_browser/app/bower_components/bootstrap-sass/docs-assets/ico/favicon.png +0 -0
  105. data/lib/api_browser/app/bower_components/bootstrap-sass/docs-assets/js/application.js +103 -0
  106. data/lib/api_browser/app/bower_components/bootstrap-sass/docs-assets/js/customizer.js +332 -0
  107. data/lib/api_browser/app/bower_components/bootstrap-sass/docs-assets/js/filesaver.js +169 -0
  108. data/lib/api_browser/app/bower_components/bootstrap-sass/docs-assets/js/holder.js +404 -0
  109. data/lib/api_browser/app/bower_components/bootstrap-sass/docs-assets/js/ie8-responsive-file-warning.js +12 -0
  110. data/lib/api_browser/app/bower_components/bootstrap-sass/docs-assets/js/jszip.js +1467 -0
  111. data/lib/api_browser/app/bower_components/bootstrap-sass/docs-assets/js/less.js +9 -0
  112. data/lib/api_browser/app/bower_components/bootstrap-sass/docs-assets/js/raw-files.js +3 -0
  113. data/lib/api_browser/app/bower_components/bootstrap-sass/docs-assets/js/uglify.js +14 -0
  114. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/carousel/carousel.css +148 -0
  115. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/carousel/index.html +206 -0
  116. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/grid/grid.css +28 -0
  117. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/grid/index.html +148 -0
  118. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/jumbotron/index.html +99 -0
  119. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/jumbotron/jumbotron.css +5 -0
  120. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/jumbotron-narrow/index.html +82 -0
  121. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/jumbotron-narrow/jumbotron-narrow.css +79 -0
  122. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/justified-nav/index.html +83 -0
  123. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/justified-nav/justified-nav.css +88 -0
  124. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/navbar/index.html +88 -0
  125. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/navbar/navbar.css +8 -0
  126. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/navbar-fixed-top/index.html +91 -0
  127. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/navbar-fixed-top/navbar-fixed-top.css +4 -0
  128. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/navbar-static-top/index.html +92 -0
  129. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/navbar-static-top/navbar-static-top.css +7 -0
  130. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/non-responsive/index.html +101 -0
  131. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/non-responsive/non-responsive.css +116 -0
  132. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/offcanvas/index.html +130 -0
  133. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/offcanvas/offcanvas.css +50 -0
  134. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/offcanvas/offcanvas.js +5 -0
  135. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/screenshots/carousel.jpg +0 -0
  136. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/screenshots/grid.jpg +0 -0
  137. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/screenshots/jumbotron-narrow.jpg +0 -0
  138. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/screenshots/jumbotron.jpg +0 -0
  139. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/screenshots/justified-nav.jpg +0 -0
  140. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/screenshots/navbar-fixed.jpg +0 -0
  141. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/screenshots/navbar-static.jpg +0 -0
  142. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/screenshots/navbar.jpg +0 -0
  143. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/screenshots/non-responsive.jpg +0 -0
  144. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/screenshots/offcanvas.jpg +0 -0
  145. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/screenshots/sign-in.jpg +0 -0
  146. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/screenshots/starter-template.jpg +0 -0
  147. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/screenshots/sticky-footer-navbar.jpg +0 -0
  148. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/screenshots/sticky-footer.jpg +0 -0
  149. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/screenshots/theme.jpg +0 -0
  150. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/signin/index.html +50 -0
  151. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/signin/signin.css +40 -0
  152. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/starter-template/index.html +68 -0
  153. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/starter-template/starter-template.css +7 -0
  154. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/sticky-footer/index.html +55 -0
  155. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/sticky-footer/sticky-footer.css +38 -0
  156. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/sticky-footer-navbar/index.html +91 -0
  157. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/sticky-footer-navbar/sticky-footer-navbar.css +45 -0
  158. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/theme/index.html +384 -0
  159. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/theme/theme.css +14 -0
  160. data/lib/api_browser/app/bower_components/bootstrap-sass/fonts/glyphicons-halflings-regular.eot +0 -0
  161. data/lib/api_browser/app/bower_components/bootstrap-sass/fonts/glyphicons-halflings-regular.svg +229 -0
  162. data/lib/api_browser/app/bower_components/bootstrap-sass/fonts/glyphicons-halflings-regular.ttf +0 -0
  163. data/lib/api_browser/app/bower_components/bootstrap-sass/fonts/glyphicons-halflings-regular.woff +0 -0
  164. data/lib/api_browser/app/bower_components/bootstrap-sass/getting-started.html +1021 -0
  165. data/lib/api_browser/app/bower_components/bootstrap-sass/index.html +16 -0
  166. data/lib/api_browser/app/bower_components/bootstrap-sass/javascript.html +1983 -0
  167. data/lib/api_browser/app/bower_components/bootstrap-sass/js/affix.js +126 -0
  168. data/lib/api_browser/app/bower_components/bootstrap-sass/js/alert.js +98 -0
  169. data/lib/api_browser/app/bower_components/bootstrap-sass/js/button.js +109 -0
  170. data/lib/api_browser/app/bower_components/bootstrap-sass/js/carousel.js +217 -0
  171. data/lib/api_browser/app/bower_components/bootstrap-sass/js/collapse.js +179 -0
  172. data/lib/api_browser/app/bower_components/bootstrap-sass/js/dropdown.js +154 -0
  173. data/lib/api_browser/app/bower_components/bootstrap-sass/js/modal.js +246 -0
  174. data/lib/api_browser/app/bower_components/bootstrap-sass/js/popover.js +117 -0
  175. data/lib/api_browser/app/bower_components/bootstrap-sass/js/scrollspy.js +158 -0
  176. data/lib/api_browser/app/bower_components/bootstrap-sass/js/tab.js +135 -0
  177. data/lib/api_browser/app/bower_components/bootstrap-sass/js/tests/index.html +52 -0
  178. data/lib/api_browser/app/bower_components/bootstrap-sass/js/tests/unit/affix.js +25 -0
  179. data/lib/api_browser/app/bower_components/bootstrap-sass/js/tests/unit/alert.js +62 -0
  180. data/lib/api_browser/app/bower_components/bootstrap-sass/js/tests/unit/button.js +116 -0
  181. data/lib/api_browser/app/bower_components/bootstrap-sass/js/tests/unit/carousel.js +87 -0
  182. data/lib/api_browser/app/bower_components/bootstrap-sass/js/tests/unit/collapse.js +164 -0
  183. data/lib/api_browser/app/bower_components/bootstrap-sass/js/tests/unit/dropdown.js +219 -0
  184. data/lib/api_browser/app/bower_components/bootstrap-sass/js/tests/unit/modal.js +196 -0
  185. data/lib/api_browser/app/bower_components/bootstrap-sass/js/tests/unit/phantom.js +69 -0
  186. data/lib/api_browser/app/bower_components/bootstrap-sass/js/tests/unit/popover.js +133 -0
  187. data/lib/api_browser/app/bower_components/bootstrap-sass/js/tests/unit/scrollspy.js +37 -0
  188. data/lib/api_browser/app/bower_components/bootstrap-sass/js/tests/unit/tab.js +86 -0
  189. data/lib/api_browser/app/bower_components/bootstrap-sass/js/tests/unit/tooltip.js +437 -0
  190. data/lib/api_browser/app/bower_components/bootstrap-sass/js/tests/unit/transition.js +13 -0
  191. data/lib/api_browser/app/bower_components/bootstrap-sass/js/tests/vendor/jquery.js +6 -0
  192. data/lib/api_browser/app/bower_components/bootstrap-sass/js/tests/vendor/qunit.css +232 -0
  193. data/lib/api_browser/app/bower_components/bootstrap-sass/js/tests/vendor/qunit.js +1510 -0
  194. data/lib/api_browser/app/bower_components/bootstrap-sass/js/tooltip.js +386 -0
  195. data/lib/api_browser/app/bower_components/bootstrap-sass/js/transition.js +56 -0
  196. data/lib/api_browser/app/bower_components/bootstrap-sass/lib/_alerts.scss +67 -0
  197. data/lib/api_browser/app/bower_components/bootstrap-sass/lib/_badges.scss +51 -0
  198. data/lib/api_browser/app/bower_components/bootstrap-sass/lib/_breadcrumbs.scss +23 -0
  199. data/lib/api_browser/app/bower_components/bootstrap-sass/lib/_button-groups.scss +253 -0
  200. data/lib/api_browser/app/bower_components/bootstrap-sass/lib/_buttons.scss +158 -0
  201. data/lib/api_browser/app/bower_components/bootstrap-sass/lib/_carousel.scss +231 -0
  202. data/lib/api_browser/app/bower_components/bootstrap-sass/lib/_close.scss +35 -0
  203. data/lib/api_browser/app/bower_components/bootstrap-sass/lib/_code.scss +53 -0
  204. data/lib/api_browser/app/bower_components/bootstrap-sass/lib/_component-animations.scss +29 -0
  205. data/lib/api_browser/app/bower_components/bootstrap-sass/lib/_dropdowns.scss +193 -0
  206. data/lib/api_browser/app/bower_components/bootstrap-sass/lib/_forms.scss +363 -0
  207. data/lib/api_browser/app/bower_components/bootstrap-sass/lib/_glyphicons.scss +237 -0
  208. data/lib/api_browser/app/bower_components/bootstrap-sass/lib/_grid.scss +93 -0
  209. data/lib/api_browser/app/bower_components/bootstrap-sass/lib/_input-groups.scss +136 -0
  210. data/lib/api_browser/app/bower_components/bootstrap-sass/lib/_jumbotron.scss +40 -0
  211. data/lib/api_browser/app/bower_components/bootstrap-sass/lib/_labels.scss +58 -0
  212. data/lib/api_browser/app/bower_components/bootstrap-sass/lib/_list-group.scss +88 -0
  213. data/lib/api_browser/app/bower_components/bootstrap-sass/lib/_media.scss +56 -0
  214. data/lib/api_browser/app/bower_components/bootstrap-sass/lib/_mixins.scss +861 -0
  215. data/lib/api_browser/app/bower_components/bootstrap-sass/lib/_modals.scss +132 -0
  216. data/lib/api_browser/app/bower_components/bootstrap-sass/lib/_navbar.scss +628 -0
  217. data/lib/api_browser/app/bower_components/bootstrap-sass/lib/_navs.scss +262 -0
  218. data/lib/api_browser/app/bower_components/bootstrap-sass/lib/_normalize.scss +406 -0
  219. data/lib/api_browser/app/bower_components/bootstrap-sass/lib/_pager.scss +55 -0
  220. data/lib/api_browser/app/bower_components/bootstrap-sass/lib/_pagination.scss +85 -0
  221. data/lib/api_browser/app/bower_components/bootstrap-sass/lib/_panels.scss +172 -0
  222. data/lib/api_browser/app/bower_components/bootstrap-sass/lib/_popovers.scss +133 -0
  223. data/lib/api_browser/app/bower_components/bootstrap-sass/lib/_print.scss +105 -0
  224. data/lib/api_browser/app/bower_components/bootstrap-sass/lib/_progress-bars.scss +92 -0
  225. data/lib/api_browser/app/bower_components/bootstrap-sass/lib/_responsive-utilities.scss +198 -0
  226. data/lib/api_browser/app/bower_components/bootstrap-sass/lib/_scaffolding.scss +119 -0
  227. data/lib/api_browser/app/bower_components/bootstrap-sass/lib/_tables.scss +244 -0
  228. data/lib/api_browser/app/bower_components/bootstrap-sass/lib/_theme.scss +247 -0
  229. data/lib/api_browser/app/bower_components/bootstrap-sass/lib/_thumbnails.scss +32 -0
  230. data/lib/api_browser/app/bower_components/bootstrap-sass/lib/_tooltip.scss +95 -0
  231. data/lib/api_browser/app/bower_components/bootstrap-sass/lib/_type.scss +279 -0
  232. data/lib/api_browser/app/bower_components/bootstrap-sass/lib/_utilities.scss +56 -0
  233. data/lib/api_browser/app/bower_components/bootstrap-sass/lib/_variables.scss +637 -0
  234. data/lib/api_browser/app/bower_components/bootstrap-sass/lib/_wells.scss +29 -0
  235. data/lib/api_browser/app/bower_components/bootstrap-sass/lib/bootstrap.scss +49 -0
  236. data/lib/api_browser/app/bower_components/bootstrap-sass/package.json +40 -0
  237. data/lib/api_browser/app/bower_components/jquery/.bower.json +38 -0
  238. data/lib/api_browser/app/bower_components/jquery/MIT-LICENSE.txt +21 -0
  239. data/lib/api_browser/app/bower_components/jquery/bower.json +27 -0
  240. data/lib/api_browser/app/bower_components/jquery/dist/jquery.js +9190 -0
  241. data/lib/api_browser/app/bower_components/jquery/dist/jquery.min.js +5 -0
  242. data/lib/api_browser/app/bower_components/jquery/dist/jquery.min.map +1 -0
  243. data/lib/api_browser/app/bower_components/jquery/src/ajax/jsonp.js +89 -0
  244. data/lib/api_browser/app/bower_components/jquery/src/ajax/load.js +75 -0
  245. data/lib/api_browser/app/bower_components/jquery/src/ajax/parseJSON.js +13 -0
  246. data/lib/api_browser/app/bower_components/jquery/src/ajax/parseXML.js +28 -0
  247. data/lib/api_browser/app/bower_components/jquery/src/ajax/script.js +64 -0
  248. data/lib/api_browser/app/bower_components/jquery/src/ajax/var/nonce.js +5 -0
  249. data/lib/api_browser/app/bower_components/jquery/src/ajax/var/rquery.js +3 -0
  250. data/lib/api_browser/app/bower_components/jquery/src/ajax/xhr.js +135 -0
  251. data/lib/api_browser/app/bower_components/jquery/src/ajax.js +806 -0
  252. data/lib/api_browser/app/bower_components/jquery/src/attributes/attr.js +143 -0
  253. data/lib/api_browser/app/bower_components/jquery/src/attributes/classes.js +158 -0
  254. data/lib/api_browser/app/bower_components/jquery/src/attributes/prop.js +96 -0
  255. data/lib/api_browser/app/bower_components/jquery/src/attributes/support.js +35 -0
  256. data/lib/api_browser/app/bower_components/jquery/src/attributes/val.js +163 -0
  257. data/lib/api_browser/app/bower_components/jquery/src/attributes.js +11 -0
  258. data/lib/api_browser/app/bower_components/jquery/src/callbacks.js +205 -0
  259. data/lib/api_browser/app/bower_components/jquery/src/core/access.js +60 -0
  260. data/lib/api_browser/app/bower_components/jquery/src/core/init.js +123 -0
  261. data/lib/api_browser/app/bower_components/jquery/src/core/parseHTML.js +39 -0
  262. data/lib/api_browser/app/bower_components/jquery/src/core/ready.js +97 -0
  263. data/lib/api_browser/app/bower_components/jquery/src/core/var/rsingleTag.js +4 -0
  264. data/lib/api_browser/app/bower_components/jquery/src/core.js +498 -0
  265. data/lib/api_browser/app/bower_components/jquery/src/css/addGetHookIf.js +24 -0
  266. data/lib/api_browser/app/bower_components/jquery/src/css/curCSS.js +57 -0
  267. data/lib/api_browser/app/bower_components/jquery/src/css/defaultDisplay.js +70 -0
  268. data/lib/api_browser/app/bower_components/jquery/src/css/hiddenVisibleSelectors.js +15 -0
  269. data/lib/api_browser/app/bower_components/jquery/src/css/support.js +91 -0
  270. data/lib/api_browser/app/bower_components/jquery/src/css/swap.js +28 -0
  271. data/lib/api_browser/app/bower_components/jquery/src/css/var/cssExpand.js +3 -0
  272. data/lib/api_browser/app/bower_components/jquery/src/css/var/getStyles.js +5 -0
  273. data/lib/api_browser/app/bower_components/jquery/src/css/var/isHidden.js +13 -0
  274. data/lib/api_browser/app/bower_components/jquery/src/css/var/rmargin.js +3 -0
  275. data/lib/api_browser/app/bower_components/jquery/src/css/var/rnumnonpx.js +5 -0
  276. data/lib/api_browser/app/bower_components/jquery/src/css.js +451 -0
  277. data/lib/api_browser/app/bower_components/jquery/src/data/Data.js +181 -0
  278. data/lib/api_browser/app/bower_components/jquery/src/data/accepts.js +20 -0
  279. data/lib/api_browser/app/bower_components/jquery/src/data/var/data_priv.js +5 -0
  280. data/lib/api_browser/app/bower_components/jquery/src/data/var/data_user.js +5 -0
  281. data/lib/api_browser/app/bower_components/jquery/src/data.js +179 -0
  282. data/lib/api_browser/app/bower_components/jquery/src/deferred.js +149 -0
  283. data/lib/api_browser/app/bower_components/jquery/src/deprecated.js +13 -0
  284. data/lib/api_browser/app/bower_components/jquery/src/dimensions.js +50 -0
  285. data/lib/api_browser/app/bower_components/jquery/src/effects/Tween.js +114 -0
  286. data/lib/api_browser/app/bower_components/jquery/src/effects/animatedSelector.js +13 -0
  287. data/lib/api_browser/app/bower_components/jquery/src/effects.js +649 -0
  288. data/lib/api_browser/app/bower_components/jquery/src/event/alias.js +39 -0
  289. data/lib/api_browser/app/bower_components/jquery/src/event/support.js +9 -0
  290. data/lib/api_browser/app/bower_components/jquery/src/event.js +868 -0
  291. data/lib/api_browser/app/bower_components/jquery/src/exports/amd.js +24 -0
  292. data/lib/api_browser/app/bower_components/jquery/src/exports/global.js +32 -0
  293. data/lib/api_browser/app/bower_components/jquery/src/intro.js +44 -0
  294. data/lib/api_browser/app/bower_components/jquery/src/jquery.js +36 -0
  295. data/lib/api_browser/app/bower_components/jquery/src/manipulation/_evalUrl.js +18 -0
  296. data/lib/api_browser/app/bower_components/jquery/src/manipulation/support.js +31 -0
  297. data/lib/api_browser/app/bower_components/jquery/src/manipulation/var/rcheckableType.js +3 -0
  298. data/lib/api_browser/app/bower_components/jquery/src/manipulation.js +582 -0
  299. data/lib/api_browser/app/bower_components/jquery/src/offset.js +204 -0
  300. data/lib/api_browser/app/bower_components/jquery/src/outro.js +1 -0
  301. data/lib/api_browser/app/bower_components/jquery/src/queue/delay.js +22 -0
  302. data/lib/api_browser/app/bower_components/jquery/src/queue.js +142 -0
  303. data/lib/api_browser/app/bower_components/jquery/src/selector-native.js +172 -0
  304. data/lib/api_browser/app/bower_components/jquery/src/selector-sizzle.js +14 -0
  305. data/lib/api_browser/app/bower_components/jquery/src/selector.js +1 -0
  306. data/lib/api_browser/app/bower_components/jquery/src/serialize.js +111 -0
  307. data/lib/api_browser/app/bower_components/jquery/src/sizzle/dist/sizzle.js +2044 -0
  308. data/lib/api_browser/app/bower_components/jquery/src/sizzle/dist/sizzle.min.js +3 -0
  309. data/lib/api_browser/app/bower_components/jquery/src/sizzle/dist/sizzle.min.map +1 -0
  310. data/lib/api_browser/app/bower_components/jquery/src/traversing/findFilter.js +100 -0
  311. data/lib/api_browser/app/bower_components/jquery/src/traversing/var/rneedsContext.js +6 -0
  312. data/lib/api_browser/app/bower_components/jquery/src/traversing.js +200 -0
  313. data/lib/api_browser/app/bower_components/jquery/src/var/arr.js +3 -0
  314. data/lib/api_browser/app/bower_components/jquery/src/var/class2type.js +4 -0
  315. data/lib/api_browser/app/bower_components/jquery/src/var/concat.js +5 -0
  316. data/lib/api_browser/app/bower_components/jquery/src/var/hasOwn.js +5 -0
  317. data/lib/api_browser/app/bower_components/jquery/src/var/indexOf.js +5 -0
  318. data/lib/api_browser/app/bower_components/jquery/src/var/pnum.js +3 -0
  319. data/lib/api_browser/app/bower_components/jquery/src/var/push.js +5 -0
  320. data/lib/api_browser/app/bower_components/jquery/src/var/rnotwhite.js +3 -0
  321. data/lib/api_browser/app/bower_components/jquery/src/var/slice.js +5 -0
  322. data/lib/api_browser/app/bower_components/jquery/src/var/strundefined.js +3 -0
  323. data/lib/api_browser/app/bower_components/jquery/src/var/support.js +4 -0
  324. data/lib/api_browser/app/bower_components/jquery/src/var/toString.js +5 -0
  325. data/lib/api_browser/app/bower_components/jquery/src/wrap.js +78 -0
  326. data/lib/api_browser/app/bower_components/lodash/.bower.json +34 -0
  327. data/lib/api_browser/app/bower_components/lodash/LICENSE.txt +22 -0
  328. data/lib/api_browser/app/bower_components/lodash/bower.json +23 -0
  329. data/lib/api_browser/app/bower_components/lodash/dist/lodash.compat.js +7157 -0
  330. data/lib/api_browser/app/bower_components/lodash/dist/lodash.compat.min.js +61 -0
  331. data/lib/api_browser/app/bower_components/lodash/dist/lodash.js +6785 -0
  332. data/lib/api_browser/app/bower_components/lodash/dist/lodash.min.js +56 -0
  333. data/lib/api_browser/app/bower_components/lodash/dist/lodash.underscore.js +4979 -0
  334. data/lib/api_browser/app/bower_components/lodash/dist/lodash.underscore.min.js +39 -0
  335. data/lib/api_browser/app/css/main.css +4510 -0
  336. data/lib/api_browser/app/index.html +51 -0
  337. data/lib/api_browser/app/js/app.js +32 -0
  338. data/lib/api_browser/app/js/controllers/action.js +51 -0
  339. data/lib/api_browser/app/js/controllers/controller.js +10 -0
  340. data/lib/api_browser/app/js/controllers/menu.js +49 -0
  341. data/lib/api_browser/app/js/controllers/type.js +28 -0
  342. data/lib/api_browser/app/js/directives/attribute_description.js +43 -0
  343. data/lib/api_browser/app/js/directives/attribute_table.js +27 -0
  344. data/lib/api_browser/app/js/directives/attribute_table_row.js +17 -0
  345. data/lib/api_browser/app/js/directives/no_container.js +8 -0
  346. data/lib/api_browser/app/js/directives/request_body.js +25 -0
  347. data/lib/api_browser/app/js/directives/request_headers.js +20 -0
  348. data/lib/api_browser/app/js/directives/request_parameters.js +20 -0
  349. data/lib/api_browser/app/js/directives/type_label.js +53 -0
  350. data/lib/api_browser/app/js/factories/Documentation.js +16 -0
  351. data/lib/api_browser/app/js/factories/PayloadTemplates.js +10 -0
  352. data/lib/api_browser/app/js/factories/TemplateProvider.js +45 -0
  353. data/lib/api_browser/app/js/factories/TypeTemplates.js +11 -0
  354. data/lib/api_browser/app/js/filters/attribute_name.js +9 -0
  355. data/lib/api_browser/app/js/filters/friendly_json.js +5 -0
  356. data/lib/api_browser/app/js/filters/is_empty.js +8 -0
  357. data/lib/api_browser/app/js/filters/resource_name.js +5 -0
  358. data/lib/api_browser/app/sass/main.scss +59 -0
  359. data/lib/api_browser/app/sass/modules/_body.scss +11 -0
  360. data/lib/api_browser/app/sass/modules/_cloke.scss +8 -0
  361. data/lib/api_browser/app/sass/modules/_header.scss +15 -0
  362. data/lib/api_browser/app/sass/modules/_nav.scss +7 -0
  363. data/lib/api_browser/app/sass/modules/_sidebar.scss +26 -0
  364. data/lib/api_browser/app/sass/modules/_switch.scss +55 -0
  365. data/lib/api_browser/app/sass/modules/_table.scss +13 -0
  366. data/lib/api_browser/app/sass/variables/_bootstrap-variables.scss +762 -0
  367. data/lib/api_browser/app/views/action.html +83 -0
  368. data/lib/api_browser/app/views/controller.html +24 -0
  369. data/lib/api_browser/app/views/directives/attribute_description/_default.html +2 -0
  370. data/lib/api_browser/app/views/directives/attribute_description/_example.html +8 -0
  371. data/lib/api_browser/app/views/directives/attribute_description/_headers.html +8 -0
  372. data/lib/api_browser/app/views/directives/attribute_description.html +2 -0
  373. data/lib/api_browser/app/views/directives/attribute_table.html +23 -0
  374. data/lib/api_browser/app/views/directives/attribute_table_row/_default.html +10 -0
  375. data/lib/api_browser/app/views/directives/attribute_table_row/_links.html +10 -0
  376. data/lib/api_browser/app/views/directives/attribute_table_row/_struct.html +2 -0
  377. data/lib/api_browser/app/views/directives/request_body/_default.html +20 -0
  378. data/lib/api_browser/app/views/directives/request_body/_struct.html +1 -0
  379. data/lib/api_browser/app/views/home.html +7 -0
  380. data/lib/api_browser/app/views/layout.html +50 -0
  381. data/lib/api_browser/app/views/resource/_actions.html +23 -0
  382. data/lib/api_browser/app/views/type/_details.html +29 -0
  383. data/lib/api_browser/app/views/type.html +25 -0
  384. data/lib/api_browser/bower.json +26 -0
  385. data/lib/api_browser/package.json +30 -0
  386. data/lib/praxis/action_definition/headers_dsl_compiler.rb +36 -0
  387. data/lib/praxis/action_definition.rb +153 -0
  388. data/lib/praxis/api_definition.rb +59 -0
  389. data/lib/praxis/application.rb +65 -0
  390. data/lib/praxis/bootloader.rb +91 -0
  391. data/lib/praxis/bootloader_stages/environment.rb +57 -0
  392. data/lib/praxis/bootloader_stages/file_loader.rb +31 -0
  393. data/lib/praxis/bootloader_stages/routing.rb +34 -0
  394. data/lib/praxis/bootloader_stages/subgroup_loader.rb +27 -0
  395. data/lib/praxis/bootloader_stages/warn_unloaded_files.rb +40 -0
  396. data/lib/praxis/config.rb +92 -0
  397. data/lib/praxis/content_type_parser.rb +62 -0
  398. data/lib/praxis/controller.rb +59 -0
  399. data/lib/praxis/dispatcher.rb +102 -0
  400. data/lib/praxis/exception.rb +4 -0
  401. data/lib/praxis/exceptions/config.rb +6 -0
  402. data/lib/praxis/exceptions/config_load.rb +9 -0
  403. data/lib/praxis/exceptions/config_validation.rb +9 -0
  404. data/lib/praxis/exceptions/invalid_configuration.rb +6 -0
  405. data/lib/praxis/exceptions/invalid_response.rb +6 -0
  406. data/lib/praxis/exceptions/invalid_trait.rb +6 -0
  407. data/lib/praxis/exceptions/stage_not_found.rb +6 -0
  408. data/lib/praxis/exceptions/validation.rb +6 -0
  409. data/lib/praxis/file_group.rb +39 -0
  410. data/lib/praxis/links.rb +110 -0
  411. data/lib/praxis/media_type.rb +40 -0
  412. data/lib/praxis/media_type_collection.rb +120 -0
  413. data/lib/praxis/multipart/parser.rb +213 -0
  414. data/lib/praxis/multipart/part.rb +26 -0
  415. data/lib/praxis/plugin.rb +30 -0
  416. data/lib/praxis/request.rb +131 -0
  417. data/lib/praxis/request_stages/action.rb +20 -0
  418. data/lib/praxis/request_stages/load_request.rb +13 -0
  419. data/lib/praxis/request_stages/request_stage.rb +52 -0
  420. data/lib/praxis/request_stages/response.rb +26 -0
  421. data/lib/praxis/request_stages/validate.rb +20 -0
  422. data/lib/praxis/request_stages/validate_params_and_headers.rb +38 -0
  423. data/lib/praxis/request_stages/validate_payload.rb +32 -0
  424. data/lib/praxis/resource_definition.rb +89 -0
  425. data/lib/praxis/response.rb +107 -0
  426. data/lib/praxis/response_definition.rb +264 -0
  427. data/lib/praxis/response_template.rb +34 -0
  428. data/lib/praxis/responses/http.rb +166 -0
  429. data/lib/praxis/responses/validation_error.rb +36 -0
  430. data/lib/praxis/route.rb +27 -0
  431. data/lib/praxis/router.rb +89 -0
  432. data/lib/praxis/simple_media_type.rb +24 -0
  433. data/lib/praxis/skeletor/restful_routing_config.rb +45 -0
  434. data/lib/praxis/stage.rb +94 -0
  435. data/lib/praxis/tasks/api_docs.rb +336 -0
  436. data/lib/praxis/tasks/console.rb +11 -0
  437. data/lib/praxis/tasks/environment.rb +5 -0
  438. data/lib/praxis/tasks/routes.rb +45 -0
  439. data/lib/praxis/tasks.rb +4 -0
  440. data/lib/praxis/types/collection.rb +17 -0
  441. data/lib/praxis/types/multipart.rb +69 -0
  442. data/lib/praxis/version.rb +3 -0
  443. data/lib/praxis.rb +119 -1
  444. data/praxis.gemspec +50 -0
  445. data/spec/functional_spec.rb +186 -0
  446. data/spec/praxis/action_definition_spec.rb +134 -0
  447. data/spec/praxis/api_resource_spec.rb +0 -0
  448. data/spec/praxis/application_spec.rb +46 -0
  449. data/spec/praxis/bootloader_spec.rb +58 -0
  450. data/spec/praxis/config_spec.rb +118 -0
  451. data/spec/praxis/content_type_parser_spec.rb +91 -0
  452. data/spec/praxis/controller_spec.rb +73 -0
  453. data/spec/praxis/dispatcher_spec.rb +0 -0
  454. data/spec/praxis/file_group_spec.rb +34 -0
  455. data/spec/praxis/links_spec.rb +45 -0
  456. data/spec/praxis/media_type_collection_spec.rb +145 -0
  457. data/spec/praxis/media_type_spec.rb +80 -0
  458. data/spec/praxis/multipart/parser_spec.rb +54 -0
  459. data/spec/praxis/request_spec.rb +109 -0
  460. data/spec/praxis/request_stages_validate_spec.rb +34 -0
  461. data/spec/praxis/resource_definition_spec.rb +116 -0
  462. data/spec/praxis/response_definition_spec.rb +500 -0
  463. data/spec/praxis/response_spec.rb +166 -0
  464. data/spec/praxis/restful_routing_config_spec.rb +88 -0
  465. data/spec/praxis/route_spec.rb +42 -0
  466. data/spec/praxis/router_spec.rb +148 -0
  467. data/spec/praxis/stage_spec.rb +110 -0
  468. data/spec/praxis/types/multipart_spec.rb +81 -0
  469. data/spec/spec_app/app/controllers/instances.rb +63 -0
  470. data/spec/spec_app/app/responses/bulk_response.rb +6 -0
  471. data/spec/spec_app/app/responses/multipart.rb +10 -0
  472. data/spec/spec_app/app/responses/other_response.rb +6 -0
  473. data/spec/spec_app/config/environment.rb +17 -0
  474. data/spec/spec_app/config.ru +17 -0
  475. data/spec/spec_app/design/api.rb +27 -0
  476. data/spec/spec_app/design/media_types/instance.rb +35 -0
  477. data/spec/spec_app/design/media_types/volume.rb +34 -0
  478. data/spec/spec_app/design/media_types/volume_snapshot.rb +38 -0
  479. data/spec/spec_app/design/resources/instances.rb +161 -0
  480. data/spec/spec_helper.rb +39 -0
  481. data/spec/support/spec_media_types.rb +46 -0
  482. data/spec/support/spec_resource_definitions.rb +33 -0
  483. data/tasks/praxis_app_generator.thor +307 -0
  484. metadata +847 -12
@@ -0,0 +1,273 @@
1
+ /**
2
+ * @ngdoc object
3
+ * @name ui.router.router.$urlRouterProvider
4
+ *
5
+ * @requires ui.router.util.$urlMatcherFactoryProvider
6
+ *
7
+ * @description
8
+ * `$urlRouterProvider` has the responsibility of watching `$location`.
9
+ * When `$location` changes it runs through a list of rules one by one until a
10
+ * match is found. `$urlRouterProvider` is used behind the scenes anytime you specify
11
+ * a url in a state configuration. All urls are compiled into a UrlMatcher object.
12
+ *
13
+ * There are several methods on `$urlRouterProvider` that make it useful to use directly
14
+ * in your module config.
15
+ */
16
+ $UrlRouterProvider.$inject = ['$urlMatcherFactoryProvider'];
17
+ function $UrlRouterProvider( $urlMatcherFactory) {
18
+ var rules = [],
19
+ otherwise = null;
20
+
21
+ // Returns a string that is a prefix of all strings matching the RegExp
22
+ function regExpPrefix(re) {
23
+ var prefix = /^\^((?:\\[^a-zA-Z0-9]|[^\\\[\]\^$*+?.()|{}]+)*)/.exec(re.source);
24
+ return (prefix != null) ? prefix[1].replace(/\\(.)/g, "$1") : '';
25
+ }
26
+
27
+ // Interpolates matched values into a String.replace()-style pattern
28
+ function interpolate(pattern, match) {
29
+ return pattern.replace(/\$(\$|\d{1,2})/, function (m, what) {
30
+ return match[what === '$' ? 0 : Number(what)];
31
+ });
32
+ }
33
+
34
+ /**
35
+ * @ngdoc function
36
+ * @name ui.router.router.$urlRouterProvider#rule
37
+ * @methodOf ui.router.router.$urlRouterProvider
38
+ *
39
+ * @description
40
+ * Defines rules that are used by `$urlRouterProvider to find matches for
41
+ * specific URLs.
42
+ *
43
+ * @example
44
+ * <pre>
45
+ * var app = angular.module('app', ['ui.router.router']);
46
+ *
47
+ * app.config(function ($urlRouterProvider) {
48
+ * // Here's an example of how you might allow case insensitive urls
49
+ * $urlRouterProvider.rule(function ($injector, $location) {
50
+ * var path = $location.path(),
51
+ * normalized = path.toLowerCase();
52
+ *
53
+ * if (path !== normalized) {
54
+ * return normalized;
55
+ * }
56
+ * });
57
+ * });
58
+ * </pre>
59
+ *
60
+ * @param {object} rule Handler function that takes `$injector` and `$location`
61
+ * services as arguments. You can use them to return a valid path as a string.
62
+ *
63
+ * @return {object} $urlRouterProvider - $urlRouterProvider instance
64
+ */
65
+ this.rule =
66
+ function (rule) {
67
+ if (!isFunction(rule)) throw new Error("'rule' must be a function");
68
+ rules.push(rule);
69
+ return this;
70
+ };
71
+
72
+ /**
73
+ * @ngdoc object
74
+ * @name ui.router.router.$urlRouterProvider#otherwise
75
+ * @methodOf ui.router.router.$urlRouterProvider
76
+ *
77
+ * @description
78
+ * Defines a path that is used when an invalied route is requested.
79
+ *
80
+ * @example
81
+ * <pre>
82
+ * var app = angular.module('app', ['ui.router.router']);
83
+ *
84
+ * app.config(function ($urlRouterProvider) {
85
+ * // if the path doesn't match any of the urls you configured
86
+ * // otherwise will take care of routing the user to the
87
+ * // specified url
88
+ * $urlRouterProvider.otherwise('/index');
89
+ *
90
+ * // Example of using function rule as param
91
+ * $urlRouterProvider.otherwise(function ($injector, $location) {
92
+ * ...
93
+ * });
94
+ * });
95
+ * </pre>
96
+ *
97
+ * @param {string|object} rule The url path you want to redirect to or a function
98
+ * rule that returns the url path. The function version is passed two params:
99
+ * `$injector` and `$location` services.
100
+ *
101
+ * @return {object} $urlRouterProvider - $urlRouterProvider instance
102
+ */
103
+ this.otherwise =
104
+ function (rule) {
105
+ if (isString(rule)) {
106
+ var redirect = rule;
107
+ rule = function () { return redirect; };
108
+ }
109
+ else if (!isFunction(rule)) throw new Error("'rule' must be a function");
110
+ otherwise = rule;
111
+ return this;
112
+ };
113
+
114
+
115
+ function handleIfMatch($injector, handler, match) {
116
+ if (!match) return false;
117
+ var result = $injector.invoke(handler, handler, { $match: match });
118
+ return isDefined(result) ? result : true;
119
+ }
120
+
121
+ /**
122
+ * @ngdoc function
123
+ * @name ui.router.router.$urlRouterProvider#when
124
+ * @methodOf ui.router.router.$urlRouterProvider
125
+ *
126
+ * @description
127
+ * Registers a handler for a given url matching. if handle is a string, it is
128
+ * treated as a redirect, and is interpolated according to the syyntax of match
129
+ * (i.e. like String.replace() for RegExp, or like a UrlMatcher pattern otherwise).
130
+ *
131
+ * If the handler is a function, it is injectable. It gets invoked if `$location`
132
+ * matches. You have the option of inject the match object as `$match`.
133
+ *
134
+ * The handler can return
135
+ *
136
+ * - **falsy** to indicate that the rule didn't match after all, then `$urlRouter`
137
+ * will continue trying to find another one that matches.
138
+ * - **string** which is treated as a redirect and passed to `$location.url()`
139
+ * - **void** or any **truthy** value tells `$urlRouter` that the url was handled.
140
+ *
141
+ * @example
142
+ * <pre>
143
+ * var app = angular.module('app', ['ui.router.router']);
144
+ *
145
+ * app.config(function ($urlRouterProvider) {
146
+ * $urlRouterProvider.when($state.url, function ($match, $stateParams) {
147
+ * if ($state.$current.navigable !== state ||
148
+ * !equalForKeys($match, $stateParams) {
149
+ * $state.transitionTo(state, $match, false);
150
+ * }
151
+ * });
152
+ * });
153
+ * </pre>
154
+ *
155
+ * @param {string|object} what The incoming path that you want to redirect.
156
+ * @param {string|object} handler The path you want to redirect your user to.
157
+ */
158
+ this.when =
159
+ function (what, handler) {
160
+ var redirect, handlerIsString = isString(handler);
161
+ if (isString(what)) what = $urlMatcherFactory.compile(what);
162
+
163
+ if (!handlerIsString && !isFunction(handler) && !isArray(handler))
164
+ throw new Error("invalid 'handler' in when()");
165
+
166
+ var strategies = {
167
+ matcher: function (what, handler) {
168
+ if (handlerIsString) {
169
+ redirect = $urlMatcherFactory.compile(handler);
170
+ handler = ['$match', function ($match) { return redirect.format($match); }];
171
+ }
172
+ return extend(function ($injector, $location) {
173
+ return handleIfMatch($injector, handler, what.exec($location.path(), $location.search()));
174
+ }, {
175
+ prefix: isString(what.prefix) ? what.prefix : ''
176
+ });
177
+ },
178
+ regex: function (what, handler) {
179
+ if (what.global || what.sticky) throw new Error("when() RegExp must not be global or sticky");
180
+
181
+ if (handlerIsString) {
182
+ redirect = handler;
183
+ handler = ['$match', function ($match) { return interpolate(redirect, $match); }];
184
+ }
185
+ return extend(function ($injector, $location) {
186
+ return handleIfMatch($injector, handler, what.exec($location.path()));
187
+ }, {
188
+ prefix: regExpPrefix(what)
189
+ });
190
+ }
191
+ };
192
+
193
+ var check = { matcher: $urlMatcherFactory.isMatcher(what), regex: what instanceof RegExp };
194
+
195
+ for (var n in check) {
196
+ if (check[n]) {
197
+ return this.rule(strategies[n](what, handler));
198
+ }
199
+ }
200
+
201
+ throw new Error("invalid 'what' in when()");
202
+ };
203
+
204
+ /**
205
+ * @ngdoc object
206
+ * @name ui.router.router.$urlRouter
207
+ *
208
+ * @requires $location
209
+ * @requires $rootScope
210
+ * @requires $injector
211
+ *
212
+ * @description
213
+ *
214
+ */
215
+ this.$get =
216
+ [ '$location', '$rootScope', '$injector',
217
+ function ($location, $rootScope, $injector) {
218
+ // TODO: Optimize groups of rules with non-empty prefix into some sort of decision tree
219
+ function update(evt) {
220
+ if (evt && evt.defaultPrevented) return;
221
+ function check(rule) {
222
+ var handled = rule($injector, $location);
223
+ if (handled) {
224
+ if (isString(handled)) $location.replace().url(handled);
225
+ return true;
226
+ }
227
+ return false;
228
+ }
229
+ var n=rules.length, i;
230
+ for (i=0; i<n; i++) {
231
+ if (check(rules[i])) return;
232
+ }
233
+ // always check otherwise last to allow dynamic updates to the set of rules
234
+ if (otherwise) check(otherwise);
235
+ }
236
+
237
+ $rootScope.$on('$locationChangeSuccess', update);
238
+
239
+ return {
240
+ /**
241
+ * @ngdoc function
242
+ * @name ui.router.router.$urlRouter#sync
243
+ * @methodOf ui.router.router.$urlRouter
244
+ *
245
+ * @description
246
+ * Triggers an update; the same update that happens when the address bar url changes, aka `$locationChangeSuccess`.
247
+ * This method is useful when you need to use `preventDefault()` on the `$locationChangeSuccess` event,
248
+ * perform some custom logic (route protection, auth, config, redirection, etc) and then finally proceed
249
+ * with the transition by calling `$urlRouter.sync()`.
250
+ *
251
+ * @example
252
+ * <pre>
253
+ * angular.module('app', ['ui.router']);
254
+ * .run(function($rootScope, $urlRouter) {
255
+ * $rootScope.$on('$locationChangeSuccess', function(evt) {
256
+ * // Halt state change from even starting
257
+ * evt.preventDefault();
258
+ * // Perform custom logic
259
+ * var meetsRequirement = ...
260
+ * // Continue with the update and state transition if logic allows
261
+ * if (meetsRequirement) $urlRouter.sync();
262
+ * });
263
+ * });
264
+ * </pre>
265
+ */
266
+ sync: function () {
267
+ update();
268
+ }
269
+ };
270
+ }];
271
+ }
272
+
273
+ angular.module('ui.router.router').provider('$urlRouter', $UrlRouterProvider);
@@ -0,0 +1,71 @@
1
+
2
+ $ViewProvider.$inject = [];
3
+ function $ViewProvider() {
4
+
5
+ this.$get = $get;
6
+ /**
7
+ * @ngdoc object
8
+ * @name ui.router.state.$view
9
+ *
10
+ * @requires ui.router.util.$templateFactory
11
+ * @requires $rootScope
12
+ *
13
+ * @description
14
+ *
15
+ */
16
+ $get.$inject = ['$rootScope', '$templateFactory'];
17
+ function $get( $rootScope, $templateFactory) {
18
+ return {
19
+ // $view.load('full.viewName', { template: ..., controller: ..., resolve: ..., async: false, params: ... })
20
+ /**
21
+ * @ngdoc function
22
+ * @name ui.router.state.$view#load
23
+ * @methodOf ui.router.state.$view
24
+ *
25
+ * @description
26
+ *
27
+ * @param {string} name name
28
+ * @param {object} options option object.
29
+ */
30
+ load: function load(name, options) {
31
+ var result, defaults = {
32
+ template: null, controller: null, view: null, locals: null, notify: true, async: true, params: {}
33
+ };
34
+ options = extend(defaults, options);
35
+
36
+ if (options.view) {
37
+ result = $templateFactory.fromConfig(options.view, options.params, options.locals);
38
+ }
39
+ if (result && options.notify) {
40
+ /**
41
+ * @ngdoc event
42
+ * @name ui.router.state.$state#$viewContentLoading
43
+ * @eventOf ui.router.state.$view
44
+ * @eventType broadcast on root scope
45
+ * @description
46
+ *
47
+ * Fired once the view **begins loading**, *before* the DOM is rendered.
48
+ *
49
+ * @param {Object} event Event object.
50
+ * @param {Object} viewConfig The view config properties (template, controller, etc).
51
+ *
52
+ * @example
53
+ *
54
+ * <pre>
55
+ * $scope.$on('$viewContentLoading',
56
+ * function(event, viewConfig){
57
+ * // Access to all the view config properties.
58
+ * // and one special property 'targetView'
59
+ * // viewConfig.targetView
60
+ * });
61
+ * </pre>
62
+ */
63
+ $rootScope.$broadcast('$viewContentLoading', options);
64
+ }
65
+ return result;
66
+ }
67
+ };
68
+ }
69
+ }
70
+
71
+ angular.module('ui.router.state').provider('$view', $ViewProvider);
@@ -0,0 +1,290 @@
1
+ /**
2
+ * @ngdoc directive
3
+ * @name ui.router.state.directive:ui-view
4
+ *
5
+ * @requires ui.router.state.$state
6
+ * @requires $compile
7
+ * @requires $controller
8
+ * @requires $injector
9
+ * @requires ui.router.state.$uiViewScroll
10
+ * @requires $document
11
+ *
12
+ * @restrict ECA
13
+ *
14
+ * @description
15
+ * The ui-view directive tells $state where to place your templates.
16
+ *
17
+ * @param {string=} ui-view A view name. The name should be unique amongst the other views in the
18
+ * same state. You can have views of the same name that live in different states.
19
+ *
20
+ * @param {string=} autoscroll It allows you to set the scroll behavior of the browser window
21
+ * when a view is populated. By default, $anchorScroll is overridden by ui-router's custom scroll
22
+ * service, {@link ui.router.state.$uiViewScroll}. This custom service let's you
23
+ * scroll ui-view elements into view when they are populated during a state activation.
24
+ *
25
+ * *Note: To revert back to old [`$anchorScroll`](http://docs.angularjs.org/api/ng.$anchorScroll)
26
+ * functionality, call `$uiViewScrollProvider.useAnchorScroll()`.*
27
+ *
28
+ * @param {string=} onload Expression to evaluate whenever the view updates.
29
+ *
30
+ * @example
31
+ * A view can be unnamed or named.
32
+ * <pre>
33
+ * <!-- Unnamed -->
34
+ * <div ui-view></div>
35
+ *
36
+ * <!-- Named -->
37
+ * <div ui-view="viewName"></div>
38
+ * </pre>
39
+ *
40
+ * You can only have one unnamed view within any template (or root html). If you are only using a
41
+ * single view and it is unnamed then you can populate it like so:
42
+ * <pre>
43
+ * <div ui-view></div>
44
+ * $stateProvider.state("home", {
45
+ * template: "<h1>HELLO!</h1>"
46
+ * })
47
+ * </pre>
48
+ *
49
+ * The above is a convenient shortcut equivalent to specifying your view explicitly with the {@link ui.router.state.$stateProvider#views `views`}
50
+ * config property, by name, in this case an empty name:
51
+ * <pre>
52
+ * $stateProvider.state("home", {
53
+ * views: {
54
+ * "": {
55
+ * template: "<h1>HELLO!</h1>"
56
+ * }
57
+ * }
58
+ * })
59
+ * </pre>
60
+ *
61
+ * But typically you'll only use the views property if you name your view or have more than one view
62
+ * in the same template. There's not really a compelling reason to name a view if its the only one,
63
+ * but you could if you wanted, like so:
64
+ * <pre>
65
+ * <div ui-view="main"></div>
66
+ * </pre>
67
+ * <pre>
68
+ * $stateProvider.state("home", {
69
+ * views: {
70
+ * "main": {
71
+ * template: "<h1>HELLO!</h1>"
72
+ * }
73
+ * }
74
+ * })
75
+ * </pre>
76
+ *
77
+ * Really though, you'll use views to set up multiple views:
78
+ * <pre>
79
+ * <div ui-view></div>
80
+ * <div ui-view="chart"></div>
81
+ * <div ui-view="data"></div>
82
+ * </pre>
83
+ *
84
+ * <pre>
85
+ * $stateProvider.state("home", {
86
+ * views: {
87
+ * "": {
88
+ * template: "<h1>HELLO!</h1>"
89
+ * },
90
+ * "chart": {
91
+ * template: "<chart_thing/>"
92
+ * },
93
+ * "data": {
94
+ * template: "<data_thing/>"
95
+ * }
96
+ * }
97
+ * })
98
+ * </pre>
99
+ *
100
+ * Examples for `autoscroll`:
101
+ *
102
+ * <pre>
103
+ * <!-- If autoscroll present with no expression,
104
+ * then scroll ui-view into view -->
105
+ * <ui-view autoscroll/>
106
+ *
107
+ * <!-- If autoscroll present with valid expression,
108
+ * then scroll ui-view into view if expression evaluates to true -->
109
+ * <ui-view autoscroll='true'/>
110
+ * <ui-view autoscroll='false'/>
111
+ * <ui-view autoscroll='scopeVariable'/>
112
+ * </pre>
113
+ */
114
+ $ViewDirective.$inject = ['$state', '$injector', '$uiViewScroll'];
115
+ function $ViewDirective( $state, $injector, $uiViewScroll) {
116
+
117
+ function getService() {
118
+ return ($injector.has) ? function(service) {
119
+ return $injector.has(service) ? $injector.get(service) : null;
120
+ } : function(service) {
121
+ try {
122
+ return $injector.get(service);
123
+ } catch (e) {
124
+ return null;
125
+ }
126
+ };
127
+ }
128
+
129
+ var service = getService(),
130
+ $animator = service('$animator'),
131
+ $animate = service('$animate');
132
+
133
+ // Returns a set of DOM manipulation functions based on which Angular version
134
+ // it should use
135
+ function getRenderer(attrs, scope) {
136
+ var statics = function() {
137
+ return {
138
+ enter: function (element, target, cb) { target.after(element); cb(); },
139
+ leave: function (element, cb) { element.remove(); cb(); }
140
+ };
141
+ };
142
+
143
+ if ($animate) {
144
+ return {
145
+ enter: function(element, target, cb) { $animate.enter(element, null, target, cb); },
146
+ leave: function(element, cb) { $animate.leave(element, cb); }
147
+ };
148
+ }
149
+
150
+ if ($animator) {
151
+ var animate = $animator && $animator(scope, attrs);
152
+
153
+ return {
154
+ enter: function(element, target, cb) {animate.enter(element, null, target); cb(); },
155
+ leave: function(element, cb) { animate.leave(element); cb(); }
156
+ };
157
+ }
158
+
159
+ return statics();
160
+ }
161
+
162
+ var directive = {
163
+ restrict: 'ECA',
164
+ terminal: true,
165
+ priority: 400,
166
+ transclude: 'element',
167
+ compile: function (tElement, tAttrs, $transclude) {
168
+ return function (scope, $element, attrs) {
169
+ var previousEl, currentEl, currentScope, latestLocals,
170
+ onloadExp = attrs.onload || '',
171
+ autoScrollExp = attrs.autoscroll,
172
+ renderer = getRenderer(attrs, scope);
173
+
174
+ scope.$on('$stateChangeSuccess', function() {
175
+ updateView(false);
176
+ });
177
+ scope.$on('$viewContentLoading', function() {
178
+ updateView(false);
179
+ });
180
+
181
+ updateView(true);
182
+
183
+ function cleanupLastView() {
184
+ if (previousEl) {
185
+ previousEl.remove();
186
+ previousEl = null;
187
+ }
188
+
189
+ if (currentScope) {
190
+ currentScope.$destroy();
191
+ currentScope = null;
192
+ }
193
+
194
+ if (currentEl) {
195
+ renderer.leave(currentEl, function() {
196
+ previousEl = null;
197
+ });
198
+
199
+ previousEl = currentEl;
200
+ currentEl = null;
201
+ }
202
+ }
203
+
204
+ function updateView(firstTime) {
205
+ var newScope = scope.$new(),
206
+ name = currentEl && currentEl.data('$uiViewName'),
207
+ previousLocals = name && $state.$current && $state.$current.locals[name];
208
+
209
+ if (!firstTime && previousLocals === latestLocals) return; // nothing to do
210
+
211
+ var clone = $transclude(newScope, function(clone) {
212
+ renderer.enter(clone, $element, function onUiViewEnter() {
213
+ if (angular.isDefined(autoScrollExp) && !autoScrollExp || scope.$eval(autoScrollExp)) {
214
+ $uiViewScroll(clone);
215
+ }
216
+ });
217
+ cleanupLastView();
218
+ });
219
+
220
+ latestLocals = $state.$current.locals[clone.data('$uiViewName')];
221
+
222
+ currentEl = clone;
223
+ currentScope = newScope;
224
+ /**
225
+ * @ngdoc event
226
+ * @name ui.router.state.directive:ui-view#$viewContentLoaded
227
+ * @eventOf ui.router.state.directive:ui-view
228
+ * @eventType emits on ui-view directive scope
229
+ * @description *
230
+ * Fired once the view is **loaded**, *after* the DOM is rendered.
231
+ *
232
+ * @param {Object} event Event object.
233
+ */
234
+ currentScope.$emit('$viewContentLoaded');
235
+ currentScope.$eval(onloadExp);
236
+ }
237
+ };
238
+ }
239
+ };
240
+
241
+ return directive;
242
+ }
243
+
244
+ $ViewDirectiveFill.$inject = ['$compile', '$controller', '$state'];
245
+ function $ViewDirectiveFill ($compile, $controller, $state) {
246
+ return {
247
+ restrict: 'ECA',
248
+ priority: -400,
249
+ compile: function (tElement) {
250
+ var initial = tElement.html();
251
+ return function (scope, $element, attrs) {
252
+ var name = attrs.uiView || attrs.name || '',
253
+ inherited = $element.inheritedData('$uiView');
254
+
255
+ if (name.indexOf('@') < 0) {
256
+ name = name + '@' + (inherited ? inherited.state.name : '');
257
+ }
258
+
259
+ $element.data('$uiViewName', name);
260
+
261
+ var current = $state.$current,
262
+ locals = current && current.locals[name];
263
+
264
+ if (! locals) {
265
+ return;
266
+ }
267
+
268
+ $element.data('$uiView', { name: name, state: locals.$$state });
269
+ $element.html(locals.$template ? locals.$template : initial);
270
+
271
+ var link = $compile($element.contents());
272
+
273
+ if (locals.$$controller) {
274
+ locals.$scope = scope;
275
+ var controller = $controller(locals.$$controller, locals);
276
+ if (locals.$$controllerAs) {
277
+ scope[locals.$$controllerAs] = controller;
278
+ }
279
+ $element.data('$ngControllerController', controller);
280
+ $element.children().data('$ngControllerController', controller);
281
+ }
282
+
283
+ link(scope);
284
+ };
285
+ }
286
+ };
287
+ }
288
+
289
+ angular.module('ui.router.state').directive('uiView', $ViewDirective);
290
+ angular.module('ui.router.state').directive('uiView', $ViewDirectiveFill);
@@ -0,0 +1,52 @@
1
+ /**
2
+ * @ngdoc object
3
+ * @name ui.router.state.$uiViewScrollProvider
4
+ *
5
+ * @description
6
+ * Provider that returns the {@link ui.router.state.$uiViewScroll} service function.
7
+ */
8
+ function $ViewScrollProvider() {
9
+
10
+ var useAnchorScroll = false;
11
+
12
+ /**
13
+ * @ngdoc function
14
+ * @name ui.router.state.$uiViewScrollProvider#useAnchorScroll
15
+ * @methodOf ui.router.state.$uiViewScrollProvider
16
+ *
17
+ * @description
18
+ * Reverts back to using the core [`$anchorScroll`](http://docs.angularjs.org/api/ng.$anchorScroll) service for
19
+ * scrolling based on the url anchor.
20
+ */
21
+ this.useAnchorScroll = function () {
22
+ useAnchorScroll = true;
23
+ };
24
+
25
+ /**
26
+ * @ngdoc object
27
+ * @name ui.router.state.$uiViewScroll
28
+ *
29
+ * @requires $anchorScroll
30
+ * @requires $timeout
31
+ *
32
+ * @description
33
+ * When called with a jqLite element, it scrolls the element into view (after a
34
+ * `$timeout` so the DOM has time to refresh).
35
+ *
36
+ * If you prefer to rely on `$anchorScroll` to scroll the view to the anchor,
37
+ * this can be enabled by calling {@link ui.router.state.$uiViewScrollProvider#methods_useAnchorScroll `$uiViewScrollProvider.useAnchorScroll()`}.
38
+ */
39
+ this.$get = ['$anchorScroll', '$timeout', function ($anchorScroll, $timeout) {
40
+ if (useAnchorScroll) {
41
+ return $anchorScroll;
42
+ }
43
+
44
+ return function ($element) {
45
+ $timeout(function () {
46
+ $element[0].scrollIntoView();
47
+ }, 0, false);
48
+ };
49
+ }];
50
+ }
51
+
52
+ angular.module('ui.router.state').provider('$uiViewScroll', $ViewScrollProvider);