praxis 0.16.1 → 0.17.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (399) hide show
  1. checksums.yaml +4 -4
  2. data/.rspec +0 -1
  3. data/.ruby-version +1 -1
  4. data/.travis.yml +2 -1
  5. data/CHANGELOG.md +41 -0
  6. data/CONTRIBUTING.md +3 -0
  7. data/lib/api_browser/Gruntfile.js +20 -4
  8. data/lib/api_browser/app/bower_components/angular-mocks/.bower.json +6 -6
  9. data/lib/api_browser/app/bower_components/angular-mocks/README.md +11 -5
  10. data/lib/api_browser/app/bower_components/angular-mocks/angular-mocks.js +475 -216
  11. data/lib/api_browser/app/bower_components/angular-mocks/bower.json +2 -2
  12. data/lib/api_browser/app/bower_components/angular-mocks/ngAnimateMock.js +2 -0
  13. data/lib/api_browser/app/bower_components/angular-mocks/ngMock.js +2 -0
  14. data/lib/api_browser/app/bower_components/angular-mocks/ngMockE2E.js +2 -0
  15. data/lib/api_browser/app/bower_components/angular-mocks/package.json +1 -1
  16. data/lib/api_browser/app/bower_components/angular-sanitize/.bower.json +8 -8
  17. data/lib/api_browser/app/bower_components/angular-sanitize/README.md +19 -5
  18. data/lib/api_browser/app/bower_components/angular-sanitize/angular-sanitize.js +186 -127
  19. data/lib/api_browser/app/bower_components/angular-sanitize/angular-sanitize.min.js +12 -10
  20. data/lib/api_browser/app/bower_components/angular-sanitize/angular-sanitize.min.js.map +3 -3
  21. data/lib/api_browser/app/bower_components/angular-sanitize/bower.json +3 -2
  22. data/lib/api_browser/app/bower_components/angular-sanitize/index.js +2 -0
  23. data/lib/api_browser/app/bower_components/angular-sanitize/package.json +26 -0
  24. data/lib/api_browser/app/bower_components/angular-ui-bootstrap-bower/.bower.json +15 -8
  25. data/lib/api_browser/app/bower_components/angular-ui-bootstrap-bower/bower.json +11 -3
  26. data/lib/api_browser/app/bower_components/angular-ui-bootstrap-bower/ui-bootstrap-csp.css +6 -0
  27. data/lib/api_browser/app/bower_components/angular-ui-bootstrap-bower/ui-bootstrap-tpls.js +1177 -453
  28. data/lib/api_browser/app/bower_components/angular-ui-bootstrap-bower/ui-bootstrap-tpls.min.js +4 -4
  29. data/lib/api_browser/app/bower_components/angular-ui-bootstrap-bower/ui-bootstrap.js +1066 -404
  30. data/lib/api_browser/app/bower_components/angular-ui-bootstrap-bower/ui-bootstrap.min.js +3 -3
  31. data/lib/api_browser/app/bower_components/angular-ui-router/.bower.json +5 -6
  32. data/lib/api_browser/app/bower_components/angular-ui-router/CHANGELOG.md +208 -3
  33. data/lib/api_browser/app/bower_components/angular-ui-router/CONTRIBUTING.md +65 -0
  34. data/lib/api_browser/app/bower_components/angular-ui-router/LICENSE +1 -1
  35. data/lib/api_browser/app/bower_components/angular-ui-router/README.md +36 -71
  36. data/lib/api_browser/app/bower_components/angular-ui-router/api/angular-ui-router.d.ts +126 -0
  37. data/lib/api_browser/app/bower_components/angular-ui-router/bower.json +1 -1
  38. data/lib/api_browser/app/bower_components/angular-ui-router/release/angular-ui-router.js +1902 -755
  39. data/lib/api_browser/app/bower_components/angular-ui-router/release/angular-ui-router.min.js +2 -2
  40. data/lib/api_browser/app/bower_components/angular-ui-router/src/common.js +69 -23
  41. data/lib/api_browser/app/bower_components/angular-ui-router/src/resolve.js +15 -5
  42. data/lib/api_browser/app/bower_components/angular-ui-router/src/state.js +556 -295
  43. data/lib/api_browser/app/bower_components/angular-ui-router/src/stateDirectives.js +101 -42
  44. data/lib/api_browser/app/bower_components/angular-ui-router/src/stateFilters.js +6 -2
  45. data/lib/api_browser/app/bower_components/angular-ui-router/src/templateFactory.js +2 -2
  46. data/lib/api_browser/app/bower_components/angular-ui-router/src/urlMatcherFactory.js +822 -97
  47. data/lib/api_browser/app/bower_components/angular-ui-router/src/urlRouter.js +274 -120
  48. data/lib/api_browser/app/bower_components/angular-ui-router/src/viewDirective.js +33 -20
  49. data/lib/api_browser/app/bower_components/angular-ui-router/src/viewScroll.js +1 -1
  50. data/lib/api_browser/app/bower_components/angular/.bower.json +5 -5
  51. data/lib/api_browser/app/bower_components/angular/README.md +2 -5
  52. data/lib/api_browser/app/bower_components/angular/angular-csp.css +5 -8
  53. data/lib/api_browser/app/bower_components/angular/angular.js +12975 -6996
  54. data/lib/api_browser/app/bower_components/angular/angular.min.js +285 -213
  55. data/lib/api_browser/app/bower_components/angular/angular.min.js.gzip +0 -0
  56. data/lib/api_browser/app/bower_components/angular/angular.min.js.map +3 -3
  57. data/lib/api_browser/app/bower_components/angular/bower.json +1 -1
  58. data/lib/api_browser/app/bower_components/angular/index.js +2 -0
  59. data/lib/api_browser/app/bower_components/angular/package.json +2 -2
  60. data/lib/api_browser/app/bower_components/bootstrap-sass/.bower.json +31 -16
  61. data/lib/api_browser/app/bower_components/bootstrap-sass/CHANGELOG.md +108 -0
  62. data/lib/api_browser/app/bower_components/bootstrap-sass/CONTRIBUTING.md +55 -37
  63. data/lib/api_browser/app/bower_components/bootstrap-sass/README.md +147 -206
  64. data/lib/api_browser/app/bower_components/bootstrap-sass/bower.json +19 -8
  65. data/lib/api_browser/app/bower_components/bootstrap-sass/{dist/fonts → vendor/assets/fonts/bootstrap}/glyphicons-halflings-regular.eot +0 -0
  66. data/lib/api_browser/app/bower_components/bootstrap-sass/{dist/fonts → vendor/assets/fonts/bootstrap}/glyphicons-halflings-regular.svg +0 -0
  67. data/lib/api_browser/app/bower_components/bootstrap-sass/{dist/fonts → vendor/assets/fonts/bootstrap}/glyphicons-halflings-regular.ttf +0 -0
  68. data/lib/api_browser/app/bower_components/bootstrap-sass/{dist/fonts → vendor/assets/fonts/bootstrap}/glyphicons-halflings-regular.woff +0 -0
  69. data/lib/api_browser/app/bower_components/bootstrap-sass/vendor/assets/javascripts/bootstrap.js +12 -0
  70. data/lib/api_browser/app/bower_components/bootstrap-sass/{js → vendor/assets/javascripts/bootstrap}/affix.js +1 -1
  71. data/lib/api_browser/app/bower_components/bootstrap-sass/{js → vendor/assets/javascripts/bootstrap}/alert.js +1 -1
  72. data/lib/api_browser/app/bower_components/bootstrap-sass/{js → vendor/assets/javascripts/bootstrap}/button.js +11 -5
  73. data/lib/api_browser/app/bower_components/bootstrap-sass/{js → vendor/assets/javascripts/bootstrap}/carousel.js +5 -5
  74. data/lib/api_browser/app/bower_components/bootstrap-sass/{js → vendor/assets/javascripts/bootstrap}/collapse.js +1 -1
  75. data/lib/api_browser/app/bower_components/bootstrap-sass/{js → vendor/assets/javascripts/bootstrap}/dropdown.js +5 -5
  76. data/lib/api_browser/app/bower_components/bootstrap-sass/{js → vendor/assets/javascripts/bootstrap}/modal.js +1 -1
  77. data/lib/api_browser/app/bower_components/bootstrap-sass/{js → vendor/assets/javascripts/bootstrap}/popover.js +1 -1
  78. data/lib/api_browser/app/bower_components/bootstrap-sass/{js → vendor/assets/javascripts/bootstrap}/scrollspy.js +2 -2
  79. data/lib/api_browser/app/bower_components/bootstrap-sass/{js → vendor/assets/javascripts/bootstrap}/tab.js +1 -1
  80. data/lib/api_browser/app/bower_components/bootstrap-sass/{js → vendor/assets/javascripts/bootstrap}/tooltip.js +1 -1
  81. data/lib/api_browser/app/bower_components/bootstrap-sass/{js → vendor/assets/javascripts/bootstrap}/transition.js +1 -1
  82. data/lib/api_browser/app/bower_components/bootstrap-sass/vendor/assets/stylesheets/bootstrap.scss +1 -0
  83. data/lib/api_browser/app/bower_components/bootstrap-sass/{lib → vendor/assets/stylesheets/bootstrap}/_alerts.scss +0 -0
  84. data/lib/api_browser/app/bower_components/bootstrap-sass/{lib → vendor/assets/stylesheets/bootstrap}/_badges.scss +6 -6
  85. data/lib/api_browser/app/bower_components/bootstrap-sass/{lib → vendor/assets/stylesheets/bootstrap}/_breadcrumbs.scss +0 -0
  86. data/lib/api_browser/app/bower_components/bootstrap-sass/{lib → vendor/assets/stylesheets/bootstrap}/_button-groups.scss +7 -33
  87. data/lib/api_browser/app/bower_components/bootstrap-sass/{lib → vendor/assets/stylesheets/bootstrap}/_buttons.scss +2 -5
  88. data/lib/api_browser/app/bower_components/bootstrap-sass/{lib → vendor/assets/stylesheets/bootstrap}/_carousel.scss +1 -0
  89. data/lib/api_browser/app/bower_components/bootstrap-sass/{lib → vendor/assets/stylesheets/bootstrap}/_close.scss +0 -0
  90. data/lib/api_browser/app/bower_components/bootstrap-sass/{lib → vendor/assets/stylesheets/bootstrap}/_code.scss +0 -0
  91. data/lib/api_browser/app/bower_components/bootstrap-sass/{lib → vendor/assets/stylesheets/bootstrap}/_component-animations.scss +0 -0
  92. data/lib/api_browser/app/bower_components/bootstrap-sass/{lib → vendor/assets/stylesheets/bootstrap}/_dropdowns.scss +3 -8
  93. data/lib/api_browser/app/bower_components/bootstrap-sass/{lib → vendor/assets/stylesheets/bootstrap}/_forms.scss +11 -0
  94. data/lib/api_browser/app/bower_components/bootstrap-sass/{lib → vendor/assets/stylesheets/bootstrap}/_glyphicons.scss +5 -5
  95. data/lib/api_browser/app/bower_components/bootstrap-sass/{lib → vendor/assets/stylesheets/bootstrap}/_grid.scss +12 -26
  96. data/lib/api_browser/app/bower_components/bootstrap-sass/{lib → vendor/assets/stylesheets/bootstrap}/_input-groups.scss +1 -1
  97. data/lib/api_browser/app/bower_components/bootstrap-sass/{lib → vendor/assets/stylesheets/bootstrap}/_jumbotron.scss +8 -2
  98. data/lib/api_browser/app/bower_components/bootstrap-sass/{lib → vendor/assets/stylesheets/bootstrap}/_labels.scss +6 -0
  99. data/lib/api_browser/app/bower_components/bootstrap-sass/{lib → vendor/assets/stylesheets/bootstrap}/_list-group.scss +0 -0
  100. data/lib/api_browser/app/bower_components/bootstrap-sass/{lib → vendor/assets/stylesheets/bootstrap}/_media.scss +0 -0
  101. data/lib/api_browser/app/bower_components/bootstrap-sass/{lib → vendor/assets/stylesheets/bootstrap}/_mixins.scss +38 -51
  102. data/lib/api_browser/app/bower_components/bootstrap-sass/{lib → vendor/assets/stylesheets/bootstrap}/_modals.scss +2 -5
  103. data/lib/api_browser/app/bower_components/bootstrap-sass/{lib → vendor/assets/stylesheets/bootstrap}/_navbar.scss +41 -53
  104. data/lib/api_browser/app/bower_components/bootstrap-sass/{lib → vendor/assets/stylesheets/bootstrap}/_navs.scss +0 -20
  105. data/lib/api_browser/app/bower_components/bootstrap-sass/{lib → vendor/assets/stylesheets/bootstrap}/_normalize.scss +0 -0
  106. data/lib/api_browser/app/bower_components/bootstrap-sass/{lib → vendor/assets/stylesheets/bootstrap}/_pager.scss +0 -0
  107. data/lib/api_browser/app/bower_components/bootstrap-sass/{lib → vendor/assets/stylesheets/bootstrap}/_pagination.scss +0 -0
  108. data/lib/api_browser/app/bower_components/bootstrap-sass/{lib → vendor/assets/stylesheets/bootstrap}/_panels.scss +11 -1
  109. data/lib/api_browser/app/bower_components/bootstrap-sass/{lib → vendor/assets/stylesheets/bootstrap}/_popovers.scss +0 -0
  110. data/lib/api_browser/app/bower_components/bootstrap-sass/{lib → vendor/assets/stylesheets/bootstrap}/_print.scss +0 -0
  111. data/lib/api_browser/app/bower_components/bootstrap-sass/{lib → vendor/assets/stylesheets/bootstrap}/_progress-bars.scss +0 -12
  112. data/lib/api_browser/app/bower_components/bootstrap-sass/{lib → vendor/assets/stylesheets/bootstrap}/_responsive-utilities.scss +0 -0
  113. data/lib/api_browser/app/bower_components/bootstrap-sass/{lib → vendor/assets/stylesheets/bootstrap}/_scaffolding.scss +0 -0
  114. data/lib/api_browser/app/bower_components/bootstrap-sass/{lib → vendor/assets/stylesheets/bootstrap}/_tables.scss +5 -18
  115. data/lib/api_browser/app/bower_components/bootstrap-sass/{lib → vendor/assets/stylesheets/bootstrap}/_theme.scss +2 -2
  116. data/lib/api_browser/app/bower_components/bootstrap-sass/{lib → vendor/assets/stylesheets/bootstrap}/_thumbnails.scss +9 -3
  117. data/lib/api_browser/app/bower_components/bootstrap-sass/{lib → vendor/assets/stylesheets/bootstrap}/_tooltip.scss +0 -0
  118. data/lib/api_browser/app/bower_components/bootstrap-sass/{lib → vendor/assets/stylesheets/bootstrap}/_type.scss +54 -52
  119. data/lib/api_browser/app/bower_components/bootstrap-sass/{lib → vendor/assets/stylesheets/bootstrap}/_utilities.scss +0 -0
  120. data/lib/api_browser/app/bower_components/bootstrap-sass/{lib → vendor/assets/stylesheets/bootstrap}/_variables.scss +20 -11
  121. data/lib/api_browser/app/bower_components/bootstrap-sass/{lib → vendor/assets/stylesheets/bootstrap}/_wells.scss +0 -0
  122. data/lib/api_browser/app/bower_components/bootstrap-sass/{lib → vendor/assets/stylesheets/bootstrap}/bootstrap.scss +0 -0
  123. data/lib/api_browser/app/bower_components/lodash/.bower.json +9 -13
  124. data/lib/api_browser/app/bower_components/lodash/LICENSE.txt +3 -3
  125. data/lib/api_browser/app/bower_components/lodash/bower.json +4 -7
  126. data/lib/api_browser/app/bower_components/lodash/lodash.js +12235 -0
  127. data/lib/api_browser/app/bower_components/lodash/lodash.min.js +98 -0
  128. data/lib/api_browser/app/index.html +0 -1
  129. data/lib/api_browser/app/js/app.js +2 -5
  130. data/lib/api_browser/app/js/controllers/action.js +21 -37
  131. data/lib/api_browser/app/js/controllers/controller.js +23 -1
  132. data/lib/api_browser/app/js/controllers/menu.js +46 -14
  133. data/lib/api_browser/app/js/controllers/type.js +2 -9
  134. data/lib/api_browser/app/js/directives/attribute_description.js +15 -5
  135. data/lib/api_browser/app/js/directives/attribute_table.js +6 -6
  136. data/lib/api_browser/app/js/directives/fixed_if_fits.js +20 -0
  137. data/lib/api_browser/app/js/directives/no_container.js +6 -6
  138. data/lib/api_browser/app/js/directives/type_placeholder.js +21 -0
  139. data/lib/api_browser/app/js/factories/Configuration.js +13 -0
  140. data/lib/api_browser/app/js/factories/Documentation.js +0 -3
  141. data/lib/api_browser/app/js/factories/normalize_attributes.js +19 -0
  142. data/lib/api_browser/app/js/factories/template_for.js +113 -0
  143. data/lib/api_browser/app/sass/modules/_body.scss +26 -4
  144. data/lib/api_browser/app/sass/modules/_sidebar.scss +68 -1
  145. data/lib/api_browser/app/sass/praxis.scss +1 -5
  146. data/lib/api_browser/app/sass/variables/_bootstrap-variables.scss +13 -4
  147. data/lib/api_browser/app/views/action.html +13 -17
  148. data/lib/api_browser/app/views/controller.html +32 -4
  149. data/lib/api_browser/app/views/directives/attribute_description.html +1 -1
  150. data/lib/api_browser/app/views/directives/attribute_description/{_default.html → default.html} +0 -0
  151. data/lib/api_browser/app/views/directives/attribute_description/example.html +13 -0
  152. data/lib/api_browser/app/views/directives/attribute_description/headers.html +8 -0
  153. data/lib/api_browser/app/views/directives/attribute_description/member_options.html +4 -0
  154. data/lib/api_browser/app/views/directives/attribute_description/values.html +14 -0
  155. data/lib/api_browser/app/views/directives/attribute_table.html +2 -2
  156. data/lib/api_browser/app/views/home.html +1 -3
  157. data/lib/api_browser/app/views/layout.html +3 -36
  158. data/lib/api_browser/app/views/menu.html +45 -0
  159. data/lib/api_browser/app/views/navbar.html +1 -1
  160. data/lib/api_browser/app/views/type.html +2 -2
  161. data/lib/api_browser/app/views/type/{_details.html → details.html} +6 -6
  162. data/lib/api_browser/app/views/types/embedded/default.html +10 -0
  163. data/lib/api_browser/app/views/types/embedded/links.html +11 -0
  164. data/lib/api_browser/app/views/types/embedded/struct.html +2 -0
  165. data/lib/api_browser/app/views/types/label/link.html +1 -0
  166. data/lib/api_browser/app/views/types/label/primitive.html +1 -0
  167. data/lib/api_browser/app/views/types/label/primitive_collection.html +1 -0
  168. data/lib/api_browser/app/views/types/label/type.html +1 -0
  169. data/lib/api_browser/app/views/types/label/type_collection.html +1 -0
  170. data/lib/api_browser/app/views/{directives/request_body/_default.html → types/standalone/default.html} +1 -1
  171. data/lib/api_browser/app/views/types/standalone/struct.html +1 -0
  172. data/lib/api_browser/bower.json +9 -9
  173. data/lib/api_browser/package.json +1 -1
  174. data/lib/praxis.rb +10 -4
  175. data/lib/praxis/action_definition.rb +16 -4
  176. data/lib/praxis/action_definition/headers_dsl_compiler.rb +5 -2
  177. data/lib/praxis/api_definition.rb +3 -1
  178. data/lib/praxis/api_general_info.rb +49 -5
  179. data/lib/praxis/application.rb +12 -4
  180. data/lib/praxis/bootloader.rb +1 -0
  181. data/lib/praxis/bootloader_stages/environment.rb +2 -0
  182. data/lib/praxis/bootloader_stages/routing.rb +1 -1
  183. data/lib/praxis/bootloader_stages/subgroup_loader.rb +1 -0
  184. data/lib/praxis/exceptions/validation.rb +7 -0
  185. data/lib/praxis/handlers/plain.rb +16 -0
  186. data/lib/praxis/handlers/xml.rb +4 -4
  187. data/lib/praxis/links.rb +13 -3
  188. data/lib/praxis/media_type_identifier.rb +3 -0
  189. data/lib/praxis/multipart/parser.rb +41 -48
  190. data/lib/praxis/multipart/part.rb +196 -3
  191. data/lib/praxis/request.rb +14 -11
  192. data/lib/praxis/request_stages/request_stage.rb +4 -0
  193. data/lib/praxis/request_stages/response.rb +10 -9
  194. data/lib/praxis/request_stages/validate.rb +1 -7
  195. data/lib/praxis/request_stages/validate_params_and_headers.rb +30 -5
  196. data/lib/praxis/request_stages/validate_payload.rb +14 -5
  197. data/lib/praxis/resource_definition.rb +117 -15
  198. data/lib/praxis/response.rb +6 -5
  199. data/lib/praxis/response_definition.rb +51 -5
  200. data/lib/praxis/responses/http.rb +5 -0
  201. data/lib/praxis/responses/multipart_ok.rb +51 -0
  202. data/lib/praxis/responses/validation_error.rb +7 -7
  203. data/lib/praxis/restful_doc_generator.rb +9 -4
  204. data/lib/praxis/route.rb +3 -2
  205. data/lib/praxis/router.rb +26 -16
  206. data/lib/praxis/router/rack.rb +51 -0
  207. data/lib/praxis/router/simple.rb +146 -0
  208. data/lib/praxis/routing_config.rb +2 -2
  209. data/lib/praxis/trait.rb +1 -1
  210. data/lib/praxis/types/fuzzy_hash.rb +49 -0
  211. data/lib/praxis/types/media_type_common.rb +1 -1
  212. data/lib/praxis/types/multipart.rb +47 -12
  213. data/lib/praxis/types/multipart_array.rb +320 -0
  214. data/lib/praxis/types/multipart_array/part_definition.rb +52 -0
  215. data/lib/praxis/validation_handler.rb +10 -0
  216. data/lib/praxis/version.rb +2 -2
  217. data/praxis.gemspec +3 -3
  218. data/spec/api_browser/directives/type_placeholder_spec.js +134 -0
  219. data/spec/api_browser/factories/normalize_attributes_spec.js +97 -0
  220. data/spec/api_browser/factories/template_for_spec.js +67 -0
  221. data/spec/functional_spec.rb +111 -45
  222. data/spec/praxis/action_definition_spec.rb +31 -7
  223. data/spec/praxis/api_definition_spec.rb +2 -2
  224. data/spec/praxis/api_general_info_spec.rb +25 -0
  225. data/spec/praxis/application_spec.rb +24 -11
  226. data/spec/praxis/handlers/xml_spec.rb +55 -33
  227. data/spec/praxis/links_spec.rb +18 -1
  228. data/spec/praxis/media_type_collection_spec.rb +1 -1
  229. data/spec/praxis/media_type_spec.rb +2 -2
  230. data/spec/praxis/multipart/parser_spec.rb +21 -13
  231. data/spec/praxis/plugins/praxis_mapper_plugin_spec.rb +1 -1
  232. data/spec/praxis/request_spec.rb +52 -24
  233. data/spec/praxis/{request_stages_action_spec.rb → request_stages/action_spec.rb} +1 -1
  234. data/spec/praxis/{request_stage_spec.rb → request_stages/request_stage_spec.rb} +0 -0
  235. data/spec/praxis/{request_stages_validate_spec.rb → request_stages/validate_spec.rb} +1 -1
  236. data/spec/praxis/resource_definition_spec.rb +30 -4
  237. data/spec/praxis/response_definition_spec.rb +60 -19
  238. data/spec/praxis/response_spec.rb +2 -2
  239. data/spec/praxis/responses/validation_error_spec.rb +33 -16
  240. data/spec/praxis/route_spec.rb +4 -2
  241. data/spec/praxis/router_spec.rb +28 -12
  242. data/spec/praxis/routing_config_spec.rb +11 -5
  243. data/spec/praxis/types/collection_spec.rb +1 -1
  244. data/spec/praxis/types/fuzzy_hash_spec.rb +20 -0
  245. data/spec/praxis/types/multipart_array/part_definition_spec.rb +5 -0
  246. data/spec/praxis/types/multipart_array_spec.rb +334 -0
  247. data/spec/praxis/types/multipart_spec.rb +14 -5
  248. data/spec/spec_app/app/controllers/instances.rb +20 -10
  249. data/spec/spec_app/app/controllers/volumes.rb +8 -4
  250. data/spec/spec_app/app/responses/bulk_response.rb +0 -6
  251. data/spec/spec_app/config/environment.rb +13 -0
  252. data/spec/spec_app/design/api.rb +7 -10
  253. data/spec/spec_app/design/media_types/instance.rb +3 -1
  254. data/spec/spec_app/design/resources/instances.rb +50 -41
  255. data/spec/spec_app/design/resources/volume_snapshots.rb +39 -0
  256. data/spec/spec_app/design/resources/volumes.rb +11 -6
  257. data/spec/spec_helper.rb +3 -1
  258. metadata +125 -218
  259. data/lib/api_browser/app/bower_components/angular-ui-router/src/compat.js +0 -146
  260. data/lib/api_browser/app/bower_components/bootstrap-sass/CNAME +0 -1
  261. data/lib/api_browser/app/bower_components/bootstrap-sass/DOCS-LICENSE +0 -319
  262. data/lib/api_browser/app/bower_components/bootstrap-sass/Gemfile +0 -5
  263. data/lib/api_browser/app/bower_components/bootstrap-sass/Gemfile.lock +0 -14
  264. data/lib/api_browser/app/bower_components/bootstrap-sass/Gruntfile.js +0 -244
  265. data/lib/api_browser/app/bower_components/bootstrap-sass/LICENSE +0 -176
  266. data/lib/api_browser/app/bower_components/bootstrap-sass/LICENSE-MIT +0 -21
  267. data/lib/api_browser/app/bower_components/bootstrap-sass/Rakefile +0 -44
  268. data/lib/api_browser/app/bower_components/bootstrap-sass/_config.yml +0 -25
  269. data/lib/api_browser/app/bower_components/bootstrap-sass/_includes/ads.html +0 -1
  270. data/lib/api_browser/app/bower_components/bootstrap-sass/_includes/footer.html +0 -34
  271. data/lib/api_browser/app/bower_components/bootstrap-sass/_includes/header.html +0 -42
  272. data/lib/api_browser/app/bower_components/bootstrap-sass/_includes/nav-about.html +0 -12
  273. data/lib/api_browser/app/bower_components/bootstrap-sass/_includes/nav-components.html +0 -137
  274. data/lib/api_browser/app/bower_components/bootstrap-sass/_includes/nav-css.html +0 -99
  275. data/lib/api_browser/app/bower_components/bootstrap-sass/_includes/nav-customize.html +0 -40
  276. data/lib/api_browser/app/bower_components/bootstrap-sass/_includes/nav-getting-started.html +0 -44
  277. data/lib/api_browser/app/bower_components/bootstrap-sass/_includes/nav-javascript.html +0 -88
  278. data/lib/api_browser/app/bower_components/bootstrap-sass/_includes/nav-main.html +0 -37
  279. data/lib/api_browser/app/bower_components/bootstrap-sass/_includes/old-bs-docs.html +0 -8
  280. data/lib/api_browser/app/bower_components/bootstrap-sass/_includes/social-buttons.html +0 -16
  281. data/lib/api_browser/app/bower_components/bootstrap-sass/_layouts/default.html +0 -79
  282. data/lib/api_browser/app/bower_components/bootstrap-sass/_layouts/home.html +0 -47
  283. data/lib/api_browser/app/bower_components/bootstrap-sass/about.html +0 -93
  284. data/lib/api_browser/app/bower_components/bootstrap-sass/browserstack.json +0 -37
  285. data/lib/api_browser/app/bower_components/bootstrap-sass/components.html +0 -3689
  286. data/lib/api_browser/app/bower_components/bootstrap-sass/composer.json +0 -28
  287. data/lib/api_browser/app/bower_components/bootstrap-sass/css.html +0 -2674
  288. data/lib/api_browser/app/bower_components/bootstrap-sass/customize.html +0 -1715
  289. data/lib/api_browser/app/bower_components/bootstrap-sass/dist/css/bootstrap-theme.css +0 -427
  290. data/lib/api_browser/app/bower_components/bootstrap-sass/dist/css/bootstrap-theme.min.css +0 -1
  291. data/lib/api_browser/app/bower_components/bootstrap-sass/dist/css/bootstrap.css +0 -6350
  292. data/lib/api_browser/app/bower_components/bootstrap-sass/dist/css/bootstrap.min.css +0 -1
  293. data/lib/api_browser/app/bower_components/bootstrap-sass/dist/js/bootstrap.js +0 -2002
  294. data/lib/api_browser/app/bower_components/bootstrap-sass/dist/js/bootstrap.min.js +0 -9
  295. data/lib/api_browser/app/bower_components/bootstrap-sass/docs-assets/css/docs.css +0 -1195
  296. data/lib/api_browser/app/bower_components/bootstrap-sass/docs-assets/css/pygments-manni.css +0 -66
  297. data/lib/api_browser/app/bower_components/bootstrap-sass/docs-assets/ico/apple-touch-icon-144-precomposed.png +0 -0
  298. data/lib/api_browser/app/bower_components/bootstrap-sass/docs-assets/ico/favicon.png +0 -0
  299. data/lib/api_browser/app/bower_components/bootstrap-sass/docs-assets/js/application.js +0 -103
  300. data/lib/api_browser/app/bower_components/bootstrap-sass/docs-assets/js/customizer.js +0 -332
  301. data/lib/api_browser/app/bower_components/bootstrap-sass/docs-assets/js/filesaver.js +0 -169
  302. data/lib/api_browser/app/bower_components/bootstrap-sass/docs-assets/js/holder.js +0 -404
  303. data/lib/api_browser/app/bower_components/bootstrap-sass/docs-assets/js/ie8-responsive-file-warning.js +0 -12
  304. data/lib/api_browser/app/bower_components/bootstrap-sass/docs-assets/js/jszip.js +0 -1467
  305. data/lib/api_browser/app/bower_components/bootstrap-sass/docs-assets/js/less.js +0 -9
  306. data/lib/api_browser/app/bower_components/bootstrap-sass/docs-assets/js/raw-files.js +0 -3
  307. data/lib/api_browser/app/bower_components/bootstrap-sass/docs-assets/js/uglify.js +0 -14
  308. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/carousel/carousel.css +0 -148
  309. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/carousel/index.html +0 -206
  310. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/grid/grid.css +0 -28
  311. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/grid/index.html +0 -148
  312. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/jumbotron-narrow/index.html +0 -82
  313. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/jumbotron-narrow/jumbotron-narrow.css +0 -79
  314. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/jumbotron/index.html +0 -99
  315. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/jumbotron/jumbotron.css +0 -5
  316. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/justified-nav/index.html +0 -83
  317. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/justified-nav/justified-nav.css +0 -88
  318. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/navbar-fixed-top/index.html +0 -91
  319. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/navbar-fixed-top/navbar-fixed-top.css +0 -4
  320. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/navbar-static-top/index.html +0 -92
  321. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/navbar-static-top/navbar-static-top.css +0 -7
  322. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/navbar/index.html +0 -88
  323. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/navbar/navbar.css +0 -8
  324. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/non-responsive/index.html +0 -101
  325. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/non-responsive/non-responsive.css +0 -116
  326. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/offcanvas/index.html +0 -130
  327. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/offcanvas/offcanvas.css +0 -50
  328. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/offcanvas/offcanvas.js +0 -5
  329. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/screenshots/carousel.jpg +0 -0
  330. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/screenshots/grid.jpg +0 -0
  331. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/screenshots/jumbotron-narrow.jpg +0 -0
  332. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/screenshots/jumbotron.jpg +0 -0
  333. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/screenshots/justified-nav.jpg +0 -0
  334. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/screenshots/navbar-fixed.jpg +0 -0
  335. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/screenshots/navbar-static.jpg +0 -0
  336. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/screenshots/navbar.jpg +0 -0
  337. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/screenshots/non-responsive.jpg +0 -0
  338. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/screenshots/offcanvas.jpg +0 -0
  339. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/screenshots/sign-in.jpg +0 -0
  340. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/screenshots/starter-template.jpg +0 -0
  341. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/screenshots/sticky-footer-navbar.jpg +0 -0
  342. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/screenshots/sticky-footer.jpg +0 -0
  343. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/screenshots/theme.jpg +0 -0
  344. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/signin/index.html +0 -50
  345. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/signin/signin.css +0 -40
  346. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/starter-template/index.html +0 -68
  347. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/starter-template/starter-template.css +0 -7
  348. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/sticky-footer-navbar/index.html +0 -91
  349. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/sticky-footer-navbar/sticky-footer-navbar.css +0 -45
  350. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/sticky-footer/index.html +0 -55
  351. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/sticky-footer/sticky-footer.css +0 -38
  352. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/theme/index.html +0 -384
  353. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/theme/theme.css +0 -14
  354. data/lib/api_browser/app/bower_components/bootstrap-sass/fonts/glyphicons-halflings-regular.eot +0 -0
  355. data/lib/api_browser/app/bower_components/bootstrap-sass/fonts/glyphicons-halflings-regular.svg +0 -229
  356. data/lib/api_browser/app/bower_components/bootstrap-sass/fonts/glyphicons-halflings-regular.ttf +0 -0
  357. data/lib/api_browser/app/bower_components/bootstrap-sass/fonts/glyphicons-halflings-regular.woff +0 -0
  358. data/lib/api_browser/app/bower_components/bootstrap-sass/getting-started.html +0 -1021
  359. data/lib/api_browser/app/bower_components/bootstrap-sass/index.html +0 -16
  360. data/lib/api_browser/app/bower_components/bootstrap-sass/javascript.html +0 -1983
  361. data/lib/api_browser/app/bower_components/bootstrap-sass/js/tests/index.html +0 -52
  362. data/lib/api_browser/app/bower_components/bootstrap-sass/js/tests/unit/affix.js +0 -25
  363. data/lib/api_browser/app/bower_components/bootstrap-sass/js/tests/unit/alert.js +0 -62
  364. data/lib/api_browser/app/bower_components/bootstrap-sass/js/tests/unit/button.js +0 -116
  365. data/lib/api_browser/app/bower_components/bootstrap-sass/js/tests/unit/carousel.js +0 -87
  366. data/lib/api_browser/app/bower_components/bootstrap-sass/js/tests/unit/collapse.js +0 -164
  367. data/lib/api_browser/app/bower_components/bootstrap-sass/js/tests/unit/dropdown.js +0 -219
  368. data/lib/api_browser/app/bower_components/bootstrap-sass/js/tests/unit/modal.js +0 -196
  369. data/lib/api_browser/app/bower_components/bootstrap-sass/js/tests/unit/phantom.js +0 -69
  370. data/lib/api_browser/app/bower_components/bootstrap-sass/js/tests/unit/popover.js +0 -133
  371. data/lib/api_browser/app/bower_components/bootstrap-sass/js/tests/unit/scrollspy.js +0 -37
  372. data/lib/api_browser/app/bower_components/bootstrap-sass/js/tests/unit/tab.js +0 -86
  373. data/lib/api_browser/app/bower_components/bootstrap-sass/js/tests/unit/tooltip.js +0 -437
  374. data/lib/api_browser/app/bower_components/bootstrap-sass/js/tests/unit/transition.js +0 -13
  375. data/lib/api_browser/app/bower_components/bootstrap-sass/js/tests/vendor/jquery.js +0 -6
  376. data/lib/api_browser/app/bower_components/bootstrap-sass/js/tests/vendor/qunit.css +0 -232
  377. data/lib/api_browser/app/bower_components/bootstrap-sass/js/tests/vendor/qunit.js +0 -1510
  378. data/lib/api_browser/app/bower_components/bootstrap-sass/package.json +0 -40
  379. data/lib/api_browser/app/bower_components/lodash/dist/lodash.compat.js +0 -7157
  380. data/lib/api_browser/app/bower_components/lodash/dist/lodash.compat.min.js +0 -61
  381. data/lib/api_browser/app/bower_components/lodash/dist/lodash.js +0 -6785
  382. data/lib/api_browser/app/bower_components/lodash/dist/lodash.min.js +0 -56
  383. data/lib/api_browser/app/bower_components/lodash/dist/lodash.underscore.js +0 -4979
  384. data/lib/api_browser/app/bower_components/lodash/dist/lodash.underscore.min.js +0 -39
  385. data/lib/api_browser/app/js/directives/attribute_table_row.js +0 -17
  386. data/lib/api_browser/app/js/directives/request_body.js +0 -25
  387. data/lib/api_browser/app/js/directives/request_headers.js +0 -17
  388. data/lib/api_browser/app/js/directives/request_parameters.js +0 -17
  389. data/lib/api_browser/app/js/directives/type_label.js +0 -52
  390. data/lib/api_browser/app/js/factories/PayloadTemplates.js +0 -10
  391. data/lib/api_browser/app/js/factories/TemplateProvider.js +0 -45
  392. data/lib/api_browser/app/js/factories/TypeTemplates.js +0 -11
  393. data/lib/api_browser/app/views/directives/attribute_description/_example.html +0 -13
  394. data/lib/api_browser/app/views/directives/attribute_description/_headers.html +0 -8
  395. data/lib/api_browser/app/views/directives/attribute_table_row/_default.html +0 -10
  396. data/lib/api_browser/app/views/directives/attribute_table_row/_links.html +0 -11
  397. data/lib/api_browser/app/views/directives/attribute_table_row/_struct.html +0 -2
  398. data/lib/api_browser/app/views/directives/request_body/_struct.html +0 -1
  399. data/lib/api_browser/app/views/resource/_actions.html +0 -27
