jekyll-theme-basically-basic 1.3.1 → 1.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (160) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +18 -0
  3. data/README.md +150 -42
  4. data/_includes/author +30 -30
  5. data/_includes/contact-list.html +27 -27
  6. data/_includes/cv/awards.html +23 -23
  7. data/_includes/cv/basics.html +68 -68
  8. data/_includes/cv/education.html +36 -36
  9. data/_includes/cv/interests.html +19 -19
  10. data/_includes/cv/intro.html +18 -18
  11. data/_includes/cv/languages.html +19 -19
  12. data/_includes/cv/publications.html +29 -29
  13. data/_includes/cv/references.html +23 -23
  14. data/_includes/cv/volunteer.html +46 -46
  15. data/_includes/cv/work.html +46 -46
  16. data/_includes/disqus_comments.html +16 -16
  17. data/_includes/documents-collection.html +19 -0
  18. data/_includes/entry.html +37 -29
  19. data/_includes/footer.html +11 -9
  20. data/_includes/google-analytics.html +8 -8
  21. data/_includes/head.html +35 -35
  22. data/_includes/icon-bitbucket.html +4 -4
  23. data/_includes/icon-codepen.html +4 -4
  24. data/_includes/icon-dribbble.html +4 -4
  25. data/_includes/icon-facebook.html +4 -4
  26. data/_includes/icon-flickr.html +4 -4
  27. data/_includes/icon-github.html +4 -4
  28. data/_includes/icon-gitlab.html +4 -4
  29. data/_includes/icon-googleplus.html +4 -4
  30. data/_includes/icon-instagram.html +4 -4
  31. data/_includes/icon-lastfm.html +4 -4
  32. data/_includes/icon-linkedin.html +4 -4
  33. data/_includes/icon-pinterest.html +4 -4
  34. data/_includes/icon-soundcloud.html +4 -4
  35. data/_includes/icon-stackoverflow.html +4 -4
  36. data/_includes/icon-tumblr.html +4 -4
  37. data/_includes/icon-twitter.html +4 -4
  38. data/_includes/icon-xing.html +4 -4
  39. data/_includes/icon-youtube.html +4 -4
  40. data/_includes/masthead.html +27 -27
  41. data/_includes/navigation.html +25 -25
  42. data/_includes/page-intro.html +42 -42
  43. data/_includes/page-tags.html +14 -0
  44. data/_includes/posts-all.html +2 -2
  45. data/_includes/posts-category.html +3 -0
  46. data/_includes/posts-paginated.html +15 -15
  47. data/_includes/posts-tag.html +3 -0
  48. data/_includes/read-time.html +13 -13
  49. data/_includes/search-form.html +14 -13
  50. data/_includes/search/algolia-search-scripts.html +52 -52
  51. data/_includes/search/lunr-search-scripts.html +1 -1
  52. data/_includes/skip-links.html +8 -8
  53. data/_layouts/about.html +0 -2
  54. data/_layouts/categories.html +48 -0
  55. data/_layouts/category.html +9 -0
  56. data/_layouts/collection.html +9 -0
  57. data/_layouts/cv.html +28 -28
  58. data/_layouts/default.html +2 -1
  59. data/_layouts/home.html +28 -30
  60. data/_layouts/page.html +15 -17
  61. data/_layouts/post.html +18 -20
  62. data/_layouts/posts.html +29 -0
  63. data/_layouts/tag.html +9 -0
  64. data/_layouts/tags.html +48 -0
  65. data/_sass/basically-basic.scss +1 -1
  66. data/_sass/basically-basic/_base.scss +116 -118
  67. data/_sass/basically-basic/_contact-lists.scss +11 -11
  68. data/_sass/basically-basic/_entries.scss +230 -152
  69. data/_sass/basically-basic/_footer.scss +37 -13
  70. data/_sass/basically-basic/_functions.scss +2 -2
  71. data/_sass/basically-basic/_global.scss +116 -42
  72. data/_sass/basically-basic/_icons.scss +43 -43
  73. data/_sass/basically-basic/_intro.scss +3 -1
  74. data/_sass/basically-basic/_layout.scss +188 -188
  75. data/_sass/basically-basic/_mixins.scss +5 -5
  76. data/_sass/basically-basic/_navicons.scss +148 -148
  77. data/_sass/basically-basic/_navigation.scss +66 -66
  78. data/_sass/basically-basic/_print.scss +252 -252
  79. data/_sass/basically-basic/_reset.scss +522 -522
  80. data/_sass/basically-basic/_responsive-embed.scss +70 -70
  81. data/_sass/basically-basic/_search.scss +101 -101
  82. data/_sass/basically-basic/_sidebar.scss +166 -166
  83. data/_sass/basically-basic/_tables.scss +34 -34
  84. data/_sass/basically-basic/_utilities.scss +6 -6
  85. data/_sass/basically-basic/_variables.scss +3 -0
  86. data/_sass/basically-basic/functions/_color.scss +21 -21
  87. data/_sass/basically-basic/functions/_fluid-type.scss +33 -33
  88. data/_sass/basically-basic/mixins/_clearfix.scss +11 -11
  89. data/_sass/basically-basic/mixins/_float.scss +15 -15
  90. data/_sass/basically-basic/mixins/_image.scss +38 -38
  91. data/_sass/basically-basic/mixins/_lists.scss +9 -9
  92. data/_sass/basically-basic/mixins/_text-truncate.scss +10 -10
  93. data/_sass/basically-basic/themes/_default.scss +5 -5
  94. data/_sass/basically-basic/themes/_night.scss +12 -12
  95. data/_sass/basically-basic/themes/_plum.scss +12 -12
  96. data/_sass/basically-basic/themes/_sea.scss +12 -12
  97. data/_sass/basically-basic/utilities/_accessibility.scss +43 -43
  98. data/_sass/basically-basic/utilities/_align.scss +62 -62
  99. data/_sass/basically-basic/utilities/_clearfix.scss +7 -7
  100. data/_sass/basically-basic/utilities/_float.scss +7 -7
  101. data/_sass/basically-basic/utilities/_text.scss +28 -28
  102. data/_sass/basically-basic/utilities/_visibility.scss +32 -32
  103. data/_sass/basically-basic/vendor/breakpoint/_breakpoint.scss +114 -114
  104. data/_sass/basically-basic/vendor/breakpoint/_context.scss +94 -94
  105. data/_sass/basically-basic/vendor/breakpoint/_helpers.scss +151 -151
  106. data/_sass/basically-basic/vendor/breakpoint/_legacy-settings.scss +49 -49
  107. data/_sass/basically-basic/vendor/breakpoint/_no-query.scss +15 -15
  108. data/_sass/basically-basic/vendor/breakpoint/_parsers.scss +215 -215
  109. data/_sass/basically-basic/vendor/breakpoint/_respond-to.scss +82 -82
  110. data/_sass/basically-basic/vendor/breakpoint/_settings.scss +70 -70
  111. data/_sass/basically-basic/vendor/breakpoint/parsers/_double.scss +33 -33
  112. data/_sass/basically-basic/vendor/breakpoint/parsers/_query.scss +82 -82
  113. data/_sass/basically-basic/vendor/breakpoint/parsers/_resolution.scss +31 -31
  114. data/_sass/basically-basic/vendor/breakpoint/parsers/_single.scss +26 -26
  115. data/_sass/basically-basic/vendor/breakpoint/parsers/_triple.scss +36 -36
  116. data/_sass/basically-basic/vendor/breakpoint/parsers/double/_default-pair.scss +21 -21
  117. data/_sass/basically-basic/vendor/breakpoint/parsers/double/_default.scss +22 -22
  118. data/_sass/basically-basic/vendor/breakpoint/parsers/double/_double-string.scss +21 -21
  119. data/_sass/basically-basic/vendor/breakpoint/parsers/resolution/_resolution.scss +60 -60
  120. data/_sass/basically-basic/vendor/breakpoint/parsers/single/_default.scss +13 -13
  121. data/_sass/basically-basic/vendor/breakpoint/parsers/triple/_default.scss +18 -18
  122. data/_sass/basically-basic/vendor/susy/_su.scss +4 -4
  123. data/_sass/basically-basic/vendor/susy/_susy-prefix.scss +13 -13
  124. data/_sass/basically-basic/vendor/susy/_susy.scss +5 -5
  125. data/_sass/basically-basic/vendor/susy/plugins/_svg-grid.scss +5 -5
  126. data/_sass/basically-basic/vendor/susy/plugins/svg-grid/_prefix.scss +7 -7
  127. data/_sass/basically-basic/vendor/susy/plugins/svg-grid/_svg-api.scss +114 -114
  128. data/_sass/basically-basic/vendor/susy/plugins/svg-grid/_svg-grid-math.scss +67 -67
  129. data/_sass/basically-basic/vendor/susy/plugins/svg-grid/_svg-settings.scss +14 -14
  130. data/_sass/basically-basic/vendor/susy/plugins/svg-grid/_svg-unprefix.scss +18 -18
  131. data/_sass/basically-basic/vendor/susy/plugins/svg-grid/_svg-utilities.scss +133 -133
  132. data/_sass/basically-basic/vendor/susy/susy/_api.scss +318 -318
  133. data/_sass/basically-basic/vendor/susy/susy/_normalize.scss +261 -261
  134. data/_sass/basically-basic/vendor/susy/susy/_parse.scss +163 -163
  135. data/_sass/basically-basic/vendor/susy/susy/_settings.scss +329 -329
  136. data/_sass/basically-basic/vendor/susy/susy/_su-math.scss +441 -441
  137. data/_sass/basically-basic/vendor/susy/susy/_su-validate.scss +213 -213
  138. data/_sass/basically-basic/vendor/susy/susy/_syntax-helpers.scss +191 -191
  139. data/_sass/basically-basic/vendor/susy/susy/_unprefix.scss +56 -56
  140. data/_sass/basically-basic/vendor/susy/susy/_utilities.scss +167 -167
  141. data/assets/javascripts/lunr/lunr.da.min.js +17 -17
  142. data/assets/javascripts/lunr/lunr.de.min.js +17 -17
  143. data/assets/javascripts/lunr/lunr.du.min.js +17 -17
  144. data/assets/javascripts/lunr/lunr.es.min.js +17 -17
  145. data/assets/javascripts/lunr/lunr.fi.min.js +17 -17
  146. data/assets/javascripts/lunr/lunr.fr.min.js +17 -17
  147. data/assets/javascripts/lunr/lunr.hu.min.js +17 -17
  148. data/assets/javascripts/lunr/lunr.it.min.js +17 -17
  149. data/assets/javascripts/lunr/lunr.jp.min.js +1 -1
  150. data/assets/javascripts/lunr/lunr.min.js +6 -6
  151. data/assets/javascripts/lunr/lunr.no.min.js +17 -17
  152. data/assets/javascripts/lunr/lunr.pt.min.js +17 -17
  153. data/assets/javascripts/lunr/lunr.ro.min.js +17 -17
  154. data/assets/javascripts/lunr/lunr.ru.min.js +17 -17
  155. data/assets/javascripts/lunr/lunr.sv.min.js +17 -17
  156. data/assets/javascripts/lunr/lunr.tr.min.js +17 -17
  157. data/assets/javascripts/main.js +12 -12
  158. data/assets/javascripts/search-data.json +43 -27
  159. data/assets/stylesheets/main.scss +9 -9
  160. metadata +21 -5
