From 0b5f316efb0742aea954d6fdf7de6f5ced08ddfb Mon Sep 17 00:00:00 2001 From: Jean Privat Date: Wed, 26 Aug 2009 11:50:10 -0400 Subject: [PATCH] lib: add Int::enumerate_* Signed-off-by: Jean Privat --- lib/standard/kernel.nit | 22 ++++++++++++++++++++++ tests/base_iterate_range.nit | 22 ++++++++++++++++++++++ tests/sav/base_iterate_range.sav | 20 ++++++++++++++++++++ 3 files changed, 64 insertions(+) create mode 100644 tests/base_iterate_range.nit create mode 100644 tests/sav/base_iterate_range.sav diff --git a/lib/standard/kernel.nit b/lib/standard/kernel.nit index 64de7c3..994ddf0 100644 --- a/lib/standard/kernel.nit +++ b/lib/standard/kernel.nit @@ -312,6 +312,28 @@ special Discrete return (self + ('a'.ascii - 10)).ascii end end + + # Executre 'each' for each integer in [self..last] + fun enumerate_to(last: Int) + !each(i: Int) + do + var cur = self + while cur <= last do + each(cur) + cur += 1 + end + end + + # Executre 'each' for each integer in [self..after[ + fun enumerate_before(after: Int) + !each(i: Int) + do + var cur = self + while cur < after do + each(cur) + cur += 1 + end + end end # Native characters. diff --git a/tests/base_iterate_range.nit b/tests/base_iterate_range.nit new file mode 100644 index 0000000..5d9a8c2 --- /dev/null +++ b/tests/base_iterate_range.nit @@ -0,0 +1,22 @@ +# This file is part of NIT ( http://www.nitlanguage.org ). +# +# Copyright 2009 Jean Privat +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import range + +for i in [0..4] do i.output +for i in [0..5[ do i.output +0.enumerate_to(4) !each (i) do i.output +0.enumerate_before(5) !each (i) do i.output diff --git a/tests/sav/base_iterate_range.sav b/tests/sav/base_iterate_range.sav new file mode 100644 index 0000000..efe5fae --- /dev/null +++ b/tests/sav/base_iterate_range.sav @@ -0,0 +1,20 @@ +0 +1 +2 +3 +4 +0 +1 +2 +3 +4 +0 +1 +2 +3 +4 +0 +1 +2 +3 +4 -- 1.7.9.5