docks_app 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (313) hide show
  1. data/.editorconfig +8 -0
  2. data/.gitignore +22 -0
  3. data/.rubocop.yml +20 -0
  4. data/.travis.yml +10 -0
  5. data/Gemfile +4 -0
  6. data/LICENSE.txt +22 -0
  7. data/README.md +35 -0
  8. data/Rakefile +3 -0
  9. data/bin/docks +5 -0
  10. data/config/json/docks_config.json +71 -0
  11. data/config/ruby/docks_config.rb +127 -0
  12. data/config/yaml/docks_config.yml +70 -0
  13. data/docks.gemspec +38 -0
  14. data/lib/docks/build.rb +300 -0
  15. data/lib/docks/cache.rb +143 -0
  16. data/lib/docks/command_line.rb +65 -0
  17. data/lib/docks/configuration.rb +217 -0
  18. data/lib/docks/containers/base_container.rb +103 -0
  19. data/lib/docks/containers/class_container.rb +39 -0
  20. data/lib/docks/containers/component_container.rb +92 -0
  21. data/lib/docks/containers/demo_container.rb +105 -0
  22. data/lib/docks/containers/factory_container.rb +12 -0
  23. data/lib/docks/containers/function_container.rb +46 -0
  24. data/lib/docks/containers/mixin_container.rb +19 -0
  25. data/lib/docks/containers/pattern_container.rb +168 -0
  26. data/lib/docks/containers/pattern_library_container.rb +77 -0
  27. data/lib/docks/containers/state_container.rb +9 -0
  28. data/lib/docks/containers/symbol_container.rb +77 -0
  29. data/lib/docks/containers/variable_container.rb +47 -0
  30. data/lib/docks/containers/variant_container.rb +9 -0
  31. data/lib/docks/containers/variation_container.rb +38 -0
  32. data/lib/docks/containers.rb +25 -0
  33. data/lib/docks/descriptor.rb +60 -0
  34. data/lib/docks/errors.rb +5 -0
  35. data/lib/docks/group.rb +66 -0
  36. data/lib/docks/helpers/github_helper.rb +29 -0
  37. data/lib/docks/helpers/path_helper.rb +94 -0
  38. data/lib/docks/helpers/render_helper.rb +87 -0
  39. data/lib/docks/helpers.rb +19 -0
  40. data/lib/docks/languages/base_language.rb +17 -0
  41. data/lib/docks/languages/coffeescript_language.rb +30 -0
  42. data/lib/docks/languages/common_types/markup_language.rb +71 -0
  43. data/lib/docks/languages/css_language.rb +13 -0
  44. data/lib/docks/languages/erb_language.rb +21 -0
  45. data/lib/docks/languages/haml_language.rb +21 -0
  46. data/lib/docks/languages/html_language.rb +10 -0
  47. data/lib/docks/languages/javascript_language.rb +42 -0
  48. data/lib/docks/languages/json_language.rb +18 -0
  49. data/lib/docks/languages/less_language.rb +33 -0
  50. data/lib/docks/languages/markdown_language.rb +10 -0
  51. data/lib/docks/languages/sass_language.rb +36 -0
  52. data/lib/docks/languages/slim_language.rb +21 -0
  53. data/lib/docks/languages/stylus_language.rb +26 -0
  54. data/lib/docks/languages/yaml_language.rb +18 -0
  55. data/lib/docks/languages.rb +103 -0
  56. data/lib/docks/markdown.rb +18 -0
  57. data/lib/docks/messenger.rb +69 -0
  58. data/lib/docks/naming_conventions/base_naming_convention.rb +9 -0
  59. data/lib/docks/naming_conventions/bem_naming_convention.rb +45 -0
  60. data/lib/docks/naming_conventions/suit_naming_convention.rb +45 -0
  61. data/lib/docks/naming_conventions.rb +21 -0
  62. data/lib/docks/ostruct.rb +17 -0
  63. data/lib/docks/parser.rb +86 -0
  64. data/lib/docks/parsers/base_parser.rb +128 -0
  65. data/lib/docks/parsers/coffeescript_parser.rb +30 -0
  66. data/lib/docks/parsers/css_parser.rb +27 -0
  67. data/lib/docks/parsers/javascript_parser.rb +30 -0
  68. data/lib/docks/parsers/less_parser.rb +22 -0
  69. data/lib/docks/parsers/sass_parser.rb +31 -0
  70. data/lib/docks/parsers/stylus_parser.rb +28 -0
  71. data/lib/docks/process.rb +60 -0
  72. data/lib/docks/processors.rb +416 -0
  73. data/lib/docks/renderers/base_renderer.rb +64 -0
  74. data/lib/docks/renderers/common_features/capturable.rb +69 -0
  75. data/lib/docks/renderers/common_features/helperable.rb +23 -0
  76. data/lib/docks/renderers/erb_renderer.rb +68 -0
  77. data/lib/docks/renderers/haml_renderer.rb +37 -0
  78. data/lib/docks/renderers/slim_renderer.rb +33 -0
  79. data/lib/docks/symbol_sources/base_symbol_source.rb +12 -0
  80. data/lib/docks/symbol_sources/jquery_symbol_source.rb +17 -0
  81. data/lib/docks/symbol_sources/mdn_symbol_source.rb +35 -0
  82. data/lib/docks/symbol_sources/sass_symbol_source.rb +27 -0
  83. data/lib/docks/symbol_sources.rb +28 -0
  84. data/lib/docks/tags/access_tag.rb +27 -0
  85. data/lib/docks/tags/activate_with_tag.rb +17 -0
  86. data/lib/docks/tags/active_tag.rb +14 -0
  87. data/lib/docks/tags/alias_tag.rb +17 -0
  88. data/lib/docks/tags/author_tag.rb +19 -0
  89. data/lib/docks/tags/base_tag.rb +52 -0
  90. data/lib/docks/tags/beta_tag.rb +26 -0
  91. data/lib/docks/tags/class_tag.rb +16 -0
  92. data/lib/docks/tags/compatibility_tag.rb +19 -0
  93. data/lib/docks/tags/demo_type_tag.rb +14 -0
  94. data/lib/docks/tags/deprecated_tag.rb +26 -0
  95. data/lib/docks/tags/description_tag.rb +99 -0
  96. data/lib/docks/tags/example_tag.rb +20 -0
  97. data/lib/docks/tags/factory_tag.rb +16 -0
  98. data/lib/docks/tags/for_tag.rb +23 -0
  99. data/lib/docks/tags/group_tag.rb +10 -0
  100. data/lib/docks/tags/helper_tag.rb +13 -0
  101. data/lib/docks/tags/include_with_tag.rb +57 -0
  102. data/lib/docks/tags/javascript_action_tag.rb +10 -0
  103. data/lib/docks/tags/link_tag.rb +18 -0
  104. data/lib/docks/tags/markup_tag.rb +106 -0
  105. data/lib/docks/tags/member_tag.rb +37 -0
  106. data/lib/docks/tags/method_tag.rb +18 -0
  107. data/lib/docks/tags/name_tag.rb +10 -0
  108. data/lib/docks/tags/object_tag.rb +15 -0
  109. data/lib/docks/tags/param_tag.rb +94 -0
  110. data/lib/docks/tags/pattern_tag.rb +21 -0
  111. data/lib/docks/tags/preclude_tag.rb +17 -0
  112. data/lib/docks/tags/private_tag.rb +15 -0
  113. data/lib/docks/tags/property_tag.rb +18 -0
  114. data/lib/docks/tags/public_tag.rb +15 -0
  115. data/lib/docks/tags/require_tag.rb +47 -0
  116. data/lib/docks/tags/returns_tag.rb +31 -0
  117. data/lib/docks/tags/set_by_tag.rb +18 -0
  118. data/lib/docks/tags/signature_tag.rb +35 -0
  119. data/lib/docks/tags/since_tag.rb +26 -0
  120. data/lib/docks/tags/source_tag.rb +12 -0
  121. data/lib/docks/tags/state_tag.rb +21 -0
  122. data/lib/docks/tags/static_tag.rb +14 -0
  123. data/lib/docks/tags/subcomponent_tag.rb +68 -0
  124. data/lib/docks/tags/subtitle_tag.rb +11 -0
  125. data/lib/docks/tags/symbol_type_tag.rb +10 -0
  126. data/lib/docks/tags/throws_tag.rb +30 -0
  127. data/lib/docks/tags/title_tag.rb +10 -0
  128. data/lib/docks/tags/type_tag.rb +10 -0
  129. data/lib/docks/tags/value_tag.rb +10 -0
  130. data/lib/docks/tags/variant_tag.rb +21 -0
  131. data/lib/docks/tags/variation_tag.rb +136 -0
  132. data/lib/docks/tags.rb +103 -0
  133. data/lib/docks/templates.rb +122 -0
  134. data/lib/docks/themes.rb +19 -0
  135. data/lib/docks/types.rb +26 -0
  136. data/lib/docks/version.rb +3 -0
  137. data/lib/docks.rb +37 -0
  138. data/spec/fixtures/build/scripts/bar/bar_2.js +1 -0
  139. data/spec/fixtures/build/scripts/bar.js +1 -0
  140. data/spec/fixtures/build/styles/foo/foo-2.css +1 -0
  141. data/spec/fixtures/build/styles/foo.css +1 -0
  142. data/spec/fixtures/build/templates/baz/baz_2.erb +1 -0
  143. data/spec/fixtures/build/templates/baz.erb +1 -0
  144. data/spec/fixtures/grouper/components/button/button.coffee +0 -0
  145. data/spec/fixtures/grouper/components/button/button.haml +0 -0
  146. data/spec/fixtures/grouper/components/button/button.scss +0 -0
  147. data/spec/fixtures/grouper/components/checkbox/_checkbox.haml +0 -0
  148. data/spec/fixtures/grouper/components/checkbox/_checkbox.scss +0 -0
  149. data/spec/fixtures/grouper/components/checkbox/checkbox.coffee +0 -0
  150. data/spec/fixtures/grouper/components/form/form.coffee +0 -0
  151. data/spec/fixtures/grouper/components/form/form.m +0 -0
  152. data/spec/fixtures/grouper/components/form/form.scss +0 -0
  153. data/spec/fixtures/grouper/components/next-expanding-textarea/_next-expanding-textarea.scss +0 -0
  154. data/spec/fixtures/grouper/components/next-expanding-textarea/_next_expanding_textarea.coffee +0 -0
  155. data/spec/fixtures/grouper/components/next-expanding-textarea/next-expanding-textarea.haml +0 -0
  156. data/spec/fixtures/grouper/components/next-tab/next-tab.coffee +0 -0
  157. data/spec/fixtures/grouper/components/next-tab/next-tab.haml +0 -0
  158. data/spec/fixtures/grouper/components/next-tab/next-tab.scss +0 -0
  159. data/spec/fixtures/grouper/components/segmented control/segmented control.coffee +0 -0
  160. data/spec/fixtures/grouper/components/segmented control/segmented control.haml +0 -0
  161. data/spec/fixtures/grouper/components/segmented control/segmented control.min.html +0 -0
  162. data/spec/fixtures/grouper/components/segmented control/segmented control.scss +0 -0
  163. data/spec/fixtures/grouper/markup/list-view.haml +0 -0
  164. data/spec/fixtures/grouper/markup/resizable/resizable.haml +0 -0
  165. data/spec/fixtures/grouper/markup/toggle.haml +0 -0
  166. data/spec/fixtures/grouper/scripts/resizable/resizable.coffee +0 -0
  167. data/spec/fixtures/grouper/scripts/toggle.coffee +0 -0
  168. data/spec/fixtures/grouper/style/_list-view.scss +0 -0
  169. data/spec/fixtures/grouper/style/_toggle.scss +0 -0
  170. data/spec/fixtures/languages/stub.json +3 -0
  171. data/spec/fixtures/languages/stub.yml +2 -0
  172. data/spec/fixtures/parsers/coffeescript_parser_fixture_basic.coffee +20 -0
  173. data/spec/fixtures/parsers/coffeescript_parser_fixture_complex.coffee +80 -0
  174. data/spec/fixtures/parsers/css_parser_fixture_basic.css +44 -0
  175. data/spec/fixtures/parsers/css_parser_fixture_complex.css +120 -0
  176. data/spec/fixtures/parsers/javascript_parser_fixture_basic.js +27 -0
  177. data/spec/fixtures/parsers/javascript_parser_fixture_complex.js +85 -0
  178. data/spec/fixtures/parsers/sass_parser_fixture_basic.scss +39 -0
  179. data/spec/fixtures/parsers/sass_parser_fixture_complex.scss +149 -0
  180. data/spec/fixtures/parsers/stylus_parser_fixture_basic.styl +34 -0
  181. data/spec/fixtures/parsers/stylus_parser_fixture_complex.styl +113 -0
  182. data/spec/fixtures/processors/join_with_smart_line_breaks/code_blocks.txt +10 -0
  183. data/spec/fixtures/processors/join_with_smart_line_breaks/headings.txt +15 -0
  184. data/spec/fixtures/processors/join_with_smart_line_breaks/lists.txt +21 -0
  185. data/spec/fixtures/processors/join_with_smart_line_breaks/lists_with_nesting.txt +13 -0
  186. data/spec/fixtures/processors/join_with_smart_line_breaks/multiple_paragraphs.txt +11 -0
  187. data/spec/fixtures/renderers/helpers.rb +37 -0
  188. data/spec/fixtures/renderers/html_output.html +7 -0
  189. data/spec/fixtures/renderers/templates/layouts/application.html.erb +0 -0
  190. data/spec/fixtures/renderers/templates/layouts/more/subdirectory.html.erb +0 -0
  191. data/spec/fixtures/renderers/templates/partials/_leading_underscore.html.erb +1 -0
  192. data/spec/fixtures/renderers/templates/partials/more/_subdirectory.html.erb +1 -0
  193. data/spec/fixtures/renderers/templates/partials/partial.html.erb +0 -0
  194. data/spec/fixtures/renderers/templates/partials/template.html.erb +1 -0
  195. data/spec/fixtures/renderers/templates/template.html.erb +1 -0
  196. data/spec/fixtures/tags/description/button.md +24 -0
  197. data/spec/fixtures/tags/description/class.md +27 -0
  198. data/spec/fixtures/tags/description/component.md +23 -0
  199. data/spec/fixtures/tags/description/function.md +30 -0
  200. data/spec/lib/build_spec.rb +467 -0
  201. data/spec/lib/cache_spec.rb +175 -0
  202. data/spec/lib/command_line_spec.rb +77 -0
  203. data/spec/lib/configuration_spec.rb +180 -0
  204. data/spec/lib/containers/base_container_spec.rb +214 -0
  205. data/spec/lib/containers/class_container_spec.rb +209 -0
  206. data/spec/lib/containers/component_container_spec.rb +158 -0
  207. data/spec/lib/containers/demo_container_spec.rb +113 -0
  208. data/spec/lib/containers/function_container_spec.rb +116 -0
  209. data/spec/lib/containers/mixin_container_spec.rb +4 -0
  210. data/spec/lib/containers/pattern_container_spec.rb +291 -0
  211. data/spec/lib/containers/pattern_library_container_spec.rb +130 -0
  212. data/spec/lib/containers/symbol_container_spec.rb +216 -0
  213. data/spec/lib/containers/variable_container_spec.rb +116 -0
  214. data/spec/lib/containers/variation_container_spec.rb +52 -0
  215. data/spec/lib/containers_spec.rb +22 -0
  216. data/spec/lib/descriptor_spec.rb +73 -0
  217. data/spec/lib/group_spec.rb +151 -0
  218. data/spec/lib/helpers/path_helper_spec.rb +202 -0
  219. data/spec/lib/helpers/render_helper_spec.rb +159 -0
  220. data/spec/lib/helpers_spec.rb +35 -0
  221. data/spec/lib/languages/base_language_spec.rb +32 -0
  222. data/spec/lib/languages/coffeescript_language_spec.rb +52 -0
  223. data/spec/lib/languages/css_language_spec.rb +13 -0
  224. data/spec/lib/languages/erb_language_spec.rb +33 -0
  225. data/spec/lib/languages/haml_language_spec.rb +32 -0
  226. data/spec/lib/languages/javascript_language_spec.rb +54 -0
  227. data/spec/lib/languages/json_language_spec.rb +24 -0
  228. data/spec/lib/languages/less_language_spec.rb +39 -0
  229. data/spec/lib/languages/markup_language_spec.rb +95 -0
  230. data/spec/lib/languages/sass_language_spec.rb +53 -0
  231. data/spec/lib/languages/slim_language_spec.rb +32 -0
  232. data/spec/lib/languages/stylus_language_spec.rb +34 -0
  233. data/spec/lib/languages/yaml_language_spec.rb +24 -0
  234. data/spec/lib/languages_spec.rb +127 -0
  235. data/spec/lib/markdown_spec.rb +63 -0
  236. data/spec/lib/messenger_spec.rb +1 -0
  237. data/spec/lib/naming_conventions/bem_naming_convention_spec.rb +112 -0
  238. data/spec/lib/naming_conventions/suit_naming_convention_spec.rb +107 -0
  239. data/spec/lib/naming_conventions_spec.rb +28 -0
  240. data/spec/lib/ostruct_spec.rb +15 -0
  241. data/spec/lib/parser_spec.rb +93 -0
  242. data/spec/lib/parsers/base_parser_spec.rb +128 -0
  243. data/spec/lib/parsers/coffeescript_parser_spec.rb +184 -0
  244. data/spec/lib/parsers/css_parser_spec.rb +136 -0
  245. data/spec/lib/parsers/javascript_parser_spec.rb +216 -0
  246. data/spec/lib/parsers/less_parser_spec.rb +111 -0
  247. data/spec/lib/parsers/sass_parser_spec.rb +233 -0
  248. data/spec/lib/parsers/stylus_parser_spec.rb +212 -0
  249. data/spec/lib/process_spec.rb +96 -0
  250. data/spec/lib/processors_spec.rb +555 -0
  251. data/spec/lib/renderers/base_renderer_spec.rb +122 -0
  252. data/spec/lib/renderers/common_features/helperable_spec.rb +30 -0
  253. data/spec/lib/renderers/erb_renderer_spec.rb +119 -0
  254. data/spec/lib/renderers/haml_renderer_spec.rb +103 -0
  255. data/spec/lib/renderers/slim_renderer_spec.rb +103 -0
  256. data/spec/lib/symbol_sources/jquery_symbol_source_spec.rb +25 -0
  257. data/spec/lib/symbol_sources/mdn_symbol_source_spec.rb +40 -0
  258. data/spec/lib/symbol_sources/sass_symbol_source_spec.rb +39 -0
  259. data/spec/lib/symbol_sources_spec.rb +19 -0
  260. data/spec/lib/tags/access_tag_spec.rb +32 -0
  261. data/spec/lib/tags/activate_with_tag_spec.rb +31 -0
  262. data/spec/lib/tags/active_tag_spec.rb +24 -0
  263. data/spec/lib/tags/alias_tag_spec.rb +31 -0
  264. data/spec/lib/tags/author_tag_spec.rb +172 -0
  265. data/spec/lib/tags/base_tag_spec.rb +21 -0
  266. data/spec/lib/tags/beta_tag_spec.rb +52 -0
  267. data/spec/lib/tags/class_tag_spec.rb +29 -0
  268. data/spec/lib/tags/compatibility_tag_spec.rb +159 -0
  269. data/spec/lib/tags/demo_type_tag_spec.rb +24 -0
  270. data/spec/lib/tags/deprecated_tag_spec.rb +50 -0
  271. data/spec/lib/tags/description_tag_spec.rb +242 -0
  272. data/spec/lib/tags/example_tag_spec.rb +37 -0
  273. data/spec/lib/tags/factory_tag_spec.rb +29 -0
  274. data/spec/lib/tags/for_tag_spec.rb +45 -0
  275. data/spec/lib/tags/group_tag_spec.rb +20 -0
  276. data/spec/lib/tags/helper_tag_spec.rb +22 -0
  277. data/spec/lib/tags/include_with_tag_spec.rb +74 -0
  278. data/spec/lib/tags/javascript_action_tag_spec.rb +20 -0
  279. data/spec/lib/tags/link_tag_spec.rb +49 -0
  280. data/spec/lib/tags/markup_tag_spec.rb +255 -0
  281. data/spec/lib/tags/member_tag_spec.rb +167 -0
  282. data/spec/lib/tags/method_tag_spec.rb +27 -0
  283. data/spec/lib/tags/name_tag_spec.rb +20 -0
  284. data/spec/lib/tags/object_tag_spec.rb +24 -0
  285. data/spec/lib/tags/param_tag_spec.rb +261 -0
  286. data/spec/lib/tags/pattern_tag_spec.rb +49 -0
  287. data/spec/lib/tags/preclude_tag_spec.rb +31 -0
  288. data/spec/lib/tags/private_tag_spec.rb +31 -0
  289. data/spec/lib/tags/property_tag_spec.rb +27 -0
  290. data/spec/lib/tags/public_tag_spec.rb +29 -0
  291. data/spec/lib/tags/require_tag_spec.rb +133 -0
  292. data/spec/lib/tags/returns_tag_spec.rb +85 -0
  293. data/spec/lib/tags/set_by_tag_spec.rb +92 -0
  294. data/spec/lib/tags/signature_tag_spec.rb +125 -0
  295. data/spec/lib/tags/since_tag_spec.rb +48 -0
  296. data/spec/lib/tags/state_tag_spec.rb +199 -0
  297. data/spec/lib/tags/static_tag_spec.rb +27 -0
  298. data/spec/lib/tags/subcomponent_tag_spec.rb +78 -0
  299. data/spec/lib/tags/subtitle_tag_spec.rb +13 -0
  300. data/spec/lib/tags/symbol_type_tag_spec.rb +20 -0
  301. data/spec/lib/tags/throws_tag_spec.rb +49 -0
  302. data/spec/lib/tags/title_tag_spec.rb +20 -0
  303. data/spec/lib/tags/type_tag_spec.rb +20 -0
  304. data/spec/lib/tags/value_tag_spec.rb +20 -0
  305. data/spec/lib/tags/variant_tag_spec.rb +13 -0
  306. data/spec/lib/tags/variation_tag_spec.rb +154 -0
  307. data/spec/lib/tags_spec.rb +264 -0
  308. data/spec/lib/templates_spec.rb +185 -0
  309. data/spec/lib/themes_spec.rb +32 -0
  310. data/spec/spec_helper.rb +34 -0
  311. data/tasks/rspec.rake +7 -0
  312. data/tasks/rubocop.rake +8 -0
  313. metadata +740 -0
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -0,0 +1,3 @@
1
+ {
2
+ "foo": "bar"
3
+ }
@@ -0,0 +1,2 @@
1
+ ---
2
+ foo: bar
@@ -0,0 +1,20 @@
1
+ defaults =
2
+ #*
3
+ # Determines what action will be taken on the original footnote markup: `"hide"` (using `display: none;`), `"delete"`, or `"ignore"` (leaves the original content in place). This action will also be taken on any elements containing the footnote if they are now empty.
4
+ #
5
+ # @access public
6
+ # @author Chris Sauve
7
+ # @since 0.0.1
8
+ # @returns {String}
9
+ # @default "hide"
10
+ actionOriginalFN : "hide"
11
+
12
+ #*
13
+ # Specifies a function to call on a footnote popover that is being instantiated (before it is added to the DOM). The function will be passed two arguments: `$popover`, which is a jQuery object containing the new popover element, and `$button`, the button that was cblicked to instantiate the popover. This option can be useful for adding additional classes or styling information before a popover appears.
14
+ #
15
+ # @access public
16
+ # @author Chris Sauve
17
+ # @since 0.0.1
18
+ # @type {Function}
19
+ # @default function() {}
20
+ activateCallback : () -> return
@@ -0,0 +1,80 @@
1
+
2
+
3
+ #*
4
+ # @pattern Bigfoot
5
+
6
+ # The best footnote plugin around.
7
+
8
+ #*
9
+ # Groups the ID and HREF of a superscript/ anchor tag pair in data attributes.
10
+ # This resolves the issue of the href and backlink id being separated between the two elements.
11
+
12
+ # @param {jQuery} $footnoteAnchors - Anchors that link to footnotes.
13
+ # @param {Array} footnoteLinks ([]) - An array on which the new anchors will be pushed.
14
+
15
+ # @returns {undefined}
16
+
17
+ cleanFootnoteLinks = ($footnoteAnchors, footnoteLinks = []) ->
18
+ $parent = undefined
19
+ $supChild = undefined
20
+ linkHREF = undefined
21
+ linkID = undefined
22
+
23
+ # Problem: backlink ID might point to containing superscript of the fn link
24
+ # Solution: Check if there is a superscript and move the href/ ID up to it.
25
+ # The combined id/ href of the sup/a pair are stored in sup using data attributes
26
+ $footnoteAnchors.each ->
27
+ $this = $(this)
28
+ linkHREF = "#" + ($this.attr("href")).split("#")[1] # just the fragment ID
29
+ $parent = $this.closest(settings.anchorParentTagsname)
30
+ $child = $this.find(settings.anchorParentTagsname)
31
+
32
+ defaults =
33
+ #*
34
+ # Determines what action will be taken on the original footnote markup: `"hide"` (using `display: none;`), `"delete"`, or `"ignore"` (leaves the original content in place). This action will also be taken on any elements containing the footnote if they are now empty.
35
+ #
36
+ # @access public
37
+ # @default "hide"
38
+ actionOriginalFN : "hide"
39
+
40
+ #*
41
+ # Specifies a function to call on a footnote popover that is being instantiated (before it is added to the DOM). The function will be passed two arguments: `$popover`, which is a jQuery object containing the new popover element, and `$button`, the button that was cblicked to instantiate the popover. This option can be useful for adding additional classes or styling information before a popover appears.
42
+ #
43
+ # @default function() {}
44
+ activateCallback : () -> return
45
+
46
+ #*
47
+ # Footnote button/ content initializer (run on doc.ready).
48
+ # Finds the likely footnote links and then uses their target to find the content.
49
+ #
50
+ # @returns {undefined}
51
+
52
+ footnoteInit = ->
53
+ # Get all of the possible footnote links
54
+ footnoteButtonSearchQuery = if settings.scope
55
+ "#{settings.scope} a[href*=\"#\"]"
56
+ else
57
+ "a[href*=\"#\"]"
58
+
59
+ # Filter down to links that:
60
+ # - have an HREF referencing a footnote, OR
61
+ # - have a rel attribute of footnote
62
+ # - aren't a descendant of a footnote (prevents backlinks)
63
+ $footnoteAnchors = $(footnoteButtonSearchQuery).filter ->
64
+ $this = $(this)
65
+ relAttr = $this.attr "rel"
66
+ relAttr = "" if relAttr == "null" || !relAttr?
67
+ "#{$this.attr "href"}#{relAttr}".match(settings.anchorPattern) && $this.closest("[class*=#{settings.footnoteParentClass}]:not(a):not(#{settings.anchorParentTagsname})").length < 1
68
+
69
+ #*
70
+ # Removes any links from the footnote back to the footnote link as these don't make sense when the footnote is shown inline
71
+ #
72
+ # @param {String} footnoteHTML - The string version of the new footnote.
73
+ # @param {String} backlinkID - The ID of the footnote link (that is to be removed from the footnote HTML).
74
+ #
75
+ # @returns {String} - The new HTML string with the relevant links taken out.
76
+
77
+ removeBackLinks = (footnoteHTML, backlinkID) ->
78
+ # First, though, take care of multiple ID's by getting rid of spaces
79
+ backlinkID = backlinkID.trim().replace(/\s+/g, "|")
80
+ .replace(/(.*)/g, "($1)") if backlinkID.indexOf(' ') >= 0
@@ -0,0 +1,44 @@
1
+ /**
2
+
3
+ * A simple button. Nice.
4
+
5
+ * Lorem ipsum dolor sit amet, consectetur adipisicing elit.
6
+ * Aliquam expedita repellendus magnam similique eum assumenda velit doloribus omnis labore debitis. Molestiae debitis soluta earum minima maxime inventore aperiam, et omnis.
7
+
8
+ */
9
+
10
+ .button {
11
+ cursor: pointer;
12
+ display: inline-block;
13
+ height: 32px;
14
+ line-height: 30px;
15
+ }
16
+
17
+ .button:hover,
18
+ .button:focus {
19
+ background: #efefef; /* slightly different on hover/ focus */
20
+ }
21
+
22
+
23
+ /**
24
+ * A button that is indicating the loading of content.
25
+ *
26
+ * @demo_type joint
27
+ * @set_by :loading?
28
+ */
29
+
30
+ .button--is-loading {
31
+ }
32
+
33
+ /* Don't do this for disabled buttons */
34
+ .button--is-loading:not(.button--is-disabled) {
35
+ color: transparent;
36
+ cursor: default;
37
+ background-repeat: no-repeat;
38
+ background-position: center center;
39
+ }
40
+
41
+ .button--is-loading:not(.button--is-disabled):hover,
42
+ .button--is-loading:not(.button--is-disabled):focus {
43
+ background-color: #fcfcfc;
44
+ }
@@ -0,0 +1,120 @@
1
+ /**
2
+ *
3
+ * @pattern Buttons
4
+ * @tagline Those sweet, sweet clicks.
5
+ * @since 1.0
6
+ */
7
+
8
+ /**
9
+ * A simple button. Nice.
10
+ *
11
+ * Lorem ipsum dolor sit amet, consectetur adipisicing elit. Aliquam expedita repellendus magnam similique eum assumenda velit doloribus omnis labore debitis. Molestiae debitis soluta earum minima maxime inventore aperiam, et omnis.
12
+ *
13
+ * @variant --primary (demo type: joint, set by: :primary?)
14
+ * @variant --destroy (demo type: joint, set by: :destroy?) - This button indicates that you want to remove something.
15
+ * @variant --destroy-no-hover (demo type: joint)
16
+ * @variant --icon (demo type: hidden)
17
+ * @variant --large (demo type: select, set by: :size (SIZE_LARGE)) - A much larger button for special situations.
18
+ * @variant --plain (demo type: select, precludes: --is-disabled, set by: :plain?)
19
+ */
20
+
21
+ .button {
22
+ cursor: pointer;
23
+ display: inline-block;
24
+ height: 32px;
25
+ line-height: 30px;
26
+ }
27
+
28
+ /**
29
+ * A button that is indicating the loading of content.
30
+ *
31
+ * @demo_type joint
32
+ * @set_by :loading? */
33
+
34
+ .button--is-loading {
35
+ /* Don't do this for disabled buttons */
36
+ color: transparent;
37
+ cursor: default;
38
+ background-repeat: no-repeat;
39
+ background-position: center center;
40
+ }
41
+
42
+ /**
43
+ * @precludes .button--large
44
+ * @demo_type select
45
+ * @set_by NextButton#resize, :size (SIZE_SLIM)
46
+ */
47
+
48
+ .button--slim {
49
+ height: 28px;
50
+ line-height: 26px;
51
+ }
52
+
53
+ .button--plain {
54
+ background: transparent;
55
+ border: none;
56
+ }
57
+
58
+ /**
59
+ * A button that can't be activated. In order for this button to
60
+ * function correctly, both the class and the disabled attribute
61
+ * must be placed on the button.
62
+
63
+ * For example, the following will produce a button that *looks* disabled,
64
+ * but that is still clickable:
65
+
66
+ * ```html
67
+ * <button class="button button--is-disabled">Not really disabled button</button>
68
+ * ```
69
+
70
+ * But this one creates an appropriately unclickable button:
71
+
72
+ * ```html_demo
73
+ * <button class="button button--is-disabled" disabled="disabled">Really disabled!</button>
74
+ * ```
75
+
76
+ * @demo_type select
77
+ * @javascript_action $(this).addClass('button--is-disabled').attr('disabled', true)
78
+ * @set_by :disabled?
79
+ * @precludes button--is-loading
80
+ */
81
+
82
+ .button--is-disabled,
83
+ .button--is-disabled:hover,
84
+ .button--is-disabled:focus {
85
+ color: #999;
86
+ border-color: #e3e3e3;
87
+ background: #fcfcfc;
88
+ }
89
+
90
+
91
+
92
+ /**
93
+ * Two or more buttons that control the same function.
94
+
95
+ * @title Segmented Button Group
96
+ * @demo_type own
97
+ */
98
+
99
+ .button__segmented-group {
100
+ display: flex;
101
+ }
102
+
103
+ /* Adjusts details for buttons that are part of the
104
+ button group. */
105
+
106
+ .button__segmented-group .button {
107
+ display: block;
108
+ flex: 0 1 auto;
109
+ margin: 0;
110
+ }
111
+
112
+
113
+ /* A segmented group that spans the entire container.
114
+ @demo_type select */
115
+
116
+ .button__segmented-group--full-width {
117
+ .button {
118
+ flex: 1 1 auto;
119
+ }
120
+ }
@@ -0,0 +1,27 @@
1
+ var defaults = {
2
+ //*
3
+ // Determines what action will be taken on the original footnote markup: `"hide"` (using `display: none;`), `"delete"`, or `"ignore"` (leaves the original content in place). This action will also be taken on any elements containing the footnote if they are now empty.
4
+ //
5
+ // @access public
6
+ // @author Chris Sauve
7
+ // @since 0.0.1
8
+ // @returns {String}
9
+ // @default "hide"
10
+ actionOriginalFN: "hide",
11
+
12
+ /**
13
+ * Specifies a function to call on a footnote popover that is being instantiated
14
+ * (before it is added to the DOM). The function will be passed two arguments:
15
+ * `$popover`, which is a jQuery object containing the new popover element, and
16
+ * `$button`, the button that was cblicked to instantiate the popover. This
17
+ * option can be useful for adding additional classes or styling information
18
+ * before a popover appears.
19
+ *
20
+ * @access public
21
+ * @author Chris Sauve
22
+ * @since 0.0.1
23
+ * @type {Function}
24
+ * @default function() {}
25
+ */
26
+ activateCallback: function() {}
27
+ };
@@ -0,0 +1,85 @@
1
+
2
+ //*
3
+ // @pattern Bigfoot
4
+
5
+ // The best footnote plugin around.
6
+
7
+ //*
8
+ // Groups the ID and HREF of a superscript/ anchor tag pair in data attributes.
9
+ // This resolves the issue of the href and backlink id being separated between the two elements.
10
+
11
+ // @param {jQuery} $footnoteAnchors - Anchors that link to footnotes.
12
+ // @param {Array} footnoteLinks ([]) - An array on which the new anchors will be pushed.
13
+
14
+ // @returns {undefined}
15
+
16
+ function cleanFootnoteLinks($footnoteAnchors, footnoteLinks) {
17
+ $parent = undefined;
18
+ $supChild = undefined;
19
+ linkHREF = undefined;
20
+ linkID = undefined;
21
+
22
+ // Problem: backlink ID might point to containing superscript of the fn link
23
+ // Solution: Check if there is a superscript and move the href/ ID up to it.
24
+ // The combined id/ href of the sup/a pair are stored in sup using data attributes
25
+ $footnoteAnchors.each(function() {
26
+ $this = $(this);
27
+ linkHREF = "#" + ($this.attr("href")).split("#")[1]; // just the fragment ID
28
+ $parent = $this.closest(settings.anchorParentTagsname);
29
+ $child = $this.find(settings.anchorParentTagsname);
30
+ });
31
+ };
32
+
33
+ defaults = {
34
+ //*
35
+ // Determines what action will be taken on the original footnote markup: `"hide"` (using `display: none;`), `"delete"`, or `"ignore"` (leaves the original content in place). This action will also be taken on any elements containing the footnote if they are now empty.
36
+ //
37
+ // @access public
38
+ // @default "hide"
39
+ actionOriginalFN: "hide",
40
+
41
+ //*
42
+ // Specifies a function to call on a footnote popover that is being instantiated (before it is added to the DOM). The function will be passed two arguments: `$popover`, which is a jQuery object containing the new popover element, and `$button`, the button that was cblicked to instantiate the popover. This option can be useful for adding additional classes or styling information before a popover appears.
43
+ //
44
+ // @default function() {}
45
+ activateCallback: function() {}
46
+ };
47
+
48
+ //*
49
+ // Footnote button/ content initializer (run on doc.ready).
50
+ // Finds the likely footnote links and then uses their target to find the content.
51
+ //
52
+ // @returns {undefined}
53
+
54
+ function footnoteInit() {
55
+ // Get all of the possible footnote links
56
+ footnoteButtonSearchQuery = settings.scope ? "#{settings.scope} a[href*=\"#\"]" : "a[href*=\"#\"]";
57
+
58
+ // Filter down to links that:
59
+ // - have an HREF referencing a footnote, OR
60
+ // - have a rel attribute of footnote
61
+ // - aren't a descendant of a footnote (prevents backlinks)
62
+ $footnoteAnchors = $(footnoteButtonSearchQuery).filter(function() {
63
+ $this = $(this);
64
+ relAttr = $this.attr("rel");
65
+ if(relAttr == "null" || !relAttr) { relAttr = "" }
66
+
67
+ ("" + $this.attr("href") + relAttr).match(settings.anchorPattern) && $this.closest("[class*=" + settings.footnoteParentClass + "]:not(a):not(" + settings.anchorParentTagsname + ")").length < 1
68
+
69
+ //*
70
+ // Removes any links from the footnote back to the footnote link as these don't make sense when the footnote is shown inline
71
+ //
72
+ // @param {String} footnoteHTML - The string version of the new footnote.
73
+ // @param {String} backlinkID - The ID of the footnote link (that is to be removed from the footnote HTML).
74
+ //
75
+ // @returns {String} - The new HTML string with the relevant links taken out.
76
+
77
+ function removeBackLinks(footnoteHTML, backlinkID) {
78
+ // First, though, take care of multiple ID's by getting rid of spaces
79
+ if(backlinkID.indexOf(" ") >= 0) {
80
+ backlinkID = backlinkID.trim().replace(/\s+/g, "|")
81
+ .replace(/(.*)/g, "($1)");
82
+ }
83
+ }
84
+ });
85
+ }
@@ -0,0 +1,39 @@
1
+ //*
2
+ // A simple button. Nice.
3
+ //
4
+ // Lorem ipsum dolor sit amet, consectetur adipisicing elit.
5
+ // Aliquam expedita repellendus magnam similique eum assumenda velit doloribus omnis labore debitis.
6
+ // Molestiae debitis soluta earum minima maxime inventore aperiam, et omnis.
7
+
8
+ .button {
9
+ cursor: pointer;
10
+ display: inline-block;
11
+ height: 32px;
12
+ line-height: 30px;
13
+
14
+ &:hover,
15
+ &:focus {
16
+ background: #efefef; // slightly different on hover/ focus
17
+ }
18
+
19
+ //*
20
+ // A button that is indicating the loading of content.
21
+ //
22
+ // @demo_type joint
23
+ // @set_by :loading?
24
+
25
+ &.button--is-loading {
26
+ // Don't do this for disabled buttons
27
+ &:not(.button--is-disabled) {
28
+ color: transparent;
29
+ cursor: default;
30
+ background-repeat: no-repeat;
31
+ background-position: center center;
32
+
33
+ &:hover,
34
+ &:focus {
35
+ background-color: #fcfcfc;
36
+ }
37
+ }
38
+ }
39
+ }
@@ -0,0 +1,149 @@
1
+ //*
2
+ // @pattern Buttons
3
+ // @tagline Those sweet, sweet clicks.
4
+ // @since 1.0
5
+
6
+ .foo {}
7
+
8
+ /**
9
+ * A simple button. Nice.
10
+ *
11
+ * Lorem ipsum dolor sit amet, consectetur adipisicing elit. Aliquam expedita repellendus magnam similique eum assumenda velit doloribus omnis labore debitis. Molestiae debitis soluta earum minima maxime inventore aperiam, et omnis.
12
+ *
13
+ * @variant --primary (demo type: joint, set by: :primary?)
14
+ * @variant --destroy (demo type: joint, set by: :destroy?) - This button indicates that you want to remove something.
15
+ * @variant --destroy-no-hover (demo type: joint)
16
+ * @variant --icon (demo type: hidden)
17
+ * @variant --large (demo type: select, set by: :size (SIZE_LARGE)) - A much larger button for special situations.
18
+ * @variant --plain (demo type: select, precludes: --is-disabled, set by: :plain?)
19
+ */
20
+
21
+ .button {
22
+ cursor: pointer;
23
+ display: inline-block;
24
+ height: 32px;
25
+ line-height: 30px;
26
+
27
+ &:hover,
28
+ &:focus {
29
+ background: #efefef; // slightly different on hover/ focus
30
+ }
31
+
32
+ //*
33
+ // A button that is indicating the loading of content.
34
+ //
35
+ // @demo_type joint
36
+ // @set_by :loading?
37
+
38
+ &.button--is-loading {
39
+ // Don't do this for disabled buttons
40
+ &:not(.button--is-disabled) {
41
+ color: transparent;
42
+ cursor: default;
43
+ background-repeat: no-repeat;
44
+ background-position: center center;
45
+
46
+ &:hover,
47
+ &:focus {
48
+ background-color: #fcfcfc;
49
+ }
50
+ }
51
+ }
52
+ }
53
+
54
+ //*
55
+ // @precludes .button--large
56
+ // @demo_type select
57
+ // @set_by NextButton#resize, :size (SIZE_SLIM)
58
+
59
+ .button--slim {
60
+ height: 28px;
61
+ line-height: 26px;
62
+ }
63
+
64
+ .button--plain {
65
+ background: transparent;
66
+ border: none;
67
+ }
68
+
69
+ //*
70
+ // A button that can't be activated. In order for this button to
71
+ // function correctly, both the class and the disabled attribute
72
+ // must be placed on the button.
73
+
74
+ // For example, the following will produce a button that *looks* disabled,
75
+ // but that is still clickable:
76
+
77
+ // ```html
78
+ // <button class="button button--is-disabled">Not really disabled button</button>
79
+ // ```
80
+
81
+ // But this one creates an appropriately unclickable button:
82
+
83
+ // ```html_demo
84
+ // <button class="button button--is-disabled" disabled="disabled">Really disabled!</button>
85
+ // ```
86
+
87
+ // @demo_type select
88
+ // @javascript_action $(this).addClass('button--is-disabled').attr('disabled', true)
89
+ // @set_by :disabled?
90
+ // @precludes button--is-loading
91
+
92
+ .button--is-disabled {
93
+ &,
94
+ &:hover,
95
+ &:focus {
96
+ color: #999;
97
+ border-color: #e3e3e3;
98
+ background: #fcfcfc;
99
+ }
100
+ }
101
+
102
+
103
+
104
+ //*
105
+ // Two or more buttons that control the same function.
106
+
107
+ // @title Segmented Button Group
108
+ // @demo_type own
109
+
110
+ .button__segmented-group {
111
+ display: flex;
112
+
113
+ .button {
114
+ display: block;
115
+ flex: 0 1 auto;
116
+ margin: 0;
117
+
118
+ // Adjusts details for buttons that are part of the
119
+ // button group.
120
+ &:not(:first-of-type) {
121
+ margin-left: -1px;
122
+ }
123
+
124
+ &:first-of-type {
125
+ border-top-right-radius: 0;
126
+ border-bottom-right-radius: 0;
127
+ }
128
+
129
+ &:last-of-type {
130
+ border-top-left-radius: 0;
131
+ border-bottom-left-radius: 0;
132
+ }
133
+
134
+ &:not(:last-of-type):not(:first-of-type) {
135
+ border-radius: 0;
136
+ }
137
+ }
138
+ }
139
+
140
+
141
+ // A segmented group that spans the entire container.
142
+
143
+ // @demo_type select
144
+
145
+ .button__segmented-group--full-width {
146
+ .button {
147
+ flex: 1 1 auto;
148
+ }
149
+ }
@@ -0,0 +1,34 @@
1
+ //*
2
+ // A simple button. Nice.
3
+ //
4
+ // Lorem ipsum dolor sit amet, consectetur adipisicing elit.
5
+ // Aliquam expedita repellendus magnam similique eum assumenda velit doloribus omnis labore debitis.
6
+ // Molestiae debitis soluta earum minima maxime inventore aperiam, et omnis.
7
+
8
+ .button
9
+ cursor: pointer
10
+ display: inline-block
11
+ height: 32px
12
+ line-height: 30px
13
+
14
+ &:hover,
15
+ &:focus
16
+ background: #efefef // slightly different on hover/ focus
17
+
18
+ //*
19
+ // A button that is indicating the loading of content.
20
+ //
21
+ // @demo_type joint
22
+ // @set_by :loading?
23
+
24
+ &.button--is-loading
25
+ // Don't do this for disabled buttons
26
+ &:not(.button--is-disabled)
27
+ color: transparent
28
+ cursor: default
29
+ background-repeat: no-repeat
30
+ background-position: center center
31
+
32
+ &:hover,
33
+ &:focus
34
+ background-color: #fcfcfc