flint-gs 2.0.3 → 2.0.4

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 (78) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +27 -24
  3. data/lib/flint.rb +4 -72
  4. data/lib/flint/functions.rb +97 -0
  5. data/lib/flint/version.rb +4 -0
  6. data/stylesheets/flint/functions/lib/_list-to-string.scss +16 -10
  7. data/stylesheets/flint/functions/lib/_string-to-list.scss +2 -2
  8. data/stylesheets/flint/functions/lib/_support-syntax-bem.scss +4 -4
  9. data/stylesheets/flint/mixins/lib/_main.scss +0 -2
  10. data/tests/bootcamp/_bootcamp.scss +46 -0
  11. data/tests/bootcamp/core/functions/_actual.scss +3 -0
  12. data/tests/bootcamp/core/functions/_error.scss +29 -0
  13. data/tests/bootcamp/core/functions/_expect.scss +6 -0
  14. data/tests/bootcamp/core/functions/_not-to.scss +5 -0
  15. data/tests/bootcamp/core/functions/_should.scss +6 -0
  16. data/tests/bootcamp/core/functions/_to.scss +5 -0
  17. data/tests/bootcamp/core/mixins/_describe.scss +31 -0
  18. data/tests/bootcamp/core/mixins/_it.scss +31 -0
  19. data/tests/bootcamp/core/mixins/_runner.scss +28 -0
  20. data/tests/bootcamp/core/mixins/_should.scss +46 -0
  21. data/tests/bootcamp/core/mixins/_xdescribe.scss +9 -0
  22. data/tests/bootcamp/core/mixins/_xit.scss +9 -0
  23. data/tests/bootcamp/core/variables/_helpers.scss +5 -0
  24. data/tests/bootcamp/core/variables/_settings.scss +2 -0
  25. data/tests/bootcamp/core/variables/_should.scss +6 -0
  26. data/tests/bootcamp/core/variables/_trackers.scss +6 -0
  27. data/tests/bootcamp/lib/_sassyjson.scss +1075 -0
  28. data/tests/bootcamp/matchers/_be.scss +3 -0
  29. data/tests/bootcamp/matchers/_equal.scss +3 -0
  30. data/tests/bootcamp/matchers/lists/_be-empty.scss +3 -0
  31. data/tests/bootcamp/matchers/lists/_be-longer-than.scss +3 -0
  32. data/tests/bootcamp/matchers/lists/_be-shorter-than.scss +3 -0
  33. data/tests/bootcamp/matchers/lists/_contain.scss +3 -0
  34. data/tests/bootcamp/matchers/lists/_deep-contain.scss +3 -0
  35. data/tests/bootcamp/matchers/lists/_deep-equal.scss +47 -0
  36. data/tests/bootcamp/matchers/lists/_have-length-of.scss +3 -0
  37. data/tests/bootcamp/matchers/numbers/_be-close-to.scss +12 -0
  38. data/tests/bootcamp/matchers/numbers/_be-greater-than.scss +12 -0
  39. data/tests/bootcamp/matchers/numbers/_be-less-than.scss +12 -0
  40. data/tests/bootcamp/matchers/types/_be-falsy.scss +3 -0
  41. data/tests/bootcamp/matchers/types/_be-null.scss +3 -0
  42. data/tests/bootcamp/matchers/types/_be-truthy.scss +3 -0
  43. data/tests/bootcamp/matchers/types/_have-type-of.scss +3 -0
  44. data/tests/bootcamp/utils/_contain.scss +15 -0
  45. data/tests/bootcamp/utils/_equal.scss +23 -0
  46. data/tests/bootcamp/utils/_list-join.scss +35 -0
  47. data/tests/bootcamp/utils/_power.scss +15 -0
  48. data/tests/config.rb +52 -0
  49. data/tests/input/functions/_functions.scss +48 -0
  50. data/tests/input/functions/helpers/_helpers.scss +416 -0
  51. data/tests/input/functions/lib/_calc-breakpoint.scss +62 -0
  52. data/tests/input/functions/lib/_calc-width.scss +195 -0
  53. data/tests/input/functions/lib/_exists.scss +30 -0
  54. data/tests/input/functions/lib/_fluid-width.scss +32 -0
  55. data/tests/input/functions/lib/_get-index.scss +31 -0
  56. data/tests/input/functions/lib/_get-instance-value.scss +72 -0
  57. data/tests/input/functions/lib/_get-value.scss +28 -0
  58. data/tests/input/functions/lib/_has-family-instance.scss +35 -0
  59. data/tests/input/functions/lib/_instance.scss +187 -0
  60. data/tests/input/functions/lib/_last.scss +18 -0
  61. data/tests/input/functions/lib/_list-to-string.scss +28 -0
  62. data/tests/input/functions/lib/_map-fetch.scss +34 -0
  63. data/tests/input/functions/lib/_next-index.scss +24 -0
  64. data/tests/input/functions/lib/_purge.scss +14 -0
  65. data/tests/input/functions/lib/_remove.scss +14 -0
  66. data/tests/input/functions/lib/_replace-substring.scss +14 -0
  67. data/tests/input/functions/lib/_replace.scss +14 -0
  68. data/tests/input/functions/lib/_steal-key.scss +19 -0
  69. data/tests/input/functions/lib/_steal-values.scss +16 -0
  70. data/tests/input/functions/lib/_string-to-list.scss +28 -0
  71. data/tests/input/functions/lib/_support-syntax-bem.scss +14 -0
  72. data/tests/input/functions/lib/_support-syntax.scss +21 -0
  73. data/tests/input/functions/lib/_types-in-list.scss +50 -0
  74. data/tests/input/functions/lib/_use-syntax.scss +14 -0
  75. data/tests/input/output.scss +243 -0
  76. data/tests/output/output.css +1900 -0
  77. data/tests/tests.html +110 -0
  78. metadata +170 -4
