sparrow-jekyll-theme 0.1.1 → 0.1.2
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.
- checksums.yaml +4 -4
- data/LICENSE.txt +20 -20
- data/README.md +170 -178
- data/_includes/analytics.html +13 -13
- data/_includes/breadcrumbs.html +31 -31
- data/_includes/comments.html +26 -26
- data/_includes/figure +12 -12
- data/_includes/paginator.html +8 -69
- data/_includes/post-entry.html +15 -15
- data/_includes/seo.html +77 -77
- data/_includes/social-share.html +42 -42
- data/_includes/topnav.html +46 -46
- data/_layouts/default.html +46 -46
- data/_layouts/home.html +11 -11
- data/_layouts/page.html +16 -16
- data/_layouts/post.html +38 -38
- data/_sass/_base.scss +359 -359
- data/_sass/_buttons.scss +61 -61
- data/_sass/_footer.scss +53 -53
- data/_sass/_navigation.scss +216 -216
- data/_sass/_page.scss +60 -60
- data/_sass/_post.scss +85 -85
- data/_sass/_reset.scss +186 -186
- data/_sass/_rrssb.scss +276 -276
- data/_sass/_slimmenu.scss +177 -177
- data/_sass/_syntax.scss +125 -125
- data/_sass/_utilities.scss +67 -67
- data/_sass/_variables.scss +73 -73
- data/_sass/vendor/breakpoint/_breakpoint.scss +114 -114
- data/_sass/vendor/breakpoint/_context.scss +94 -94
- data/_sass/vendor/breakpoint/_helpers.scss +151 -151
- data/_sass/vendor/breakpoint/_legacy-settings.scss +49 -49
- data/_sass/vendor/breakpoint/_no-query.scss +15 -15
- data/_sass/vendor/breakpoint/_parsers.scss +215 -215
- data/_sass/vendor/breakpoint/_respond-to.scss +82 -82
- data/_sass/vendor/breakpoint/_settings.scss +70 -70
- data/_sass/vendor/breakpoint/parsers/_double.scss +33 -33
- data/_sass/vendor/breakpoint/parsers/_query.scss +82 -82
- data/_sass/vendor/breakpoint/parsers/_resolution.scss +31 -31
- data/_sass/vendor/breakpoint/parsers/_single.scss +26 -26
- data/_sass/vendor/breakpoint/parsers/_triple.scss +36 -36
- data/_sass/vendor/breakpoint/parsers/double/_default-pair.scss +21 -21
- data/_sass/vendor/breakpoint/parsers/double/_default.scss +22 -22
- data/_sass/vendor/breakpoint/parsers/double/_double-string.scss +21 -21
- data/_sass/vendor/breakpoint/parsers/resolution/_resolution.scss +60 -60
- data/_sass/vendor/breakpoint/parsers/single/_default.scss +13 -13
- data/_sass/vendor/breakpoint/parsers/triple/_default.scss +18 -18
- data/_sass/vendor/font-awesome/_animated.scss +34 -34
- data/_sass/vendor/font-awesome/_bordered-pulled.scss +25 -25
- data/_sass/vendor/font-awesome/_core.scss +12 -12
- data/_sass/vendor/font-awesome/_fixed-width.scss +6 -6
- data/_sass/vendor/font-awesome/_font-awesome.scss +18 -18
- data/_sass/vendor/font-awesome/_icons.scss +789 -789
- data/_sass/vendor/font-awesome/_larger.scss +13 -13
- data/_sass/vendor/font-awesome/_list.scss +19 -19
- data/_sass/vendor/font-awesome/_mixins.scss +60 -60
- data/_sass/vendor/font-awesome/_path.scss +15 -15
- data/_sass/vendor/font-awesome/_rotated-flipped.scss +20 -20
- data/_sass/vendor/font-awesome/_screen-reader.scss +5 -5
- data/_sass/vendor/font-awesome/_stacked.scss +20 -20
- data/_sass/vendor/font-awesome/_variables.scss +800 -800
- data/_sass/vendor/susy/_su.scss +4 -4
- data/_sass/vendor/susy/_susy.scss +4 -4
- data/_sass/vendor/susy/_susyone.scss +4 -4
- data/_sass/vendor/susy/susy/_su.scss +7 -7
- data/_sass/vendor/susy/susy/language/_susy.scss +24 -24
- data/_sass/vendor/susy/susy/language/_susyone.scss +13 -13
- data/_sass/vendor/susy/susy/language/susy/_background.scss +385 -385
- data/_sass/vendor/susy/susy/language/susy/_bleed.scss +200 -200
- data/_sass/vendor/susy/susy/language/susy/_box-sizing.scss +47 -47
- data/_sass/vendor/susy/susy/language/susy/_breakpoint-plugin.scss +185 -185
- data/_sass/vendor/susy/susy/language/susy/_container.scss +81 -81
- data/_sass/vendor/susy/susy/language/susy/_context.scss +36 -36
- data/_sass/vendor/susy/susy/language/susy/_gallery.scss +94 -94
- data/_sass/vendor/susy/susy/language/susy/_grids.scss +64 -64
- data/_sass/vendor/susy/susy/language/susy/_gutters.scss +154 -154
- data/_sass/vendor/susy/susy/language/susy/_isolate.scss +77 -77
- data/_sass/vendor/susy/susy/language/susy/_margins.scss +94 -94
- data/_sass/vendor/susy/susy/language/susy/_padding.scss +74 -74
- data/_sass/vendor/susy/susy/language/susy/_rows.scss +138 -138
- data/_sass/vendor/susy/susy/language/susy/_settings.scss +216 -216
- data/_sass/vendor/susy/susy/language/susy/_span.scss +163 -163
- data/_sass/vendor/susy/susy/language/susy/_validation.scss +16 -16
- data/_sass/vendor/susy/susy/language/susyone/_background.scss +18 -18
- data/_sass/vendor/susy/susy/language/susyone/_functions.scss +377 -377
- data/_sass/vendor/susy/susy/language/susyone/_grid.scss +312 -312
- data/_sass/vendor/susy/susy/language/susyone/_isolation.scss +51 -51
- data/_sass/vendor/susy/susy/language/susyone/_margin.scss +93 -93
- data/_sass/vendor/susy/susy/language/susyone/_media.scss +105 -105
- data/_sass/vendor/susy/susy/language/susyone/_padding.scss +92 -92
- data/_sass/vendor/susy/susy/language/susyone/_settings.scss +60 -60
- data/_sass/vendor/susy/susy/output/_float.scss +9 -9
- data/_sass/vendor/susy/susy/output/_shared.scss +15 -15
- data/_sass/vendor/susy/susy/output/_support.scss +9 -9
- data/_sass/vendor/susy/susy/output/float/_container.scss +16 -16
- data/_sass/vendor/susy/susy/output/float/_end.scss +40 -40
- data/_sass/vendor/susy/susy/output/float/_isolate.scss +22 -22
- data/_sass/vendor/susy/susy/output/float/_span.scss +35 -35
- data/_sass/vendor/susy/susy/output/shared/_background.scss +26 -26
- data/_sass/vendor/susy/susy/output/shared/_container.scss +21 -21
- data/_sass/vendor/susy/susy/output/shared/_direction.scss +42 -42
- data/_sass/vendor/susy/susy/output/shared/_inspect.scss +25 -25
- data/_sass/vendor/susy/susy/output/shared/_margins.scss +23 -23
- data/_sass/vendor/susy/susy/output/shared/_output.scss +14 -14
- data/_sass/vendor/susy/susy/output/shared/_padding.scss +23 -23
- data/_sass/vendor/susy/susy/output/support/_background.scss +58 -58
- data/_sass/vendor/susy/susy/output/support/_box-sizing.scss +19 -19
- data/_sass/vendor/susy/susy/output/support/_clearfix.scss +18 -18
- data/_sass/vendor/susy/susy/output/support/_prefix.scss +19 -19
- data/_sass/vendor/susy/susy/output/support/_rem.scss +22 -22
- data/_sass/vendor/susy/susy/output/support/_support.scss +85 -85
- data/_sass/vendor/susy/susy/su/_grid.scss +103 -103
- data/_sass/vendor/susy/susy/su/_settings.scss +73 -73
- data/_sass/vendor/susy/susy/su/_utilities.scss +111 -111
- data/_sass/vendor/susy/susy/su/_validation.scss +57 -57
- data/assets/css/main.scss +43 -43
- data/assets/fonts/fontawesome-webfont.svg +2671 -2671
- data/assets/js/main.js +35 -35
- data/assets/js/plugins/jquery-1.12.4.min.js +4 -4
- data/assets/js/slimmenu.js +154 -154
- metadata +6 -6
@@ -1,103 +1,103 @@
|
|
1
|
-
// Column math
|
2
|
-
// ===========
|
3
|
-
|
4
|
-
|
5
|
-
// Is Symmetrical
|
6
|
-
// --------------
|
7
|
-
// Returns true if a grid is symmetrical.
|
8
|
-
// - [$columns] : <number> | <list>
|
9
|
-
@function is-symmetrical(
|
10
|
-
$columns: susy-get(columns)
|
11
|
-
) {
|
12
|
-
$columns: valid-columns($columns);
|
13
|
-
@return if(type-of($columns) == number, $columns, null);
|
14
|
-
}
|
15
|
-
|
16
|
-
|
17
|
-
// Susy Count
|
18
|
-
// ----------
|
19
|
-
// Find the number of columns in a given layout
|
20
|
-
// - [$columns] : <number> | <list>
|
21
|
-
@function susy-count(
|
22
|
-
$columns: susy-get(columns)
|
23
|
-
) {
|
24
|
-
$columns: valid-columns($columns);
|
25
|
-
@return is-symmetrical($columns) or length($columns);
|
26
|
-
}
|
27
|
-
|
28
|
-
|
29
|
-
// Susy Sum
|
30
|
-
// --------
|
31
|
-
// Find the total sum of column-units in a layout
|
32
|
-
// - [$columns] : <number> | <list>
|
33
|
-
// - [$gutters] : <ratio>
|
34
|
-
// - [$spread] : false/narrow | wide | wider
|
35
|
-
@function susy-sum(
|
36
|
-
$columns : susy-get(columns),
|
37
|
-
$gutters : susy-get(gutters),
|
38
|
-
$spread : false
|
39
|
-
) {
|
40
|
-
$columns: valid-columns($columns);
|
41
|
-
$gutters: valid-gutters($gutters);
|
42
|
-
|
43
|
-
$spread: if($spread == wide, 0, if($spread == wider, 1, -1));
|
44
|
-
$gutter-sum: (susy-count($columns) + $spread) * $gutters;
|
45
|
-
$column-sum: is-symmetrical($columns);
|
46
|
-
|
47
|
-
@if not($column-sum) {
|
48
|
-
@each $column in $columns {
|
49
|
-
$column-sum: ($column-sum or 0) + $column;
|
50
|
-
}
|
51
|
-
}
|
52
|
-
|
53
|
-
@return $column-sum + $gutter-sum;
|
54
|
-
}
|
55
|
-
|
56
|
-
|
57
|
-
// Susy Slice
|
58
|
-
// ----------
|
59
|
-
// Return a subset of columns at a given location.
|
60
|
-
// - $span : <number>
|
61
|
-
// - $location : <number>
|
62
|
-
// - [$columns] : <number> | <list>
|
63
|
-
@function susy-slice(
|
64
|
-
$span,
|
65
|
-
$location,
|
66
|
-
$columns: susy-get(columns)
|
67
|
-
) {
|
68
|
-
$columns: valid-columns($columns);
|
69
|
-
$sub-columns: $span;
|
70
|
-
|
71
|
-
@if not(is-symmetrical($columns)) {
|
72
|
-
$location: $location or 1;
|
73
|
-
$sub-columns: ();
|
74
|
-
@for $i from $location to ($location + $span) {
|
75
|
-
$sub-columns: append($sub-columns, nth($columns, $i));
|
76
|
-
}
|
77
|
-
}
|
78
|
-
|
79
|
-
@return $sub-columns;
|
80
|
-
}
|
81
|
-
|
82
|
-
|
83
|
-
// Susy
|
84
|
-
// ----
|
85
|
-
// Find the sum of a column-span.
|
86
|
-
// - $span : <number>
|
87
|
-
// - $location : <number>
|
88
|
-
// - [$columns] : <number> | <list>
|
89
|
-
// - [$gutters] : <ratio>
|
90
|
-
// - [$spread] : false/narrow | wide | wider
|
91
|
-
@function susy(
|
92
|
-
$span,
|
93
|
-
$location : false,
|
94
|
-
$columns : susy-get(columns),
|
95
|
-
$gutters : susy-get(gutters),
|
96
|
-
$spread : false
|
97
|
-
) {
|
98
|
-
$columns: valid-columns($columns);
|
99
|
-
$gutters: valid-gutters($gutters);
|
100
|
-
$span: susy-slice($span, $location, $columns);
|
101
|
-
|
102
|
-
@return susy-sum($span, $gutters, $spread);
|
103
|
-
}
|
1
|
+
// Column math
|
2
|
+
// ===========
|
3
|
+
|
4
|
+
|
5
|
+
// Is Symmetrical
|
6
|
+
// --------------
|
7
|
+
// Returns true if a grid is symmetrical.
|
8
|
+
// - [$columns] : <number> | <list>
|
9
|
+
@function is-symmetrical(
|
10
|
+
$columns: susy-get(columns)
|
11
|
+
) {
|
12
|
+
$columns: valid-columns($columns);
|
13
|
+
@return if(type-of($columns) == number, $columns, null);
|
14
|
+
}
|
15
|
+
|
16
|
+
|
17
|
+
// Susy Count
|
18
|
+
// ----------
|
19
|
+
// Find the number of columns in a given layout
|
20
|
+
// - [$columns] : <number> | <list>
|
21
|
+
@function susy-count(
|
22
|
+
$columns: susy-get(columns)
|
23
|
+
) {
|
24
|
+
$columns: valid-columns($columns);
|
25
|
+
@return is-symmetrical($columns) or length($columns);
|
26
|
+
}
|
27
|
+
|
28
|
+
|
29
|
+
// Susy Sum
|
30
|
+
// --------
|
31
|
+
// Find the total sum of column-units in a layout
|
32
|
+
// - [$columns] : <number> | <list>
|
33
|
+
// - [$gutters] : <ratio>
|
34
|
+
// - [$spread] : false/narrow | wide | wider
|
35
|
+
@function susy-sum(
|
36
|
+
$columns : susy-get(columns),
|
37
|
+
$gutters : susy-get(gutters),
|
38
|
+
$spread : false
|
39
|
+
) {
|
40
|
+
$columns: valid-columns($columns);
|
41
|
+
$gutters: valid-gutters($gutters);
|
42
|
+
|
43
|
+
$spread: if($spread == wide, 0, if($spread == wider, 1, -1));
|
44
|
+
$gutter-sum: (susy-count($columns) + $spread) * $gutters;
|
45
|
+
$column-sum: is-symmetrical($columns);
|
46
|
+
|
47
|
+
@if not($column-sum) {
|
48
|
+
@each $column in $columns {
|
49
|
+
$column-sum: ($column-sum or 0) + $column;
|
50
|
+
}
|
51
|
+
}
|
52
|
+
|
53
|
+
@return $column-sum + $gutter-sum;
|
54
|
+
}
|
55
|
+
|
56
|
+
|
57
|
+
// Susy Slice
|
58
|
+
// ----------
|
59
|
+
// Return a subset of columns at a given location.
|
60
|
+
// - $span : <number>
|
61
|
+
// - $location : <number>
|
62
|
+
// - [$columns] : <number> | <list>
|
63
|
+
@function susy-slice(
|
64
|
+
$span,
|
65
|
+
$location,
|
66
|
+
$columns: susy-get(columns)
|
67
|
+
) {
|
68
|
+
$columns: valid-columns($columns);
|
69
|
+
$sub-columns: $span;
|
70
|
+
|
71
|
+
@if not(is-symmetrical($columns)) {
|
72
|
+
$location: $location or 1;
|
73
|
+
$sub-columns: ();
|
74
|
+
@for $i from $location to ($location + $span) {
|
75
|
+
$sub-columns: append($sub-columns, nth($columns, $i));
|
76
|
+
}
|
77
|
+
}
|
78
|
+
|
79
|
+
@return $sub-columns;
|
80
|
+
}
|
81
|
+
|
82
|
+
|
83
|
+
// Susy
|
84
|
+
// ----
|
85
|
+
// Find the sum of a column-span.
|
86
|
+
// - $span : <number>
|
87
|
+
// - $location : <number>
|
88
|
+
// - [$columns] : <number> | <list>
|
89
|
+
// - [$gutters] : <ratio>
|
90
|
+
// - [$spread] : false/narrow | wide | wider
|
91
|
+
@function susy(
|
92
|
+
$span,
|
93
|
+
$location : false,
|
94
|
+
$columns : susy-get(columns),
|
95
|
+
$gutters : susy-get(gutters),
|
96
|
+
$spread : false
|
97
|
+
) {
|
98
|
+
$columns: valid-columns($columns);
|
99
|
+
$gutters: valid-gutters($gutters);
|
100
|
+
$span: susy-slice($span, $location, $columns);
|
101
|
+
|
102
|
+
@return susy-sum($span, $gutters, $spread);
|
103
|
+
}
|
@@ -1,73 +1,73 @@
|
|
1
|
-
// Settings
|
2
|
-
// ========
|
3
|
-
|
4
|
-
// Version
|
5
|
-
// -------
|
6
|
-
$su-version: 1.1;
|
7
|
-
|
8
|
-
|
9
|
-
// Default Settings
|
10
|
-
// ----------------
|
11
|
-
// PRIVATE: The basic settings
|
12
|
-
$susy-defaults: (
|
13
|
-
columns: 4,
|
14
|
-
gutters: .25,
|
15
|
-
);
|
16
|
-
|
17
|
-
|
18
|
-
// User Settings
|
19
|
-
// -------------
|
20
|
-
// - Define the $susy variable with a map of your own settings.
|
21
|
-
// - Set EITHER $column-width OR $container
|
22
|
-
// - Use $column-width for static layouts
|
23
|
-
$susy: () !default;
|
24
|
-
|
25
|
-
|
26
|
-
// Susy Defaults
|
27
|
-
// -------------
|
28
|
-
// PRIVATE: Add defaults to Susy
|
29
|
-
@mixin susy-defaults(
|
30
|
-
$defaults
|
31
|
-
) {
|
32
|
-
$susy-defaults: map-merge($susy-defaults, $defaults) !global;
|
33
|
-
}
|
34
|
-
|
35
|
-
|
36
|
-
// Susy Set
|
37
|
-
// --------
|
38
|
-
// Change one setting
|
39
|
-
// - $key : setting name
|
40
|
-
// - $value : setting value
|
41
|
-
@mixin susy-set(
|
42
|
-
$key-value...
|
43
|
-
) {
|
44
|
-
$susy: _susy-deep-set($susy, $key-value...) !global;
|
45
|
-
}
|
46
|
-
|
47
|
-
|
48
|
-
// Susy Get
|
49
|
-
// --------
|
50
|
-
// Return one setting from a grid
|
51
|
-
// - $key : <keyword>
|
52
|
-
// - $layout : <settings>
|
53
|
-
@function susy-get(
|
54
|
-
$key,
|
55
|
-
$layout: map-merge($susy-defaults, $susy)
|
56
|
-
) {
|
57
|
-
$layout: parse-grid($layout);
|
58
|
-
$_options: $layout $susy $susy-defaults;
|
59
|
-
$_break: false;
|
60
|
-
$_return: null;
|
61
|
-
|
62
|
-
@each $opt in $_options {
|
63
|
-
@if type-of($opt) == map and not($_break) {
|
64
|
-
$_keyset: _susy-deep-has-key($opt, $key...);
|
65
|
-
@if $_keyset {
|
66
|
-
$_return: _susy-deep-get($opt, $key...);
|
67
|
-
$_break: true;
|
68
|
-
}
|
69
|
-
}
|
70
|
-
}
|
71
|
-
|
72
|
-
@return $_return;
|
73
|
-
}
|
1
|
+
// Settings
|
2
|
+
// ========
|
3
|
+
|
4
|
+
// Version
|
5
|
+
// -------
|
6
|
+
$su-version: 1.1;
|
7
|
+
|
8
|
+
|
9
|
+
// Default Settings
|
10
|
+
// ----------------
|
11
|
+
// PRIVATE: The basic settings
|
12
|
+
$susy-defaults: (
|
13
|
+
columns: 4,
|
14
|
+
gutters: .25,
|
15
|
+
);
|
16
|
+
|
17
|
+
|
18
|
+
// User Settings
|
19
|
+
// -------------
|
20
|
+
// - Define the $susy variable with a map of your own settings.
|
21
|
+
// - Set EITHER $column-width OR $container
|
22
|
+
// - Use $column-width for static layouts
|
23
|
+
$susy: () !default;
|
24
|
+
|
25
|
+
|
26
|
+
// Susy Defaults
|
27
|
+
// -------------
|
28
|
+
// PRIVATE: Add defaults to Susy
|
29
|
+
@mixin susy-defaults(
|
30
|
+
$defaults
|
31
|
+
) {
|
32
|
+
$susy-defaults: map-merge($susy-defaults, $defaults) !global;
|
33
|
+
}
|
34
|
+
|
35
|
+
|
36
|
+
// Susy Set
|
37
|
+
// --------
|
38
|
+
// Change one setting
|
39
|
+
// - $key : setting name
|
40
|
+
// - $value : setting value
|
41
|
+
@mixin susy-set(
|
42
|
+
$key-value...
|
43
|
+
) {
|
44
|
+
$susy: _susy-deep-set($susy, $key-value...) !global;
|
45
|
+
}
|
46
|
+
|
47
|
+
|
48
|
+
// Susy Get
|
49
|
+
// --------
|
50
|
+
// Return one setting from a grid
|
51
|
+
// - $key : <keyword>
|
52
|
+
// - $layout : <settings>
|
53
|
+
@function susy-get(
|
54
|
+
$key,
|
55
|
+
$layout: map-merge($susy-defaults, $susy)
|
56
|
+
) {
|
57
|
+
$layout: parse-grid($layout);
|
58
|
+
$_options: $layout $susy $susy-defaults;
|
59
|
+
$_break: false;
|
60
|
+
$_return: null;
|
61
|
+
|
62
|
+
@each $opt in $_options {
|
63
|
+
@if type-of($opt) == map and not($_break) {
|
64
|
+
$_keyset: _susy-deep-has-key($opt, $key...);
|
65
|
+
@if $_keyset {
|
66
|
+
$_return: _susy-deep-get($opt, $key...);
|
67
|
+
$_break: true;
|
68
|
+
}
|
69
|
+
}
|
70
|
+
}
|
71
|
+
|
72
|
+
@return $_return;
|
73
|
+
}
|
@@ -1,111 +1,111 @@
|
|
1
|
-
// Map Functions
|
2
|
-
// =============
|
3
|
-
|
4
|
-
|
5
|
-
// Truncate List
|
6
|
-
// -------------
|
7
|
-
// - Return a list, truncated to a given length
|
8
|
-
@function _susy-truncate-list(
|
9
|
-
$list,
|
10
|
-
$length
|
11
|
-
) {
|
12
|
-
$_return: ();
|
13
|
-
|
14
|
-
@for $i from 1 through length($list) {
|
15
|
-
$_return: if($i <= $length, append($_return, nth($list, $i)), $_return);
|
16
|
-
}
|
17
|
-
|
18
|
-
@return $_return;
|
19
|
-
}
|
20
|
-
|
21
|
-
|
22
|
-
// Deep Get
|
23
|
-
// --------
|
24
|
-
// - Return a value deep in nested maps
|
25
|
-
@function _susy-deep-get(
|
26
|
-
$map,
|
27
|
-
$keys...
|
28
|
-
) {
|
29
|
-
$_return: $map;
|
30
|
-
|
31
|
-
@each $key in $keys {
|
32
|
-
@if type-of($_return) == map {
|
33
|
-
$_return: map-get($_return, $key);
|
34
|
-
}
|
35
|
-
}
|
36
|
-
|
37
|
-
@return $_return;
|
38
|
-
}
|
39
|
-
|
40
|
-
|
41
|
-
// Deep Set
|
42
|
-
// --------
|
43
|
-
// - Set a value deep in nested maps
|
44
|
-
@function _susy-deep-set(
|
45
|
-
$map,
|
46
|
-
$keys-value...
|
47
|
-
) {
|
48
|
-
$_value: nth($keys-value, -1);
|
49
|
-
$_keys: _susy-truncate-list($keys-value, length($keys-value) - 1);
|
50
|
-
$_length: length($_keys);
|
51
|
-
$_return: ();
|
52
|
-
|
53
|
-
@for $i from 1 through $_length {
|
54
|
-
$_n: 0 - $i;
|
55
|
-
$_level: _susy-truncate-list($_keys, $_length + $_n);
|
56
|
-
$_level: _susy-deep-get($map, $_level...);
|
57
|
-
$_merge: nth($_keys, $_n);
|
58
|
-
$_merge: ($_merge: $_value);
|
59
|
-
$_return: if($_level, map-merge($_level, $_merge), $_merge);
|
60
|
-
$_value: $_return;
|
61
|
-
}
|
62
|
-
|
63
|
-
@return $_return;
|
64
|
-
}
|
65
|
-
|
66
|
-
|
67
|
-
// Deep Merge
|
68
|
-
// ----------
|
69
|
-
// Return 2 objects of any depth, merged
|
70
|
-
@function _susy-deep-merge(
|
71
|
-
$map1,
|
72
|
-
$map2
|
73
|
-
) {
|
74
|
-
|
75
|
-
@if type-of($map1) != map or type-of($map2) != map {
|
76
|
-
$map1: $map2;
|
77
|
-
} @else {
|
78
|
-
@each $key, $value in $map2 {
|
79
|
-
$_new: ($key: _susy_deep-merge(map-get($map1, $key), $value));
|
80
|
-
$map1: map-merge($map1, $_new);
|
81
|
-
}
|
82
|
-
}
|
83
|
-
|
84
|
-
@return $map1;
|
85
|
-
}
|
86
|
-
|
87
|
-
|
88
|
-
// Deep Has-Key
|
89
|
-
// ------------
|
90
|
-
// - Return true if a deep key exists
|
91
|
-
@function _susy-deep-has-key(
|
92
|
-
$map,
|
93
|
-
$keys...
|
94
|
-
) {
|
95
|
-
$_return: null;
|
96
|
-
$_stop: false;
|
97
|
-
|
98
|
-
@each $key in $keys {
|
99
|
-
@if not($_stop) {
|
100
|
-
$_return: map-has-key($map, $key);
|
101
|
-
}
|
102
|
-
|
103
|
-
@if $_return {
|
104
|
-
$map: map-get($map, $key);
|
105
|
-
} @else {
|
106
|
-
$_stop: true;
|
107
|
-
}
|
108
|
-
}
|
109
|
-
|
110
|
-
@return $_return;
|
111
|
-
}
|
1
|
+
// Map Functions
|
2
|
+
// =============
|
3
|
+
|
4
|
+
|
5
|
+
// Truncate List
|
6
|
+
// -------------
|
7
|
+
// - Return a list, truncated to a given length
|
8
|
+
@function _susy-truncate-list(
|
9
|
+
$list,
|
10
|
+
$length
|
11
|
+
) {
|
12
|
+
$_return: ();
|
13
|
+
|
14
|
+
@for $i from 1 through length($list) {
|
15
|
+
$_return: if($i <= $length, append($_return, nth($list, $i)), $_return);
|
16
|
+
}
|
17
|
+
|
18
|
+
@return $_return;
|
19
|
+
}
|
20
|
+
|
21
|
+
|
22
|
+
// Deep Get
|
23
|
+
// --------
|
24
|
+
// - Return a value deep in nested maps
|
25
|
+
@function _susy-deep-get(
|
26
|
+
$map,
|
27
|
+
$keys...
|
28
|
+
) {
|
29
|
+
$_return: $map;
|
30
|
+
|
31
|
+
@each $key in $keys {
|
32
|
+
@if type-of($_return) == map {
|
33
|
+
$_return: map-get($_return, $key);
|
34
|
+
}
|
35
|
+
}
|
36
|
+
|
37
|
+
@return $_return;
|
38
|
+
}
|
39
|
+
|
40
|
+
|
41
|
+
// Deep Set
|
42
|
+
// --------
|
43
|
+
// - Set a value deep in nested maps
|
44
|
+
@function _susy-deep-set(
|
45
|
+
$map,
|
46
|
+
$keys-value...
|
47
|
+
) {
|
48
|
+
$_value: nth($keys-value, -1);
|
49
|
+
$_keys: _susy-truncate-list($keys-value, length($keys-value) - 1);
|
50
|
+
$_length: length($_keys);
|
51
|
+
$_return: ();
|
52
|
+
|
53
|
+
@for $i from 1 through $_length {
|
54
|
+
$_n: 0 - $i;
|
55
|
+
$_level: _susy-truncate-list($_keys, $_length + $_n);
|
56
|
+
$_level: _susy-deep-get($map, $_level...);
|
57
|
+
$_merge: nth($_keys, $_n);
|
58
|
+
$_merge: ($_merge: $_value);
|
59
|
+
$_return: if($_level, map-merge($_level, $_merge), $_merge);
|
60
|
+
$_value: $_return;
|
61
|
+
}
|
62
|
+
|
63
|
+
@return $_return;
|
64
|
+
}
|
65
|
+
|
66
|
+
|
67
|
+
// Deep Merge
|
68
|
+
// ----------
|
69
|
+
// Return 2 objects of any depth, merged
|
70
|
+
@function _susy-deep-merge(
|
71
|
+
$map1,
|
72
|
+
$map2
|
73
|
+
) {
|
74
|
+
|
75
|
+
@if type-of($map1) != map or type-of($map2) != map {
|
76
|
+
$map1: $map2;
|
77
|
+
} @else {
|
78
|
+
@each $key, $value in $map2 {
|
79
|
+
$_new: ($key: _susy_deep-merge(map-get($map1, $key), $value));
|
80
|
+
$map1: map-merge($map1, $_new);
|
81
|
+
}
|
82
|
+
}
|
83
|
+
|
84
|
+
@return $map1;
|
85
|
+
}
|
86
|
+
|
87
|
+
|
88
|
+
// Deep Has-Key
|
89
|
+
// ------------
|
90
|
+
// - Return true if a deep key exists
|
91
|
+
@function _susy-deep-has-key(
|
92
|
+
$map,
|
93
|
+
$keys...
|
94
|
+
) {
|
95
|
+
$_return: null;
|
96
|
+
$_stop: false;
|
97
|
+
|
98
|
+
@each $key in $keys {
|
99
|
+
@if not($_stop) {
|
100
|
+
$_return: map-has-key($map, $key);
|
101
|
+
}
|
102
|
+
|
103
|
+
@if $_return {
|
104
|
+
$map: map-get($map, $key);
|
105
|
+
} @else {
|
106
|
+
$_stop: true;
|
107
|
+
}
|
108
|
+
}
|
109
|
+
|
110
|
+
@return $_return;
|
111
|
+
}
|