stratum 0.2.4 → 0.3.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.
- data/.editorconfig +7 -0
- data/.gitignore +2 -2
- data/assets/stylesheets/_css3.scss +7 -0
- data/assets/stylesheets/_helpers.scss +7 -0
- data/assets/stylesheets/_stratum.scss +12 -15
- data/assets/stylesheets/css3/_border-radius.scss +2 -2
- data/assets/stylesheets/css3/_user-select.scss +12 -0
- data/assets/stylesheets/helpers/_box.scss +17 -0
- data/assets/stylesheets/{addons → helpers}/_dimensions.scss +7 -4
- data/assets/stylesheets/{addons → helpers}/_group.scss +0 -0
- data/assets/stylesheets/helpers/_icon-map.scss +11 -0
- data/assets/stylesheets/helpers/_icons.scss +177 -0
- data/assets/stylesheets/{addons → helpers}/_position.scss +6 -6
- data/assets/stylesheets/helpers/_triangle.scss +64 -0
- data/assets/stylesheets/{addons → helpers}/_vendor-prefix.scss +0 -0
- data/assets/stylesheets/layout/_grid.scss +4 -5
- data/assets/stylesheets/layout/{_grid-functions.scss → grid/_functions.scss} +12 -11
- data/assets/stylesheets/layout/grid/_guides.scss +123 -0
- data/assets/stylesheets/layout/grid/_mixins.scss +83 -0
- data/assets/stylesheets/layout/grid/_semantics.scss +5 -0
- data/assets/stylesheets/layout/grid/semantics/_core.scss +96 -0
- data/assets/stylesheets/layout/grid/semantics/_nested.scss +34 -0
- data/assets/stylesheets/layout/grid/semantics/_offsets.scss +50 -0
- data/assets/stylesheets/layout/grid/semantics/_overrides.scss +71 -0
- data/assets/stylesheets/layout/grid/semantics/_subdivisions.scss +16 -0
- data/assets/stylesheets/layout/scaffolding.scss +105 -52
- data/bin/stratum +1 -1
- data/lib/stratum/generator.rb +74 -0
- data/lib/stratum/version.rb +3 -0
- data/lib/stratum.rb +2 -73
- data/stratum.gemspec +1 -1
- metadata +27 -38
- data/.gitmodules +0 -3
- data/assets/stylesheets/layout/_grid-guides.scss +0 -93
- data/assets/stylesheets/layout/_grid-mixins.scss +0 -79
- data/assets/stylesheets/layout/_grid-semantics.scss +0 -266
- data/lib/version.rb +0 -3
- data/tests/Gemfile +0 -6
- data/tests/Gemfile.lock +0 -63
- data/tests/Guardfile +0 -11
- data/tests/_config.yml +0 -5
- data/tests/_includes/menu-grids.html +0 -9
- data/tests/_includes/shared-grid-samples.html +0 -58
- data/tests/_layouts/default.html +0 -21
- data/tests/grid/arstechnica.html +0 -70
- data/tests/grid/bbc.html +0 -74
- data/tests/grid/fluid.html +0 -85
- data/tests/grid/guardian.html +0 -248
- data/tests/grid/index.html +0 -5
- data/tests/grid/pixel.html +0 -29
- data/tests/images/arstechnica.png +0 -0
- data/tests/images/bbc.png +0 -0
- data/tests/images/capture.js +0 -15
- data/tests/images/guardian-home.png +0 -0
- data/tests/scss/_mock-block.scss +0 -68
- data/tests/scss/arstechnica.scss +0 -106
- data/tests/scss/bbc.scss +0 -93
- data/tests/scss/fluid-grid.scss +0 -50
- data/tests/scss/guardian.scss +0 -219
- data/tests/scss/main.scss +0 -90
- data/tests/scss/pixel-grid.scss +0 -14
@@ -0,0 +1,83 @@
|
|
1
|
+
@import "functions";
|
2
|
+
|
3
|
+
// Grid initialisation
|
4
|
+
// -------------------
|
5
|
+
$grid-gutter: grid-column-gutter();
|
6
|
+
$grid-half-gutter: $grid-gutter / 2;
|
7
|
+
$grid-column: grid-column-width();
|
8
|
+
|
9
|
+
|
10
|
+
// Mixins
|
11
|
+
// ------
|
12
|
+
|
13
|
+
// Grid container to set grid bounds
|
14
|
+
@mixin grid-container($width: $grid-size) {
|
15
|
+
@extend %-clearfix;
|
16
|
+
@include box-sizing(content-box);
|
17
|
+
width: $width;
|
18
|
+
margin: {
|
19
|
+
left: auto;
|
20
|
+
right: auto;
|
21
|
+
}
|
22
|
+
}
|
23
|
+
|
24
|
+
|
25
|
+
// Grid row
|
26
|
+
// $type: pixel | fluid
|
27
|
+
@mixin grid-row($type: $grid-type) {
|
28
|
+
@extend %-clearfix;
|
29
|
+
@include grid-gutters($type, row);
|
30
|
+
clear: both;
|
31
|
+
}
|
32
|
+
|
33
|
+
|
34
|
+
// Make grid column
|
35
|
+
@mixin grid-column {
|
36
|
+
@include box-sizing(border-box);
|
37
|
+
min-height: 1px;
|
38
|
+
float: left;
|
39
|
+
}
|
40
|
+
|
41
|
+
|
42
|
+
// Grid gutters
|
43
|
+
// $element: column | row
|
44
|
+
@mixin grid-gutters($type: $grid-type, $element: column) {
|
45
|
+
$-gutter: 0;
|
46
|
+
$-modifier: if($element == column, 1, -1);
|
47
|
+
|
48
|
+
@if $type == fluid {
|
49
|
+
$-gutter: grid-percentage($grid-half-gutter * $-modifier);
|
50
|
+
} @else if $type == pixel {
|
51
|
+
$-gutter: $grid-half-gutter * $-modifier;
|
52
|
+
}
|
53
|
+
|
54
|
+
margin-left: $-gutter;
|
55
|
+
margin-right: $-gutter;
|
56
|
+
}
|
57
|
+
|
58
|
+
|
59
|
+
// Calculate single column width (in pixels) multipled by number of columns it spans (indluding gutters)
|
60
|
+
@mixin grid-column-width($span: 1, $type: $grid-type, $gutter: $grid-gutter, $total-columns: $grid-total-columns) {
|
61
|
+
width: grid-columns-width($span, $grid-column, $gutter, $type, $total-columns);
|
62
|
+
}
|
63
|
+
|
64
|
+
|
65
|
+
// Offset column
|
66
|
+
@mixin grid-column-offset($direction, $span: 1, $grid-type: $grid-type) {
|
67
|
+
$-offset: grid-columns-width($span, $type: $grid-type);
|
68
|
+
$-gutter: $grid-gutter;
|
69
|
+
|
70
|
+
// Fluid grid
|
71
|
+
@if $grid-type == fluid {
|
72
|
+
$-gutter: grid-percentage($-gutter);
|
73
|
+
}
|
74
|
+
|
75
|
+
#{$direction}: -($-offset + $-gutter);
|
76
|
+
}
|
77
|
+
|
78
|
+
|
79
|
+
// INTERNAL
|
80
|
+
// Clearfix
|
81
|
+
%-clearfix {
|
82
|
+
@include group;
|
83
|
+
}
|
@@ -0,0 +1,96 @@
|
|
1
|
+
// Grid core components
|
2
|
+
// --------------------
|
3
|
+
|
4
|
+
// These placeholder selectors can be used to convert any element into
|
5
|
+
// grid component. To use `@extend` element with appropriate placeholder.
|
6
|
+
// It will automatically take care of the parent and descending components
|
7
|
+
// as long as the correct grid components are used.
|
8
|
+
|
9
|
+
// You should think about this file as an API for grid mixins and functions.
|
10
|
+
// As long as correct grid elements are used, defined in this file, building
|
11
|
+
// grid-based layout should be a painless process.
|
12
|
+
|
13
|
+
// For examples of usage of these components see `layout/scaffolding.scss`
|
14
|
+
|
15
|
+
// The structure of the grid is as follows:
|
16
|
+
|
17
|
+
// %l-container – A grid is always contained in one of these
|
18
|
+
// They use global grid settings and can be overriden with:
|
19
|
+
//
|
20
|
+
// %l-row – Grid consists of a number of rows
|
21
|
+
// They are required for correct column margins, but can be omitted,
|
22
|
+
// in which case the grid with no `%l-row` becomes gutterless
|
23
|
+
// %l-gutterless – Convert grid row into gutterless (no column margins)
|
24
|
+
//
|
25
|
+
// %l-col – Column: unit of the grid
|
26
|
+
// %l-col-<$i> – Column size (e.g. `%l-col-4` spans four single columns, including three gutters)
|
27
|
+
//
|
28
|
+
// %l-last-col-right – This settings forces last column to float to right, which helps to eliminate
|
29
|
+
// pixel gap caused by rounding in fluid grids and ensures first and last column
|
30
|
+
// occupy full width of grid container.
|
31
|
+
// Applied to grid container (@extend).
|
32
|
+
|
33
|
+
|
34
|
+
// Grid anatomy
|
35
|
+
%l-container {
|
36
|
+
@include grid-container;
|
37
|
+
|
38
|
+
%l-container { width: auto }
|
39
|
+
|
40
|
+
%l-row { @include grid-row }
|
41
|
+
%l-col { @include grid-column }
|
42
|
+
}
|
43
|
+
|
44
|
+
|
45
|
+
// Float last column to right if `%l-last-col-right` extended
|
46
|
+
// Applied to `%l-container`
|
47
|
+
%l-col + %l-col:last-child {
|
48
|
+
%l-last-col-right%l-container & {
|
49
|
+
float: right;
|
50
|
+
}
|
51
|
+
}
|
52
|
+
|
53
|
+
|
54
|
+
// Defines column margins
|
55
|
+
// Only applied to descendants of rows
|
56
|
+
%l-row %l-col {
|
57
|
+
@include grid-gutters;
|
58
|
+
}
|
59
|
+
|
60
|
+
|
61
|
+
// Column sizes
|
62
|
+
@for $i from 1 through $grid-total-columns {
|
63
|
+
%l-col-#{$i} {
|
64
|
+
// Columns with gutters
|
65
|
+
%l-row & {
|
66
|
+
@include grid-column-width($i, $grid-type);
|
67
|
+
}
|
68
|
+
|
69
|
+
// Columns without gutters
|
70
|
+
%l-container &,
|
71
|
+
%l-gutterless & {
|
72
|
+
@include grid-column-width($i, $grid-type, $gutter: 0);
|
73
|
+
}
|
74
|
+
}
|
75
|
+
}
|
76
|
+
|
77
|
+
|
78
|
+
%l-container {
|
79
|
+
// Gutterless row
|
80
|
+
%l-gutterless,
|
81
|
+
%l-gutterless %l-row {
|
82
|
+
@extend %-drop-margins;
|
83
|
+
}
|
84
|
+
|
85
|
+
// Gutterless columns
|
86
|
+
%l-gutterless %l-col {
|
87
|
+
@extend %-drop-margins;
|
88
|
+
}
|
89
|
+
}
|
90
|
+
|
91
|
+
|
92
|
+
// INTERNAL
|
93
|
+
// Placeholder for gutterless columns
|
94
|
+
%-drop-margins {
|
95
|
+
@include grid-gutters(none);
|
96
|
+
}
|
@@ -0,0 +1,34 @@
|
|
1
|
+
// Nested grids
|
2
|
+
// ------------
|
3
|
+
|
4
|
+
|
5
|
+
$grid-nested-grids: true;
|
6
|
+
|
7
|
+
%l-container {
|
8
|
+
// Always set nested grids to fluid
|
9
|
+
&%l-container %l-container %l-row {
|
10
|
+
@include grid-row(fluid);
|
11
|
+
}
|
12
|
+
}
|
13
|
+
|
14
|
+
|
15
|
+
// Column sizes (within columns)
|
16
|
+
@for $i from 1 through $grid-total-columns {
|
17
|
+
%l-col-#{$i} {
|
18
|
+
%l-grid-fluid & {
|
19
|
+
@for $n from 1 through $grid-total-columns {
|
20
|
+
%l-row %l-col-#{$n} {
|
21
|
+
@include grid-column-width($n, fluid, $total-columns: $i);
|
22
|
+
@include grid-gutters(fluid);
|
23
|
+
}
|
24
|
+
}
|
25
|
+
}
|
26
|
+
@if $grid-type == fluid {
|
27
|
+
@for $n from 1 through $grid-total-columns {
|
28
|
+
%l-row %l-col-#{$n} {
|
29
|
+
@include grid-column-width($n, fluid, $total-columns: $i);
|
30
|
+
}
|
31
|
+
}
|
32
|
+
}
|
33
|
+
}
|
34
|
+
}
|
@@ -0,0 +1,50 @@
|
|
1
|
+
// Column offsets
|
2
|
+
// --------------
|
3
|
+
|
4
|
+
// l-col-pull-<$i> – Pull column to left by <column size>
|
5
|
+
// l-col-push-<$i> – Push column to right by <column size>
|
6
|
+
|
7
|
+
|
8
|
+
$grid-offsets: true;
|
9
|
+
|
10
|
+
|
11
|
+
// Column sizes
|
12
|
+
@for $i from 1 through $grid-total-columns {
|
13
|
+
%l-col-push-#{$i} {
|
14
|
+
@extend %-col-positioned;
|
15
|
+
|
16
|
+
%l-container & {
|
17
|
+
@include grid-column-offset(right, $i);
|
18
|
+
}
|
19
|
+
}
|
20
|
+
|
21
|
+
%l-col-pull-#{$i} {
|
22
|
+
@extend %-col-positioned;
|
23
|
+
|
24
|
+
%l-container & {
|
25
|
+
@include grid-column-offset(left, $i);
|
26
|
+
}
|
27
|
+
}
|
28
|
+
|
29
|
+
%l-grid-pixel %l-row %l-col-pull-#{$i} {
|
30
|
+
@include grid-column-offset(left, $i, pixel);
|
31
|
+
}
|
32
|
+
|
33
|
+
%l-grid-pixel %l-row %l-col-push-#{$i} {
|
34
|
+
@include grid-column-offset(right, $i, pixel);
|
35
|
+
}
|
36
|
+
|
37
|
+
%l-grid-fluid %l-row %l-col-pull-#{$i} {
|
38
|
+
@include grid-column-offset(left, $i, fluid);
|
39
|
+
}
|
40
|
+
|
41
|
+
%l-grid-fluid %l-row %l-col-push-#{$i} {
|
42
|
+
@include grid-column-offset(right, $i, fluid);
|
43
|
+
}
|
44
|
+
}
|
45
|
+
|
46
|
+
|
47
|
+
// INTERNAL
|
48
|
+
%-col-positioned {
|
49
|
+
position: relative;
|
50
|
+
}
|
@@ -0,0 +1,71 @@
|
|
1
|
+
// Grid overrides
|
2
|
+
// --------------
|
3
|
+
|
4
|
+
// %l-grid-pixel – Force pixel grid (applied to grid container)
|
5
|
+
// %l-grid-fluid – Force fluid grid (applied to grid container)
|
6
|
+
|
7
|
+
|
8
|
+
$grid-overrides: true;
|
9
|
+
|
10
|
+
// Pixel
|
11
|
+
%l-grid-pixel {
|
12
|
+
%l-row {
|
13
|
+
@include grid-gutters(pixel, row);
|
14
|
+
|
15
|
+
%l-col {
|
16
|
+
@include grid-gutters(pixel);
|
17
|
+
}
|
18
|
+
|
19
|
+
&%l-gutterless {
|
20
|
+
@include grid-gutters(none);
|
21
|
+
|
22
|
+
%l-col {
|
23
|
+
@include grid-gutters(none);
|
24
|
+
}
|
25
|
+
}
|
26
|
+
}
|
27
|
+
}
|
28
|
+
|
29
|
+
// Fluid
|
30
|
+
%l-grid-fluid {
|
31
|
+
%l-row {
|
32
|
+
@include grid-gutters(fluid, row);
|
33
|
+
|
34
|
+
%l-col {
|
35
|
+
@include grid-gutters(fluid);
|
36
|
+
}
|
37
|
+
|
38
|
+
&%l-gutterless {
|
39
|
+
@include grid-gutters(none);
|
40
|
+
|
41
|
+
%l-col {
|
42
|
+
@include grid-gutters(none);
|
43
|
+
}
|
44
|
+
}
|
45
|
+
}
|
46
|
+
}
|
47
|
+
|
48
|
+
// Column sizes
|
49
|
+
@for $i from 1 through $grid-total-columns {
|
50
|
+
%l-col-#{$i} {
|
51
|
+
// Pixel
|
52
|
+
%l-grid-pixel %l-row & {
|
53
|
+
@include grid-column-width($i, pixel);
|
54
|
+
}
|
55
|
+
// Pixel no gutters
|
56
|
+
%l-grid-pixel &,
|
57
|
+
%l-grid-pixel %l-gutterless & {
|
58
|
+
@include grid-column-width($i, pixel, $gutter: 0);
|
59
|
+
}
|
60
|
+
|
61
|
+
// Fluid
|
62
|
+
%l-grid-fluid %l-row & {
|
63
|
+
@include grid-column-width($i, fluid);
|
64
|
+
}
|
65
|
+
// Fluid no gutters
|
66
|
+
%l-grid-fluid &,
|
67
|
+
%l-grid-fluid %l-gutterless & {
|
68
|
+
@include grid-column-width($i, fluid, $gutter: 0);
|
69
|
+
}
|
70
|
+
}
|
71
|
+
}
|
@@ -0,0 +1,16 @@
|
|
1
|
+
// Column subdivisions
|
2
|
+
// -------------------
|
3
|
+
|
4
|
+
// %l-col-<n>-of-<n> - column size of parent total (e.g. 2-of-8 is 2/8 and equals 25%)
|
5
|
+
|
6
|
+
|
7
|
+
$grid-subdivisions: true;
|
8
|
+
|
9
|
+
// Column size ratios
|
10
|
+
@for $i from 1 through $grid-total-columns {
|
11
|
+
@for $n from 1 through $grid-total-columns {
|
12
|
+
%l-col-#{$i}-of-#{$n} {
|
13
|
+
@include grid-column-width($i, fluid, $gutter: 0, $total-columns: $n);
|
14
|
+
}
|
15
|
+
}
|
16
|
+
}
|
@@ -1,83 +1,136 @@
|
|
1
1
|
// Scaffolding stylesheet
|
2
|
-
//
|
2
|
+
// ----------------------
|
3
|
+
|
3
4
|
// Exports `l-` prefixed classes useful for prototyping layouts
|
4
5
|
|
5
6
|
|
6
|
-
//
|
7
|
-
|
8
|
-
|
9
|
-
|
7
|
+
// Create variables
|
8
|
+
$grid-nested-grids: null !default;
|
9
|
+
$grid-offsets: null !default;
|
10
|
+
$grid-overrides: null !default;
|
11
|
+
$grid-subdivisions: null !default;
|
10
12
|
|
11
|
-
|
12
|
-
@extend %l-row;
|
13
|
-
}
|
14
|
-
.l-col {
|
15
|
-
@extend %l-col;
|
16
|
-
}
|
13
|
+
$grid-scaffolding-debug: true !default;
|
17
14
|
|
18
|
-
|
15
|
+
// DEBUG
|
19
16
|
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
@
|
17
|
+
// Helper to warn of disabled features
|
18
|
+
%-feature-warning {
|
19
|
+
position: relative !important;
|
20
|
+
|
21
|
+
&::before {
|
22
|
+
@include position(absolute, fill);
|
23
|
+
display: block !important;
|
24
|
+
margin: 0 !important;
|
25
|
+
text-shadow: 0 -1px 0 rgba(white, .4) !important;
|
26
|
+
background: rgba(red, .8) !important;
|
27
|
+
padding-top: 20px !important;
|
28
|
+
font-size: 20px !important;
|
29
|
+
text-align: center !important;
|
30
|
+
color: black !important;
|
31
|
+
z-index: 10 !important;
|
26
32
|
}
|
27
|
-
|
28
|
-
|
33
|
+
}
|
34
|
+
@mixin feature-warning($text) {
|
35
|
+
@extend %-feature-warning;
|
36
|
+
|
37
|
+
&::before {
|
38
|
+
content: $text !important;
|
29
39
|
}
|
40
|
+
}
|
30
41
|
|
31
|
-
|
32
|
-
&.m-show-guides {
|
33
|
-
@include show-grid-guides;
|
42
|
+
// SCAFFOLDING
|
34
43
|
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
44
|
+
// Grid container & rows
|
45
|
+
.l-container {
|
46
|
+
@extend %l-container;
|
47
|
+
@extend %l-last-col-right;
|
48
|
+
|
49
|
+
.l-row { @extend %l-row }
|
50
|
+
.l-col { @extend %l-col }
|
51
|
+
}
|
52
|
+
|
53
|
+
|
54
|
+
// Gutterless row
|
55
|
+
.l-row.m-gutterless {
|
56
|
+
@extend %l-gutterless;
|
39
57
|
}
|
40
58
|
|
59
|
+
|
41
60
|
// Span-based column modifiers
|
42
61
|
@for $i from 1 through $grid-total-columns {
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
62
|
+
// Columns
|
63
|
+
.m-#{$i} {
|
64
|
+
@extend %l-col-#{$i};
|
65
|
+
}
|
47
66
|
|
48
|
-
|
49
|
-
|
67
|
+
@if $grid-offsets {
|
68
|
+
.m-push-#{$i} {
|
69
|
+
@extend %l-col-push-#{$i};
|
50
70
|
}
|
51
|
-
|
52
|
-
@extend %l-col-
|
71
|
+
.m-pull-#{$i} {
|
72
|
+
@extend %l-col-pull-#{$i};
|
53
73
|
}
|
74
|
+
} @else if $grid-scaffolding-debug {
|
75
|
+
.m-push-#{$i},
|
76
|
+
.m-pull-#{$i} {
|
77
|
+
@include feature-warning("`$grid-offsets` is not enabled");
|
78
|
+
}
|
79
|
+
}
|
80
|
+
}
|
54
81
|
|
55
|
-
|
56
|
-
|
82
|
+
|
83
|
+
// - Optional
|
84
|
+
// Grid type overrides
|
85
|
+
.l-container {
|
86
|
+
@if $grid-overrides {
|
87
|
+
&.m-pixel {
|
88
|
+
@extend %l-grid-pixel;
|
57
89
|
}
|
58
|
-
&.m-
|
59
|
-
@extend %l-
|
90
|
+
&.m-fluid {
|
91
|
+
@extend %l-grid-fluid;
|
92
|
+
}
|
93
|
+
} @else if $grid-scaffolding-debug {
|
94
|
+
&.m-pixel,
|
95
|
+
&.m-fluid {
|
96
|
+
@include feature-warning("`$grid-overrides` is not enabled");
|
60
97
|
}
|
61
98
|
}
|
62
99
|
}
|
63
100
|
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
101
|
+
|
102
|
+
// - Optional
|
103
|
+
// Column subdivisions
|
104
|
+
@if $grid-subdivisions {
|
105
|
+
@for $total from 1 through $grid-total-columns {
|
106
|
+
.l-col {
|
107
|
+
&.m-1-of-#{$total} {
|
108
|
+
@extend %l-col-1-of-#{$total};
|
109
|
+
}
|
110
|
+
@for $col from 1 through $total {
|
111
|
+
&.m-#{$col}-of-#{$total} {
|
112
|
+
@if $total > $col {
|
113
|
+
@extend %l-col-#{$col}-of-#{$total};
|
114
|
+
}
|
74
115
|
}
|
75
116
|
}
|
76
117
|
}
|
77
118
|
}
|
78
119
|
}
|
79
120
|
|
80
|
-
|
81
|
-
|
82
|
-
|
121
|
+
|
122
|
+
@if $grid-scaffolding-debug and not $grid-nested-grids {
|
123
|
+
.l-col > .l-container {
|
124
|
+
@include feature-warning("`$grid-nested-grids` is not enabled");
|
125
|
+
}
|
126
|
+
}
|
127
|
+
|
128
|
+
|
129
|
+
// Grid guides
|
130
|
+
.m-show-guides {
|
131
|
+
@include show-grid-guides;
|
132
|
+
// Bring guides to front
|
133
|
+
&.m-front {
|
134
|
+
@include show-grid-guides(front);
|
135
|
+
}
|
83
136
|
}
|
data/bin/stratum
CHANGED
@@ -0,0 +1,74 @@
|
|
1
|
+
require_relative 'version'
|
2
|
+
|
3
|
+
require 'pathname'
|
4
|
+
require 'fileutils'
|
5
|
+
require 'thor'
|
6
|
+
|
7
|
+
module Stratum
|
8
|
+
class Generator < Thor
|
9
|
+
map ['-v', '--version'] => :version
|
10
|
+
|
11
|
+
desc 'install', 'Install Stratum (./stratum); `stratum help install` for options'
|
12
|
+
option :path, :type => :string, :aliases => '-p', :banner => './', :desc => 'Installation path'
|
13
|
+
option :force, :type => :boolean, :aliases => '-f', :desc => 'Force installation (overwrite existing)'
|
14
|
+
def install
|
15
|
+
if install_path.exist? && !options[:force]
|
16
|
+
puts "Stratum installation already exists. Use -f to force"
|
17
|
+
else
|
18
|
+
copy_files
|
19
|
+
puts "Stratum installed to #{install_path}"
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
desc 'update', 'Update Stratum'
|
24
|
+
def update
|
25
|
+
remove(true)
|
26
|
+
end
|
27
|
+
|
28
|
+
desc 'remove', 'Remove Stratum'
|
29
|
+
def remove(replace = false)
|
30
|
+
if stratum_exists?
|
31
|
+
FileUtils.rm_rf("stratum")
|
32
|
+
if replace
|
33
|
+
copy_files
|
34
|
+
puts "Stratum updated"
|
35
|
+
else
|
36
|
+
puts "Stratum has been removed"
|
37
|
+
end
|
38
|
+
else
|
39
|
+
puts "Stratum installation is not found in current directory"
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
desc 'version', 'Show Stratum version'
|
44
|
+
def version
|
45
|
+
say "Stratum #{Stratum::VERSION}"
|
46
|
+
end
|
47
|
+
|
48
|
+
private
|
49
|
+
|
50
|
+
def stratum_exists?
|
51
|
+
install_path.exist?
|
52
|
+
end
|
53
|
+
|
54
|
+
def install_path
|
55
|
+
@install_path ||= if options[:path]
|
56
|
+
Pathname.new(File.join(options[:path], 'stratum'))
|
57
|
+
else
|
58
|
+
Pathname.new('stratum')
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
def copy_files
|
63
|
+
FileUtils.mkdir_p(install_path)
|
64
|
+
FileUtils.cp_r(assets_stylesheets, install_path)
|
65
|
+
end
|
66
|
+
|
67
|
+
def assets_stylesheets
|
68
|
+
current_dir = File.dirname(File.dirname(__FILE__))
|
69
|
+
stylesheets = File.join(current_dir, "..", "assets", "stylesheets")
|
70
|
+
|
71
|
+
Dir["#{stylesheets}/*"]
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|