@@ -0,0 +1,62 @@
1
+ /*
2
+ * Calculate breakpoint query
3
+ */
4
+ @include describe("[function] calc-breakpoint") {
5
+
6
+ @include it("should expect breakpoint of passed key") {
7
+ @include should(expect(
8
+ flint-calc-breakpoint("alias", "desktop", 1)),
9
+ to(be(80em))
10
+ );
11
+ @include should(expect(
12
+ flint-calc-breakpoint("alias", "laptop", 2)),
13
+ to(be(60em))
14
+ );
15
+ @include should(expect(
16
+ flint-calc-breakpoint("alias", "tablet", 3)),
17
+ to(be(40em))
18
+ );
19
+ @include should(expect(
20
+ flint-calc-breakpoint("alias", "mobile", 4)),
21
+ to(be(20em))
22
+ );
23
+ }
24
+
25
+ @include it("should expect next breakpoint down from passed key") {
26
+ @include should(expect(
27
+ flint-calc-breakpoint("next", "desktop", 1)),
28
+ to(be(60em))
29
+ );
30
+ @include should(expect(
31
+ flint-calc-breakpoint("next", "laptop", 2)),
32
+ to(be(40em))
33
+ );
34
+ @include should(expect(
35
+ flint-calc-breakpoint("next", "tablet", 3)),
36
+ to(be(20em))
37
+ );
38
+ @include should(expect(
39
+ flint-calc-breakpoint("next", "mobile", 4)),
40
+ to(be(0))
41
+ );
42
+ }
43
+
44
+ @include it("should expect previous breakpoint up from passed key") {
45
+ @include should(expect(
46
+ flint-calc-breakpoint("prev", "desktop", 1)),
47
+ to(be(80em))
48
+ );
49
+ @include should(expect(
50
+ flint-calc-breakpoint("prev", "laptop", 2)),
51
+ to(be(80em))
52
+ );
53
+ @include should(expect(
54
+ flint-calc-breakpoint("prev", "tablet", 3)),
55
+ to(be(60em))
56
+ );
57
+ @include should(expect(
58
+ flint-calc-breakpoint("prev", "mobile", 4)),
59
+ to(be(40em))
60
+ );
61
+ }
62
+ }
@@ -0,0 +1,195 @@
1
+ /*
2
+ * Calculate width
3
+ */
4
+ @include describe("[function] calc-width") {
5
+
6
+ @include it("should expect full width columns to be equal to manually calculated value") {
7
+ @include should(expect(
8
+ flint-calc-width("desktop", 16)),
9
+ to(be(("target": 80em, "context": 80em)))
10
+ );
11
+ @include should(expect(
12
+ flint-calc-width("laptop", 12)),
13
+ to(be(("target": 60em, "context": 60em)))
14
+ );
15
+ @include should(expect(
16
+ flint-calc-width("tablet", 8)),
17
+ to(be(("target": 40em, "context": 40em)))
18
+ );
19
+ @include should(expect(
20
+ flint-calc-width("mobile", 4)),
21
+ to(be(("target": 20em, "context": 20em)))
22
+ );
23
+ }
24
+
25
+ @include it("should expect three-quarter width columns to be equal to manually calculated value") {
26
+ @include should(expect(
27
+ flint-calc-width("desktop", 12)),
28
+ to(be(("target": (80em / 4 * 3), "context": 80em)))
29
+ );
30
+ @include should(expect(
31
+ flint-calc-width("laptop", 9)),
32
+ to(be(("target": (60em / 4 * 3), "context": 60em)))
33
+ );
34
+ @include should(expect(
35
+ flint-calc-width("tablet", 6)),
36
+ to(be(("target": (40em / 4 * 3), "context": 40em)))
37
+ );
38
+ @include should(expect(
39
+ flint-calc-width("mobile", 3)),
40
+ to(be(("target": (20em / 4 * 3), "context": 20em)))
41
+ );
42
+ }
43
+
44
+ @include it("should expect half width columns to be equal to manually calculated value") {
45
+ @include should(expect(
46
+ flint-calc-width("desktop", 8)),
47
+ to(be(("target": (80em / 2), "context": 80em)))
48
+ );
49
+ @include should(expect(
50
+ flint-calc-width("laptop", 6)),
51
+ to(be(("target": (60em / 2), "context": 60em)))
52
+ );
53
+ @include should(expect(
54
+ flint-calc-width("tablet", 4)),
55
+ to(be(("target": (40em / 2), "context": 40em)))
56
+ );
57
+ @include should(expect(
58
+ flint-calc-width("mobile", 2)),
59
+ to(be(("target": (20em / 2), "context": 20em)))
60
+ );
61
+ }
62
+
63
+ @include it("should expect quarter width columns to be equal to manually calculated value") {
64
+ @include should(expect(
65
+ flint-calc-width("desktop", 4, null, 1em)),
66
+ to(be(("target": (80em / 4) - 1em, "context": 80em)))
67
+ );
68
+ @include should(expect(
69
+ flint-calc-width("laptop", 3, null, 1em)),
70
+ to(be(("target": (60em / 4) - 1em, "context": 60em)))
71
+ );
72
+ @include should(expect(
73
+ flint-calc-width("tablet", 2, null, 1em)),
74
+ to(be(("target": (40em / 4) - 1em, "context": 40em)))
75
+ );
76
+ @include should(expect(
77
+ flint-calc-width("mobile", 1, null, 1em)),
78
+ to(be(("target": (20em / 4) - 1em, "context": 20em)))
79
+ );
80
+ }
81
+
82
+ @include it("should expect single width columns to be equal to manually calculated value") {
83
+ @include should(expect(
84
+ flint-calc-width("desktop", 1)),
85
+ to(be(("target": (80em / 16), "context": 80em)))
86
+ );
87
+ @include should(expect(
88
+ flint-calc-width("laptop", 1)),
89
+ to(be(("target": (60em / 12), "context": 60em)))
90
+ );
91
+ @include should(expect(
92
+ flint-calc-width("tablet", 1)),
93
+ to(be(("target": (40em / 8), "context": 40em)))
94
+ );
95
+ @include should(expect(
96
+ flint-calc-width("mobile", 1)),
97
+ to(be(("target": (20em / 4), "context": 20em)))
98
+ );
99
+ }
100
+
101
+ @include it("should expect full width columns with context to be equal to manually calculated value") {
102
+ @include should(expect(
103
+ flint-calc-width("desktop", 8, 8)),
104
+ to(be(("target": 40em, "context": 40em)))
105
+ );
106
+ @include should(expect(
107
+ flint-calc-width("laptop", 6, 6)),
108
+ to(be(("target": 30em, "context": 30em)))
109
+ );
110
+ @include should(expect(
111
+ flint-calc-width("tablet", 4, 4)),
112
+ to(be(("target": 20em, "context": 20em)))
113
+ );
114
+ @include should(expect(
115
+ flint-calc-width("mobile", 2, 2)),
116
+ to(be(("target": 10em, "context": 10em)))
117
+ );
118
+ }
119
+
120
+ @include it("should expect three-quarter width columns with context to be equal to manually calculated value") {
121
+ @include should(expect(
122
+ flint-calc-width("desktop", 6, 8)),
123
+ to(be(("target": (40em / 4 * 3), "context": 40em)))
124
+ );
125
+ @include should(expect(
126
+ flint-calc-width("laptop", 4.5, 6)),
127
+ to(be(("target": (30em / 4 * 3), "context": 30em)))
128
+ );
129
+ @include should(expect(
130
+ flint-calc-width("tablet", 6, 8)),
131
+ to(be(("target": (40em / 4 * 3), "context": 40em)))
132
+ );
133
+ @include should(expect(
134
+ flint-calc-width("mobile", 3, 4)),
135
+ to(be(("target": (20em / 4 * 3), "context": 20em)))
136
+ );
137
+ }
138
+
139
+ @include it("should expect half width columns with context to be equal to manually calculated value") {
140
+ @include should(expect(
141
+ flint-calc-width("desktop", 4, 8)),
142
+ to(be(("target": (40em / 2), "context": 40em)))
143
+ );
144
+ @include should(expect(
145
+ flint-calc-width("laptop", 3, 6)),
146
+ to(be(("target": (30em / 2), "context": 30em)))
147
+ );
148
+ @include should(expect(
149
+ flint-calc-width("tablet", 2, 4)),
150
+ to(be(("target": (20em / 2), "context": 20em)))
151
+ );
152
+ @include should(expect(
153
+ flint-calc-width("mobile", 1, 2)),
154
+ to(be(("target": (10em / 2), "context": 10em)))
155
+ );
156
+ }
157
+
158
+ @include it("should expect quarter width columns with context to be equal to manually calculated value") {
159
+ @include should(expect(
160
+ flint-calc-width("desktop", 1, 4)),
161
+ to(be(("target": (20em / 4), "context": 20em)))
162
+ );
163
+ @include should(expect(
164
+ flint-calc-width("laptop", 1, 4)),
165
+ to(be(("target": (20em / 4), "context": 20em)))
166
+ );
167
+ @include should(expect(
168
+ flint-calc-width("tablet", 1, 4)),
169
+ to(be(("target": (20em / 4), "context": 20em)))
170
+ );
171
+ @include should(expect(
172
+ flint-calc-width("mobile", 0.5, 2)),
173
+ to(be(("target": (10em / 4), "context": 10em)))
174
+ );
175
+ }
176
+
177
+ @include it("should expect single width columns with context to be equal to manually calculated value") {
178
+ @include should(expect(
179
+ flint-calc-width("desktop", 1, 16)),
180
+ to(be(("target": (80em / 16), "context": 80em)))
181
+ );
182
+ @include should(expect(
183
+ flint-calc-width("laptop", 1, 12)),
184
+ to(be(("target": (60em / 12), "context": 60em)))
185
+ );
186
+ @include should(expect(
187
+ flint-calc-width("tablet", 1, 8)),
188
+ to(be(("target": (40em / 8), "context": 40em)))
189
+ );
190
+ @include should(expect(
191
+ flint-calc-width("mobile", 1, 4)),
192
+ to(be(("target": (20em / 4), "context": 20em)))
193
+ );
194
+ }
195
+ }
@@ -0,0 +1,30 @@
1
+ /*
2
+ * Check if key exists in map
3
+ */
4
+ @include describe("[function] exists") {
5
+
6
+ $map: (
7
+ "key": "value",
8
+ "map": (
9
+ "deep key": "value"
10
+ )
11
+ );
12
+
13
+ @include it("should expect key to exist within map") {
14
+ @include should(expect(
15
+ flint-exists($map, "key")),
16
+ to(be(true))
17
+ );
18
+ @include should(expect(
19
+ flint-exists($map, "deep key")),
20
+ to(be(true))
21
+ );
22
+ }
23
+
24
+ @include it("should expect key to not exist within map") {
25
+ @include should(expect(
26
+ flint-exists($map, "unknown")),
27
+ to(be(false))
28
+ );
29
+ }
30
+ }
@@ -0,0 +1,32 @@
1
+ /*
2
+ * Convert fixed to fluid width
3
+ */
4
+ @include describe("[function] fluid-width") {
5
+
6
+ @include it("should expect result to be equal to manual calculation") {
7
+ @include should(expect(
8
+ flint-fluid-width(80em / 16, 80em)),
9
+ to(be(100% / 16))
10
+ );
11
+ @include should(expect(
12
+ flint-fluid-width(80em / 8, 80em)),
13
+ to(be(100% / 8))
14
+ );
15
+ @include should(expect(
16
+ flint-fluid-width(80em / 4, 80em)),
17
+ to(be(100% / 4))
18
+ );
19
+ @include should(expect(
20
+ flint-fluid-width(80em / 3, 80em)),
21
+ to(be(100% / 3))
22
+ );
23
+ @include should(expect(
24
+ flint-fluid-width(80em / 2, 80em)),
25
+ to(be(100% / 2))
26
+ );
27
+ @include should(expect(
28
+ flint-fluid-width(80em / 1, 80em)),
29
+ to(be(100% / 1))
30
+ );
31
+ }
32
+ }
@@ -0,0 +1,31 @@
1
+ /*
2
+ * Gets the index of the passed key
3
+ */
4
+ @include describe("[function] get-index") {
5
+
6
+ @include it("should expect index to match index of key in configuration map") {
7
+ @include should(expect(
8
+ flint-get-index("desktop")),
9
+ to(be(1))
10
+ );
11
+ @include should(expect(
12
+ flint-get-index("laptop")),
13
+ to(be(2))
14
+ );
15
+ @include should(expect(
16
+ flint-get-index("tablet")),
17
+ to(be(3))
18
+ );
19
+ @include should(expect(
20
+ flint-get-index("mobile")),
21
+ to(be(4))
22
+ );
23
+ }
24
+
25
+ @include it("should expect index to not be found") {
26
+ @include should(expect(
27
+ flint-get-index("unknown")),
28
+ to(be(false))
29
+ );
30
+ }
31
+ }
@@ -0,0 +1,72 @@
1
+ /*
2
+ * Get single value from key in instance map based on $selector::$key
3
+ */
4
+ @include describe("[function] get-instance-value") {
5
+
6
+ // $flint__instances: (
7
+ // ".instance::desktop": (
8
+ // "instance-count": 1,
9
+ // "parent-selector": none,
10
+ // "key": "desktop",
11
+ // "breakpoint": 80em,
12
+ // "columns": 16,
13
+ // "span": 4,
14
+ // "context": null,
15
+ // "gutter": null,
16
+ // "internal": (
17
+ // "width": 18.75em,
18
+ // "margin-right": 0.625em,
19
+ // "margin-left": 0.625em
20
+ // )
21
+ // )
22
+ // );
23
+
24
+ @include it("should expect to return false unless inside of a parent instance") {
25
+ @include should(expect(
26
+ flint-get-instance-value("desktop", "breakpoint")),
27
+ to(be(false))
28
+ );
29
+ }
30
+
31
+ .parent-instance {
32
+ @include _("desktop", 4);
33
+
34
+ .child-instance {
35
+ @include _("desktop", 2) {
36
+
37
+ @include it("should expect correct value from parent selector to be fetched from instance map") {
38
+ @include should(expect(
39
+ flint-get-instance-value("desktop", "breakpoint")),
40
+ to(be(80em))
41
+ );
42
+ @include should(expect(
43
+ flint-get-instance-value("desktop", "columns")),
44
+ to(be(16))
45
+ );
46
+ @include should(expect(
47
+ flint-get-instance-value("desktop", "span")),
48
+ to(be(4))
49
+ );
50
+ @include should(expect(
51
+ flint-get-instance-value("desktop", "internal", "width")),
52
+ to(be(18.75em))
53
+ );
54
+ }
55
+
56
+ @include it("should expect non-existent values to return false") {
57
+ @include should(expect(
58
+ flint-get-instance-value("mobile", "breakpoint")),
59
+ to(be(false))
60
+ );
61
+ @include should(expect(
62
+ flint-get-instance-value("laptop", "columns")),
63
+ to(be(false))
64
+ );
65
+ }
66
+ }
67
+ }
68
+ }
69
+
70
+ $flint__instances: () !global;
71
+ $flint__instance-count: 0 !global;
72
+ }
@@ -0,0 +1,28 @@
1
+ /*
2
+ * Get single value from configuration map
3
+ */
4
+ @include describe("[function] get-value") {
5
+
6
+ @include it("should expect value to be fetched from configuration map") {
7
+ @include should(expect(
8
+ flint-get-value("breakpoints", "desktop", "breakpoint")),
9
+ to(be(80em))
10
+ );
11
+ @include should(expect(
12
+ flint-get-value("breakpoints", "laptop", "columns")),
13
+ to(be(12))
14
+ );
15
+ @include should(expect(
16
+ flint-get-value("settings", "grid")),
17
+ to(be("fluid"))
18
+ );
19
+ @include should(expect(
20
+ flint-get-value("settings", "gutter")),
21
+ to(be(0.625em))
22
+ );
23
+ @include should(expect(
24
+ flint-get-value("settings", "float-direction")),
25
+ to(be("left"))
26
+ );
27
+ }
28
+ }