UNPKG

quixote

Version:

CSS unit and integration testing

59 lines (48 loc) 1.81 kB
// Copyright (c) 2014 Titanium I.T. LLC. All rights reserved. For license, see "README" or "LICENSE" file. "use strict"; var ensure = require("../util/ensure.js"); var Descriptor = require("./descriptor.js"); var SizeDescriptor = require("./size_descriptor.js"); var Size = require("../values/size.js"); var Me = module.exports = function SizeMultiple(relativeTo, multiple) { ensure.signature(arguments, [ Descriptor, Number ]); this.should = this.createShould(); this._relativeTo = relativeTo; this._multiple = multiple; }; SizeDescriptor.extend(Me); Me.create = function create(relativeTo, multiple) { return new Me(relativeTo, multiple); }; Me.prototype.value = function value() { ensure.signature(arguments, []); return this._relativeTo.value().times(this._multiple); }; Me.prototype.toString = function toString() { ensure.signature(arguments, []); var multiple = this._multiple; var base = this._relativeTo.toString(); if (multiple === 1) return base; var desc; switch(multiple) { case 1/2: desc = "half of "; break; case 1/3: desc = "one-third of "; break; case 2/3: desc = "two-thirds of "; break; case 1/4: desc = "one-quarter of "; break; case 3/4: desc = "three-quarters of "; break; case 1/5: desc = "one-fifth of "; break; case 2/5: desc = "two-fifths of "; break; case 3/5: desc = "three-fifths of "; break; case 4/5: desc = "four-fifths of "; break; case 1/6: desc = "one-sixth of "; break; case 5/6: desc = "five-sixths of "; break; case 1/8: desc = "one-eighth of "; break; case 3/8: desc = "three-eighths of "; break; case 5/8: desc = "five-eighths of "; break; case 7/8: desc = "seven-eighths of "; break; default: if (multiple > 1) desc = multiple + " times "; else desc = (multiple * 100) + "% of "; } return desc + base; };