patternfly-sass 0.0.0.pre.semantically.pre.released → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (754) hide show
  1. checksums.yaml +5 -5
  2. data/.bowerrc +3 -0
  3. data/.gitignore +43 -0
  4. data/.rspec +3 -0
  5. data/.rubocop.yml +54 -0
  6. data/.travis.yml +17 -0
  7. data/Gemfile +3 -0
  8. data/README.md +29 -438
  9. data/Rakefile +128 -0
  10. data/TODO.md +13 -0
  11. data/assets/fonts/patternfly/OpenSans-Bold-webfont.eot +0 -0
  12. data/assets/fonts/patternfly/OpenSans-Bold-webfont.svg +1830 -0
  13. data/assets/fonts/patternfly/OpenSans-Bold-webfont.ttf +0 -0
  14. data/assets/fonts/patternfly/OpenSans-Bold-webfont.woff +0 -0
  15. data/assets/fonts/patternfly/OpenSans-BoldItalic-webfont.eot +0 -0
  16. data/assets/fonts/patternfly/OpenSans-BoldItalic-webfont.svg +1830 -0
  17. data/assets/fonts/patternfly/OpenSans-BoldItalic-webfont.ttf +0 -0
  18. data/assets/fonts/patternfly/OpenSans-BoldItalic-webfont.woff +0 -0
  19. data/assets/fonts/patternfly/OpenSans-ExtraBold-webfont.eot +0 -0
  20. data/assets/fonts/patternfly/OpenSans-ExtraBold-webfont.svg +1830 -0
  21. data/assets/fonts/patternfly/OpenSans-ExtraBold-webfont.ttf +0 -0
  22. data/assets/fonts/patternfly/OpenSans-ExtraBold-webfont.woff +0 -0
  23. data/assets/fonts/patternfly/OpenSans-ExtraBoldItalic-webfont.eot +0 -0
  24. data/assets/fonts/patternfly/OpenSans-ExtraBoldItalic-webfont.svg +1830 -0
  25. data/assets/fonts/patternfly/OpenSans-ExtraBoldItalic-webfont.ttf +0 -0
  26. data/assets/fonts/patternfly/OpenSans-ExtraBoldItalic-webfont.woff +0 -0
  27. data/assets/fonts/patternfly/OpenSans-Italic-webfont.eot +0 -0
  28. data/assets/fonts/patternfly/OpenSans-Italic-webfont.svg +1830 -0
  29. data/assets/fonts/patternfly/OpenSans-Italic-webfont.ttf +0 -0
  30. data/assets/fonts/patternfly/OpenSans-Italic-webfont.woff +0 -0
  31. data/assets/fonts/patternfly/OpenSans-Light-webfont.eot +0 -0
  32. data/assets/fonts/patternfly/OpenSans-Light-webfont.svg +1831 -0
  33. data/assets/fonts/patternfly/OpenSans-Light-webfont.ttf +0 -0
  34. data/assets/fonts/patternfly/OpenSans-Light-webfont.woff +0 -0
  35. data/assets/fonts/patternfly/OpenSans-LightItalic-webfont.eot +0 -0
  36. data/assets/fonts/patternfly/OpenSans-LightItalic-webfont.svg +1835 -0
  37. data/assets/fonts/patternfly/OpenSans-LightItalic-webfont.ttf +0 -0
  38. data/assets/fonts/patternfly/OpenSans-LightItalic-webfont.woff +0 -0
  39. data/assets/fonts/patternfly/OpenSans-Regular-webfont.eot +0 -0
  40. data/assets/fonts/patternfly/OpenSans-Regular-webfont.svg +1831 -0
  41. data/assets/fonts/patternfly/OpenSans-Regular-webfont.ttf +0 -0
  42. data/assets/fonts/patternfly/OpenSans-Regular-webfont.woff +0 -0
  43. data/assets/fonts/patternfly/OpenSans-Semibold-webfont.eot +0 -0
  44. data/assets/fonts/patternfly/OpenSans-Semibold-webfont.svg +1830 -0
  45. data/assets/fonts/patternfly/OpenSans-Semibold-webfont.ttf +0 -0
  46. data/assets/fonts/patternfly/OpenSans-Semibold-webfont.woff +0 -0
  47. data/assets/fonts/patternfly/OpenSans-SemiboldItalic-webfont.eot +0 -0
  48. data/assets/fonts/patternfly/OpenSans-SemiboldItalic-webfont.svg +1830 -0
  49. data/assets/fonts/patternfly/OpenSans-SemiboldItalic-webfont.ttf +0 -0
  50. data/assets/fonts/patternfly/OpenSans-SemiboldItalic-webfont.woff +0 -0
  51. data/assets/fonts/patternfly/PatternFlyIcons-webfont.eot +0 -0
  52. data/assets/fonts/patternfly/PatternFlyIcons-webfont.svg +63 -0
  53. data/assets/fonts/patternfly/PatternFlyIcons-webfont.ttf +0 -0
  54. data/assets/fonts/patternfly/PatternFlyIcons-webfont.woff +0 -0
  55. data/assets/images/patternfly/apple-touch-icon-114-precomposed.png +0 -0
  56. data/assets/images/patternfly/apple-touch-icon-144-precomposed.png +0 -0
  57. data/assets/images/patternfly/apple-touch-icon-57-precomposed.png +0 -0
  58. data/assets/images/patternfly/apple-touch-icon-72-precomposed.png +0 -0
  59. data/{dist/img → assets/images/patternfly}/bg-login.jpg +0 -0
  60. data/assets/images/patternfly/brand-lg.png +0 -0
  61. data/assets/images/patternfly/brand.png +0 -0
  62. data/{dist/img → assets/images/patternfly}/brand.svg +87 -87
  63. data/assets/images/patternfly/logo.png +0 -0
  64. data/{dist/img → assets/images/patternfly}/logo.svg +22 -22
  65. data/{dist/img → assets/images/patternfly}/spinner-lg.gif +0 -0
  66. data/{dist/img → assets/images/patternfly}/spinner-sm.gif +0 -0
  67. data/{dist/img → assets/images/patternfly}/spinner-xs.gif +0 -0
  68. data/{dist/img → assets/images/patternfly}/spinner.gif +0 -0
  69. data/assets/javascripts/patternfly/patternfly.js +212 -0
  70. data/assets/javascripts/patternfly/patternfly.min.js +1 -0
  71. data/{dist/sass → assets/stylesheets}/_patternfly-compass.scss +1 -1
  72. data/{dist/sass → assets/stylesheets}/_patternfly-sprockets.scss +1 -1
  73. data/assets/stylesheets/_patternfly.scss +105 -0
  74. data/assets/stylesheets/patternfly/_alerts.scss +29 -0
  75. data/{dist/sass → assets/stylesheets}/patternfly/_badges.scss +0 -0
  76. data/assets/stylesheets/patternfly/_blank-slate.scss +29 -0
  77. data/assets/stylesheets/patternfly/_bootstrap-combobox-css.scss +42 -0
  78. data/{dist/sass/rcue → assets/stylesheets/patternfly}/_bootstrap-combobox.scss +2 -2
  79. data/assets/stylesheets/patternfly/_bootstrap-select-css.scss +309 -0
  80. data/{dist/sass → assets/stylesheets}/patternfly/_bootstrap-select.scss +15 -24
  81. data/assets/stylesheets/patternfly/_bootstrap-treeview.scss +37 -0
  82. data/{dist/sass/rcue → assets/stylesheets/patternfly}/_breadcrumbs.scss +2 -2
  83. data/{dist/sass/rcue → assets/stylesheets/patternfly}/_buttons.scss +8 -10
  84. data/assets/stylesheets/patternfly/_close.scss +13 -0
  85. data/{dist/sass/rcue → assets/stylesheets/patternfly}/_datatables.scss +69 -33
  86. data/{dist/sass/rcue → assets/stylesheets/patternfly}/_dropdowns.scss +6 -96
  87. data/assets/stylesheets/patternfly/_fonts.scss +54 -0
  88. data/assets/stylesheets/patternfly/_forms.scss +31 -0
  89. data/assets/stylesheets/patternfly/_icons.scss +155 -0
  90. data/{dist/sass → assets/stylesheets}/patternfly/_infotip.scss +8 -4
  91. data/{dist/sass → assets/stylesheets}/patternfly/_labels.scss +2 -7
  92. data/{dist/sass → assets/stylesheets}/patternfly/_list-group.scss +2 -7
  93. data/assets/stylesheets/patternfly/_login.scss +121 -0
  94. data/assets/stylesheets/patternfly/_mixin_overrides.scss +55 -0
  95. data/assets/stylesheets/patternfly/_mixins.scss +96 -0
  96. data/{dist/sass/rcue → assets/stylesheets/patternfly}/_modals.scss +2 -13
  97. data/{dist/sass → assets/stylesheets}/patternfly/_navbar.scss +98 -176
  98. data/{dist/sass → assets/stylesheets}/patternfly/_pager.scss +6 -2
  99. data/assets/stylesheets/patternfly/_pagination.scss +64 -0
  100. data/assets/stylesheets/patternfly/_panels.scss +57 -0
  101. data/assets/stylesheets/patternfly/_popovers.scss +32 -0
  102. data/{dist/sass → assets/stylesheets}/patternfly/_progress-bars.scss +19 -49
  103. data/{dist/sass/rcue → assets/stylesheets/patternfly}/_search.scss +10 -9
  104. data/{dist/sass → assets/stylesheets}/patternfly/_sidebar.scss +32 -34
  105. data/assets/stylesheets/patternfly/_spinner.scss +62 -0
  106. data/{dist/sass → assets/stylesheets}/patternfly/_syntax-highlighting.scss +5 -16
  107. data/{dist/sass/rcue → assets/stylesheets/patternfly}/_tables.scss +4 -24
  108. data/{dist/sass/rcue → assets/stylesheets/patternfly}/_tabs.scss +3 -3
  109. data/{dist/sass/rcue → assets/stylesheets/patternfly}/_tooltip.scss +3 -2
  110. data/{dist/sass → assets/stylesheets}/patternfly/_type.scss +5 -10
  111. data/assets/stylesheets/patternfly/_variables.scss +225 -0
  112. data/bower.json +29 -0
  113. data/lib/patternfly-sass.rb +5 -8
  114. data/lib/patternfly-sass/engine.rb +6 -3
  115. data/lib/patternfly-sass/version.rb +2 -1
  116. data/package.json +28 -0
  117. data/patternfly-sass.gemspec +18 -20
  118. data/spec/compare_spec.rb +43 -0
  119. data/spec/spec_helper.rb +9 -0
  120. data/tasks/converter.rb +455 -0
  121. data/tests/capture.js +43 -0
  122. data/tests/components/bootstrap-combobox/.bower.json +14 -0
  123. data/tests/components/bootstrap-combobox/.gitignore +1 -0
  124. data/tests/components/bootstrap-combobox/README.md +59 -0
  125. data/tests/components/bootstrap-combobox/css/bootstrap-combobox.css +42 -0
  126. data/tests/components/bootstrap-combobox/js/bootstrap-combobox.js +438 -0
  127. data/tests/components/bootstrap-combobox/js/tests/index.html +29 -0
  128. data/tests/components/bootstrap-combobox/js/tests/unit/bootstrap-combobox.js +323 -0
  129. data/tests/components/bootstrap-combobox/js/tests/vendor/jquery.js +9597 -0
  130. data/tests/components/bootstrap-combobox/js/tests/vendor/qunit.css +244 -0
  131. data/tests/components/bootstrap-combobox/js/tests/vendor/qunit.js +2152 -0
  132. data/{dist/sass/patternfly/dependencies/bootstrap-combobox/combobox.scss → tests/components/bootstrap-combobox/less/combobox.less} +8 -10
  133. data/tests/components/bootstrap-select/.bower.json +38 -0
  134. data/tests/components/bootstrap-select/CONTRIBUTING.md +87 -0
  135. data/tests/components/bootstrap-select/README.md +61 -0
  136. data/tests/components/bootstrap-select/bootstrap-select.css +309 -0
  137. data/tests/components/bootstrap-select/bootstrap-select.jquery.json +29 -0
  138. data/tests/components/bootstrap-select/bootstrap-select.js +972 -0
  139. data/tests/components/bootstrap-select/bootstrap-select.min.css +7 -0
  140. data/tests/components/bootstrap-select/bootstrap-select.min.js +8 -0
  141. data/tests/components/bootstrap-select/bower.json +29 -0
  142. data/tests/components/bootstrap-select/composer.json +17 -0
  143. data/tests/components/bootstrap-select/i18n/defaults-cs-CZ.js +29 -0
  144. data/tests/components/bootstrap-select/i18n/defaults-cz-CZ.min.js +6 -0
  145. data/tests/components/bootstrap-select/i18n/defaults-de_DE.js +29 -0
  146. data/tests/components/bootstrap-select/i18n/defaults-de_DE.min.js +6 -0
  147. data/tests/components/bootstrap-select/i18n/defaults-es-CL.js +29 -0
  148. data/tests/components/bootstrap-select/i18n/defaults-es-CL.min.js +6 -0
  149. data/tests/components/bootstrap-select/i18n/defaults-eu.js +30 -0
  150. data/tests/components/bootstrap-select/i18n/defaults-eu.min.js +6 -0
  151. data/tests/components/bootstrap-select/i18n/defaults-it_IT.js +32 -0
  152. data/tests/components/bootstrap-select/i18n/defaults-it_IT.min.js +1 -0
  153. data/tests/components/bootstrap-select/i18n/defaults-nl_NL.js +32 -0
  154. data/tests/components/bootstrap-select/i18n/defaults-nl_NL.min.js +7 -0
  155. data/tests/components/bootstrap-select/i18n/defaults-pl_PL.js +29 -0
  156. data/tests/components/bootstrap-select/i18n/defaults-pl_PL.min.js +6 -0
  157. data/tests/components/bootstrap-select/i18n/defaults-pt_BR.js +33 -0
  158. data/tests/components/bootstrap-select/i18n/defaults-pt_BR.min.js +7 -0
  159. data/tests/components/bootstrap-select/i18n/defaults-ru-RU.js +31 -0
  160. data/tests/components/bootstrap-select/i18n/defaults-ru_RU.min.js +6 -0
  161. data/tests/components/bootstrap-select/i18n/defaults-zh_CN.js +30 -0
  162. data/tests/components/bootstrap-select/i18n/defaults-zh_CN.min.js +6 -0
  163. data/tests/components/bootstrap-select/package.json +31 -0
  164. data/tests/components/bootstrap-select/test.html +62 -0
  165. data/tests/components/bootstrap-treeview/.bower.json +38 -0
  166. data/tests/components/bootstrap-treeview/Gruntfile.js +62 -0
  167. data/tests/components/bootstrap-treeview/LICENSE +202 -0
  168. data/tests/components/bootstrap-treeview/README.md +289 -0
  169. data/tests/components/bootstrap-treeview/app.js +29 -0
  170. data/tests/components/bootstrap-treeview/bower.json +29 -0
  171. data/tests/components/bootstrap-treeview/dist/bootstrap-treeview.min.css +1 -0
  172. data/tests/components/bootstrap-treeview/dist/bootstrap-treeview.min.js +1 -0
  173. data/tests/components/bootstrap-treeview/package.json +18 -0
  174. data/tests/components/bootstrap-treeview/public/css/bootstrap-treeview.css +37 -0
  175. data/tests/components/bootstrap-treeview/public/example-dom.html +59 -0
  176. data/tests/components/bootstrap-treeview/public/index.html +333 -0
  177. data/tests/components/bootstrap-treeview/public/js/bootstrap-treeview.js +455 -0
  178. data/tests/components/bootstrap-treeview/screenshot/default.PNG +0 -0
  179. data/tests/components/bootstrap-treeview/src/css/bootstrap-treeview.css +37 -0
  180. data/tests/components/bootstrap-treeview/src/js/bootstrap-treeview.js +455 -0
  181. data/tests/components/datatables-colreorder/.bower.json +22 -0
  182. data/tests/components/datatables-colreorder/License.txt +20 -0
  183. data/tests/components/datatables-colreorder/Readme.md +39 -0
  184. data/tests/components/datatables-colreorder/bower.json +12 -0
  185. data/tests/components/datatables-colreorder/css/dataTables.colReorder.css +14 -0
  186. data/tests/components/datatables-colreorder/examples/alt_insert.xml +30 -0
  187. data/tests/components/datatables-colreorder/examples/col_filter.xml +38 -0
  188. data/tests/components/datatables-colreorder/examples/colvis.xml +26 -0
  189. data/tests/components/datatables-colreorder/examples/fixedcolumns.xml +43 -0
  190. data/tests/components/datatables-colreorder/examples/fixedheader.xml +27 -0
  191. data/tests/components/datatables-colreorder/examples/index.xml +19 -0
  192. data/tests/components/datatables-colreorder/examples/jqueryui.xml +27 -0
  193. data/tests/components/datatables-colreorder/examples/new_init.xml +23 -0
  194. data/tests/components/datatables-colreorder/examples/predefined.xml +30 -0
  195. data/tests/components/datatables-colreorder/examples/realtime.xml +30 -0
  196. data/tests/components/datatables-colreorder/examples/reset.xml +41 -0
  197. data/tests/components/datatables-colreorder/examples/scrolling.xml +27 -0
  198. data/tests/components/datatables-colreorder/examples/server_side.xml +38 -0
  199. data/tests/components/datatables-colreorder/examples/simple.xml +25 -0
  200. data/tests/components/datatables-colreorder/examples/state_save.xml +26 -0
  201. data/tests/components/datatables-colreorder/images/.DS_Store +0 -0
  202. data/tests/components/datatables-colreorder/images/insert.png +0 -0
  203. data/tests/components/datatables-colreorder/js/dataTables.colReorder.js +1372 -0
  204. data/tests/components/datatables-colreorder/make.sh +31 -0
  205. data/tests/components/datatables-colvis/.bower.json +22 -0
  206. data/tests/components/datatables-colvis/License.txt +20 -0
  207. data/tests/components/datatables-colvis/README.md +38 -0
  208. data/tests/components/datatables-colvis/bower.json +12 -0
  209. data/tests/components/datatables-colvis/css/dataTables.colVis.css +185 -0
  210. data/tests/components/datatables-colvis/css/dataTables.colvis.jqueryui.css +41 -0
  211. data/tests/components/datatables-colvis/examples/.DS_Store +0 -0
  212. data/tests/components/datatables-colvis/examples/button_order.xml +26 -0
  213. data/tests/components/datatables-colvis/examples/exclude_columns.xml +28 -0
  214. data/tests/components/datatables-colvis/examples/group_columns.xml +40 -0
  215. data/tests/components/datatables-colvis/examples/index.xml +18 -0
  216. data/tests/components/datatables-colvis/examples/jqueryui.xml +28 -0
  217. data/tests/components/datatables-colvis/examples/mouseover.xml +28 -0
  218. data/tests/components/datatables-colvis/examples/new_init.xml +26 -0
  219. data/tests/components/datatables-colvis/examples/restore.xml +33 -0
  220. data/tests/components/datatables-colvis/examples/simple.xml +25 -0
  221. data/tests/components/datatables-colvis/examples/text.xml +29 -0
  222. data/tests/components/datatables-colvis/examples/title_callback.xml +30 -0
  223. data/tests/components/datatables-colvis/examples/two_tables.xml +24 -0
  224. data/tests/components/datatables-colvis/examples/two_tables_identical.xml +35 -0
  225. data/tests/components/datatables-colvis/js/dataTables.colVis.js +1123 -0
  226. data/tests/components/datatables-colvis/make.sh +28 -0
  227. data/tests/components/datatables/.bower.json +42 -0
  228. data/tests/components/datatables/Contributing.md +18 -0
  229. data/tests/components/datatables/Readme.md +53 -0
  230. data/tests/components/datatables/bower.json +32 -0
  231. data/tests/components/datatables/license.txt +20 -0
  232. data/tests/components/datatables/media/css/jquery.dataTables.css +455 -0
  233. data/tests/components/datatables/media/css/jquery.dataTables.min.css +1 -0
  234. data/tests/components/datatables/media/css/jquery.dataTables_themeroller.css +416 -0
  235. data/tests/components/datatables/media/images/Sorting icons.psd +0 -0
  236. data/tests/components/datatables/media/images/favicon.ico +0 -0
  237. data/tests/components/datatables/media/images/sort_asc.png +0 -0
  238. data/tests/components/datatables/media/images/sort_asc_disabled.png +0 -0
  239. data/tests/components/datatables/media/images/sort_both.png +0 -0
  240. data/tests/components/datatables/media/images/sort_desc.png +0 -0
  241. data/tests/components/datatables/media/images/sort_desc_disabled.png +0 -0
  242. data/tests/components/datatables/media/js/jquery.dataTables.js +14951 -0
  243. data/tests/components/datatables/media/js/jquery.dataTables.min.js +160 -0
  244. data/tests/components/datatables/media/js/jquery.js +5 -0
  245. data/tests/components/google-code-prettify/.bower.json +26 -0
  246. data/tests/components/google-code-prettify/CHANGES.html +172 -0
  247. data/tests/components/google-code-prettify/COPYING +191 -0
  248. data/tests/components/google-code-prettify/README-zh-Hans.html +143 -0
  249. data/tests/components/google-code-prettify/README.html +233 -0
  250. data/tests/components/google-code-prettify/README.md +54 -0
  251. data/tests/components/google-code-prettify/bin/prettify.min.css +1 -0
  252. data/tests/components/google-code-prettify/bin/prettify.min.js +30 -0
  253. data/tests/components/google-code-prettify/bin/run_prettify.min.js +34 -0
  254. data/tests/components/google-code-prettify/bower.json +16 -0
  255. data/tests/components/google-code-prettify/examples/quine.html +55 -0
  256. data/tests/components/google-code-prettify/src/lang-apollo.js +51 -0
  257. data/tests/components/google-code-prettify/src/lang-basic.js +32 -0
  258. data/tests/components/google-code-prettify/src/lang-clj.js +64 -0
  259. data/tests/components/google-code-prettify/src/lang-css.js +159 -0
  260. data/tests/components/google-code-prettify/src/lang-dart.js +88 -0
  261. data/tests/components/google-code-prettify/src/lang-erlang.js +92 -0
  262. data/tests/components/google-code-prettify/src/lang-go.js +58 -0
  263. data/tests/components/google-code-prettify/src/lang-hs.js +101 -0
  264. data/tests/components/google-code-prettify/src/lang-lisp.js +94 -0
  265. data/tests/components/google-code-prettify/src/lang-llvm.js +61 -0
  266. data/tests/components/google-code-prettify/src/lang-lua.js +59 -0
  267. data/tests/components/google-code-prettify/src/lang-matlab.js +180 -0
  268. data/tests/components/google-code-prettify/src/lang-ml.js +56 -0
  269. data/tests/components/google-code-prettify/src/lang-mumps.js +139 -0
  270. data/tests/components/google-code-prettify/src/lang-n.js +65 -0
  271. data/tests/components/google-code-prettify/src/lang-pascal.js +32 -0
  272. data/tests/components/google-code-prettify/src/lang-proto.js +35 -0
  273. data/tests/components/google-code-prettify/src/lang-r.js +57 -0
  274. data/tests/components/google-code-prettify/src/lang-rd.js +47 -0
  275. data/tests/components/google-code-prettify/src/lang-scala.js +54 -0
  276. data/tests/components/google-code-prettify/src/lang-sql.js +58 -0
  277. data/tests/components/google-code-prettify/src/lang-tcl.js +62 -0
  278. data/tests/components/google-code-prettify/src/lang-tex.js +46 -0
  279. data/tests/components/google-code-prettify/src/lang-vb.js +66 -0
  280. data/tests/components/google-code-prettify/src/lang-vhdl.js +34 -0
  281. data/tests/components/google-code-prettify/src/lang-wiki.js +53 -0
  282. data/tests/components/google-code-prettify/src/lang-xq.js +67 -0
  283. data/tests/components/google-code-prettify/src/lang-yaml.js +27 -0
  284. data/tests/components/google-code-prettify/src/prettify.css +52 -0
  285. data/tests/components/google-code-prettify/src/prettify.js +1655 -0
  286. data/tests/components/google-code-prettify/src/run_prettify.js +1905 -0
  287. data/tests/components/google-code-prettify/styles/demo.html +61 -0
  288. data/tests/components/google-code-prettify/styles/desert.css +34 -0
  289. data/tests/components/google-code-prettify/styles/doxy.css +64 -0
  290. data/tests/components/google-code-prettify/styles/index.html +89 -0
  291. data/tests/components/google-code-prettify/styles/sons-of-obsidian.css +118 -0
  292. data/tests/components/google-code-prettify/styles/sunburst.css +51 -0
  293. data/tests/components/jquery/.bower.json +38 -0
  294. data/tests/components/jquery/MIT-LICENSE.txt +21 -0
  295. data/tests/components/jquery/bower.json +28 -0
  296. data/tests/components/jquery/dist/jquery.js +9210 -0
  297. data/tests/components/jquery/dist/jquery.min.js +5 -0
  298. data/tests/components/jquery/dist/jquery.min.map +1 -0
  299. data/tests/components/jquery/src/ajax.js +786 -0
  300. data/tests/components/jquery/src/ajax/jsonp.js +89 -0
  301. data/tests/components/jquery/src/ajax/load.js +75 -0
  302. data/tests/components/jquery/src/ajax/parseJSON.js +13 -0
  303. data/tests/components/jquery/src/ajax/parseXML.js +28 -0
  304. data/tests/components/jquery/src/ajax/script.js +64 -0
  305. data/tests/components/jquery/src/ajax/var/nonce.js +5 -0
  306. data/tests/components/jquery/src/ajax/var/rquery.js +3 -0
  307. data/tests/components/jquery/src/ajax/xhr.js +136 -0
  308. data/tests/components/jquery/src/attributes.js +11 -0
  309. data/tests/components/jquery/src/attributes/attr.js +141 -0
  310. data/tests/components/jquery/src/attributes/classes.js +158 -0
  311. data/tests/components/jquery/src/attributes/prop.js +94 -0
  312. data/tests/components/jquery/src/attributes/support.js +35 -0
  313. data/tests/components/jquery/src/attributes/val.js +161 -0
  314. data/tests/components/jquery/src/callbacks.js +205 -0
  315. data/tests/components/jquery/src/core.js +502 -0
  316. data/tests/components/jquery/src/core/access.js +60 -0
  317. data/tests/components/jquery/src/core/init.js +123 -0
  318. data/tests/components/jquery/src/core/parseHTML.js +39 -0
  319. data/tests/components/jquery/src/core/ready.js +97 -0
  320. data/tests/components/jquery/src/core/var/rsingleTag.js +4 -0
  321. data/tests/components/jquery/src/css.js +450 -0
  322. data/tests/components/jquery/src/css/addGetHookIf.js +22 -0
  323. data/tests/components/jquery/src/css/curCSS.js +57 -0
  324. data/tests/components/jquery/src/css/defaultDisplay.js +70 -0
  325. data/tests/components/jquery/src/css/hiddenVisibleSelectors.js +15 -0
  326. data/tests/components/jquery/src/css/support.js +96 -0
  327. data/tests/components/jquery/src/css/swap.js +28 -0
  328. data/tests/components/jquery/src/css/var/cssExpand.js +3 -0
  329. data/tests/components/jquery/src/css/var/getStyles.js +12 -0
  330. data/tests/components/jquery/src/css/var/isHidden.js +13 -0
  331. data/tests/components/jquery/src/css/var/rmargin.js +3 -0
  332. data/tests/components/jquery/src/css/var/rnumnonpx.js +5 -0
  333. data/tests/components/jquery/src/data.js +178 -0
  334. data/tests/components/jquery/src/data/Data.js +181 -0
  335. data/tests/components/jquery/src/data/accepts.js +20 -0
  336. data/tests/components/jquery/src/data/var/data_priv.js +5 -0
  337. data/tests/components/jquery/src/data/var/data_user.js +5 -0
  338. data/tests/components/jquery/src/deferred.js +149 -0
  339. data/tests/components/jquery/src/deprecated.js +13 -0
  340. data/tests/components/jquery/src/dimensions.js +50 -0
  341. data/tests/components/jquery/src/effects.js +648 -0
  342. data/tests/components/jquery/src/effects/Tween.js +114 -0
  343. data/tests/components/jquery/src/effects/animatedSelector.js +13 -0
  344. data/tests/components/jquery/src/event.js +868 -0
  345. data/tests/components/jquery/src/event/ajax.js +13 -0
  346. data/tests/components/jquery/src/event/alias.js +39 -0
  347. data/tests/components/jquery/src/event/support.js +9 -0
  348. data/tests/components/jquery/src/exports/amd.js +24 -0
  349. data/tests/components/jquery/src/exports/global.js +32 -0
  350. data/tests/components/jquery/src/intro.js +44 -0
  351. data/tests/components/jquery/src/jquery.js +37 -0
  352. data/tests/components/jquery/src/manipulation.js +580 -0
  353. data/tests/components/jquery/src/manipulation/_evalUrl.js +18 -0
  354. data/tests/components/jquery/src/manipulation/support.js +32 -0
  355. data/tests/components/jquery/src/manipulation/var/rcheckableType.js +3 -0
  356. data/tests/components/jquery/src/offset.js +207 -0
  357. data/tests/components/jquery/src/outro.js +1 -0
  358. data/tests/components/jquery/src/queue.js +142 -0
  359. data/tests/components/jquery/src/queue/delay.js +22 -0
  360. data/tests/components/jquery/src/selector-native.js +172 -0
  361. data/tests/components/jquery/src/selector-sizzle.js +14 -0
  362. data/tests/components/jquery/src/selector.js +1 -0
  363. data/tests/components/jquery/src/serialize.js +111 -0
  364. data/tests/components/jquery/src/sizzle/dist/sizzle.js +2067 -0
  365. data/tests/components/jquery/src/sizzle/dist/sizzle.min.js +3 -0
  366. data/tests/components/jquery/src/sizzle/dist/sizzle.min.map +1 -0
  367. data/tests/components/jquery/src/traversing.js +199 -0
  368. data/tests/components/jquery/src/traversing/findFilter.js +100 -0
  369. data/tests/components/jquery/src/traversing/var/rneedsContext.js +6 -0
  370. data/tests/components/jquery/src/var/arr.js +3 -0
  371. data/tests/components/jquery/src/var/class2type.js +4 -0
  372. data/tests/components/jquery/src/var/concat.js +5 -0
  373. data/tests/components/jquery/src/var/hasOwn.js +5 -0
  374. data/tests/components/jquery/src/var/indexOf.js +5 -0
  375. data/tests/components/jquery/src/var/pnum.js +3 -0
  376. data/tests/components/jquery/src/var/push.js +5 -0
  377. data/tests/components/jquery/src/var/rnotwhite.js +3 -0
  378. data/tests/components/jquery/src/var/slice.js +5 -0
  379. data/tests/components/jquery/src/var/strundefined.js +3 -0
  380. data/tests/components/jquery/src/var/support.js +4 -0
  381. data/tests/components/jquery/src/var/toString.js +5 -0
  382. data/tests/components/jquery/src/wrap.js +79 -0
  383. data/tests/index.html +16 -0
  384. data/tests/patternfly/accordions.html +84 -0
  385. data/tests/patternfly/alerts.html +85 -0
  386. data/tests/patternfly/badges.html +67 -0
  387. data/tests/patternfly/basic.html +552 -0
  388. data/tests/patternfly/blank-slate.html +77 -0
  389. data/tests/patternfly/bootstrap-combobox.html +338 -0
  390. data/tests/patternfly/bootstrap-select.html +210 -0
  391. data/tests/patternfly/bootstrap-treeview-2.html +271 -0
  392. data/tests/patternfly/bootstrap-treeview.html +234 -0
  393. data/tests/patternfly/breadcrumbs.html +46 -0
  394. data/tests/patternfly/buttons.html +521 -0
  395. data/tests/patternfly/code.html +77 -0
  396. data/tests/patternfly/dashboard.html +217 -0
  397. data/tests/patternfly/datatables-columns.html +487 -0
  398. data/tests/patternfly/datatables.html +466 -0
  399. data/tests/patternfly/dist/css/patternfly.css +11483 -0
  400. data/tests/patternfly/dist/css/patternfly.min.css +10 -0
  401. data/tests/patternfly/dist/css/styles.css +1 -0
  402. data/tests/patternfly/dist/css/styles.min.css +1 -0
  403. data/tests/patternfly/dropdowns.html +48 -0
  404. data/tests/patternfly/form.html +257 -0
  405. data/tests/patternfly/forms.html +425 -0
  406. data/tests/patternfly/icons.html +276 -0
  407. data/tests/patternfly/img/dashboard-1.png +0 -0
  408. data/tests/patternfly/img/dashboard-2.png +0 -0
  409. data/tests/patternfly/img/dashboard-3.png +0 -0
  410. data/tests/patternfly/img/dashboard-4.png +0 -0
  411. data/tests/patternfly/index.html +163 -0
  412. data/tests/patternfly/infotip.html +82 -0
  413. data/tests/patternfly/labels.html +102 -0
  414. data/tests/patternfly/list-group.html +105 -0
  415. data/tests/patternfly/login.html +74 -0
  416. data/tests/patternfly/modals.html +77 -0
  417. data/tests/patternfly/navbar.html +5424 -0
  418. data/tests/patternfly/pagination.html +277 -0
  419. data/tests/patternfly/panels.html +107 -0
  420. data/tests/patternfly/popovers.html +98 -0
  421. data/tests/patternfly/progress-bars.html +271 -0
  422. data/tests/patternfly/search.html +165 -0
  423. data/tests/patternfly/spinner.html +66 -0
  424. data/tests/patternfly/tab.html +595 -0
  425. data/tests/patternfly/tables.html +203 -0
  426. data/tests/patternfly/tabs.html +273 -0
  427. data/tests/patternfly/tests.css +16 -0
  428. data/tests/patternfly/tooltip.html +64 -0
  429. data/tests/patternfly/typography-2.css +10 -0
  430. data/tests/patternfly/typography-2.html +284 -0
  431. data/tests/patternfly/typography.html +189 -0
  432. metadata +843 -374
  433. data/CODE_OF_CONDUCT.md +0 -4
  434. data/OPEN_SOURCE_LICENCES.txt +0 -1366
  435. data/QUICKSTART.md +0 -210
  436. data/dist/fonts/FontAwesome.otf +0 -0
  437. data/dist/fonts/OpenSans-Bold-webfont.eot +0 -0
  438. data/dist/fonts/OpenSans-Bold-webfont.svg +0 -19028
  439. data/dist/fonts/OpenSans-Bold-webfont.ttf +0 -0
  440. data/dist/fonts/OpenSans-Bold-webfont.woff +0 -0
  441. data/dist/fonts/OpenSans-Bold-webfont.woff2 +0 -0
  442. data/dist/fonts/OpenSans-BoldItalic-webfont.eot +0 -0
  443. data/dist/fonts/OpenSans-BoldItalic-webfont.svg +0 -19036
  444. data/dist/fonts/OpenSans-BoldItalic-webfont.ttf +0 -0
  445. data/dist/fonts/OpenSans-BoldItalic-webfont.woff +0 -0
  446. data/dist/fonts/OpenSans-BoldItalic-webfont.woff2 +0 -0
  447. data/dist/fonts/OpenSans-ExtraBold-webfont.eot +0 -0
  448. data/dist/fonts/OpenSans-ExtraBold-webfont.svg +0 -19030
  449. data/dist/fonts/OpenSans-ExtraBold-webfont.ttf +0 -0
  450. data/dist/fonts/OpenSans-ExtraBold-webfont.woff +0 -0
  451. data/dist/fonts/OpenSans-ExtraBold-webfont.woff2 +0 -0
  452. data/dist/fonts/OpenSans-ExtraBoldItalic-webfont.eot +0 -0
  453. data/dist/fonts/OpenSans-ExtraBoldItalic-webfont.svg +0 -19036
  454. data/dist/fonts/OpenSans-ExtraBoldItalic-webfont.ttf +0 -0
  455. data/dist/fonts/OpenSans-ExtraBoldItalic-webfont.woff +0 -0
  456. data/dist/fonts/OpenSans-ExtraBoldItalic-webfont.woff2 +0 -0
  457. data/dist/fonts/OpenSans-Italic-webfont.eot +0 -0
  458. data/dist/fonts/OpenSans-Italic-webfont.svg +0 -19043
  459. data/dist/fonts/OpenSans-Italic-webfont.ttf +0 -0
  460. data/dist/fonts/OpenSans-Italic-webfont.woff +0 -0
  461. data/dist/fonts/OpenSans-Italic-webfont.woff2 +0 -0
  462. data/dist/fonts/OpenSans-Light-webfont.eot +0 -0
  463. data/dist/fonts/OpenSans-Light-webfont.svg +0 -19026
  464. data/dist/fonts/OpenSans-Light-webfont.ttf +0 -0
  465. data/dist/fonts/OpenSans-Light-webfont.woff +0 -0
  466. data/dist/fonts/OpenSans-Light-webfont.woff2 +0 -0
  467. data/dist/fonts/OpenSans-LightItalic-webfont.eot +0 -0
  468. data/dist/fonts/OpenSans-LightItalic-webfont.svg +0 -19039
  469. data/dist/fonts/OpenSans-LightItalic-webfont.ttf +0 -0
  470. data/dist/fonts/OpenSans-LightItalic-webfont.woff +0 -0
  471. data/dist/fonts/OpenSans-LightItalic-webfont.woff2 +0 -0
  472. data/dist/fonts/OpenSans-Regular-webfont.eot +0 -0
  473. data/dist/fonts/OpenSans-Regular-webfont.svg +0 -19030
  474. data/dist/fonts/OpenSans-Regular-webfont.ttf +0 -0
  475. data/dist/fonts/OpenSans-Regular-webfont.woff +0 -0
  476. data/dist/fonts/OpenSans-Regular-webfont.woff2 +0 -0
  477. data/dist/fonts/OpenSans-Semibold-webfont.eot +0 -0
  478. data/dist/fonts/OpenSans-Semibold-webfont.svg +0 -19030
  479. data/dist/fonts/OpenSans-Semibold-webfont.ttf +0 -0
  480. data/dist/fonts/OpenSans-Semibold-webfont.woff +0 -0
  481. data/dist/fonts/OpenSans-Semibold-webfont.woff2 +0 -0
  482. data/dist/fonts/OpenSans-SemiboldItalic-webfont.eot +0 -0
  483. data/dist/fonts/OpenSans-SemiboldItalic-webfont.svg +0 -19043
  484. data/dist/fonts/OpenSans-SemiboldItalic-webfont.ttf +0 -0
  485. data/dist/fonts/OpenSans-SemiboldItalic-webfont.woff +0 -0
  486. data/dist/fonts/OpenSans-SemiboldItalic-webfont.woff2 +0 -0
  487. data/dist/fonts/PatternFlyIcons-webfont.eot +0 -0
  488. data/dist/fonts/PatternFlyIcons-webfont.svg +0 -140
  489. data/dist/fonts/PatternFlyIcons-webfont.ttf +0 -0
  490. data/dist/fonts/PatternFlyIcons-webfont.woff +0 -0
  491. data/dist/fonts/fontawesome-webfont.eot +0 -0
  492. data/dist/fonts/fontawesome-webfont.svg +0 -2671
  493. data/dist/fonts/fontawesome-webfont.ttf +0 -0
  494. data/dist/fonts/fontawesome-webfont.woff +0 -0
  495. data/dist/fonts/fontawesome-webfont.woff2 +0 -0
  496. data/dist/fonts/glyphicons-halflings-regular.eot +0 -0
  497. data/dist/fonts/glyphicons-halflings-regular.svg +0 -288
  498. data/dist/fonts/glyphicons-halflings-regular.ttf +0 -0
  499. data/dist/fonts/glyphicons-halflings-regular.woff +0 -0
  500. data/dist/fonts/glyphicons-halflings-regular.woff2 +0 -0
  501. data/dist/img/Logo_Horizontal_Reversed.svg +0 -49
  502. data/dist/img/OpenShift-Logo-NoText.svg +0 -51
  503. data/dist/img/OpenShift-Logo-Text.svg +0 -95
  504. data/dist/img/OpenShift-logo.svg +0 -69
  505. data/dist/img/RH_Atomic-Logo-NoText.svg +0 -53
  506. data/dist/img/RH_Atomic-Logo-Text.svg +0 -91
  507. data/dist/img/RH_atomic.svg +0 -88
  508. data/dist/img/apple-touch-icon-precomposed-114.png +0 -0
  509. data/dist/img/apple-touch-icon-precomposed-144.png +0 -0
  510. data/dist/img/apple-touch-icon-precomposed-152.png +0 -0
  511. data/dist/img/apple-touch-icon-precomposed-180.png +0 -0
  512. data/dist/img/apple-touch-icon-precomposed-57.png +0 -0
  513. data/dist/img/apple-touch-icon-precomposed-72.png +0 -0
  514. data/dist/img/apple-touch-icon-precomposed-76.png +0 -0
  515. data/dist/img/bg-login-2.png +0 -0
  516. data/dist/img/bg-login.png +0 -0
  517. data/dist/img/bg-modal-about-pf.png +0 -0
  518. data/dist/img/bg-navbar-pf-alt.svg +0 -9
  519. data/dist/img/brand-alt.svg +0 -88
  520. data/dist/img/dropbox-logo.svg +0 -15
  521. data/dist/img/facebook-logo.svg +0 -12
  522. data/dist/img/favicon.ico +0 -0
  523. data/dist/img/fedora-logo.png +0 -0
  524. data/dist/img/git-logo.svg +0 -21
  525. data/dist/img/github-logo.svg +0 -17
  526. data/dist/img/gmail.svg +0 -23
  527. data/dist/img/google-calendar.svg +0 -26
  528. data/dist/img/google-drive.svg +0 -17
  529. data/dist/img/google-logo.svg +0 -19
  530. data/dist/img/instagram-logo.png +0 -0
  531. data/dist/img/kubernetes-Logo.svg +0 -60
  532. data/dist/img/kubernetes.svg +0 -8
  533. data/dist/img/linkedin-logo.svg +0 -13
  534. data/dist/img/logo-alt.svg +0 -18
  535. data/dist/img/open-id-logo.svg +0 -19
  536. data/dist/img/rcue-full.svg +0 -221
  537. data/dist/img/rcue.svg +0 -92
  538. data/dist/img/redhat_reverse.png +0 -0
  539. data/dist/img/skype-logo.svg +0 -23
  540. data/dist/img/spinner-inverse-lg.gif +0 -0
  541. data/dist/img/spinner-inverse-sm.gif +0 -0
  542. data/dist/img/spinner-inverse-xs.gif +0 -0
  543. data/dist/img/spinner-inverse.gif +0 -0
  544. data/dist/img/stack-exchange-logo.svg +0 -21
  545. data/dist/img/twitter-logo.svg +0 -19
  546. data/dist/js/patternfly-functions-base.js +0 -7
  547. data/dist/js/patternfly-functions-charts.js +0 -13
  548. data/dist/js/patternfly-functions-colors.js +0 -8
  549. data/dist/js/patternfly-functions-count-chars.js +0 -59
  550. data/dist/js/patternfly-functions-data-tables.js +0 -149
  551. data/dist/js/patternfly-functions-fixed-heights.js +0 -109
  552. data/dist/js/patternfly-functions-list.js +0 -79
  553. data/dist/js/patternfly-functions-navigation.js +0 -113
  554. data/dist/js/patternfly-functions-popovers.js +0 -37
  555. data/dist/js/patternfly-functions-sidebar.js +0 -31
  556. data/dist/js/patternfly-functions-tree-grid.js +0 -82
  557. data/dist/js/patternfly-functions-vertical-nav.js +0 -610
  558. data/dist/js/patternfly-functions.js +0 -1307
  559. data/dist/js/patternfly-functions.min.js +0 -1
  560. data/dist/js/patternfly-settings-base.d.ts +0 -9
  561. data/dist/js/patternfly-settings-base.js +0 -16
  562. data/dist/js/patternfly-settings-charts.d.ts +0 -92
  563. data/dist/js/patternfly-settings-charts.js +0 -449
  564. data/dist/js/patternfly-settings-colors.d.ts +0 -88
  565. data/dist/js/patternfly-settings-colors.js +0 -91
  566. data/dist/js/patternfly-settings.d.ts +0 -3
  567. data/dist/js/patternfly-settings.js +0 -558
  568. data/dist/js/patternfly-settings.min.js +0 -1
  569. data/dist/js/patternfly.dataTables.pfColVis.js +0 -151
  570. data/dist/js/patternfly.dataTables.pfEmpty.js +0 -253
  571. data/dist/js/patternfly.dataTables.pfEmpty.min.js +0 -1
  572. data/dist/js/patternfly.dataTables.pfFilter.js +0 -429
  573. data/dist/js/patternfly.dataTables.pfFilter.min.js +0 -1
  574. data/dist/js/patternfly.dataTables.pfPagination.js +0 -401
  575. data/dist/js/patternfly.dataTables.pfPagination.min.js +0 -1
  576. data/dist/js/patternfly.dataTables.pfResize.js +0 -214
  577. data/dist/js/patternfly.dataTables.pfResize.min.js +0 -1
  578. data/dist/js/patternfly.dataTables.pfSelect.js +0 -281
  579. data/dist/js/patternfly.dataTables.pfSelect.min.js +0 -1
  580. data/dist/js/patternfly.js +0 -1866
  581. data/dist/js/patternfly.min.js +0 -2
  582. data/dist/sass/_patternfly.scss +0 -147
  583. data/dist/sass/patternfly/_about-modal.scss +0 -44
  584. data/dist/sass/patternfly/_accordion.scss +0 -18
  585. data/dist/sass/patternfly/_alerts.scss +0 -44
  586. data/dist/sass/patternfly/_application-launcher.scss +0 -213
  587. data/dist/sass/patternfly/_blank-slate.scss +0 -52
  588. data/dist/sass/patternfly/_bootstrap-combobox.scss +0 -35
  589. data/dist/sass/patternfly/_bootstrap-datepicker.scss +0 -132
  590. data/dist/sass/patternfly/_bootstrap-mixin-overrides.scss +0 -33
  591. data/dist/sass/patternfly/_bootstrap-slider.scss +0 -66
  592. data/dist/sass/patternfly/_bootstrap-switch.scss +0 -19
  593. data/dist/sass/patternfly/_bootstrap-touchspin.scss +0 -31
  594. data/dist/sass/patternfly/_bootstrap-treeview.scss +0 -89
  595. data/dist/sass/patternfly/_breadcrumbs.scss +0 -20
  596. data/dist/sass/patternfly/_buttons.scss +0 -50
  597. data/dist/sass/patternfly/_card-view.scss +0 -105
  598. data/dist/sass/patternfly/_cards.scss +0 -238
  599. data/dist/sass/patternfly/_charts.scss +0 -388
  600. data/dist/sass/patternfly/_close.scss +0 -16
  601. data/dist/sass/patternfly/_color-variables.scss +0 -85
  602. data/dist/sass/patternfly/_context-selector.scss +0 -125
  603. data/dist/sass/patternfly/_datatables.scss +0 -186
  604. data/dist/sass/patternfly/_date-and-time.scss +0 -35
  605. data/dist/sass/patternfly/_dropdowns.scss +0 -235
  606. data/dist/sass/patternfly/_experimental-features.scss +0 -48
  607. data/dist/sass/patternfly/_filter.scss +0 -42
  608. data/dist/sass/patternfly/_fonts.scss +0 -124
  609. data/dist/sass/patternfly/_footer.scss +0 -19
  610. data/dist/sass/patternfly/_forms.scss +0 -192
  611. data/dist/sass/patternfly/_icons.scss +0 -371
  612. data/dist/sass/patternfly/_layouts.scss +0 -140
  613. data/dist/sass/patternfly/_links.scss +0 -5
  614. data/dist/sass/patternfly/_list-pf.scss +0 -178
  615. data/dist/sass/patternfly/_list-view-dnd.scss +0 -53
  616. data/dist/sass/patternfly/_list-view.scss +0 -390
  617. data/dist/sass/patternfly/_login.scss +0 -341
  618. data/dist/sass/patternfly/_mixins.scss +0 -81
  619. data/dist/sass/patternfly/_modals.scss +0 -49
  620. data/dist/sass/patternfly/_nav-vertical-alt.scss +0 -168
  621. data/dist/sass/patternfly/_navbar-alt.scss +0 -141
  622. data/dist/sass/patternfly/_navbar-vertical.scss +0 -168
  623. data/dist/sass/patternfly/_notifications-drawer.scss +0 -250
  624. data/dist/sass/patternfly/_pagination.scss +0 -121
  625. data/dist/sass/patternfly/_panels.scss +0 -134
  626. data/dist/sass/patternfly/_popovers.scss +0 -52
  627. data/dist/sass/patternfly/_rcue-about-modal.scss +0 -45
  628. data/dist/sass/patternfly/_rcue-additions.scss +0 -11
  629. data/dist/sass/patternfly/_rcue-login.scss +0 -75
  630. data/dist/sass/patternfly/_rcue-variables.scss +0 -57
  631. data/dist/sass/patternfly/_rcue.scss +0 -6
  632. data/dist/sass/patternfly/_search.scss +0 -64
  633. data/dist/sass/patternfly/_skip-to-content.scss +0 -12
  634. data/dist/sass/patternfly/_spinner.scss +0 -72
  635. data/dist/sass/patternfly/_table-view.scss +0 -188
  636. data/dist/sass/patternfly/_tables.scss +0 -90
  637. data/dist/sass/patternfly/_tabs.scss +0 -118
  638. data/dist/sass/patternfly/_time-picker.scss +0 -98
  639. data/dist/sass/patternfly/_toast.scss +0 -75
  640. data/dist/sass/patternfly/_toolbar.scss +0 -190
  641. data/dist/sass/patternfly/_tooltip.scss +0 -15
  642. data/dist/sass/patternfly/_tree-list-view.scss +0 -83
  643. data/dist/sass/patternfly/_variables.scss +0 -595
  644. data/dist/sass/patternfly/_vertical-nav.scss +0 -944
  645. data/dist/sass/patternfly/_wizard.scss +0 -665
  646. data/dist/sass/patternfly/dependencies/bootstrap-datepicker/datepicker.scss +0 -242
  647. data/dist/sass/patternfly/dependencies/bootstrap-datepicker/datepicker3.scss +0 -257
  648. data/dist/sass/patternfly/dependencies/bootstrap-select/bootstrap-select.scss +0 -389
  649. data/dist/sass/patternfly/dependencies/bootstrap-select/variables.scss +0 -9
  650. data/dist/sass/patternfly/dependencies/bootstrap-slider/_mixins.scss +0 -25
  651. data/dist/sass/patternfly/dependencies/bootstrap-slider/_rules.scss +0 -246
  652. data/dist/sass/patternfly/dependencies/bootstrap-slider/_variables.scss +0 -28
  653. data/dist/sass/patternfly/dependencies/bootstrap-slider/bootstrap-slider.scss +0 -42
  654. data/dist/sass/patternfly/dependencies/bootstrap-switch/bootstrap-switch.scss +0 -195
  655. data/dist/sass/patternfly/dependencies/bootstrap-switch/build.scss +0 -3
  656. data/dist/sass/patternfly/dependencies/bootstrap-switch/mixins.scss +0 -40
  657. data/dist/sass/patternfly/dependencies/bootstrap-switch/mixins/alerts.scss +0 -14
  658. data/dist/sass/patternfly/dependencies/bootstrap-switch/mixins/background-variant.scss +0 -9
  659. data/dist/sass/patternfly/dependencies/bootstrap-switch/mixins/border-radius.scss +0 -18
  660. data/dist/sass/patternfly/dependencies/bootstrap-switch/mixins/buttons.scss +0 -68
  661. data/dist/sass/patternfly/dependencies/bootstrap-switch/mixins/center-block.scss +0 -7
  662. data/dist/sass/patternfly/dependencies/bootstrap-switch/mixins/clearfix.scss +0 -22
  663. data/dist/sass/patternfly/dependencies/bootstrap-switch/mixins/forms.scss +0 -85
  664. data/dist/sass/patternfly/dependencies/bootstrap-switch/mixins/gradients.scss +0 -59
  665. data/dist/sass/patternfly/dependencies/bootstrap-switch/mixins/grid-framework.scss +0 -98
  666. data/dist/sass/patternfly/dependencies/bootstrap-switch/mixins/grid.scss +0 -122
  667. data/dist/sass/patternfly/dependencies/bootstrap-switch/mixins/hide-text.scss +0 -21
  668. data/dist/sass/patternfly/dependencies/bootstrap-switch/mixins/image.scss +0 -33
  669. data/dist/sass/patternfly/dependencies/bootstrap-switch/mixins/labels.scss +0 -12
  670. data/dist/sass/patternfly/dependencies/bootstrap-switch/mixins/list-group.scss +0 -29
  671. data/dist/sass/patternfly/dependencies/bootstrap-switch/mixins/nav-divider.scss +0 -10
  672. data/dist/sass/patternfly/dependencies/bootstrap-switch/mixins/nav-vertical-align.scss +0 -9
  673. data/dist/sass/patternfly/dependencies/bootstrap-switch/mixins/opacity.scss +0 -8
  674. data/dist/sass/patternfly/dependencies/bootstrap-switch/mixins/pagination.scss +0 -23
  675. data/dist/sass/patternfly/dependencies/bootstrap-switch/mixins/panels.scss +0 -24
  676. data/dist/sass/patternfly/dependencies/bootstrap-switch/mixins/progress-bar.scss +0 -10
  677. data/dist/sass/patternfly/dependencies/bootstrap-switch/mixins/reset-filter.scss +0 -8
  678. data/dist/sass/patternfly/dependencies/bootstrap-switch/mixins/reset-text.scss +0 -18
  679. data/dist/sass/patternfly/dependencies/bootstrap-switch/mixins/resize.scss +0 -6
  680. data/dist/sass/patternfly/dependencies/bootstrap-switch/mixins/responsive-visibility.scss +0 -15
  681. data/dist/sass/patternfly/dependencies/bootstrap-switch/mixins/size.scss +0 -10
  682. data/dist/sass/patternfly/dependencies/bootstrap-switch/mixins/tab-focus.scss +0 -9
  683. data/dist/sass/patternfly/dependencies/bootstrap-switch/mixins/table-row.scss +0 -28
  684. data/dist/sass/patternfly/dependencies/bootstrap-switch/mixins/text-emphasis.scss +0 -9
  685. data/dist/sass/patternfly/dependencies/bootstrap-switch/mixins/text-overflow.scss +0 -8
  686. data/dist/sass/patternfly/dependencies/bootstrap-switch/mixins/vendor-prefixes.scss +0 -227
  687. data/dist/sass/patternfly/dependencies/bootstrap-switch/variables.scss +0 -862
  688. data/dist/sass/patternfly/dependencies/bootstrap-touchspin/_jquery.bootstrap-touchspin.scss +0 -45
  689. data/dist/sass/patternfly/dependencies/c3/_c3.scss +0 -178
  690. data/dist/sass/patternfly/dependencies/eonasdan-bootstrap-datetimepicker/_bootstrap-datetimepicker.scss +0 -344
  691. data/dist/sass/patternfly/dependencies/eonasdan-bootstrap-datetimepicker/bootstrap-datetimepicker-build.scss +0 -16
  692. data/dist/sass/rcue/_about-modal.scss +0 -44
  693. data/dist/sass/rcue/_accordion.scss +0 -18
  694. data/dist/sass/rcue/_alerts.scss +0 -44
  695. data/dist/sass/rcue/_badges.scss +0 -11
  696. data/dist/sass/rcue/_blank-slate.scss +0 -52
  697. data/dist/sass/rcue/_bootstrap-datepicker.scss +0 -132
  698. data/dist/sass/rcue/_bootstrap-mixin-overrides.scss +0 -33
  699. data/dist/sass/rcue/_bootstrap-select.scss +0 -108
  700. data/dist/sass/rcue/_bootstrap-slider.scss +0 -66
  701. data/dist/sass/rcue/_bootstrap-switch.scss +0 -19
  702. data/dist/sass/rcue/_bootstrap-touchspin.scss +0 -31
  703. data/dist/sass/rcue/_bootstrap-treeview.scss +0 -89
  704. data/dist/sass/rcue/_card-view.scss +0 -105
  705. data/dist/sass/rcue/_cards.scss +0 -238
  706. data/dist/sass/rcue/_charts.scss +0 -388
  707. data/dist/sass/rcue/_close.scss +0 -16
  708. data/dist/sass/rcue/_color-variables.scss +0 -85
  709. data/dist/sass/rcue/_context-selector.scss +0 -125
  710. data/dist/sass/rcue/_date-and-time.scss +0 -35
  711. data/dist/sass/rcue/_experimental-features.scss +0 -48
  712. data/dist/sass/rcue/_filter.scss +0 -42
  713. data/dist/sass/rcue/_fonts.scss +0 -124
  714. data/dist/sass/rcue/_footer.scss +0 -19
  715. data/dist/sass/rcue/_forms.scss +0 -192
  716. data/dist/sass/rcue/_icons.scss +0 -371
  717. data/dist/sass/rcue/_infotip.scss +0 -145
  718. data/dist/sass/rcue/_labels.scss +0 -17
  719. data/dist/sass/rcue/_layouts.scss +0 -140
  720. data/dist/sass/rcue/_links.scss +0 -5
  721. data/dist/sass/rcue/_list-group.scss +0 -23
  722. data/dist/sass/rcue/_list-pf.scss +0 -178
  723. data/dist/sass/rcue/_list-view-dnd.scss +0 -53
  724. data/dist/sass/rcue/_list-view.scss +0 -390
  725. data/dist/sass/rcue/_login.scss +0 -341
  726. data/dist/sass/rcue/_mixins.scss +0 -81
  727. data/dist/sass/rcue/_nav-vertical-alt.scss +0 -168
  728. data/dist/sass/rcue/_navbar-alt.scss +0 -141
  729. data/dist/sass/rcue/_navbar-vertical.scss +0 -168
  730. data/dist/sass/rcue/_navbar.scss +0 -579
  731. data/dist/sass/rcue/_notifications-drawer.scss +0 -250
  732. data/dist/sass/rcue/_pager.scss +0 -68
  733. data/dist/sass/rcue/_pagination.scss +0 -121
  734. data/dist/sass/rcue/_panels.scss +0 -134
  735. data/dist/sass/rcue/_patternfly-additions.scss +0 -76
  736. data/dist/sass/rcue/_patternfly.scss +0 -31
  737. data/dist/sass/rcue/_popovers.scss +0 -52
  738. data/dist/sass/rcue/_progress-bars.scss +0 -121
  739. data/dist/sass/rcue/_rcue-about-modal.scss +0 -45
  740. data/dist/sass/rcue/_rcue-login.scss +0 -75
  741. data/dist/sass/rcue/_rcue-variables.scss +0 -57
  742. data/dist/sass/rcue/_sidebar.scss +0 -176
  743. data/dist/sass/rcue/_skip-to-content.scss +0 -12
  744. data/dist/sass/rcue/_spinner.scss +0 -72
  745. data/dist/sass/rcue/_syntax-highlighting.scss +0 -36
  746. data/dist/sass/rcue/_table-view.scss +0 -188
  747. data/dist/sass/rcue/_time-picker.scss +0 -98
  748. data/dist/sass/rcue/_toast.scss +0 -75
  749. data/dist/sass/rcue/_toolbar.scss +0 -190
  750. data/dist/sass/rcue/_tree-list-view.scss +0 -83
  751. data/dist/sass/rcue/_type.scss +0 -29
  752. data/dist/sass/rcue/_variables.scss +0 -595
  753. data/dist/sass/rcue/_vertical-nav.scss +0 -944
  754. data/dist/sass/rcue/_wizard.scss +0 -665
