1 module uim.css.containers.mediaquery;
2 
3 @safe:
4 import uim.css;
5 
6 class DCSSMediaQuery {
7   this() { }
8   this(string newCondition) { 
9     this(); 
10     this
11     .condition(newCondition); }
12 
13   mixin(OProperty!("string", "condition"));
14 
15   protected STRINGAA _rules;
16 
17   auto rule(this O)(string selector) {
18     return _rules.get(selector, null); }
19   unittest {
20     version(uim_css) {
21       /// TODO
22     }}
23 
24   O rule(this O)(string selector, string properties) {
25     _rules[selector] = properties;
26     return cast(O)this; }
27   unittest {
28     version(uim_css) {
29       /// TODO
30     }}
31 
32   O removeRule(this O)(string selector) {
33     _rules.remove(selector); 
34     return cast(O)this; }
35   unittest {
36     version(uim_css) {
37       /// TODO
38     }}
39 
40   auto opIndex(string selector) {
41     return rule(selector); }
42   unittest {
43     version(uim_css) {
44       /// TODO
45     }}
46 
47   O opIndexAssign(this O)(string selector, string properties) {
48     rule(selector, properties);
49     return cast(O)this; }
50   unittest {
51     version(uim_css) {
52       /// TODO
53     }}
54 
55   override string toString() {
56     string result;
57 
58     foreach(sel, props; _rules) result ~= sel~"{"~props~"}";
59 
60     if (condition) return "@media "~condition~"{"~result~"}";
61     else return result; }
62   unittest {
63     version(uim_css) {
64       /// TODO
65     }}
66 }
67 auto CSSMediaQuery() { return new DCSSMediaQuery; }
68 auto CSSMediaQuery(string condition) { return new DCSSMediaQuery(condition); }