toSize property

Size get toSize

Interprets a string in various ways and transforms it into a Size object.

Returns a Size object.

Implementation

Size get toSize {
  var text = this;
  text = text.replaceMany(["px", ";", ":"], " ").toLowerCase().trimAll;
  text = text.replaceMany(["largura", "width", "a "], "w ");
  text = text.replaceMany(["altura", "height", "l "], "h ");

  try {
    if (text.isNumber) {
      return Size(text.trimAll.toDoubleOrZero, text.trimAll.toDoubleOrZero);
    } else if (text.isLike("width*") && !text.isLike("*height*")) {
      return Size(text.after("width").trimAll.toDoubleOrZero, text.after("width").trimAll.toDoubleOrZero);
    } else if (text.isLike("height*") && !text.isLike("*width*")) {
      return Size(text.after("height").trimAll.toDoubleOrZero, text.after("height").trimAll.toDoubleOrZero);
    } else if (text.isLike("w*") && !text.isLike("*h*")) {
      return Size(text.after("w").trimAll.toDoubleOrZero, text.after("w").trimAll.toDoubleOrZero);
    } else if (text.isLike("h*") && !text.isLike("*w*")) {
      return Size(text.after("h").trimAll.toDoubleOrZero, text.after("h").trimAll.toDoubleOrZero);
    } else if (text.isLike("width*height*")) {
      return Size(text.between("width", "height").trimAll.toDoubleOrZero, text.after("height").trimAll.toDoubleOrZero);
    } else if (text.isLike("height*width*")) {
      return Size(text.between("height", "width").trimAll.toDoubleOrZero, text.after("width").trimAll.toDoubleOrZero);
    } else if (text.isLike("w*h*")) {
      return Size(text.between("w", "h").trimAll.toDoubleOrZero, text.after("h").trimAll.toDoubleOrZero);
    } else if (text.isLike("h*w*")) {
      return Size(text.between("h", "w").trimAll.toDoubleOrZero, text.after("w").trimAll.toDoubleOrZero);
    } else if (text.isLike("*x*")) {
      return Size(text.split("x").first.trimAll.toDoubleOrZero, text.split("x").last.trimAll.toDoubleOrZero);
    } else if (text.isLike("*by*")) {
      return Size(text.split("by").first.trimAll.toDoubleOrZero, text.split("by").last.trimAll.toDoubleOrZero);
    } else if (text.isLike("*por*")) {
      return Size(text.split("por").first.trimAll.toDoubleOrZero, text.split("por").last.trimAll.toDoubleOrZero);
    } else if (text.isLike("*,*")) {
      return Size(text.split(",").first.trimAll.toDoubleOrZero, text.split(",").last.toDoubleOrZero);
    } else if (text.isLike("*-*")) {
      return Size(text.split("-").first.trimAll.toDoubleOrZero, text.split("-").last.trimAll.toDoubleOrZero);
    } else if (text.isLike("*_*")) {
      return Size(text.split("_").first.trimAll.toDoubleOrZero, text.split("_").last.trimAll.toDoubleOrZero);
    } else if (text.isLike("*:*")) {
      return Size(text.split(":").first.trimAll.toDoubleOrZero, text.split(":").last.trimAll.toDoubleOrZero);
    } else {
      return Size(text.split(" ").first.trimAll.toDoubleOrZero, text.split(" ").last.trimAll.toDoubleOrZero);
    }
  } catch (e) {
    return Size.zero;
  }
}