@@ -0,0 +1,29 @@
1
+ {
2
+ "name": "PatternFlySass",
3
+ "version": "1.0.0",
4
+ "authors": "Red Hat",
5
+ "license": "Apache-2.0",
6
+ "homepage": "https://www.patternfly.org",
7
+ "main": [
8
+ "dist/css/patternfly.css"
9
+ ],
10
+ "ignore": [
11
+ "**/.*",
12
+ "node_modules",
13
+ "bower_components",
14
+ "app/components",
15
+ "test",
16
+ "tests",
17
+ "package.json",
18
+ "Gruntfile.js"
19
+ ],
20
+ "devDependencies": {
21
+ "bootstrap-combobox": "~1.1.6",
22
+ "bootstrap-select": "~1.5.4",
23
+ "bootstrap-treeview": "~1.0.1",
24
+ "datatables": "~1.10.4",
25
+ "datatables-colreorder": "~1.1.2",
26
+ "datatables-colvis": "~1.1.1",
27
+ "google-code-prettify": "~1.0.3"
28
+ }
29
+ }
@@ -20,7 +20,7 @@ module Patternfly
20
20
  end
21
21
 
22
22
  def stylesheets_path
23
- File.join assets_path, 'sass'
23
+ File.join assets_path, 'stylesheets'
24
24
  end
