flint-gs 2.0.3 → 2.0.4

Sign up to get free protection for your applications and to get access to all the features.
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
+ }