Code Duplication    Length = 11-24 lines in 3 locations

src/ub.numbers.js 3 locations

@@ 250-260 (lines=11) @@
247
		var val = this;
248
		return (val < 0);
249
	},
250
	relativeTo: function(v2, type){
251
		var v1 = this;
252
		// type .. 0=any, 1=pos, 2=neg
253
		var v = v2 - v1;
254
		if (type == 1) {
255
			return v > 0 ? v : -v;
256
		}else if (type == 2) {
257
			return v > 0 ? -v : v;
258
		}
259
		return v;
260
	},
261
	abs: function(negative = false){
262
		var v = this;
263
		if (negative){
@@ 775-798 (lines=24) @@
772
		var input = this;
773
		return parseFloat(input.toString().substr(0, digits));
774
	},
775
	limit: function(min, max){
776
		var input = this;
777
		
778
		// ensure ok
779
		if (input != input) { /// fast isNaN check
780
			return min;
781
		}
782
		
783
		// flip limits if in reverse order
784
		if (min > max) {
785
			var temp = max;
786
			max = min;
787
			min = temp;
788
		}
789
		
790
		// ensure within limits
791
		if (input < min) {
792
			return min;
793
		}else if (input > max) {
794
			return max;
795
		}
796
		return input;
797
	},
798
	limitToArray: function(array, extraMax = 0, extraMin = 0){
799
		var pointer = this;
800
		if (pointer <= -extraMin) {
801
			return -extraMin;
@@ 821-840 (lines=20) @@
818
		}
819
		return min + (value % diff);
820
	},
821
	wrap2: function(min, max){
822
		var input = this;
823
		
824
		// flip limits if in reverse order
825
		if (min > max) {
826
			var temp = max;
827
			max = min;
828
			min = temp;
829
		}
830
		
831
		// ensure wrapped to limits
832
		var diff = (max - min) + 1;
833
		while (input < min) {
834
			input += diff;
835
		}
836
		while (input > max) {
837
			input -= diff;
838
		}
839
		return input;
840
	},
841
	wrapToMax: function(max){
842
		var value = this;
843
		var diff = max + 1;