25
25
 
26
26
  def fonts_path
@@ -28,15 +28,15 @@ module Patternfly
28
28
  end
29
29
 
30
30
  def javascripts_path
31
- File.join assets_path, 'js'
31
+ File.join assets_path, 'javascripts'
32
32
  end
33
33
 
34
34
  def images_path
35
- File.join assets_path, 'img'
35
+ File.join assets_path, 'images'
36
36
  end
37
37
 
38
38
  def assets_path
39
- @assets_path ||= File.join gem_path, 'dist'
39
+ @assets_path ||= File.join gem_path, 'assets'
40
40
  end
41
41
 
42
42
  # Environment detection helpers
@@ -74,9 +74,6 @@ module Patternfly
74
74
  end
75
75
 
76
76
  def register_rails_engine
77
- require 'bootstrap-sass'
78
- require 'font-awesome-sass'
79
-
80
77
  require 'patternfly-sass/engine'
81
78
  end
82
79
 
@@ -89,4 +86,4 @@ module Patternfly
89
86
  end
90
87
  end
91
88
 
92
- Patternfly.load!
89
+ Patternfly.load!
@@ -1,11 +1,14 @@
1
+ require 'bootstrap-sass'
2
+ require 'font-awesome-sass'
3
+
1
4
  module Patternfly