@@ -1,50 +1,50 @@
1
- @mixin legacy-settings-warning {
2
- $legacyVars: (
3
- 'default-media': 'default media',
4
- 'default-feature': 'default feature',
5
- 'force-media-all': 'force all media type',
6
- 'to-ems': 'to ems',
7
- 'resolutions': 'transform resolutions',
8
- 'no-queries': 'no queries',
9
- 'no-query-fallbacks': 'no query fallbacks',
10
- 'base-font-size': 'base font size',
11
- 'legacy-syntax': 'legacy syntax'
12
- );
13
-
14
- @each $legacy, $new in $legacyVars {
15
- @if global-variable-exists('breakpoint-' + $legacy) {
16
- @warn "In order to avoid variable namspace collisions, we have updated the way to change settings for Breakpoint. Please change all instances of `$breakpoint-#{$legacy}: {{setting}}` to `@include breakpoint-set('#{$new}', {{setting}})`. Variable settings, as well as this warning will be deprecated in a future release."
17
- }
18
- };
19
-
20
- //////////////////////////////
21
- // Hand correct each setting
22
- //////////////////////////////
23
- @if global-variable-exists('breakpoint-default-media') and $breakpoint-default-media != breakpoint-get('default media') {
24
- @include breakpoint-set('default media', $breakpoint-default-media);
25
- }
26
- @if global-variable-exists('breakpoint-default-feature') and $breakpoint-default-feature != breakpoint-get('default feature') {
27
- @include breakpoint-set('default feature', $breakpoint-default-feature);
28
- }
29
- @if global-variable-exists('breakpoint-force-media-all') and $breakpoint-force-media-all != breakpoint-get('force all media type') {
30
- @include breakpoint-set('force all media type', $breakpoint-force-media-all);
31
- }
32
- @if global-variable-exists('breakpoint-to-ems') and $breakpoint-to-ems != breakpoint-get('to ems') {
33
- @include breakpoint-set('to ems', $breakpoint-to-ems);
34
- }
35
- @if global-variable-exists('breakpoint-resolutions') and $breakpoint-resolutions != breakpoint-get('transform resolutions') {
36
- @include breakpoint-set('transform resolutions', $breakpoint-resolutions);
37
- }
38
- @if global-variable-exists('breakpoint-no-queries') and $breakpoint-no-queries != breakpoint-get('no queries') {
39
- @include breakpoint-set('no queries', $breakpoint-no-queries);
40
- }
41
- @if global-variable-exists('breakpoint-no-query-fallbacks') and $breakpoint-no-query-fallbacks != breakpoint-get('no query fallbacks') {
42
- @include breakpoint-set('no query fallbacks', $breakpoint-no-query-fallbacks);
43
- }
44
- @if global-variable-exists('breakpoint-base-font-size') and $breakpoint-base-font-size != breakpoint-get('base font size') {
45
- @include breakpoint-set('base font size', $breakpoint-base-font-size);
46
- }
47
- @if global-variable-exists('breakpoint-legacy-syntax') and $breakpoint-legacy-syntax != breakpoint-get('legacy syntax') {
48
- @include breakpoint-set('legacy syntax', $breakpoint-legacy-syntax);
49
- }
1
+ @mixin legacy-settings-warning {
2
+ $legacyVars: (
3
+ 'default-media': 'default media',
4
+ 'default-feature': 'default feature',
5
+ 'force-media-all': 'force all media type',
6
+ 'to-ems': 'to ems',
7
+ 'resolutions': 'transform resolutions',
8
+ 'no-queries': 'no queries',
9
+ 'no-query-fallbacks': 'no query fallbacks',
10
+ 'base-font-size': 'base font size',
11
+ 'legacy-syntax': 'legacy syntax'
12
+ );
13
+
14
+ @each $legacy, $new in $legacyVars {
15
+ @if global-variable-exists('breakpoint-' + $legacy) {
16
+ @warn "In order to avoid variable namspace collisions, we have updated the way to change settings for Breakpoint. Please change all instances of `$breakpoint-#{$legacy}: {{setting}}` to `@include breakpoint-set('#{$new}', {{setting}})`. Variable settings, as well as this warning will be deprecated in a future release."
17
+ }
18
+ };
19
+
20
+ //////////////////////////////
21
+ // Hand correct each setting
22
+ //////////////////////////////
23
+ @if global-variable-exists('breakpoint-default-media') and $breakpoint-default-media != breakpoint-get('default media') {
24
+ @include breakpoint-set('default media', $breakpoint-default-media);
25
+ }
26
+ @if global-variable-exists('breakpoint-default-feature') and $breakpoint-default-feature != breakpoint-get('default feature') {
27
+ @include breakpoint-set('default feature', $breakpoint-default-feature);
28
+ }
29
+ @if global-variable-exists('breakpoint-force-media-all') and $breakpoint-force-media-all != breakpoint-get('force all media type') {
30
+ @include breakpoint-set('force all media type', $breakpoint-force-media-all);
31
+ }
32
+ @if global-variable-exists('breakpoint-to-ems') and $breakpoint-to-ems != breakpoint-get('to ems') {
33
+ @include breakpoint-set('to ems', $breakpoint-to-ems);
34
+ }
35
+ @if global-variable-exists('breakpoint-resolutions') and $breakpoint-resolutions != breakpoint-get('transform resolutions') {
36
+ @include breakpoint-set('transform resolutions', $breakpoint-resolutions);
37
+ }
38
+ @if global-variable-exists('breakpoint-no-queries') and $breakpoint-no-queries != breakpoint-get('no queries') {
39
+ @include breakpoint-set('no queries', $breakpoint-no-queries);
40
+ }
41
+ @if global-variable-exists('breakpoint-no-query-fallbacks') and $breakpoint-no-query-fallbacks != breakpoint-get('no query fallbacks') {
42
+ @include breakpoint-set('no query fallbacks', $breakpoint-no-query-fallbacks);
43
+ }
44
+ @if global-variable-exists('breakpoint-base-font-size') and $breakpoint-base-font-size != breakpoint-get('base font size') {
45
+ @include breakpoint-set('base font size', $breakpoint-base-font-size);
46
+ }
47
+ @if global-variable-exists('breakpoint-legacy-syntax') and $breakpoint-legacy-syntax != breakpoint-get('legacy syntax') {
48
+ @include breakpoint-set('legacy syntax', $breakpoint-legacy-syntax);
49
+ }
50
50
  }
@@ -1,15 +1,15 @@
1
- @function breakpoint-no-query($query) {
2
- @if type-of($query) == 'list' {
3
- $keyword: nth($query, 1);
4
-
5
- @if type-of($keyword) == 'string' and ($keyword == 'no-query' or $keyword == 'no query' or $keyword == 'fallback') {
6
- @return nth($query, 2);
7
- }
8
- @else {
9
- @return false;
10
- }
11
- }
12
- @else {
13
- @return false;
14
- }
15
- }
1
+ @function breakpoint-no-query($query) {
2
+ @if type-of($query) == 'list' {
3
+ $keyword: nth($query, 1);
4
+
5
+ @if type-of($keyword) == 'string' and ($keyword == 'no-query' or $keyword == 'no query' or $keyword == 'fallback') {
6
+ @return nth($query, 2);
7
+ }
8
+ @else {
9
+ @return false;
10
+ }
11
+ }
12
+ @else {
13
+ @return false;
14
+ }
15
+ }
@@ -1,215 +1,215 @@
1
- //////////////////////////////
2
- // Import Parser Pieces
3
- //////////////////////////////
4
- @import "parsers/query";
5
- @import "parsers/single";
6
- @import "parsers/double";
7
- @import "parsers/triple";
8
- @import "parsers/resolution";
9
-
10
- $Memo-Exists: function-exists(memo-get) and function-exists(memo-set);
11
-
12
- //////////////////////////////
13
- // Breakpoint Function
14
- //////////////////////////////
15
- @function breakpoint($query, $contexts...) {
16
- $run: true;
17
- $return: ();
18
-
19
- // Grab the Memo Output if Memoization can be a thing
20
- @if $Memo-Exists {
21
- $return: memo-get(breakpoint, breakpoint $query $contexts);
22
-
23
- @if $return != null {
24
- $run: false;
25
- }
26
- }
27
-
28
- @if not $Memo-Exists or $run {
29
- // Internal Variables
30
- $query-string: '';
31
- $query-fallback: false;
32
- $return: ();
33
-
34
- // Reserve Global Private Breakpoint Context
35
- $holder-context: $private-breakpoint-context-holder;
36
- $holder-query-count: $private-breakpoint-query-count;
37
-
38
- // Reset Global Private Breakpoint Context
39
- $private-breakpoint-context-holder: () !global;
40
- $private-breakpoint-query-count: 0 !global;
41
-
42
-
43
- // Test to see if it's a comma-separated list
44
- $or-list: if(list-separator($query) == 'comma', true, false);
45
-
46
-
47
- @if ($or-list == false and breakpoint-get('legacy syntax') == false) {
48
- $query-string: breakpoint-parse($query);
49
- }
50
- @else {
51
- $length: length($query);
52
-
53
- $last: nth($query, $length);
54
- $query-fallback: breakpoint-no-query($last);
55
-
56
- @if ($query-fallback != false) {
57
- $length: $length - 1;
58
- }
59
-
60
- @if (breakpoint-get('legacy syntax') == true) {
61
- $mq: ();
62
-
63
- @for $i from 1 through $length {
64
- $mq: append($mq, nth($query, $i), comma);
65
- }
66
-
67
- $query-string: breakpoint-parse($mq);
68
- }
69
- @else {
70
- $query-string: '';
71
- @for $i from 1 through $length {
72
- $query-string: $query-string + if($i == 1, '', ', ') + breakpoint-parse(nth($query, $i));
73
- }
74
- }
75
- }
76
-
77
- $return: ('query': $query-string,
78
- 'fallback': $query-fallback,
79
- 'context holder': $private-breakpoint-context-holder,
80
- 'query count': $private-breakpoint-query-count
81
- );
82
- @if length($contexts) > 0 and nth($contexts, 1) != false {
83
- @if $query-fallback != false {
84
- $context-setter: private-breakpoint-set-context('no-query', $query-fallback);
85
- }
86
- $context-map: ();
87
- @each $context in $contexts {
88
- $context-map: map-merge($context-map, ($context: breakpoint-get-context($context)));
89
- }
90
- $return: map-merge($return, (context: $context-map));
91
- }
92
-
93
- // Reset Global Private Breakpoint Context
94
- $private-breakpoint-context-holder: () !global;
95
- $private-breakpoint-query-count: 0 !global;
96
-
97
- @if $Memo-Exists {
98
- $holder: memo-set(breakpoint, breakpoint $query $contexts, $return);
99
- }
100
- }
101
-
102
- @return $return;
103
- }
104
-
105
- //////////////////////////////
106
- // General Breakpoint Parser
107
- //////////////////////////////
108
- @function breakpoint-parse($query) {
109
- // Increase number of 'and' queries
110
- $private-breakpoint-query-count: $private-breakpoint-query-count + 1 !global;
111
-
112
- // Set up Media Type
113
- $query-print: '';
114
-
115
- $force-all: ((breakpoint-get('force all media type') == true) and (breakpoint-get('default media') == 'all'));
116
- $empty-media: true;
117
- @if ($force-all == true) or (breakpoint-get('default media') != 'all') {
118
- // Force the print of the default media type if (force all is true and default media type is all) or (default media type is not all)
119
- $query-print: breakpoint-get('default media');
120
- $empty-media: false;
121
- }
122
-
123
-
124
- $query-resolution: false;
125
-
126
- $query-holder: breakpoint-parse-query($query);
127
-
128
-
129
-
130
- // Loop over each parsed out query and write it to $query-print
131
- $first: true;
132
-
133
- @each $feature in $query-holder {
134
- $length: length($feature);
135
-
136
- // Parse a single feature
137
- @if ($length == 1) {
138
- // Feature is currently a list, grab the actual value
139
- $feature: nth($feature, 1);
140
-
141
- // Media Type must by convention be the first item, so it's safe to flat override $query-print, which right now should only be the default media type
142
- @if (breakpoint-is-media($feature)) {
143
- @if ($force-all == true) or ($feature != 'all') {
144
- // Force the print of the default media type if (force all is true and default media type is all) or (default media type is not all)
145
- $query-print: $feature;
146
- $empty-media: false;
147
-
148
- // Set Context
149
- $context-setter: private-breakpoint-set-context(media, $query-print);
150
- }
151
- }
152
- @else {
153
- $parsed: breakpoint-parse-single($feature, $empty-media, $first);
154
- $query-print: '#{$query-print} #{$parsed}';
155
- $first: false;
156
- }
157
- }
158
- // Parse a double feature
159
- @else if ($length == 2) {
160
- @if (breakpoint-is-resolution($feature) != false) {
161
- $query-resolution: $feature;
162
- }
163
- @else {
164
- $parsed: null;
165
- // If it's a string/number pair,
166
- // we check to see if one is a single-string value,
167
- // then we parse it as a normal double
168
- $alpha: nth($feature, 1);
169
- $beta: nth($feature, 2);
170
- @if breakpoint-single-string($alpha) or breakpoint-single-string($beta) {
171
- $parsed: breakpoint-parse-single($alpha, $empty-media, $first);
172
- $query-print: '#{$query-print} #{$parsed}';
173
- $first: false;
174
- $parsed: breakpoint-parse-single($beta, $empty-media, $first);
175
- $query-print: '#{$query-print} #{$parsed}';
176
- }
177
- @else {
178
- $parsed: breakpoint-parse-double($feature, $empty-media, $first);
179
- $query-print: '#{$query-print} #{$parsed}';
180
- $first: false;
181
- }
182
- }
183
- }
184
- // Parse a triple feature
185
- @else if ($length == 3) {
186
- $parsed: breakpoint-parse-triple($feature, $empty-media, $first);
187
- $query-print: '#{$query-print} #{$parsed}';
188
- $first: false;
189
- }
190
-
191
- }
192
-
193
- @if ($query-resolution != false) {
194
- $query-print: breakpoint-build-resolution($query-print, $query-resolution, $empty-media, $first);
195
- }
196
-
197
- // Loop through each feature that's been detected so far and append 'false' to the the value list to increment their counters
198
- @each $f, $v in $private-breakpoint-context-holder {
199
- $v-holder: $v;
200
- $length: length($v-holder);
201
- @if length($v-holder) < $private-breakpoint-query-count {
202
- @for $i from $length to $private-breakpoint-query-count {
203
- @if $f == 'media' {
204
- $v-holder: append($v-holder, breakpoint-get('default media'));
205
- }
206
- @else {
207
- $v-holder: append($v-holder, false);
208
- }
209
- }
210
- }
211
- $private-breakpoint-context-holder: map-merge($private-breakpoint-context-holder, ($f: $v-holder)) !global;
212
- }
213
-
214
- @return $query-print;
215
- }
1
+ //////////////////////////////
2
+ // Import Parser Pieces
3
+ //////////////////////////////
4
+ @import "parsers/query";
5
+ @import "parsers/single";
6
+ @import "parsers/double";
7
+ @import "parsers/triple";
8
+ @import "parsers/resolution";
9
+
10
+ $Memo-Exists: function-exists(memo-get) and function-exists(memo-set);
11
+
12
+ //////////////////////////////
13
+ // Breakpoint Function
14
+ //////////////////////////////
15
+ @function breakpoint($query, $contexts...) {
16
+ $run: true;
17
+ $return: ();
18
+
19
+ // Grab the Memo Output if Memoization can be a thing
20
+ @if $Memo-Exists {
21
+ $return: memo-get(breakpoint, breakpoint $query $contexts);
22
+
23
+ @if $return != null {
24
+ $run: false;
25
+ }
26
+ }
27
+
28
+ @if not $Memo-Exists or $run {
29
+ // Internal Variables
30
+ $query-string: '';
31
+ $query-fallback: false;
32
+ $return: ();
33
+
34
+ // Reserve Global Private Breakpoint Context
35
+ $holder-context: $private-breakpoint-context-holder;
36
+ $holder-query-count: $private-breakpoint-query-count;
37
+
38
+ // Reset Global Private Breakpoint Context
39
+ $private-breakpoint-context-holder: () !global;
40
+ $private-breakpoint-query-count: 0 !global;
41
+
42
+
43
+ // Test to see if it's a comma-separated list
44
+ $or-list: if(list-separator($query) == 'comma', true, false);
45
+
46
+
47
+ @if ($or-list == false and breakpoint-get('legacy syntax') == false) {
48
+ $query-string: breakpoint-parse($query);
49
+ }
50
+ @else {
51
+ $length: length($query);
52
+
53
+ $last: nth($query, $length);
54
+ $query-fallback: breakpoint-no-query($last);
55
+
56
+ @if ($query-fallback != false) {
57
+ $length: $length - 1;
58
+ }
59
+
60
+ @if (breakpoint-get('legacy syntax') == true) {
61
+ $mq: ();
62
+
63
+ @for $i from 1 through $length {
64
+ $mq: append($mq, nth($query, $i), comma);
65
+ }
66
+
67
+ $query-string: breakpoint-parse($mq);
68
+ }
69
+ @else {
70
+ $query-string: '';
71
+ @for $i from 1 through $length {
72
+ $query-string: $query-string + if($i == 1, '', ', ') + breakpoint-parse(nth($query, $i));
73
+ }
74
+ }
75
+ }
76
+
77
+ $return: ('query': $query-string,
78
+ 'fallback': $query-fallback,
79
+ 'context holder': $private-breakpoint-context-holder,
80
+ 'query count': $private-breakpoint-query-count
81
+ );
82
+ @if length($contexts) > 0 and nth($contexts, 1) != false {
83
+ @if $query-fallback != false {
84
+ $context-setter: private-breakpoint-set-context('no-query', $query-fallback);
85
+ }
86
+ $context-map: ();
87
+ @each $context in $contexts {
88
+ $context-map: map-merge($context-map, ($context: breakpoint-get-context($context)));
89
+ }
90
+ $return: map-merge($return, (context: $context-map));
91
+ }
92
+
93
+ // Reset Global Private Breakpoint Context
94
+ $private-breakpoint-context-holder: () !global;
95
+ $private-breakpoint-query-count: 0 !global;
96
+
97
+ @if $Memo-Exists {
98
+ $holder: memo-set(breakpoint, breakpoint $query $contexts, $return);
99
+ }
100
+ }
101
+
102
+ @return $return;
103
+ }
104
+
105
+ //////////////////////////////
106
+ // General Breakpoint Parser
107
+ //////////////////////////////
108
+ @function breakpoint-parse($query) {
109
+ // Increase number of 'and' queries
110
+ $private-breakpoint-query-count: $private-breakpoint-query-count + 1 !global;
111
+
112
+ // Set up Media Type
113
+ $query-print: '';
114
+
115
+ $force-all: ((breakpoint-get('force all media type') == true) and (breakpoint-get('default media') == 'all'));
116
+ $empty-media: true;
117
+ @if ($force-all == true) or (breakpoint-get('default media') != 'all') {
118
+ // Force the print of the default media type if (force all is true and default media type is all) or (default media type is not all)
119
+ $query-print: breakpoint-get('default media');
120
+ $empty-media: false;
121
+ }
122
+
123
+
124
+ $query-resolution: false;
125
+
126
+ $query-holder: breakpoint-parse-query($query);
127
+
128
+
129
+
130
+ // Loop over each parsed out query and write it to $query-print
131
+ $first: true;
132
+
133
+ @each $feature in $query-holder {
134
+ $length: length($feature);
135
+
136
+ // Parse a single feature
137
+ @if ($length == 1) {
138
+ // Feature is currently a list, grab the actual value
139
+ $feature: nth($feature, 1);
140
+
141
+ // Media Type must by convention be the first item, so it's safe to flat override $query-print, which right now should only be the default media type
142
+ @if (breakpoint-is-media($feature)) {
143
+ @if ($force-all == true) or ($feature != 'all') {
144
+ // Force the print of the default media type if (force all is true and default media type is all) or (default media type is not all)
145
+ $query-print: $feature;
146
+ $empty-media: false;
147
+
148
+ // Set Context
149
+ $context-setter: private-breakpoint-set-context(media, $query-print);
150
+ }
151
+ }
152
+ @else {
153
+ $parsed: breakpoint-parse-single($feature, $empty-media, $first);
154
+ $query-print: '#{$query-print} #{$parsed}';
155
+ $first: false;
156
+ }
157
+ }
158
+ // Parse a double feature
159
+ @else if ($length == 2) {
160
+ @if (breakpoint-is-resolution($feature) != false) {
161
+ $query-resolution: $feature;
162
+ }
163
+ @else {
164
+ $parsed: null;
165
+ // If it's a string/number pair,
166
+ // we check to see if one is a single-string value,
167
+ // then we parse it as a normal double
168
+ $alpha: nth($feature, 1);
169
+ $beta: nth($feature, 2);
170
+ @if breakpoint-single-string($alpha) or breakpoint-single-string($beta) {
171
+ $parsed: breakpoint-parse-single($alpha, $empty-media, $first);
172
+ $query-print: '#{$query-print} #{$parsed}';
173
+ $first: false;
174
+ $parsed: breakpoint-parse-single($beta, $empty-media, $first);
175
+ $query-print: '#{$query-print} #{$parsed}';
176
+ }
177
+ @else {
178
+ $parsed: breakpoint-parse-double($feature, $empty-media, $first);
179
+ $query-print: '#{$query-print} #{$parsed}';
180
+ $first: false;
181
+ }
182
+ }
183
+ }
184
+ // Parse a triple feature
185
+ @else if ($length == 3) {
186
+ $parsed: breakpoint-parse-triple($feature, $empty-media, $first);
187
+ $query-print: '#{$query-print} #{$parsed}';
188
+ $first: false;
189
+ }
190
+
191
+ }
192
+
193
+ @if ($query-resolution != false) {
194
+ $query-print: breakpoint-build-resolution($query-print, $query-resolution, $empty-media, $first);
195
+ }
196
+
197
+ // Loop through each feature that's been detected so far and append 'false' to the the value list to increment their counters
198
+ @each $f, $v in $private-breakpoint-context-holder {
199
+ $v-holder: $v;
200
+ $length: length($v-holder);
201
+ @if length($v-holder) < $private-breakpoint-query-count {
202
+ @for $i from $length to $private-breakpoint-query-count {
203
+ @if $f == 'media' {
204
+ $v-holder: append($v-holder, breakpoint-get('default media'));
205
+ }
206
+ @else {
207
+ $v-holder: append($v-holder, false);
208
+ }
209
+ }
210
+ }
211
+ $private-breakpoint-context-holder: map-merge($private-breakpoint-context-holder, ($f: $v-holder)) !global;
212
+ }
213
+
214
+ @return $query-print;
215
+ }