module uim.css.helpers;

import uim.css;

string toCSS(string[string] values, bool sorted = false) {
  string results;
  if (sorted) foreach(key; values.keys.sort) results ~= "%s:%s;".format(key, values[key]);
  else foreach(key, value; values) results ~= "%s:%s;".format(key, value);
  return results;
}
unittest {
  assert(toCSS(["a":"b"]) == `a:b;`);
  assert(toCSS(["a":"b"], true) == `a:b;`);

  assert(toCSS(["a":"b", "c":"d"]) == `c:d;a:b;`);
  assert(toCSS(["a":"b", "c":"d"], true) == `a:b;c:d;`);
}

string toCSS(string selector, string[string] values, bool sorted = false) {
  string results;
  if (sorted) foreach(key; values.keys.sort) results ~= "%s:%s;".format(key, values[key]);
  else foreach(key, value; values) results ~= "%s:%s;".format(key, value);
  return "%s{%s}".format(selector, toCSS(values, sorted));
}
unittest {}

string toCSS(string[string][string] values, bool sorted = false) {
  string results;
  if (sorted) foreach(key; values.keys.sort) results ~= toCSS(key, values[key]);
  else foreach(key, value; values) results ~= toCSS(key, value);
  return results;
}
unittest {}

string cssBlock(string content) { return "{"~content~"}"; }