2
5
  module Rails
3
6
  class Engine < ::Rails::Engine
4
7
  initializer 'patternfly-sass.assets.precompile' do |app|
5
- %w(fonts img js sass).each do |sub|
6
- app.config.assets.paths << root.join('dist', sub).to_s
8
+ %w(stylesheets javascripts fonts images).each do |sub|
9
+ app.config.assets.paths << root.join('assets', sub).to_s
7
10
  end
8
11
  end
9
12
  end
10
13
  end
11
- end
14
+ end
@@ -1,3 +1,4 @@
1
1
  module Patternfly
2
- VERSION = '0.0.0-semantically-released'
2
+ VERSION = '1.2.0'
3
+ PATTERNFLY_SHA = '98ae8fff2c448467bf96166808269b8b25142ed8'
3
4
  end
@@ -0,0 +1,28 @@
1
+ {
2
+ "name": "PatternFlySass",
3
+ "version": "1.0.0",
4
+ "author": "Red Hat",
5
+ "license": "Apache-2.0",
6
+ "devDependencies": {
7
+ "grunt": "~0.4.1",
8
+ "grunt-contrib-sass": "~0.7.4",
9
+ "matchdep": "~0.3.0",
10
+ "grunt-contrib-watch": "~0.5.3",
11
+ "grunt-contrib-connect": "~0.5.0",
12
+ "connect-livereload": "~0.3.0",
13
+ "grunt-contrib-uglify": "~0.3.2",
14
+ "grunt-contrib-cssmin": "~0.10.0",
15
+ "grunt-shell": "~1.0.1",
16
+ "grunt-casper": "~0.4.1",
17
+ "phantomcss": "~0.7.2",
18
+ "connect": "~3.2.0",
19
+ "process": "~0.8.0",
20
+ "serve-static": "~1.6.1",
21
+ "serve-index": "~1.2.1",
22
+ "http": "0.0.0",
23
+ "fs": "0.0.2",
24
+ "path": "~0.4.9",
25
+ "glob": "~4.0.5",
26
+ "grunt-contrib-clean": "~0.6.0"
27
+ }
28
+ }
@@ -3,29 +3,27 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
3
  require 'patternfly-sass/version'
