jekyll-theme-basically-basic 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (195) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG.md +19 -0
  3. data/LICENSE.md +21 -0
  4. data/README.md +582 -0
  5. data/_includes/author +31 -0
  6. data/_includes/contact-list.html +27 -0
  7. data/_includes/cv/awards.html +24 -0
  8. data/_includes/cv/basics.html +69 -0
  9. data/_includes/cv/education.html +36 -0
  10. data/_includes/cv/interests.html +20 -0
  11. data/_includes/cv/intro.html +18 -0
  12. data/_includes/cv/languages.html +20 -0
  13. data/_includes/cv/publications.html +30 -0
  14. data/_includes/cv/references.html +24 -0
  15. data/_includes/cv/skills.html +20 -0
  16. data/_includes/cv/volunteer.html +46 -0
  17. data/_includes/cv/work.html +46 -0
  18. data/_includes/disqus_comments.html +17 -0
  19. data/_includes/entry.html +29 -0
  20. data/_includes/footer.html +9 -0
  21. data/_includes/google-analytics.html +9 -0
  22. data/_includes/head-feed.html +1 -0
  23. data/_includes/head-seo.html +1 -0
  24. data/_includes/head.html +35 -0
  25. data/_includes/icon-arrow-left.svg +1 -0
  26. data/_includes/icon-arrow-right.svg +1 -0
  27. data/_includes/icon-bitbucket.html +4 -0
  28. data/_includes/icon-bitbucket.svg +1 -0
  29. data/_includes/icon-calendar.svg +1 -0
  30. data/_includes/icon-codepen.html +4 -0
  31. data/_includes/icon-codepen.svg +1 -0
  32. data/_includes/icon-download.svg +1 -0
  33. data/_includes/icon-dribbble.html +4 -0
  34. data/_includes/icon-dribbble.svg +1 -0
  35. data/_includes/icon-email.svg +1 -0
  36. data/_includes/icon-facebook.html +4 -0
  37. data/_includes/icon-facebook.svg +1 -0
  38. data/_includes/icon-flickr.html +4 -0
  39. data/_includes/icon-flickr.svg +1 -0
  40. data/_includes/icon-github.html +4 -0
  41. data/_includes/icon-github.svg +1 -0
  42. data/_includes/icon-gitlab.html +4 -0
  43. data/_includes/icon-gitlab.svg +1 -0
  44. data/_includes/icon-googleplus.html +4 -0
  45. data/_includes/icon-googleplus.svg +1 -0
  46. data/_includes/icon-instagram.html +4 -0
  47. data/_includes/icon-instagram.svg +1 -0
  48. data/_includes/icon-lastfm.html +4 -0
  49. data/_includes/icon-lastfm.svg +1 -0
  50. data/_includes/icon-linkedin.html +4 -0
  51. data/_includes/icon-linkedin.svg +1 -0
  52. data/_includes/icon-pdf.svg +1 -0
  53. data/_includes/icon-pinterest.html +4 -0
  54. data/_includes/icon-pinterest.svg +1 -0
  55. data/_includes/icon-rss.svg +1 -0
  56. data/_includes/icon-soundcloud.html +4 -0
  57. data/_includes/icon-soundcloud.svg +1 -0
  58. data/_includes/icon-stackoverflow.html +4 -0
  59. data/_includes/icon-stackoverflow.svg +1 -0
  60. data/_includes/icon-stopwatch.svg +1 -0
  61. data/_includes/icon-tumblr.html +4 -0
  62. data/_includes/icon-tumblr.svg +1 -0
  63. data/_includes/icon-twitter.html +4 -0
  64. data/_includes/icon-twitter.svg +1 -0
  65. data/_includes/icon-xing.html +4 -0
  66. data/_includes/icon-xing.svg +1 -0
  67. data/_includes/icon-youtube.html +4 -0
  68. data/_includes/icon-youtube.svg +1 -0
  69. data/_includes/masthead.html +27 -0
  70. data/_includes/navigation.html +25 -0
  71. data/_includes/page-intro.html +42 -0
  72. data/_includes/posts-all.html +3 -0
  73. data/_includes/posts-paginated.html +16 -0
  74. data/_includes/read-time.html +13 -0
  75. data/_includes/scripts.html +5 -0
  76. data/_includes/skip-links.html +8 -0
  77. data/_layouts/about.html +21 -0
  78. data/_layouts/cv.html +28 -0
  79. data/_layouts/default.html +38 -0
  80. data/_layouts/home.html +30 -0
  81. data/_layouts/page.html +17 -0
  82. data/_layouts/post.html +20 -0
  83. data/_sass/basically-basic.scss +37 -0
  84. data/_sass/basically-basic/_base.scss +110 -0
  85. data/_sass/basically-basic/_buttons.scss +39 -0
  86. data/_sass/basically-basic/_contact-lists.scss +11 -0
  87. data/_sass/basically-basic/_entries.scss +155 -0
  88. data/_sass/basically-basic/_footer.scss +13 -0
  89. data/_sass/basically-basic/_global.scss +36 -0
  90. data/_sass/basically-basic/_icons.scss +43 -0
  91. data/_sass/basically-basic/_intro.scss +65 -0
  92. data/_sass/basically-basic/_layout.scss +178 -0
  93. data/_sass/basically-basic/_mixins.scss +7 -0
  94. data/_sass/basically-basic/_navicons.scss +144 -0
  95. data/_sass/basically-basic/_navigation.scss +51 -0
  96. data/_sass/basically-basic/_reset.scss +522 -0
  97. data/_sass/basically-basic/_sidebar.scss +177 -0
  98. data/_sass/basically-basic/_syntax-highlighting.scss +127 -0
  99. data/_sass/basically-basic/_tables.scss +42 -0
  100. data/_sass/basically-basic/_utilities.scss +5 -0
  101. data/_sass/basically-basic/_variables.scss +84 -0
  102. data/_sass/basically-basic/mixins/_clearfix.scss +11 -0
  103. data/_sass/basically-basic/mixins/_color.scss +21 -0
  104. data/_sass/basically-basic/mixins/_float.scss +15 -0
  105. data/_sass/basically-basic/mixins/_fluid-type.scss +33 -0
  106. data/_sass/basically-basic/mixins/_image.scss +38 -0
  107. data/_sass/basically-basic/mixins/_lists.scss +9 -0
  108. data/_sass/basically-basic/mixins/_text-truncate.scss +10 -0
  109. data/_sass/basically-basic/themes/_default.scss +5 -0
  110. data/_sass/basically-basic/themes/_night.scss +12 -0
  111. data/_sass/basically-basic/themes/_plum.scss +12 -0
  112. data/_sass/basically-basic/themes/_sea.scss +12 -0
  113. data/_sass/basically-basic/themes/_soft.scss +12 -0
  114. data/_sass/basically-basic/themes/_steel.scss +12 -0
  115. data/_sass/basically-basic/utilities/_accessibility.scss +54 -0
  116. data/_sass/basically-basic/utilities/_align.scss +64 -0
  117. data/_sass/basically-basic/utilities/_clearfix.scss +7 -0
  118. data/_sass/basically-basic/utilities/_float.scss +7 -0
  119. data/_sass/basically-basic/utilities/_text.scss +28 -0
  120. data/_sass/basically-basic/vendor/_breakpoint.scss +114 -0
  121. data/_sass/basically-basic/vendor/_su.scss +4 -0
  122. data/_sass/basically-basic/vendor/_susy.scss +4 -0
  123. data/_sass/basically-basic/vendor/_susyone.scss +4 -0
  124. data/_sass/basically-basic/vendor/breakpoint/_context.scss +95 -0
  125. data/_sass/basically-basic/vendor/breakpoint/_helpers.scss +151 -0
  126. data/_sass/basically-basic/vendor/breakpoint/_legacy-settings.scss +50 -0
  127. data/_sass/basically-basic/vendor/breakpoint/_no-query.scss +15 -0
  128. data/_sass/basically-basic/vendor/breakpoint/_parsers.scss +215 -0
  129. data/_sass/basically-basic/vendor/breakpoint/_respond-to.scss +82 -0
  130. data/_sass/basically-basic/vendor/breakpoint/_settings.scss +71 -0
  131. data/_sass/basically-basic/vendor/breakpoint/parsers/_double.scss +33 -0
  132. data/_sass/basically-basic/vendor/breakpoint/parsers/_query.scss +82 -0
  133. data/_sass/basically-basic/vendor/breakpoint/parsers/_resolution.scss +31 -0
  134. data/_sass/basically-basic/vendor/breakpoint/parsers/_single.scss +26 -0
  135. data/_sass/basically-basic/vendor/breakpoint/parsers/_triple.scss +36 -0
  136. data/_sass/basically-basic/vendor/breakpoint/parsers/double/_default-pair.scss +21 -0
  137. data/_sass/basically-basic/vendor/breakpoint/parsers/double/_default.scss +22 -0
  138. data/_sass/basically-basic/vendor/breakpoint/parsers/double/_double-string.scss +22 -0
  139. data/_sass/basically-basic/vendor/breakpoint/parsers/resolution/_resolution.scss +60 -0
  140. data/_sass/basically-basic/vendor/breakpoint/parsers/single/_default.scss +13 -0
  141. data/_sass/basically-basic/vendor/breakpoint/parsers/triple/_default.scss +18 -0
  142. data/_sass/basically-basic/vendor/susy/_su.scss +7 -0
  143. data/_sass/basically-basic/vendor/susy/language/_susy.scss +24 -0
  144. data/_sass/basically-basic/vendor/susy/language/_susyone.scss +13 -0
  145. data/_sass/basically-basic/vendor/susy/language/susy/_background.scss +385 -0
  146. data/_sass/basically-basic/vendor/susy/language/susy/_bleed.scss +200 -0
  147. data/_sass/basically-basic/vendor/susy/language/susy/_box-sizing.scss +47 -0
  148. data/_sass/basically-basic/vendor/susy/language/susy/_breakpoint-plugin.scss +185 -0
  149. data/_sass/basically-basic/vendor/susy/language/susy/_container.scss +81 -0
  150. data/_sass/basically-basic/vendor/susy/language/susy/_context.scss +36 -0
  151. data/_sass/basically-basic/vendor/susy/language/susy/_gallery.scss +94 -0
  152. data/_sass/basically-basic/vendor/susy/language/susy/_grids.scss +64 -0
  153. data/_sass/basically-basic/vendor/susy/language/susy/_gutters.scss +154 -0
  154. data/_sass/basically-basic/vendor/susy/language/susy/_isolate.scss +77 -0
  155. data/_sass/basically-basic/vendor/susy/language/susy/_margins.scss +94 -0
  156. data/_sass/basically-basic/vendor/susy/language/susy/_padding.scss +74 -0
  157. data/_sass/basically-basic/vendor/susy/language/susy/_rows.scss +138 -0
  158. data/_sass/basically-basic/vendor/susy/language/susy/_settings.scss +216 -0
  159. data/_sass/basically-basic/vendor/susy/language/susy/_span.scss +163 -0
  160. data/_sass/basically-basic/vendor/susy/language/susy/_validation.scss +16 -0
  161. data/_sass/basically-basic/vendor/susy/language/susyone/_background.scss +18 -0
  162. data/_sass/basically-basic/vendor/susy/language/susyone/_functions.scss +377 -0
  163. data/_sass/basically-basic/vendor/susy/language/susyone/_grid.scss +312 -0
  164. data/_sass/basically-basic/vendor/susy/language/susyone/_isolation.scss +51 -0
  165. data/_sass/basically-basic/vendor/susy/language/susyone/_margin.scss +93 -0
  166. data/_sass/basically-basic/vendor/susy/language/susyone/_media.scss +105 -0
  167. data/_sass/basically-basic/vendor/susy/language/susyone/_padding.scss +92 -0
  168. data/_sass/basically-basic/vendor/susy/language/susyone/_settings.scss +60 -0
  169. data/_sass/basically-basic/vendor/susy/output/_float.scss +9 -0
  170. data/_sass/basically-basic/vendor/susy/output/_shared.scss +15 -0
  171. data/_sass/basically-basic/vendor/susy/output/_support.scss +9 -0
  172. data/_sass/basically-basic/vendor/susy/output/float/_container.scss +16 -0
  173. data/_sass/basically-basic/vendor/susy/output/float/_end.scss +40 -0
  174. data/_sass/basically-basic/vendor/susy/output/float/_isolate.scss +22 -0
  175. data/_sass/basically-basic/vendor/susy/output/float/_span.scss +35 -0
  176. data/_sass/basically-basic/vendor/susy/output/shared/_background.scss +26 -0
  177. data/_sass/basically-basic/vendor/susy/output/shared/_container.scss +21 -0
  178. data/_sass/basically-basic/vendor/susy/output/shared/_direction.scss +42 -0
  179. data/_sass/basically-basic/vendor/susy/output/shared/_inspect.scss +25 -0
  180. data/_sass/basically-basic/vendor/susy/output/shared/_margins.scss +23 -0
  181. data/_sass/basically-basic/vendor/susy/output/shared/_output.scss +14 -0
  182. data/_sass/basically-basic/vendor/susy/output/shared/_padding.scss +23 -0
  183. data/_sass/basically-basic/vendor/susy/output/support/_background.scss +58 -0
  184. data/_sass/basically-basic/vendor/susy/output/support/_box-sizing.scss +19 -0
  185. data/_sass/basically-basic/vendor/susy/output/support/_clearfix.scss +18 -0
  186. data/_sass/basically-basic/vendor/susy/output/support/_prefix.scss +19 -0
  187. data/_sass/basically-basic/vendor/susy/output/support/_rem.scss +22 -0
  188. data/_sass/basically-basic/vendor/susy/output/support/_support.scss +85 -0
  189. data/_sass/basically-basic/vendor/susy/su/_grid.scss +103 -0
  190. data/_sass/basically-basic/vendor/susy/su/_settings.scss +73 -0
  191. data/_sass/basically-basic/vendor/susy/su/_utilities.scss +111 -0
  192. data/_sass/basically-basic/vendor/susy/su/_validation.scss +57 -0
  193. data/assets/javascripts/main.js +57 -0
  194. data/assets/stylesheets/main.scss +10 -0
  195. metadata +335 -0