@@ -1,66 +0,0 @@
1
- .hll { background-color: #ffffcc }
2
- /*{ background: #f0f3f3; }*/
3
- .c { color: #999; } /* Comment */
4
- .err { color: #AA0000; background-color: #FFAAAA } /* Error */
5
- .k { color: #006699; } /* Keyword */
6
- .o { color: #555555 } /* Operator */
7
- .cm { color: #0099FF; font-style: italic } /* Comment.Multiline */
8
- .cp { color: #009999 } /* Comment.Preproc */
9
- .c1 { color: #999; } /* Comment.Single */
10
- .cs { color: #999; } /* Comment.Special */
11
- .gd { background-color: #FFCCCC; border: 1px solid #CC0000 } /* Generic.Deleted */
12
- .ge { font-style: italic } /* Generic.Emph */
13
- .gr { color: #FF0000 } /* Generic.Error */
14
- .gh { color: #003300; } /* Generic.Heading */
15
- .gi { background-color: #CCFFCC; border: 1px solid #00CC00 } /* Generic.Inserted */
16
- .go { color: #AAAAAA } /* Generic.Output */
17
- .gp { color: #000099; } /* Generic.Prompt */
18
- .gs { } /* Generic.Strong */
19
- .gu { color: #003300; } /* Generic.Subheading */
20
- .gt { color: #99CC66 } /* Generic.Traceback */
21
- .kc { color: #006699; } /* Keyword.Constant */
22
- .kd { color: #006699; } /* Keyword.Declaration */
23
- .kn { color: #006699; } /* Keyword.Namespace */
24
- .kp { color: #006699 } /* Keyword.Pseudo */
25
- .kr { color: #006699; } /* Keyword.Reserved */
26
- .kt { color: #007788; } /* Keyword.Type */
27
- .m { color: #FF6600 } /* Literal.Number */
28
- .s { color: #d44950 } /* Literal.String */
29
- .na { color: #4f9fcf } /* Name.Attribute */
30
- .nb { color: #336666 } /* Name.Builtin */
31
- .nc { color: #00AA88; } /* Name.Class */
32
- .no { color: #336600 } /* Name.Constant */
33
- .nd { color: #9999FF } /* Name.Decorator */
34
- .ni { color: #999999; } /* Name.Entity */
35
- .ne { color: #CC0000; } /* Name.Exception */
36
- .nf { color: #CC00FF } /* Name.Function */
37
- .nl { color: #9999FF } /* Name.Label */
38
- .nn { color: #00CCFF; } /* Name.Namespace */
39
- .nt { color: #2f6f9f; } /* Name.Tag */
40
- .nv { color: #003333 } /* Name.Variable */
41
- .ow { color: #000000; } /* Operator.Word */
42
- .w { color: #bbbbbb } /* Text.Whitespace */
43
- .mf { color: #FF6600 } /* Literal.Number.Float */
44
- .mh { color: #FF6600 } /* Literal.Number.Hex */
45
- .mi { color: #FF6600 } /* Literal.Number.Integer */
46
- .mo { color: #FF6600 } /* Literal.Number.Oct */
47
- .sb { color: #CC3300 } /* Literal.String.Backtick */
48
- .sc { color: #CC3300 } /* Literal.String.Char */
49
- .sd { color: #CC3300; font-style: italic } /* Literal.String.Doc */
50
- .s2 { color: #CC3300 } /* Literal.String.Double */
51
- .se { color: #CC3300; } /* Literal.String.Escape */
52
- .sh { color: #CC3300 } /* Literal.String.Heredoc */
53
- .si { color: #AA0000 } /* Literal.String.Interpol */
54
- .sx { color: #CC3300 } /* Literal.String.Other */
55
- .sr { color: #33AAAA } /* Literal.String.Regex */
56
- .s1 { color: #CC3300 } /* Literal.String.Single */
57
- .ss { color: #FFCC33 } /* Literal.String.Symbol */
58
- .bp { color: #336666 } /* Name.Builtin.Pseudo */
59
- .vc { color: #003333 } /* Name.Variable.Class */
60
- .vg { color: #003333 } /* Name.Variable.Global */
61
- .vi { color: #003333 } /* Name.Variable.Instance */
62
- .il { color: #FF6600 } /* Literal.Number.Integer.Long */
63
-
64
- .css .o,
65
- .css .o + .nt,
66
- .css .nt + .nt { color: #999; }
@@ -1,103 +0,0 @@
1
- // NOTICE!! DO NOT USE ANY OF THIS JAVASCRIPT
2
- // IT'S ALL JUST JUNK FOR OUR DOCS!
3
- // ++++++++++++++++++++++++++++++++++++++++++
4
-
5
- /*!
6
- * Copyright 2013 Twitter, Inc.
7
- *
8
- * Licensed under the Creative Commons Attribution 3.0 Unported License. For
9
- * details, see http://creativecommons.org/licenses/by/3.0/.
10
- */
11
-
12
-
13
- !function ($) {
14
-
15
- $(function(){
16
-
17
- // IE10 viewport hack for Surface/desktop Windows 8 bug
18
- //
19
- // See Getting Started docs for more information
20
- if (navigator.userAgent.match(/IEMobile\/10\.0/)) {
21
- var msViewportStyle = document.createElement("style");
22
- msViewportStyle.appendChild(
23
- document.createTextNode(
24
- "@-ms-viewport{width:auto!important}"
25
- )
26
- );
27
- document.getElementsByTagName("head")[0].
28
- appendChild(msViewportStyle);
29
- }
30
-
31
-
32
- var $window = $(window)
33
- var $body = $(document.body)
34
-
35
- var navHeight = $('.navbar').outerHeight(true) + 10
36
-
37
- $body.scrollspy({
38
- target: '.bs-sidebar',
39
- offset: navHeight
40
- })
41
-
42
- $window.on('load', function () {
43
- $body.scrollspy('refresh')
44
- })
45
-
46
- $('.bs-docs-container [href=#]').click(function (e) {
47
- e.preventDefault()
48
- })
49
-
50
- // back to top
51
- setTimeout(function () {
52
- var $sideBar = $('.bs-sidebar')
53
-
54
- $sideBar.affix({
55
- offset: {
56
- top: function () {
57
- var offsetTop = $sideBar.offset().top
58
- var sideBarMargin = parseInt($sideBar.children(0).css('margin-top'), 10)
59
- var navOuterHeight = $('.bs-docs-nav').height()
60
-
61
- return (this.top = offsetTop - navOuterHeight - sideBarMargin)
62
- }
63
- , bottom: function () {
64
- return (this.bottom = $('.bs-footer').outerHeight(true))
65
- }
66
- }
67
- })
68
- }, 100)
69
-
70
- setTimeout(function () {
71
- $('.bs-top').affix()
72
- }, 100)
73
-
74
- // tooltip demo
75
- $('.tooltip-demo').tooltip({
76
- selector: "[data-toggle=tooltip]",
77
- container: "body"
78
- })
79
-
80
- $('.tooltip-test').tooltip()
81
- $('.popover-test').popover()
82
-
83
- $('.bs-docs-navbar').tooltip({
84
- selector: "a[data-toggle=tooltip]",
85
- container: ".bs-docs-navbar .nav"
86
- })
87
-
88
- // popover demo
89
- $("[data-toggle=popover]")
90
- .popover()
91
-
92
- // button state demo
93
- $('#fat-btn')
94
- .click(function () {
95
- var btn = $(this)
96
- btn.button('loading')
97
- setTimeout(function () {
98
- btn.button('reset')
99
- }, 3000)
100
- })
101
- })
102
-
103
- }(window.jQuery)
@@ -1,332 +0,0 @@
1
- /*!
2
- * Copyright 2013 Twitter, Inc.
3
- *
4
- * Licensed under the Creative Commons Attribution 3.0 Unported License. For
5
- * details, see http://creativecommons.org/licenses/by/3.0/.
6
- */
7
-
8
-
9
- window.onload = function () { // wait for load in a dumb way because B-0
10
- var cw = '/*!\n * Bootstrap v3.0.2\n *\n * Copyright 2013 Twitter, Inc\n * Licensed under the Apache License v2.0\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Designed and built with all the love in the world @twitter by @mdo and @fat.\n */\n\n'
11
-
12
- function showError(msg, err) {
13
- $('<div id="bsCustomizerAlert" class="bs-customizer-alert">\
14
- <div class="container">\
15
- <a href="#bsCustomizerAlert" data-dismiss="alert" class="close pull-right">&times;</a>\
16
- <p class="bs-customizer-alert-text"><span class="glyphicon glyphicon-warning-sign"></span>' + msg + '</p>' +
17
- (err.extract ? '<pre class="bs-customizer-alert-extract">' + err.extract.join('\n') + '</pre>' : '') + '\
18
- </div>\
19
- </div>').appendTo('body').alert()
20
- throw err
21
- }
22
-
23
- function showCallout(msg, showUpTop) {
24
- var callout = $('<div class="bs-callout bs-callout-danger">\
25
- <h4>Attention!</h4>\
26
- <p>' + msg + '</p>\
27
- </div>')
28
-
29
- if (showUpTop) {
30
- callout.appendTo('.bs-docs-container')
31
- } else {
32
- callout.insertAfter('.bs-customize-download')
33
- }
34
- }
35
-
36
- function getQueryParam(key) {
37
- key = key.replace(/[*+?^$.\[\]{}()|\\\/]/g, "\\$&"); // escape RegEx meta chars
38
- var match = location.search.match(new RegExp("[?&]"+key+"=([^&]+)(&|$)"));
39
- return match && decodeURIComponent(match[1].replace(/\+/g, " "));
40
- }
41
-
42
- function createGist(configJson) {
43
- var data = {
44
- "description": "Bootstrap Customizer Config",
45
- "public": true,
46
- "files": {
47
- "config.json": {
48
- "content": configJson
49
- }
50
- }
51
- }
52
- $.ajax({
53
- url: 'https://api.github.com/gists',
54
- type: 'POST',
55
- dataType: 'json',
56
- data: JSON.stringify(data)
57
- })
58
- .success(function(result) {
59
- var origin = window.location.protocol + "//" + window.location.host
60
- history.replaceState(false, document.title, origin + window.location.pathname + '?id=' + result.id)
61
- })
62
- .error(function(err) {
63
- showError('<strong>Ruh roh!</strong> Could not save gist file, configuration not saved.', err)
64
- })
65
- }
66
-
67
- function getCustomizerData() {
68
- var vars = {}
69
-
70
- $('#less-variables-section input')
71
- .each(function () {
72
- $(this).val() && (vars[ $(this).prev().text() ] = $(this).val())
73
- })
74
-
75
- var data = {
76
- vars: vars,
77
- css: $('#less-section input:checked') .map(function () { return this.value }).toArray(),
78
- js: $('#plugin-section input:checked').map(function () { return this.value }).toArray()
79
- }
80
-
81
- if ($.isEmptyObject(data.vars) && !data.css.length && !data.js.length) return
82
-
83
- return data
84
- }
85
-
86
- function parseUrl() {
87
- var id = getQueryParam('id')
88
-
89
- if (!id) return
90
-
91
- $.ajax({
92
- url: 'https://api.github.com/gists/' + id,
93
- type: 'GET',
94
- dataType: 'json'
95
- })
96
- .success(function(result) {
97
- var data = JSON.parse(result.files['config.json'].content)
98
- if (data.js) {
99
- $('#plugin-section input').each(function () {
100
- $(this).prop('checked', ~$.inArray(this.value, data.js))
101
- })
102
- }
103
- if (data.css) {
104
- $('#less-section input').each(function () {
105
- $(this).prop('checked', ~$.inArray(this.value, data.css))
106
- })
107
- }
108
- if (data.vars) {
109
- for (var i in data.vars) {
110
- $('input[data-var="' + i + '"]').val(data.vars[i])
111
- }
112
- }
113
- })
114
- .error(function(err) {
115
- showError('Error fetching bootstrap config file', err)
116
- })
117
- }
118
-
119
- function generateZip(css, js, fonts, config, complete) {
120
- if (!css && !js) return showError('<strong>Ruh roh!</strong> No Bootstrap files selected.', new Error('no Bootstrap'))
121
-
122
- var zip = new JSZip()
123
-
124
- if (css) {
125
- var cssFolder = zip.folder('css')
126
- for (var fileName in css) {
127
- cssFolder.file(fileName, css[fileName])
128
- }
129
- }
130
-
131
- if (js) {
132
- var jsFolder = zip.folder('js')
133
- for (var fileName in js) {
134
- jsFolder.file(fileName, js[fileName])
135
- }
136
- }
137
-
138
- if (fonts) {
139
- var fontsFolder = zip.folder('fonts')
140
- for (var fileName in fonts) {
141
- fontsFolder.file(fileName, fonts[fileName], {base64: true})
142
- }
143
- }
144
-
145
- if (config) {
146
- zip.file('config.json', config)
147
- }
148
-
149
- var content = zip.generate({type:"blob"})
150
-
151
- complete(content)
152
- }
153
-
154
- function generateCustomCSS(vars) {
155
- var result = ''
156
-
157
- for (var key in vars) {
158
- result += key + ': ' + vars[key] + ';\n'
159
- }
160
-
161
- return result + '\n\n'
162
- }
163
-
164
- function generateFonts() {
165
- var glyphicons = $('#less-section [value="glyphicons.less"]:checked')
166
- if (glyphicons.length) {
167
- return __fonts
168
- }
169
- }
170
-
171
- // Returns an Array of @import'd filenames from 'bootstrap.less' in the order
172
- // in which they appear in the file.
173
- function bootstrapLessFilenames() {
174
- var IMPORT_REGEX = /^@import \"(.*?)\";$/
175
- var bootstrapLessLines = __less['bootstrap.less'].split('\n')
176
-
177
- for (var i = 0, imports = []; i < bootstrapLessLines.length; i++) {
178
- var match = IMPORT_REGEX.exec(bootstrapLessLines[i])
179
- if (match) imports.push(match[1])
180
- }
181
-
182
- return imports
183
- }
184
-
185
- function generateCSS() {
186
- var oneChecked = false
187
- var lessFileIncludes = {}
188
- $('#less-section input').each(function() {
189
- var $this = $(this)
190
- var checked = $this.is(':checked')
191
- lessFileIncludes[$this.val()] = checked
192
-
193
- oneChecked = oneChecked || checked
194
- })
195
-
196
- if (!oneChecked) return false
197
-
198
- var result = {}
199
- var vars = {}
200
- var css = ''
201
-
202
- $('#less-variables-section input')
203
- .each(function () {
204
- $(this).val() && (vars[ $(this).prev().text() ] = $(this).val())
205
- })
206
-
207
- $.each(bootstrapLessFilenames(), function(index, filename) {
208
- var fileInclude = lessFileIncludes[filename]
209
-
210
- // Files not explicitly unchecked are compiled into the final stylesheet.
211
- // Core stylesheets like 'normalize.less' are not included in the form
212
- // since disabling them would wreck everything, and so their 'fileInclude'
213
- // will be 'undefined'.
214
- if (fileInclude || (fileInclude == null)) css += __less[filename]
215
-
216
- // Custom variables are added after Bootstrap variables so the custom
217
- // ones take precedence.
218
- if (('variables.less' === filename) && vars) css += generateCustomCSS(vars)
219
- })
220
-
221
- css = css.replace(/@import[^\n]*/gi, '') //strip any imports
222
-
223
- try {
224
- var parser = new less.Parser({
225
- paths: ['variables.less', 'mixins.less']
226
- , optimization: 0
227
- , filename: 'bootstrap.css'
228
- }).parse(css, function (err, tree) {
229
- if (err) {
230
- return showError('<strong>Ruh roh!</strong> Could not parse less files.', err)
231
- }
232
- result = {
233
- 'bootstrap.css' : cw + tree.toCSS(),
234
- 'bootstrap.min.css' : cw + tree.toCSS({ compress: true })
235
- }
236
- })
237
- } catch (err) {
238
- return showError('<strong>Ruh roh!</strong> Could not parse less files.', err)
239
- }
240
-
241
- return result
242
- }
243
-
244
- function generateJavascript() {
245
- var $checked = $('#plugin-section input:checked')
246
- if (!$checked.length) return false
247
-
248
- var js = $checked
249
- .map(function () { return __js[this.value] })
250
- .toArray()
251
- .join('\n')
252
-
253
- return {
254
- 'bootstrap.js': js,
255
- 'bootstrap.min.js': cw + uglify(js)
256
- }
257
- }
258
-
259
- var inputsComponent = $('#less-section input')
260
- var inputsPlugin = $('#plugin-section input')
261
- var inputsVariables = $('#less-variables-section input')
262
-
263
- $('#less-section .toggle').on('click', function (e) {
264
- e.preventDefault()
265
- inputsComponent.prop('checked', !inputsComponent.is(':checked'))
266
- })
267
-
268
- $('#plugin-section .toggle').on('click', function (e) {
269
- e.preventDefault()
270
- inputsPlugin.prop('checked', !inputsPlugin.is(':checked'))
271
- })
272
-
273
- $('#less-variables-section .toggle').on('click', function (e) {
274
- e.preventDefault()
275
- inputsVariables.val('')
276
- })
277
-
278
- $('[data-dependencies]').on('click', function () {
279
- if (!$(this).is(':checked')) return
280
- var dependencies = this.getAttribute('data-dependencies')
281
- if (!dependencies) return
282
- dependencies = dependencies.split(',')
283
- for (var i = 0; i < dependencies.length; i++) {
284
- var dependency = $('[value="' + dependencies[i] + '"]')
285
- dependency && dependency.prop('checked', true)
286
- }
287
- })
288
-
289
- $('[data-dependents]').on('click', function () {
290
- if ($(this).is(':checked')) return
291
- var dependents = this.getAttribute('data-dependents')
292
- if (!dependents) return
293
- dependents = dependents.split(',')
294
- for (var i = 0; i < dependents.length; i++) {
295
- var dependent = $('[value="' + dependents[i] + '"]')
296
- dependent && dependent.prop('checked', false)
297
- }
298
- })
299
-
300
- var $compileBtn = $('#btn-compile')
301
- var $downloadBtn = $('#btn-download')
302
-
303
- $compileBtn.on('click', function (e) {
304
- var configData = getCustomizerData()
305
- var configJson = JSON.stringify(configData, null, 2)
306
-
307
- e.preventDefault()
308
-
309
- $compileBtn.attr('disabled', 'disabled')
310
-
311
- generateZip(generateCSS(), generateJavascript(), generateFonts(), configJson, function (blob) {
312
- $compileBtn.removeAttr('disabled')
313
- saveAs(blob, "bootstrap.zip")
314
- createGist(configJson)
315
- })
316
- })
317
-
318
- // browser support alerts
319
- if (!window.URL && navigator.userAgent.toLowerCase().indexOf('safari') != -1) {
320
- showCallout("Looks like you're using safari, which sadly doesn't have the best support\
321
- for HTML5 blobs. Because of this your file will be downloaded with the name <code>\"untitled\"</code>.\
322
- However, if you check your downloads folder, just rename this <code>\"untitled\"</code> file\
323
- to <code>\"bootstrap.zip\"</code> and you should be good to go!")
324
- } else if (!window.URL && !window.webkitURL) {
325
- $('.bs-docs-section, .bs-sidebar').css('display', 'none')
326
-
327
- showCallout("Looks like your current browser doesn't support the Bootstrap Customizer. Please take a second\
328
- to <a href=\"https://www.google.com/intl/en/chrome/browser/\"> upgrade to a more modern browser</a>.", true)
329
- }
330
-
331
- parseUrl()
332
- }