4
4
 
5
5
  Gem::Specification.new do |s|
6
- s.name = 'patternfly-sass'
6
+ s.name = "patternfly-sass"
7
7
  s.version = Patternfly::VERSION
8
- s.authors = ['Dávid Halász', 'Alex Wood']
8
+ s.authors = ["Dávid Halász", "Alex Wood"]
9
9
  s.email = 'patternflyui@gmail.com'
10
10
  s.summary = "Red Hat's Patternfly, converted to Sass and ready to drop into Rails"
11
- s.homepage = 'https://github.com/Patternfly/patternfly'
12
- s.license = 'Apache-2.0'
11
+ s.homepage = "https://github.com/Patternfly/patternfly-sass"
12
+ s.license = 'MIT'
13
13
 
14
- s.add_runtime_dependency 'sass', '~> 3.4.15'
15
- s.add_runtime_dependency 'bootstrap-sass', '~> 3.3.7'
16
- s.add_runtime_dependency 'font-awesome-sass', '~> 4.6.2'
14
+ s.add_runtime_dependency 'sass', '~> 3.2'
15
+ s.add_runtime_dependency 'bootstrap-sass', '~> 3.3.4'
16
+ s.add_runtime_dependency 'font-awesome-sass', '~> 4.3.0'
17
17
 
