summaryrefslogtreecommitdiff
path: root/framework/Web/Javascripts/prototype/range.js
diff options
context:
space:
mode:
Diffstat (limited to 'framework/Web/Javascripts/prototype/range.js')
-rw-r--r--framework/Web/Javascripts/prototype/range.js29
1 files changed, 29 insertions, 0 deletions
diff --git a/framework/Web/Javascripts/prototype/range.js b/framework/Web/Javascripts/prototype/range.js
new file mode 100644
index 00000000..f7c87166
--- /dev/null
+++ b/framework/Web/Javascripts/prototype/range.js
@@ -0,0 +1,29 @@
+var Range = Class.create();
+Object.extend(Range.prototype, Enumerable);
+Object.extend(Range.prototype, {
+ initialize: function(start, end, exclusive) {
+ this.start = start;
+ this.end = end;
+ this.exclusive = exclusive;
+ },
+
+ _each: function(iterator) {
+ var value = this.start;
+ do {
+ iterator(value);
+ value = value.succ();
+ } while (this.include(value));
+ },
+
+ include: function(value) {
+ if (value < this.start)
+ return false;
+ if (this.exclusive)
+ return value < this.end;
+ return value <= this.end;
+ }
+});
+
+var $R = function(start, end, exclusive) {
+ return new Range(start, end, exclusive);
+} \ No newline at end of file