doggystyle 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (294) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +16 -0
  3. data/.hound.yml +5 -0
  4. data/.npmignore +18 -0
  5. data/.ruby-version +1 -0
  6. data/.scss-lint.yml +243 -0
  7. data/.travis.yml +5 -0
  8. data/CHANGELOG.md +5 -0
  9. data/Gemfile +4 -0
  10. data/LICENSE.txt +21 -0
  11. data/README.md +40 -0
  12. data/RELEASING.md +1 -0
  13. data/Rakefile +9 -0
  14. data/bin/doggystyle +5 -0
  15. data/bower.json +38 -0
  16. data/circle.yml +13 -0
  17. data/core/_imports.scss +229 -0
  18. data/core/animations/_jump.scss +7 -0
  19. data/core/animations/_shake.scss +24 -0
  20. data/core/animations/_wobble.scss +8 -0
  21. data/core/functions/_mobile-first.scss +3 -0
  22. data/core/functions/_opposite-direction.scss +45 -0
  23. data/core/functions/casts/_to-bool.scss +19 -0
  24. data/core/functions/casts/_to-color.scss +74 -0
  25. data/core/functions/casts/_to-list.scss +38 -0
  26. data/core/functions/casts/_to-map.scss +27 -0
  27. data/core/functions/casts/_to-null.scss +15 -0
  28. data/core/functions/casts/_to-number.scss +66 -0
  29. data/core/functions/casts/_to-string.scss +15 -0
  30. data/core/functions/colours/_colour-contrast.scss +61 -0
  31. data/core/functions/colours/_colour.scss +69 -0
  32. data/core/functions/colours/_random-colour.scss +78 -0
  33. data/core/functions/lists/_contains.scss +62 -0
  34. data/core/functions/lists/_first.scss +19 -0
  35. data/core/functions/lists/_insert-nth.scss +37 -0
  36. data/core/functions/lists/_last.scss +11 -0
  37. data/core/functions/lists/_merge.scss +30 -0
  38. data/core/functions/lists/_prepend.scss +11 -0
  39. data/core/functions/lists/_remove-nth.scss +53 -0
  40. data/core/functions/lists/_remove.scss +30 -0
  41. data/core/functions/lists/_replace-nth.scss +55 -0
  42. data/core/functions/lists/_replace.scss +36 -0
  43. data/core/functions/lists/_reverse.scss +31 -0
  44. data/core/functions/lists/_second.scss +19 -0
  45. data/core/functions/lists/_shift.scss +24 -0
  46. data/core/functions/lists/_slice.scss +52 -0
  47. data/core/functions/lists/_sort.scss +51 -0
  48. data/core/functions/maps/_map-deep-get.scss +51 -0
  49. data/core/functions/maps/_map-deep-set.scss +34 -0
  50. data/core/functions/maps/_map-depth.scss +23 -0
  51. data/core/functions/maps/_map-extend.scss +47 -0
  52. data/core/functions/maps/_map-has-keys.scss +23 -0
  53. data/core/functions/maps/_map-has-nested-keys.scss +24 -0
  54. data/core/functions/maps/_map-set.scss +4 -0
  55. data/core/functions/maps/_map-zip.scss +50 -0
  56. data/core/functions/numbers/_add-unit.scss +54 -0
  57. data/core/functions/numbers/_pad.scss +16 -0
  58. data/core/functions/numbers/_spacer.scss +16 -0
  59. data/core/functions/numbers/_strip.scss +29 -0
  60. data/core/functions/numbers/_units.scss +17 -0
  61. data/core/functions/svg/_dots.scss +84 -0
  62. data/core/functions/svg/_fake-radius.scss +131 -0
  63. data/core/functions/svg/_lines.scss +76 -0
  64. data/core/functions/svg/_svg.scss +12 -0
  65. data/core/functions/text/_smart-lineheight.scss +13 -0
  66. data/core/functions/text/_string-explode.scss +45 -0
  67. data/core/functions/text/_string-replace.scss +38 -0
  68. data/core/helpers/_custom-elements.scss +114 -0
  69. data/core/helpers/_eases.scss +44 -0
  70. data/core/helpers/_reset.scss +282 -0
  71. data/core/helpers/_show-breakpoints.scss +25 -0
  72. data/core/helpers/_strings.scss +648 -0
  73. data/core/helpers/_warnings.scss +3 -0
  74. data/core/helpers/checks/_check.scss +69 -0
  75. data/core/helpers/checks/_is-absolute-length.scss +25 -0
  76. data/core/helpers/checks/_is-angel.scss +25 -0
  77. data/core/helpers/checks/_is-arglist.scss +11 -0
  78. data/core/helpers/checks/_is-bool.scss +23 -0
  79. data/core/helpers/checks/_is-calc.scss +11 -0
  80. data/core/helpers/checks/_is-colour.scss +23 -0
  81. data/core/helpers/checks/_is-dark.scss +14 -0
  82. data/core/helpers/checks/_is-duration.scss +15 -0
  83. data/core/helpers/checks/_is-false.scss +13 -0
  84. data/core/helpers/checks/_is-first-character.scss +11 -0
  85. data/core/helpers/checks/_is-frequency.scss +15 -0
  86. data/core/helpers/checks/_is-function.scss +44 -0
  87. data/core/helpers/checks/_is-integer.scss +15 -0
  88. data/core/helpers/checks/_is-length.scss +16 -0
  89. data/core/helpers/checks/_is-light.scss +14 -0
  90. data/core/helpers/checks/_is-list.scss +11 -0
  91. data/core/helpers/checks/_is-map.scss +11 -0
  92. data/core/helpers/checks/_is-null.scss +11 -0
  93. data/core/helpers/checks/_is-number.scss +19 -0
  94. data/core/helpers/checks/_is-percentage.scss +13 -0
  95. data/core/helpers/checks/_is-position.scss +16 -0
  96. data/core/helpers/checks/_is-pseudo.scss +24 -0
  97. data/core/helpers/checks/_is-relative-length.scss +25 -0
  98. data/core/helpers/checks/_is-resolution.scss +15 -0
  99. data/core/helpers/checks/_is-selector.scss +3 -0
  100. data/core/helpers/checks/_is-string.scss +11 -0
  101. data/core/helpers/checks/_is-time.scss +15 -0
  102. data/core/helpers/checks/_is-unit.scss +16 -0
  103. data/core/helpers/private/_arglist-to-list.scss +36 -0
  104. data/core/helpers/private/_brightness.scss +13 -0
  105. data/core/helpers/private/_find-digits.scss +41 -0
  106. data/core/helpers/private/_find-integer.scss +40 -0
  107. data/core/helpers/private/_from-hex.scss +48 -0
  108. data/core/helpers/private/_from-hsl.scss +55 -0
  109. data/core/helpers/private/_from-rgb.scss +55 -0
  110. data/core/helpers/private/_get-color-value.scss +26 -0
  111. data/core/helpers/private/_hash-fix.scss +15 -0
  112. data/core/helpers/private/_hex-to-dec.scss +28 -0
  113. data/core/helpers/private/_length.scss +26 -0
  114. data/core/helpers/private/_lightness.scss +15 -0
  115. data/core/helpers/private/_list-items-to-strings.scss +8 -0
  116. data/core/helpers/private/_min-max-number.scss +12 -0
  117. data/core/helpers/private/_pow.scss +29 -0
  118. data/core/helpers/private/_string-compare.scss +38 -0
  119. data/core/helpers/private/_string-explode.scss +43 -0
  120. data/core/helpers/private/_sudo.scss +23 -0
  121. data/core/helpers/symbols/_arrows.scss +337 -0
  122. data/core/helpers/symbols/_block.scss +97 -0
  123. data/core/helpers/symbols/_box.scss +385 -0
  124. data/core/helpers/symbols/_common.scss +101 -0
  125. data/core/helpers/symbols/_currency.scss +82 -0
  126. data/core/helpers/symbols/_dingbats.scss +565 -0
  127. data/core/helpers/symbols/_geometric.scss +289 -0
  128. data/core/helpers/symbols/_letterlike.scss +235 -0
  129. data/core/helpers/symbols/_misc.scss +568 -0
  130. data/core/helpers/symbols/_operators.scss +766 -0
  131. data/core/helpers/symbols/_punctuation.scss +214 -0
  132. data/core/mixins/_align.scss +15 -0
  133. data/core/mixins/_animate.scss +16 -0
  134. data/core/mixins/_aspect-ratio.scss +86 -0
  135. data/core/mixins/_backface-visibility.scss +7 -0
  136. data/core/mixins/_background-image.scss +13 -0
  137. data/core/mixins/_blend.scss +10 -0
  138. data/core/mixins/_blendmodes.scss +24 -0
  139. data/core/mixins/_border-radius.scss +105 -0
  140. data/core/mixins/_browsers.scss +155 -0
  141. data/core/mixins/_bulletpoint.scss +12 -0
  142. data/core/mixins/_center.scss +3 -0
  143. data/core/mixins/_clearfix.scss +7 -0
  144. data/core/mixins/_columns.scss +22 -0
  145. data/core/mixins/_custom-property.scss +15 -0
  146. data/core/mixins/_devices.scss +97 -0
  147. data/core/mixins/_dropdown.scss +38 -0
  148. data/core/mixins/_fake-radius.scss +99 -0
  149. data/core/mixins/_filters.scss +163 -0
  150. data/core/mixins/_flip.scss +11 -0
  151. data/core/mixins/_font-face.scss +11 -0
  152. data/core/mixins/_fontsize.scss +126 -0
  153. data/core/mixins/_gallery.scss +134 -0
  154. data/core/mixins/_gradient.scss +72 -0
  155. data/core/mixins/_image-size.scss +18 -0
  156. data/core/mixins/_image.scss +12 -0
  157. data/core/mixins/_inputs.scss +18 -0
  158. data/core/mixins/_keyframes.scss +8 -0
  159. data/core/mixins/_last.scss +5 -0
  160. data/core/mixins/_nth-last.scss +7 -0
  161. data/core/mixins/_nth.scss +10 -0
  162. data/core/mixins/_placeholder.scss +15 -0
  163. data/core/mixins/_prefixer.scss +55 -0
  164. data/core/mixins/_selection.scss +15 -0
  165. data/core/mixins/_shadow.scss +7 -0
  166. data/core/mixins/_size.scss +13 -0
  167. data/core/mixins/_smart-horizontal.scss +21 -0
  168. data/core/mixins/_sudo-image.scss +12 -0
  169. data/core/mixins/_text-shadow.scss +30 -0
  170. data/core/mixins/_transforms.scss +264 -0
  171. data/core/mixins/_transition.scss +189 -0
  172. data/core/mixins/_triangle-classic.scss +170 -0
  173. data/core/mixins/_triangle.scss +250 -0
  174. data/core/mixins/_unwrap.scss +5 -0
  175. data/core/mixins/_user-select.scss +5 -0
  176. data/core/mixins/_vertical.scss +10 -0
  177. data/core/mixins/columns/_columns.scss +92 -0
  178. data/core/mixins/flexbox/_flex-container.scss +201 -0
  179. data/core/mixins/flexbox/_flex-grid.scss +235 -0
  180. data/core/mixins/flexbox/_flex-items.scss +140 -0
  181. data/core/mixins/flexbox/_flex-remove.scss +12 -0
  182. data/core/mixins/grid/_break-between.scss +6 -0
  183. data/core/mixins/grid/_grid.scss +150 -0
  184. data/core/mixins/svg/_svg-size.scss +4 -0
  185. data/core/mixins/svg/_svg.scss +9 -0
  186. data/core/placeholders/_clear.scss +27 -0
  187. data/core/placeholders/_cursor.scss +35 -0
  188. data/core/placeholders/_misc.scss +20 -0
  189. data/core/placeholders/_rendering.scss +21 -0
  190. data/core/placeholders/_text.scss +41 -0
  191. data/core/settings/_colours.scss +30 -0
  192. data/core/settings/_directories.scss +7 -0
  193. data/core/settings/_global.scss +14 -0
  194. data/core/settings/_grid.scss +24 -0
  195. data/core/settings/_padding.scss +8 -0
  196. data/core/settings/_spacing.scss +8 -0
  197. data/core/settings/_text.scss +13 -0
  198. data/doggystyle.gemspec +29 -0
  199. data/eyeglass-exports.js +7 -0
  200. data/features/install.feature +29 -0
  201. data/features/step_definitions/doggystyle_steps.rb +31 -0
  202. data/features/support/bourbon_support.rb +19 -0
  203. data/features/support/env.rb +1 -0
  204. data/features/update.feature +30 -0
  205. data/features/version.feature +5 -0
  206. data/index.js +7 -0
  207. data/lib/doggystyle.rb +7 -0
  208. data/lib/doggystyle/generator.rb +81 -0
  209. data/lib/doggystyle/version.rb +3 -0
  210. data/package.json +33 -0
  211. data/spec/doggystyle/library/border_color_spec.rb +51 -0
  212. data/spec/doggystyle/library/border_radius_spec.rb +25 -0
  213. data/spec/doggystyle/library/border_style_spec.rb +51 -0
  214. data/spec/doggystyle/library/border_width_spec.rb +51 -0
  215. data/spec/doggystyle/library/buttons_spec.rb +53 -0
  216. data/spec/doggystyle/library/clearfix_spec.rb +18 -0
  217. data/spec/doggystyle/library/contrast_switch_spec.rb +23 -0
  218. data/spec/doggystyle/library/ellipsis_spec.rb +20 -0
  219. data/spec/doggystyle/library/font_face_spec_1.rb +16 -0
  220. data/spec/doggystyle/library/font_face_spec_2.rb +21 -0
  221. data/spec/doggystyle/library/font_face_spec_3.rb +16 -0
  222. data/spec/doggystyle/library/font_face_spec_4.rb +17 -0
  223. data/spec/doggystyle/library/font_stacks_spec.rb +40 -0
  224. data/spec/doggystyle/library/hide_text_spec.rb +17 -0
  225. data/spec/doggystyle/library/hide_visually_spec.rb +35 -0
  226. data/spec/doggystyle/library/margin_spec.rb +51 -0
  227. data/spec/doggystyle/library/modular_scale_spec.rb +43 -0
  228. data/spec/doggystyle/library/padding_spec.rb +51 -0
  229. data/spec/doggystyle/library/position_spec.rb +67 -0
  230. data/spec/doggystyle/library/prefixer_spec.rb +34 -0
  231. data/spec/doggystyle/library/shade_spec.rb +31 -0
  232. data/spec/doggystyle/library/size_spec.rb +31 -0
  233. data/spec/doggystyle/library/strip_unit_spec.rb +31 -0
  234. data/spec/doggystyle/library/text_inputs_spec.rb +75 -0
  235. data/spec/doggystyle/library/tint_spec.rb +31 -0
  236. data/spec/doggystyle/library/triangle_spec.rb +31 -0
  237. data/spec/doggystyle/library/word_wrap_spec.rb +29 -0
  238. data/spec/doggystyle/utilities/assign_inputs_spec.rb +50 -0
  239. data/spec/doggystyle/utilities/collapse_directionals.rb +25 -0
  240. data/spec/doggystyle/utilities/directional_values_spec.rb +21 -0
  241. data/spec/doggystyle/utilities/font_source_declaration_spec.rb +29 -0
  242. data/spec/doggystyle/utilities/retrieve_bourbon_setting_spec.rb +31 -0
  243. data/spec/doggystyle/utilities/unpack_spec.rb +32 -0
  244. data/spec/doggystyle/validators/contains_spec.rb +27 -0
  245. data/spec/doggystyle/validators/is_length_spec.rb +49 -0
  246. data/spec/doggystyle/validators/is_light_spec.rb +37 -0
  247. data/spec/doggystyle/validators/is_number_spec.rb +43 -0
  248. data/spec/doggystyle/validators/is_size_spec.rb +43 -0
  249. data/spec/fixtures/_setup.scss +1 -0
  250. data/spec/fixtures/library/border-color.scss +26 -0
  251. data/spec/fixtures/library/border-radius.scss +17 -0
  252. data/spec/fixtures/library/border-style.scss +21 -0
  253. data/spec/fixtures/library/border-width.scss +21 -0
  254. data/spec/fixtures/library/buttons.scss +17 -0
  255. data/spec/fixtures/library/clearfix.scss +5 -0
  256. data/spec/fixtures/library/contrast-switch.scss +9 -0
  257. data/spec/fixtures/library/ellipsis.scss +5 -0
  258. data/spec/fixtures/library/font-face-1.scss +6 -0
  259. data/spec/fixtures/library/font-face-2.scss +10 -0
  260. data/spec/fixtures/library/font-face-3.scss +8 -0
  261. data/spec/fixtures/library/font-face-4.scss +7 -0
  262. data/spec/fixtures/library/font-stacks.scss +41 -0
  263. data/spec/fixtures/library/hide-text.scss +5 -0
  264. data/spec/fixtures/library/hide-visually.scss +9 -0
  265. data/spec/fixtures/library/margin.scss +21 -0
  266. data/spec/fixtures/library/modular-scale.scss +29 -0
  267. data/spec/fixtures/library/padding.scss +21 -0
  268. data/spec/fixtures/library/position.scss +25 -0
  269. data/spec/fixtures/library/prefixer.scss +13 -0
  270. data/spec/fixtures/library/shade.scss +17 -0
  271. data/spec/fixtures/library/size.scss +13 -0
  272. data/spec/fixtures/library/strip-unit.scss +17 -0
  273. data/spec/fixtures/library/text-inputs.scss +21 -0
  274. data/spec/fixtures/library/tint.scss +17 -0
  275. data/spec/fixtures/library/triangle.scss +9 -0
  276. data/spec/fixtures/library/word-wrap.scss +9 -0
  277. data/spec/fixtures/utilities/assign-inputs.scss +19 -0
  278. data/spec/fixtures/utilities/collapse-directionals.scss +17 -0
  279. data/spec/fixtures/utilities/directional-values.scss +13 -0
  280. data/spec/fixtures/utilities/font-source-declaration.scss +11 -0
  281. data/spec/fixtures/utilities/retrieve-bourbon-setting.scss +16 -0
  282. data/spec/fixtures/utilities/unpack.scss +17 -0
  283. data/spec/fixtures/validators/contains.scss +28 -0
  284. data/spec/fixtures/validators/is-length.scss +35 -0
  285. data/spec/fixtures/validators/is-light.scss +29 -0
  286. data/spec/fixtures/validators/is-number.scss +31 -0
  287. data/spec/fixtures/validators/is-size.scss +31 -0
  288. data/spec/spec_helper.rb +22 -0
  289. data/spec/support/matchers/have_rule.rb +35 -0
  290. data/spec/support/matchers/have_ruleset.rb +20 -0
  291. data/spec/support/matchers/have_value.rb +17 -0
  292. data/spec/support/parser_support.rb +16 -0
  293. data/spec/support/sass_support.rb +10 -0
  294. metadata +527 -0