18
- s.files = [
19
- 'patternfly-sass.gemspec',
20
- 'LICENSE.txt',
21
- 'README.md',
22
- 'CODE_OF_CONDUCT.md',
23
- 'QUICKSTART.md',
24
- 'OPEN_SOURCE_LICENCES.txt',
25
- Dir.glob('lib/**/*'),
26
- Dir.glob('dist/sass/**/*'),
27
- Dir.glob('dist/js/**/*'),
28
- Dir.glob('dist/fonts/**/*'),
29
- Dir.glob('dist/img/**/*')
30
- ].flatten
18
+ # Converter's dependencies
19
+ s.add_development_dependency 'rake', '~> 10.4'
20
+ s.add_development_dependency 'term-ansicolor'
21
+ # Testing dependencies
22
+ s.add_development_dependency 'rspec', '~> 3.2'
23
+ s.add_development_dependency 'nokogiri', '~> 1.6'
24
+ s.add_development_dependency 'rmagick', '~> 2.15'
25
+ s.add_development_dependency 'imgur-api', '~> 0.0.4'
26
+
27
+ s.files = `git ls-files`.split("\n")
28
+ s.test_files = `git ls-files -- tests/*`.split("\n") + `git ls-files -- spec/*`.split("\n")
31
29
  end
@@ -0,0 +1,43 @@
1
+ require 'net/http'
2
+ require 'nokogiri'
3
+ require 'rmagick'
4
+
5
+ RSpec.describe "compare SASS with LESS screenshots" do
6
+ BASEURL = "http://localhost:9000"
7
+ RESOLUTIONS = [[320, 480], [768, 1024], [1280, 1024]]
8
+ CONTEXTS = %w(less sass)
9
+ TOLERANCE = 0.05
10
+
11
+ html = Net::HTTP.get(URI("#{BASEURL}/less/patternfly/index.html"))
12
+ document = Nokogiri::HTML(html)
13
+
14
+ document.css(".row a").each do |link|
15
+ file = link['href']
16
+ context "#{file}" do
17
+ title = file.sub('.html', '')
18
+ RESOLUTIONS.each do |w,h|
19
+ it "#{w}x#{h}" do
20
+ CONTEXTS.each do |ctx|
21
+ `phantomjs tests/capture.js #{w} #{h} #{BASEURL}/#{ctx}/patternfly/#{file} tests/#{ctx}/#{title}-#{w}x#{h}.png`
22
+ end
23
+ img_less = Magick::Image.read("tests/less/#{title}-#{w}x#{h}.png").first
24
+ img_sass = Magick::Image.read("tests/sass/#{title}-#{w}x#{h}.png").first
25
+
26
+ cols = [img_less.base_columns, img_sass.base_columns].max
27
+ rows = [img_less.base_rows, img_sass.base_rows].max
28
+
29
+ img_less.resize_to_fill!(cols, rows)
30
+ img_sass.resize_to_fill!(cols, rows)
31
+
32
+ img_diff, diff_rate = img_less.compare_channel img_sass, Magick::MeanAbsoluteErrorMetric, Magick::AllChannels
33
+ img_less.destroy!
34
+ img_sass.destroy!
35
+
36
+ img_diff.write("tests/failures/#{title}-#{w}x#{h}.png") unless diff_rate <= TOLERANCE
37
+ img_diff.destroy!
38
+ expect(diff_rate).to be <= TOLERANCE
39
+ end
40
+ end
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,9 @@
1
+ RSpec.configure do |config|
2
+ config.expect_with :rspec do |expectations|
3
+ expectations.include_chain_clauses_in_custom_matcher_descriptions = true
4
+ end
5
+
6
+ config.mock_with :rspec do |mocks|
7
+ mocks.verify_partial_doubles = true
8
+ end
9
+ end
@@ -0,0 +1,455 @@
1
+ BOOTSTRAP_GEM_ROOT = Gem::Specification.find_by_name("bootstrap-sass").gem_dir
2
+ require "#{BOOTSTRAP_GEM_ROOT}/tasks/converter"
3
+ require 'pathname'
4
+
5
+ module Patternfly
6
+ class Converter < ::Converter
7
+ BOOTSTRAP_LESS_ROOT = 'components/bootstrap/less'
8
+ PATTERNFLY_LESS_ROOT = 'less'
9
+ PATTERNFLY_COMPONENTS = "../components/patternfly/components"
10
+
11
+ # Override
12
+ def initialize(options)
13
+ defaults = {
14
+ :branch => 'master',
15
+ :repo => 'patternfly/patternfly',
16
+ :cache_path => 'tmp/converter-cache-patternfly',
17
+ :test_dir => 'tests/patternfly'
18
+ }
19
+ options = defaults.merge(options)
20
+ super(:repo => options[:repo], :cache_path => options[:cache_path], :branch => options[:branch])
21
+ @save_to = {
22
+ :scss => 'assets/stylesheets/patternfly',
23
+ :js => 'assets/javascripts/patternfly',
24
+ :fonts => 'assets/fonts/patternfly'
25
+ }
26
+ @test_dir = options[:test_dir]
27
+ get_trees(PATTERNFLY_LESS_ROOT, BOOTSTRAP_LESS_ROOT, 'components/bootstrap-select', 'components/bootstrap-combobox', 'tests', 'dist')
28
+ end
29
+
30
+ def process_patternfly
31
+ log_status "Convert Patternfly LESS to SASS"
32
+ puts " repo : #@repo_url"
33
+ puts " branch : #@branch_sha #@repo_url/tree/#@branch"
34
+ puts " save to: #{@save_to.to_json}"
35
+ puts " twbs cache: #{@cache_path}"
36
+ puts '-' * 60
37
+
38
+ @save_to.values { |v| FileUtils.mkdir_p(v) }
39
+
40
+ process_font_assets
41
+ process_patternfly_less_assets
42
+ process_javascript_assets
43
+ store_version
44
+ cache_tests
45
+ end
46
+
47
+ def remove_xforms(transforms, *rejects)
48
+ transforms.reject do |xform|
49
+ rejects.include?(xform)
50
+ end
51
+ end
52
+
53
+ def process_font_assets
54
+ log_status 'Processing fonts...'
55
+ files = read_files(get_paths_by_type('dist/fonts', /\.(eot|svg|ttf|woff2?)$/))
56
+ save_to = @save_to[:fonts]
57
+ files.each do |name, content|
58
+ save_file File.join(save_to, name.gsub('dist/fonts/', '')), content
59
+ end
60
+ end
61
+
62
+ def process_javascript_assets
63
+ log_status 'Processing javascripts...'
64
+ save_to = @save_to[:js]
65
+ files = read_files(get_paths_by_type('dist/js', /\.js$/))
66
+ files.each do |name, content|
67
+ save_file File.join(save_to, name.gsub('dist/js/', '')), content
68
+ end
69
+ end
70
+
71
+ def process_image_assets
72
+ log_status 'Processing images...'
73
+ save_to = @save_to[:img]
74
+ files = read_files(get_paths_by_type('dist/img', /\.(png|gif|jpg|svg?)$/))
75
+ files.each do |name, content|
76
+ save_file File.join(save_to, name.gsub('dist/img/', '')), content
77
+ end
78
+ end
79
+
80
+ def process_patternfly_less_assets
81
+ log_status "Processing stylesheets..."
82
+ files = read_files(bootstrap_less_files)
83
+ files['less/mixin_overrides.less'] = files['less/mixins.less'].dup
84
+ save_to = @save_to[:scss]
85
+
86
+ files.each do |name, file|
87
+ # TODO unify the case statements. Maybe pass in two procs as
88
+ # callbacks; one for before and one for after.
89
+ #
90
+ # TODO override replace_spin so its regex isn't so over-zealous
91
+ transforms = DEFAULT_TRANSFORMS.dup
92
+ name = File.basename(name)
93
+ case name
94
+ when 'mixin_overrides.less'
95
+ button_variant = ".button-variant(.*?)"
96
+ file = replace_rules(file, button_variant) do |rule, pos|
97
+ ""
98
+ end
99
+ when 'patternfly.less'
100
+ transforms = remove_xforms(transforms, :replace_spin)
101
+ when 'variables.less'
102
+ transforms = remove_xforms(transforms, :replace_spin)
103
+ when 'spinner.less'
104
+ transforms = remove_xforms(transforms, :replace_spin, :replace_image_urls)
105
+ end
106
+
107
+ file = convert_less(file, *transforms)
108
+
109
+ # Special cases go here
110
+ case name
111
+ when 'mixins.less'
112
+ NESTED_MIXINS.each do |selector, prefix|
113
+ file = flatten_mixins(file, selector, prefix)
114
+ end
115
+ file = replace_all(
116
+ file,
117
+ /,\s*\.open\s+\.dropdown-toggle& \{(.*?)\}/m,
118
+ " {\\1}\n .open & { &.dropdown-toggle {\\1} }")
119
+ when 'mixin_overrides.less'
120
+ NESTED_MIXINS.each do |selector, prefix|
121
+ file = flatten_mixins(file, selector, prefix)
122
+ end
123
+ when 'variables.less'
124
+ file = ['$patternfly-sass-asset-helper: false !default;', file].join("\n")
125
+ file = replace_all(file, %r{"../img"}, '"../images"')
126
+ file = replace_all file, %r{(\$font-path): (\s*)"(.*)";}, '\\1: \\2if($patternfly-sass-asset-helper, "patternfly", "\\3/patternfly");'
127
+ file = replace_all file, %r{(\$img-path): (\s*)"(.*)";}, '\\1: \\2if($patternfly-sass-asset-helper, "patternfly", "\\3/patternfly");'
128
+ file = replace_all file, %r{(\$icon-font-path): (\s*)"(.*)";\n}, ''
129
+ file = replace_all file, %r{(\$fa-font-path): (\s*)"(.*)";\n}, ''
130
+
131
+ when 'patternfly.less'
132
+ file = fix_top_level(file)
133
+ # This is a hack. We want bootstrap-select to be placed in
134
+ # the final compiled CSS, but Sass doesn't insert a file's contents
135
+ # when that file has a '.css' extension. Sass just uses a @import
136
+ # statement. This method moves the bootstrap-select.css into our
137
+ # output directory and renames it with a '.scss' extension.
138
+ add_to_dist("bootstrap-select/bootstrap-select.css", "_bootstrap-select-css.scss")
139
+ # Similar solution for the bootstrap-combobox
140
+ add_to_dist("bootstrap-combobox/css/bootstrap-combobox.css", "_bootstrap-combobox-css.scss")
141
+ end
142
+
143
+ name_out = "#{File.basename(name, ".less")}.scss"
144
+ name_out = "_#{name_out}"
145
+
146
+ path = File.join(save_to, name_out)
147
+ save_file(path, file)
148
+ log_processed(File.basename(path))
149
+ end
150
+
151
+ FileUtils.mv("#{save_to}/_patternfly.scss", File.expand_path("#{save_to}/../_patternfly.scss"))
152
+ end
153
+
154
+ def add_to_dist(name, name_out)
155
+ in_file = File.join('components', name);
156
+ in_dir = File.dirname(in_file)
157
+ dir_files = get_paths_by_directory(in_dir)
158
+ file = read_files(dir_files)[in_file]
159
+ raise "add_to_dist failed for #{name}" if file.nil?
160
+ out_path = File.join(@save_to[:scss], name_out)
161
+ save_file(out_path, file)
162
+ log_processed("Moving #{File.join(in_dir, in_file)} to #{out_path}")
163
+ end
164
+
165
+ def convert_less(less, *transforms)
166
+ load_shared
167
+ less = convert_to_scss(less, *transforms)
168
+ less = yield(less) if block_given?
169
+ less
170
+ end
171
+
172
+ DEFAULT_TRANSFORMS = [
173
+ :replace_vars,
174
+ :replace_file_imports,
175
+ :replace_mixin_definitions,
176
+ {:replace_mixins => ["mixins"]},
177
+ :replace_spin,
178
+ # :replace_fadein,
179
+ :replace_image_urls,
180
+ :replace_escaping,
181
+ :convert_less_ampersand,
182
+ :deinterpolate_vararg_mixins,
183
+ :replace_calculation_semantics,
184
+ ]
185
+
186
+ def convert_to_scss(file, *transforms)
187
+ # TODO The logging noop is to avoid a warning about an unused variable.
188
+ # We actually are using mixins but we are reading it with an eval.
189
+ # Possibly worth checking the arity of the method represented by xform
190
+ # and send in variable in a defined order based on it? But that limits
191
+ # us to a parameter order that every xform must follow.
192
+ # Something like
193
+ # params = [file, mixins]
194
+ # arity = self.method(xform).arity
195
+ # send(xform, *params[0..arity])
196
+ mixins = @shared_mixins + read_mixins(file)
197
+ silence_log do
198
+ log_status(mixins)
199
+ end
200
+ transforms.each do |xform|
201
+ args = ["file"]
202
+ if xform.is_a?(Hash)
203
+ args.concat(xform.values.first)
204
+ xform = xform.keys.first
205
+ end
206
+ args.map! { |a| "#{eval a}" }
207
+ file = send(xform, *args)
208
+ end
209
+ file
210
+ end
211
+
212
+ def fix_top_level(file)
213
+ file = replace_all(
214
+ file,
215
+ %r{@import\s+"variables";},
216
+ "")
217
+ file = replace_all(file, /@import "([^\.]{2})/, '@import "patternfly/\1')
218
+ file = replace_all(
219
+ file,
220
+ %r{../components/font-awesome/less/font-awesome},
221
+ "font-awesome")
222
+ file = replace_all(
223
+ file,
224
+ %r{../components/bootstrap-select/bootstrap-select.css},
225
+ "patternfly/bootstrap-select-css")
226
+ file = replace_all(
227
+ file,
228
+ %r{@import\s+"../components/bootstrap/less/bootstrap";},
229
+ fetch_bootstrap_sass)
230
+
231
+ file = replace_all(
232
+ file,
233
+ %r{../components/bootstrap-combobox/less/combobox},
234
+ "patternfly/bootstrap-combobox-css")
235
+
236
+ # Variables need to be declared before they are used.
237
+ variables = <<-VAR.gsub(/^\s*/, '')
238
+ @import "patternfly/variables";
239
+ @import "bootstrap/variables";
240
+ @import "font-awesome/variables";
241
+ VAR
242
+ variables + file
243
+ end
244
+
245
+ def fetch_bootstrap_sass
246
+ bootstrap_sass = IO.read(File.join(BOOTSTRAP_GEM_ROOT, 'assets', 'stylesheets', '_bootstrap.scss'))
247
+
248
+ bootstrap_sass = replace_all(
249
+ bootstrap_sass,
250
+ %r{@import\s+"bootstrap/variables";},
251
+ ""
252
+ )
253
+
254
+ mixin_location = end_of(bootstrap_sass, %r{@import\s+"bootstrap/mixins";}).first
255
+ bootstrap_sass = bootstrap_sass[0..mixin_location] + "@import \"patternfly/mixin_overrides\";\n" + bootstrap_sass[mixin_location..-1]
256
+ bootstrap_sass
257
+ end
258
+
259
+ def end_of(s, regex)
260
+ # Returns an array with the end position of each match
261
+ s.enum_for(:scan, regex).map { Regexp.last_match.end(0) }
262
+ end
263
+
264
+ # Override
265
+ def replace_file_imports(less, target_path='')
266
+ less.gsub!(
267
+ %r([@\$]import\s+(?:\(\w+\)\s+)?["|']([\w\-\./]+).less["|'];),
268
+ %Q(@import "#{target_path}\\1";)
269
+ )
270
+ less.gsub!(
271
+ %r([@\$]import\s+(?:\(\w+\)\s+)?["|']([\w\-\./]+).(css)["|'];),
272
+ %Q(@import "#{target_path}\\1.\\2";)
273
+ )
274
+ less
275
+ end
276
+
277
+ # Override - bootstrap-sass doesn't handle cases where interpolation occurs outside
278
+ # double quotes and removes the curly braces too early in the replace process.
279
+ def replace_escaping(less)
280
+ # Get rid of ~"" escape
281
+ less = less.gsub(/~"([^"]+)"/, '#{\1}')
282
+ # interpolate variable in string, e.g. url("$file-1x") => url("#{$file-1x}")
283
+ less.gsub!(/\$\{([\w\-]+)\}/, '#{$\1}')
284
+ # less.gsub!(/(?:"|')([^"'\n]*)(\$\{[\w\-]+\})([^"'\n]*)(?:"|')/, '"\1#{\2}\3"')
285
+ # Get rid of @{} escape
286
+ less.gsub!(/\$\{([^}]+)\}/, '$\1')
287
+ # Get rid of e(%("")) escape
288
+ less.gsub(/(\W)e\(%\("?([^"]*)"?\)\)/, '\1\2')
289
+ end
290
+
291
+ def cache_tests
292
+ FileUtils.mkdir_p(@test_dir)
293
+ test_files = get_paths_by_directory('tests')
294
+ dist_files = get_paths_by_directory('dist/css')
295
+ test_contents = read_files(test_files)
296
+ dist_contents = fixup_path(read_files(dist_files))
297
+ test_contents.merge(dist_contents).each do |file, content|
298
+ # We go through all this rigmarole so we can save the tests and their
299
+ # directory structure in a root of our choosing.
300
+ top = ""
301
+ # Get the top level directory
302
+ Pathname.new(file).ascend do |v|
303
+ top = v
304
+ end
305
+ # Get the filename below the top directory
306
+ save_path = Pathname.new(file).relative_path_from(top).to_s
307
+
308
+ # Create the correct destination
309
+ save_path = File.join(@test_dir, save_path)
310
+ unless File.directory?(File.dirname(save_path))
311
+ FileUtils.mkdir_p(File.dirname(save_path))
312
+ end
313
+ save_file(save_path, content)
314
+ end
315
+ # Load external dependencies for testing
316
+ `bower install`
317
+ # This is a workaround for removing the obsoletely installed bootstrap and jquery
318
+ FileUtils.rm_rf 'tests/components/bootstrap'
319
+ end
320
+
321
+ def fixup_path(hash)
322
+ Hash[hash.map { |k, v| ["dist/#{k}", v] }]
323
+ end
324
+
325
+ # Override
326
+ # bootstrap-sass uses this method to read in all Bootstrap's less source files
327
+ # We're going to repurpose it.
328
+ def bootstrap_less_files
329
+ patternfly_less_files
330
+ end
331
+
332
+ def patternfly_less_files
333
+ get_paths_by_type('less', /\.less$/)
334
+ end
335
+
336
+ def load_shared
337
+ mixin_hash = {}
338
+ [BOOTSTRAP_LESS_ROOT, PATTERNFLY_LESS_ROOT].each do |root|
339
+ mixin_hash[root] = read_files(
340
+ get_paths_by_type(root, /mixins(\/)|(\.less)/)).values.join("\n")
341
+ end
342
+ @shared_mixins ||= begin
343
+ read_mixins(mixin_hash.values.join("\n"), :nested => NESTED_MIXINS)
344
+ end
345
+ end
346
+
347
+ def store_version
348
+ path = 'lib/patternfly-sass/version.rb'
349
+ content = File.read(path).sub(/PATTERNFLY_SHA\s*=\s*['"][\w]+['"]/, "PATTERNFLY_SHA = '#@branch_sha'")
350
+ File.open(path, 'w') { |f| f.write(content) }
351
+ end
352
+
353
+ protected
354
+
355
+ # Override
356
+ def get_trees(*args)
357
+ root = get_tree(@branch_sha)['sha']
358
+ @tree_paths = {}
359
+ args.each do |dir|
360
+ path_components = dir.split('/')
361
+ dir_sha = path_components.inject(root) do |tree_sha, component|
362
+ tree_sha = get_tree_sha(component, get_tree(tree_sha))
363
+ end
364
+ hash_list = []
365
+ descend_tree(get_tree(dir_sha), dir, hash_list)
366
+ dir_hash = hash_list.inject({}) do |memo, hash|
367
+ memo.merge(hash)
368
+ end
369
+ @tree_paths.merge!(dir_hash)
370
+ end
371
+ @trees ||= @tree_paths.values
372
+ end
373
+
374
+ def descend_tree(tree, path, list)
375
+ list << {path => tree}
376
+ tree['tree'].map do |f|
377
+ if f['type'] == 'tree'
378
+ descend_tree(get_tree(f['sha']), File.join(path, f['path']), list)
379
+ end
380
+ end
381
+ end
382
+
383
+ # Override
384
+ def get_paths_by_type(base_dir, regex)
385
+ paths = get_paths_by_directory(base_dir)
386
+
387
+ # See http://stackoverflow.com/a/2698531 and http://stackoverflow.com/a/2552946
388
+ matches = Hash.new do |h, key|
389
+ h[key] = Array.new
390
+ end
391
+
392
+ paths.each do |dir, files|
393
+ files.each do |f|
394
+ matches[dir] << f if File.join(dir, f) =~ regex
395
+ end
396
+ end
397
+ matches
398
+ end
399
+
400
+ def get_paths_by_directory(dir)
401
+ tree = @tree_paths[dir]
402
+ if tree.nil?
403
+ log_status("#{dir} not found in Git tree.")
404
+ return []
405
+ end
406
+
407
+ files = {}
408
+ files[dir] = []
409
+ tree['tree'].map do |f|
410
+ case f['type']
411
+ when 'blob'
412
+ files[dir] << f['path']
413
+ when 'tree'
414
+ loc = File.join(dir, f['path'])
415
+ files.merge!(get_paths_by_directory(loc))
416
+ end
417
+ end
418
+ files
419
+ end
420
+
421
+ def get_tree(sha)
422
+ get_json("https://api.github.com/repos/#@repo/git/trees/#{sha}")
423
+ end
424
+
425
+ def get_tree_sha(dir, tree=get_trees)
426
+ tree['tree'].find { |t| t['path'] == dir }['sha']
427
+ end
428
+
429
+ # Override
430
+ def read_files(files)
431
+ contents = {}
432
+ files.each do |dir, file|
433
+ dir_contents = super(dir, file)
434
+ full_path_contents = Hash[
435
+ dir_contents.map do |k, v|
436
+ [File.join(dir, k), v]
437
+ end
438
+ ]
439
+ contents.merge!(full_path_contents)
440
+ end
441
+ contents
442
+ end
443
+
444
+ # Override
445
+ def get_branch_sha
446
+ @branch_sha ||= begin
447
+ cmd = "git ls-remote #{Shellwords.escape "https://github.com/#@repo"} #@branch"
448
+ log cmd
449
+ result = %x[#{cmd}]
450
+ raise 'Could not get branch sha!' unless $?.success? && !result.empty?
451
+ result.split(/\s+/).first
452
+ end
453
+ end
454
+ end
455
+ end