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); }