jekyll-theme-basically-basic 1.3.1 → 1.4.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 (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
+ }