d81e118f5492956ee9c488a24993cffe484a7c58
[redakcja.git] /
1
2 // simple array/list:
3
4 .multiunit {
5   @v: abc "abc" 1 1px 1% #123;
6   length: length(@v);
7   extract: extract(@v, 1) extract(@v, 2) extract(@v, 3) extract(@v, 4) extract(@v, 5) extract(@v, 6);
8 }
9
10 .incorrect-index {
11     @v1: a  b  c;
12     @v2: a, b, c;
13     v1: extract(@v1,  5);
14     v2: extract(@v2, -2);
15 }
16
17 .scalar {
18     @var:          variable;
19     var-value:     extract(@var, 1);
20     var-length:    length(@var);
21     ill-index:     extract(@var, 2);
22
23     name-value:    extract(name, 1);
24     string-value:  extract("string", 1);
25     number-value:  extract(12345678, 1);
26     color-value:   extract(blue, 1);
27     rgba-value:    extract(rgba(80, 160, 240, 0.67), 1);
28     empty-value:   extract(~'', 1);
29     
30     name-length:   length(name);
31     string-length: length("string");
32     number-length: length(12345678);
33     color-length:  length(blue);
34     rgba-length:   length(rgba(80, 160, 240, 0.67));
35     empty-length:  length(~'');
36 }
37
38 .mixin-arguments {
39     .mixin-args(a b c d);
40     .mixin-args(a, b, c, d);
41     .mixin-args(1; 2; 3; 4);
42 }
43
44 .mixin-args(@value) {
45     &-1 {
46         length:  length(@value);
47         extract: extract(@value, 3) ~"|" extract(@value, 2) ~"|" extract(@value, 1);
48     }
49 }
50
51 .mixin-args(...) { 
52     &-2 {
53         length:  length(@arguments);
54         extract: extract(@arguments, 3) ~"|" extract(@arguments, 2) ~"|" extract(@arguments, 1);
55     }
56 }
57
58 .mixin-args(@values...) {
59     &-3 {
60         length:  length(@values);
61         extract: extract(@values, 3) ~"|" extract(@values, 2) ~"|" extract(@values, 1);
62     }
63 }
64
65 .mixin-args(@head, @tail...) {
66     &-4 {
67         length:  length(@tail);
68         extract: extract(@tail, 2) ~"|" extract(@tail, 1);
69     }
70 }
71
72 // "multidimensional" array/list
73
74 .md-space-comma {
75     @v: a b c, 1 2 3, "x" "y" "z";
76     length-1:  length(@v);
77     extract-1: extract(@v, 2);
78     length-2:  length(extract(@v, 2));
79     extract-2: extract(extract(@v, 2), 2);
80
81     &-as-args {.mixin-args(a b c, 1 2 3, "x" "y" "z")}
82 }
83
84 .md-cat-space-comma {
85     @a: a b c;
86     @b: 1 2 3;
87     @c: "x" "y" "z";
88     @v: @a, @b, @c;
89     length-1:  length(@v);
90     extract-1: extract(@v, 2);
91     length-2:  length(extract(@v, 2));
92     extract-2: extract(extract(@v, 2), 2);
93     
94     &-as-args {.mixin-args(@a, @b, @c)}
95 }
96
97 .md-cat-comma-space {
98     @a: a, b, c;
99     @b: 1, 2, 3;
100     @c: "x", "y", "z";
101     @v: @a @b @c;
102     length-1:  length(@v);
103     extract-1: extract(@v, 2);
104     length-2:  length(extract(@v, 2));
105     extract-2: extract(extract(@v, 2), 2);
106
107     &-as-args {.mixin-args(@a @b @c)}
108 }
109
110 .md-3D {
111     @a: a b c d, 1 2 3 4;
112     @b: 5 6 7 8, e f g h;
113     .3D(@a, @b);
114     
115     .3D(...) {
116
117         @v1:       @arguments;
118         length-1:  length(@v1);
119         extract-1: extract(@v1, 1);
120         
121         @v2:       extract(@v1, 2);
122         length-2:  length(@v2);
123         extract-2: extract(@v2, 1);
124         
125         @v3:       extract(@v2, 1);
126         length-3:  length(@v3);
127         extract-3: extract(@v3, 3);
128
129         @v4:       extract(@v3, 4);
130         length-4:  length(@v4);
131         extract-4: extract(@v4, 1);
132     }
133 }