@@ -0,0 +1,4 @@
1
+ // Su
2
+ // ==
3
+
4
+ @import 'susy/su';
@@ -0,0 +1,4 @@
1
+ // Susy
2
+ // ====
3
+
4
+ @import 'susy/language/susy';
@@ -0,0 +1,4 @@
1
+ // Susy
2
+ // ====
3
+
4
+ @import 'susy/language/susyone';
@@ -0,0 +1,95 @@
1
+ //////////////////////////////
2
+ // Private Breakpoint Variables
3
+ //////////////////////////////
4
+ $private-breakpoint-context-holder: ();
5
+ $private-breakpoint-query-count: 0 !default;
6
+
7
+ //////////////////////////////
8
+ // Breakpoint Has Context
9
+ // Returns whether or not you are inside a Breakpoint query
10
+ //////////////////////////////
11
+ @function breakpoint-has-context() {
12
+ @if length($private-breakpoint-query-count) {
13
+ @return true;
14
+ }
15
+ @else {
16
+ @return false;
17
+ }
18
+ }
19
+
20
+ //////////////////////////////
21
+ // Breakpoint Get Context
22
+ // $feature: Input feature to get it's current MQ context. Returns false if no context
23
+ //////////////////////////////
24
+ @function breakpoint-get-context($feature) {
25
+ @if map-has-key($private-breakpoint-context-holder, $feature) {
26
+ $get: map-get($private-breakpoint-context-holder, $feature);
27
+ // Special handling of no-query from get side so /false/ prepends aren't returned
28
+ @if $feature == 'no-query' {
29
+ @if type-of($get) == 'list' and length($get) > 1 and nth($get, 1) == false {
30
+ $get: nth($get, length($get));
31
+ }
32
+ }
33
+ @return $get;
34
+ }
35
+ @else {
36
+ @if breakpoint-has-context() and $feature == 'media' {
37
+ @return breakpoint-get('default media');
38
+ }
39
+ @else {
40
+ @return false;
41
+ }
42
+ }
43
+ }
44
+
45
+ //////////////////////////////
46
+ // Private function to set context
47
+ //////////////////////////////
48
+ @function private-breakpoint-set-context($feature, $value) {
49
+ @if $value == 'monochrome' {
50
+ $feature: 'monochrome';
51
+ }
52
+
53
+ $current: map-get($private-breakpoint-context-holder, $feature);
54
+ @if $current and length($current) == $private-breakpoint-query-count {
55
+ @warn "You have already queried against `#{$feature}`. Unexpected things may happen if you query against the same feature more than once in the same `and` query. Breakpoint is overwriting the current context with `#{$value}`";
56
+ }
57
+
58
+ @if not map-has-key($private-breakpoint-context-holder, $feature) {
59
+ $v-holder: ();
60
+ @for $i from 1 to $private-breakpoint-query-count {
61
+ @if $feature == 'media' {
62
+ $v-holder: append($v-holder, breakpoint-get('default media'));
63
+ }
64
+ @else {
65
+ $v-holder: append($v-holder, false);
66
+ }
67
+ }
68
+ $v-holder: append($v-holder, $value);
69
+ $private-breakpoint-context-holder: map-merge($private-breakpoint-context-holder, ($feature: $v-holder)) !global;
70
+ }
71
+ @else {
72
+ $v-holder: map-get($private-breakpoint-context-holder, $feature);
73
+ $length: length($v-holder);
74
+ @for $i from $length to $private-breakpoint-query-count - 1 {
75
+ @if $feature == 'media' {
76
+ $v-holder: append($v-holder, breakpoint-get('default media'));
77
+ }
78
+ @else {
79
+ $v-holder: append($v-holder, false);
80
+ }
81
+ }
82
+ $v-holder: append($v-holder, $value);
83
+ $private-breakpoint-context-holder: map-merge($private-breakpoint-context-holder, ($feature: $v-holder)) !global;
84
+ }
85
+
86
+ @return true;
87
+ }
88
+
89
+ //////////////////////////////
90
+ // Private function to reset context
91
+ //////////////////////////////
92
+ @mixin private-breakpoint-reset-contexts {
93
+ $private-breakpoint-context-holder: () !global;
94
+ $private-breakpoint-query-count: 0 !global;
95
+ }
@@ -0,0 +1,151 @@
1
+ //////////////////////////////
2
+ // Converts the input value to Base EMs
3
+ //////////////////////////////
4
+ @function breakpoint-to-base-em($value) {
5
+ $value-unit: unit($value);
6
+
7
+ // Will convert relative EMs into root EMs.
8
+ @if breakpoint-get('base font size') and type-of(breakpoint-get('base font size')) == 'number' and $value-unit == 'em' {
9
+ $base-unit: unit(breakpoint-get('base font size'));
10
+
11
+ @if $base-unit == 'px' or $base-unit == '%' or $base-unit == 'em' or $base-unit == 'pt' {
12
+ @return base-conversion($value) / base-conversion(breakpoint-get('base font size')) * 1em;
13
+ }
14
+ @else {
15
+ @warn '#{breakpoint-get(\'base font size\')} is not set in valid units for font size!';
16
+ @return false;
17
+ }
18
+ }
19
+ @else {
20
+ @return base-conversion($value);
21
+ }
22
+ }
23
+
24
+ @function base-conversion($value) {
25
+ $unit: unit($value);
26
+
27
+ @if $unit == 'px' {
28
+ @return $value / 16px * 1em;
29
+ }
30
+ @else if $unit == '%' {
31
+ @return $value / 100% * 1em;
32
+ }
33
+ @else if $unit == 'em' {
34
+ @return $value;
35
+ }
36
+ @else if $unit == 'pt' {
37
+ @return $value / 12pt * 1em;
38
+ }
39
+ @else {
40
+ @return $value;
41
+ // @warn 'Everything is terrible! What have you done?!';
42
+ }
43
+ }
44
+
45
+ //////////////////////////////
46
+ // Returns whether the feature can have a min/max pair
47
+ //////////////////////////////
48
+ $breakpoint-min-max-features: 'color',
49
+ 'color-index',
50
+ 'aspect-ratio',
51
+ 'device-aspect-ratio',
52
+ 'device-height',
53
+ 'device-width',
54
+ 'height',
55
+ 'monochrome',
56
+ 'resolution',
57
+ 'width';
58
+
59
+ @function breakpoint-min-max($feature) {
60
+ @each $item in $breakpoint-min-max-features {
61
+ @if $feature == $item {
62
+ @return true;
63
+ }
64
+ }
65
+ @return false;
66
+ }
67
+
68
+ //////////////////////////////
69
+ // Returns whether the feature can have a string value
70
+ //////////////////////////////
71
+ $breakpoint-string-features: 'orientation',
72
+ 'scan',
73
+ 'color',
74
+ 'aspect-ratio',
75
+ 'device-aspect-ratio',
76
+ 'pointer',
77
+ 'luminosity';
78
+
79
+ @function breakpoint-string-value($feature) {
80
+ @each $item in $breakpoint-string-features {
81
+ @if breakpoint-min-max($item) {
82
+ @if $feature == 'min-#{$item}' or $feature == 'max-#{$item}' {
83
+ @return true;
84
+ }
85
+ }
86
+ @else if $feature == $item {
87
+ @return true;
88
+ }
89
+ }
90
+ @return false;
91
+ }
92
+
93
+ //////////////////////////////
94
+ // Returns whether the feature is a media type
95
+ //////////////////////////////
96
+ $breakpoint-media-types: 'all',
97
+ 'braille',
98
+ 'embossed',
99
+ 'handheld',
100
+ 'print',
101
+ 'projection',
102
+ 'screen',
103
+ 'speech',
104
+ 'tty',
105
+ 'tv';
106
+
107
+ @function breakpoint-is-media($feature) {
108
+ @each $media in $breakpoint-media-types {
109
+ @if ($feature == $media) or ($feature == 'not #{$media}') or ($feature == 'only #{$media}') {
110
+ @return true;
111
+ }
112
+ }
113
+
114
+ @return false;
115
+ }
116
+
117
+ //////////////////////////////
118
+ // Returns whether the feature can stand alone
119
+ //////////////////////////////
120
+ $breakpoint-single-string-features: 'color',
121
+ 'color-index',
122
+ 'grid',
123
+ 'monochrome';
124
+
125
+ @function breakpoint-single-string($feature) {
126
+ @each $item in $breakpoint-single-string-features {
127
+ @if $feature == $item {
128
+ @return true;
129
+ }
130
+ }
131
+ @return false;
132
+ }
133
+
134
+ //////////////////////////////
135
+ // Returns whether the feature
136
+ //////////////////////////////
137
+ @function breakpoint-is-resolution($feature) {
138
+ $resolutions: 'device-pixel-ratio', 'dpr';
139
+
140
+ @if breakpoint-get('transform resolutions') {
141
+ $resolutions: append($resolutions, 'resolution');
142
+ }
143
+
144
+ @each $reso in $resolutions {
145
+ @if index($feature, $reso) or index($feature, 'min-#{$reso}') or index($feature, 'max-#{$reso}') {
146
+ @return true;
147
+ }
148
+ }
149
+
150
+ @return false;
151
+ }
@@ -0,0 +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
+ }
50
+ }
@@ -0,0 +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
+ }
@@ -0,0 +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
+ }