@@ -0,0 +1,3 @@
1
+ @mixin warning($warning) {
2
+ @if $warnings { @warn "#{$warning}"; }
3
+ }
@@ -0,0 +1,69 @@
1
+ /// If a value does not exist or is invalid, revert to a fallback value
2
+ ///
3
+ /// @author Mark Notton
4
+ ///
5
+ /// @access public
6
+ ///
7
+ /// @param {*} $unit - The unit you want to check exists and is valid. Normally an nth list item or variable.
8
+ ///
9
+ /// @param {*} $fallback - If the first parameter doesn't exist or isn't valid, revert back to this fallback
10
+ ///
11
+ /// @param {string} $check - Check for a certain type of condition. Default is number.
12
+ /// Accepted check types : angel, duration, false, frequency, integer, length, number, percentage, position, pseudo, sudo, resolution, time
13
+ ///
14
+ /// @require {function} is-absolute-length
15
+ /// @require {function} is-angel
16
+ /// @require {function} is-bool
17
+ /// @require {function} is-colour
18
+ /// @require {function} is-duration
19
+ /// @require {function} is-false
20
+ /// @require {function} is-frequency
21
+ /// @require {function} is-integer
22
+ /// @require {function} is-length
23
+ /// @require {function} is-list
24
+ /// @require {function} is-map
25
+ /// @require {function} is-null
26
+ /// @require {function} is-number
27
+ /// @require {function} is-percentage
28
+ /// @require {function} is-position
29
+ /// @require {function} is-pseudo
30
+ /// @require {function} is-relative-length
31
+ /// @require {function} is-resolution
32
+ /// @require {function} is-string
33
+ /// @require {function} is-time
34
+ /// @require {variable} warnings
35
+ ///
36
+ /// @return {*}
37
+
38
+ @function check($value, $fallback, $check:number) {
39
+ @if index(angel duration false frequency integer length number percentage position pseudo sudo resolution time string bool boolean colour color list map null, $check) {
40
+ @if $check == angel and is-angel($value)
41
+ or $check == duration and is-duration($value)
42
+ or $check == false and is-false($value)
43
+ or $check == frequency and is-frequency($value)
44
+ or $check == integer and is-integer($value)
45
+ or $check == length and is-length($value)
46
+ or $check == number and is-number($value)
47
+ or $check == percentage and is-percentage($value)
48
+ or $check == position and is-position($value)
49
+ or $check == pseudo and is-pseudo($value)
50
+ or $check == sudo and is-sudo($value)
51
+ or $check == resolution and is-resolution($value)
52
+ or $check == string and is-string($value)
53
+ or $check == bool and is-bool($value)
54
+ or $check == boolean and is-boolean($value)
55
+ or $check == color and is-color($value)
56
+ or $check == colour and is-colour($value)
57
+ or $check == list and is-list($value)
58
+ or $check == map and is-map($value)
59
+ or $check == null and is-null($value) {
60
+ @return $value;
61
+ } @else {
62
+ @return $fallback;
63
+ }
64
+ } @else {
65
+ @if $warnings { @warn "#{$check} is not a valid type check. Returning the initial value: #{$value}"; }
66
+ @return $value;
67
+ }
68
+ }
69
+
@@ -0,0 +1,25 @@
1
+ /// List of all absolute length unit types
2
+ ///
3
+ /// @link http://www.w3schools.com/cssref/css_units.asp
4
+ ///
5
+ /// @type list
6
+
7
+ $absolute-lengths : cm mm in px pt pc;
8
+
9
+
10
+ /// Checks to see if value is a type of unit that can't be manipulated relative to parent elements
11
+ ///
12
+ /// @author Hugo Giraudel
13
+ ///
14
+ /// @link https://css-tricks.com/snippets/sass/advanced-type-checking/
15
+ ///
16
+ /// @access public
17
+ ///
18
+ /// @require {function} is-number
19
+ /// @require {variable} $abolute-lengths
20
+ ///
21
+ /// @return {bool}
22
+
23
+ @function is-absolute-length($value) {
24
+ @return is-number($value) and index($absolute-lengths, unit($value)) != null;
25
+ }
@@ -0,0 +1,25 @@
1
+ /// List of all angel unit types
2
+ ///
3
+ /// @link http://www.w3schools.com/cssref/css_units.asp
4
+ ///
5
+ /// @type list
6
+
7
+ $angel-types : deg rad grad turn;
8
+
9
+
10
+ /// Checks to see if value ends with an angle
11
+ ///
12
+ /// @author Hugo Giraudel
13
+ ///
14
+ /// @link https://css-tricks.com/snippets/sass/advanced-type-checking/
15
+ ///
16
+ /// @access public
17
+ ///
18
+ /// @require {function} is-number
19
+ /// @require {variable} angel-types
20
+ ///
21
+ /// @return {bool}
22
+
23
+ @function is-angle($value) {
24
+ @return is-number($value) and index($angel-types, unit($value)) != null;
25
+ }
@@ -0,0 +1,11 @@
1
+ /// Checks to see if value is a arglist
2
+ ///
3
+ /// @author Mark Notton
4
+ ///
5
+ /// @access public
6
+ ///
7
+ /// @return {bool}
8
+
9
+ @function is-arglist($value) {
10
+ @return type-of($value) == 'arglist';
11
+ }
@@ -0,0 +1,23 @@
1
+ /// Checks to see if value is a boolean
2
+ ///
3
+ /// @author Mark Notton
4
+ ///
5
+ /// @access public
6
+ ///
7
+ /// @return {bool}
8
+
9
+ @function is-bool($value) {
10
+ @return type-of($value) == 'bool';
11
+ }
12
+
13
+ /// @alias is-bool
14
+ ///
15
+ /// @access public
16
+ ///
17
+ /// @require {function} is-bool
18
+ ///
19
+ /// @return {bool}
20
+
21
+ @function is-boolean($value) {
22
+ @return type-of($value) == 'bool';
23
+ }
@@ -0,0 +1,11 @@
1
+ /// Checks to see if value is a calc
2
+ ///
3
+ /// @author Mark Notton
4
+ ///
5
+ /// @access public
6
+ ///
7
+ /// @return {bool}
8
+
9
+ @function is-calc($value) {
10
+ @return is-string($value) and str-slice(#{$value}, 0, 4) == 'calc';
11
+ }
@@ -0,0 +1,23 @@
1
+ /// Checks to see if value is a colour
2
+ ///
3
+ /// @author Mark Notton
4
+ ///
5
+ /// @access public
6
+ ///
7
+ /// @return {bool}
8
+
9
+ @function is-colour($value) {
10
+ @return type-of($value) == 'color';
11
+ }
12
+
13
+ /// @alias is-colour
14
+ ///
15
+ /// @access public
16
+ ///
17
+ /// @require {function} is-colour
18
+ ///
19
+ /// @return {bool}
20
+
21
+ @function is-color($value) {
22
+ @return is-colour($value);
23
+ }
@@ -0,0 +1,14 @@
1
+ /// Checks to see if a colour is dark
2
+ ///
3
+ /// @author Mark Notton
4
+ ///
5
+ /// @access public
6
+ ///
7
+ /// @require {function} _brightness
8
+ /// @require {function} _lightness
9
+ ///
10
+ /// @return {bool}
11
+
12
+ @function is-dark($colour) {
13
+ @return _brightness($colour) < _lightness();
14
+ }
@@ -0,0 +1,15 @@
1
+ /// Checks to see if value is a number
2
+ ///
3
+ /// @author Hugo Giraudel
4
+ ///
5
+ /// @link https://css-tricks.com/snippets/sass/advanced-type-checking/
6
+ ///
7
+ /// @access public
8
+ ///
9
+ /// @require {function} is-time
10
+ ///
11
+ /// @return {bool}
12
+
13
+ @function is-duration($value) {
14
+ @return is-time($value);
15
+ }
@@ -0,0 +1,13 @@
1
+ /// Checks to see if value is any type of false
2
+ ///
3
+ /// @author Probably Hugo Giraudel
4
+ ///
5
+ /// @todo Find and reference original author
6
+ ///
7
+ /// @access public
8
+ ///
9
+ /// @return {bool}
10
+
11
+ @function is-false($value) {
12
+ @return not not index(false null 0 off def, $value);
13
+ }
@@ -0,0 +1,11 @@
1
+ /// Compare the first character of a string
2
+ ///
3
+ /// @author Mark Notton
4
+ ///
5
+ /// @access public
6
+ ///
7
+ /// @return {bool}
8
+
9
+ @function is-first-character($string, $character) {
10
+ @return str-slice(#{$string}, 1, 1) == #{$character};
11
+ }
@@ -0,0 +1,15 @@
1
+ /// Checks to see if value ends with a frequency
2
+ ///
3
+ /// @author Hugo Giraudel
4
+ ///
5
+ /// @link https://css-tricks.com/snippets/sass/advanced-type-checking/
6
+ ///
7
+ /// @access public
8
+ ///
9
+ /// @require {function} is-number
10
+ ///
11
+ /// @return {bool}
12
+
13
+ @function is-frequency($value) {
14
+ @return is-number($value) and index('Hz' 'kHz', unit($value)) != null;
15
+ }
@@ -0,0 +1,44 @@
1
+ /// Designed to check for special function types. For example, filters or transforms: rotate(45deg)
2
+ ///
3
+ /// @author Mark Notton
4
+ ///
5
+ /// @access public
6
+ ///
7
+ /// @require {function} to-number
8
+ /// @require {function} is-string
9
+ /// @require {function} string-explode
10
+ ///
11
+ /// @example scss - Usage
12
+ /// @debug is-function(rotate(45deg));
13
+ /// @debug is-function(transform);
14
+ ///
15
+ /// @example scss - Output
16
+ /// (rotate, 45deg)
17
+ /// false
18
+ ///
19
+ /// @return {bool | list} If value is not a string or does not fit the 'function' syntax, return false.
20
+ /// Otherwise, return a list with the 'function' name and the 'value' that was passed.
21
+
22
+ @function is-function($value) {
23
+
24
+ $values : ();
25
+
26
+ @if is-string($value) {
27
+ $first-brace : str-index($value, '(');
28
+ $last-brace : str-index($value, ')');
29
+ @if $first-brace and $last-brace {
30
+ $function : str-slice($value, 1, $first-brace - 1);;
31
+ $value : str-slice($value, $first-brace + 1, $last-brace - 1);
32
+ // If a number was passed, it would be returned back as a string. This converts it to a number, unless it's not really a number.
33
+ $value : _string-explode($value);
34
+ @each $val in $value {
35
+ $values : append($values, if(to-number($val) != 0, to-number($val), $val), comma);
36
+ }
37
+ @return ($function $values);
38
+ } @else {
39
+ @return false;
40
+ }
41
+ } @else {
42
+ @return false;
43
+ }
44
+ }
@@ -0,0 +1,15 @@
1
+ /// Checks to see if value is a rounded number
2
+ ///
3
+ /// @author Hugo Giraudel
4
+ ///
5
+ /// @link https://css-tricks.com/snippets/sass/advanced-type-checking/
6
+ ///
7
+ /// @access public
8
+ ///
9
+ /// @require {function} is-number
10
+ ///
11
+ /// @return {bool}
12
+
13
+ @function is-integer($value) {
14
+ @return is-number($value) and round($value) == $value;
15
+ }
@@ -0,0 +1,16 @@
1
+ /// Checks to see if value ends with any type of unit
2
+ ///
3
+ /// @author Hugo Giraudel
4
+ ///
5
+ /// @link https://css-tricks.com/snippets/sass/advanced-type-checking/
6
+ ///
7
+ /// @access public
8
+ ///
9
+ /// @require {function} is-relative-length
10
+ /// @require {function} is-absolute-length
11
+ ///
12
+ /// @return {bool}
13
+
14
+ @function is-length($value) {
15
+ @return is-relative-length($value) or is-absolute-length($value);
16
+ }
@@ -0,0 +1,14 @@
1
+ /// Checks to see if a colour is light
2
+ ///
3
+ /// @author Mark Notton
4
+ ///
5
+ /// @access public
6
+ ///
7
+ /// @require {function} _brightness
8
+ /// @require {function} _lightness
9
+ ///
10
+ /// @return {bool}
11
+
12
+ @function is-light($colour) {
13
+ @return _brightness($colour) > _lightness();
14
+ }
@@ -0,0 +1,11 @@
1
+ /// Checks to see if value is a list
2
+ ///
3
+ /// @author Mark Notton
4
+ ///
5
+ /// @access public
6
+ ///
7
+ /// @return {bool}
8
+
9
+ @function is-list($value) {
10
+ @return type-of($value) == 'list';
11
+ }
@@ -0,0 +1,11 @@
1
+ /// Checks to see if value is a map
2
+ ///
3
+ /// @author Mark Notton
4
+ ///
5
+ /// @access public
6
+ ///
7
+ /// @return {bool}
8
+
9
+ @function is-map($value) {
10
+ @return type-of($value) == 'map';
11
+ }
@@ -0,0 +1,11 @@
1
+ /// Checks to see if value is null
2
+ ///
3
+ /// @author Mark Notton
4
+ ///
5
+ /// @access public
6
+ ///
7
+ /// @return {bool}
8
+
9
+ @function is-null($value) {
10
+ @return type-of($value) == 'null';
11
+ }
@@ -0,0 +1,19 @@
1
+ /// Checks to see if value is a number. This includes units (except for calc)
2
+ ///
3
+ /// @author Hugo Giraudel
4
+ ///
5
+ /// @link https://css-tricks.com/snippets/sass/advanced-type-checking/
6
+ ///
7
+ /// @access public
8
+ ///
9
+ /// @return {bool}
10
+
11
+ @function is-number($value) {
12
+ @return type-of($value) == 'number';
13
+ // @each $number in $value {
14
+ // @if type-of($number) != 'number' {
15
+ // @return false;
16
+ // }
17
+ // }
18
+ // @return true;
19
+ }
@@ -0,0 +1,13 @@
1
+ /// Checks to see if value is a percentage
2
+ ///
3
+ /// @author Hugo Giraudel
4
+ ///
5
+ /// @link https://css-tricks.com/snippets/sass/advanced-type-checking/
6
+ ///
7
+ /// @access public
8
+ ///
9
+ /// @return {bool}
10
+
11
+ @function is-percentage($value) {
12
+ @return is-number($value) and unit($value) == '%';
13
+ }