custom-range 0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. data/lib/custom_range.rb +52 -0
  2. metadata +55 -0
@@ -0,0 +1,52 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ class CustomRange
4
+ attr_accessor :range_set
5
+
6
+ def initialize(range_set)
7
+ @range_set = range_set
8
+ end
9
+
10
+ def [](value)
11
+ EndPoint.new value, @range_set
12
+ end
13
+ end
14
+
15
+ class EndPoint
16
+ attr_accessor :index
17
+
18
+ def initialize(value, range_set)
19
+ @range_set = range_set
20
+ @index = self.send("index_from_" + value_type(value), value)
21
+ end
22
+
23
+ def index_from_integer(value)
24
+ value % @range_set.size
25
+ end
26
+
27
+ def index_from_string(value)
28
+ @range_set.index(value)
29
+ end
30
+
31
+ def index_from_symbol(value)
32
+ index_from_string(value.to_s)
33
+ end
34
+
35
+ def succ
36
+ EndPoint.new(@index + 1, @range_set)
37
+ end
38
+
39
+ def <=>(end_point)
40
+ @index <=> end_point.index
41
+ end
42
+
43
+ def value_type(value)
44
+ kind = [Integer, String, Symbol].find {|type| value.kind_of? type}.to_s.downcase
45
+ puts kind
46
+ return kind
47
+ end
48
+
49
+ def to_s
50
+ @range_set[@index].to_s
51
+ end
52
+ end
metadata ADDED
@@ -0,0 +1,55 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: custom-range
3
+ version: !ruby/object:Gem::Version
4
+ version: "0.1"
5
+ platform: ruby
6
+ authors:
7
+ - Maurizio De Magnis
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2010-01-30 00:00:00 +01:00
13
+ default_executable:
14
+ dependencies: []
15
+
16
+ description:
17
+ email: maurizio.demagnis@gmail.com
18
+ executables: []
19
+
20
+ extensions: []
21
+
22
+ extra_rdoc_files: []
23
+
24
+ files:
25
+ - lib/custom_range.rb
26
+ has_rdoc: true
27
+ homepage: http://github.com/mauriziodemagnis/custom_range
28
+ licenses: []
29
+
30
+ post_install_message:
31
+ rdoc_options: []
32
+
33
+ require_paths:
34
+ - lib
35
+ required_ruby_version: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - ">="
38
+ - !ruby/object:Gem::Version
39
+ version: "0"
40
+ version:
41
+ required_rubygems_version: !ruby/object:Gem::Requirement
42
+ requirements:
43
+ - - ">="
44
+ - !ruby/object:Gem::Version
45
+ version: "0"
46
+ version:
47
+ requirements: []
48
+
49
+ rubyforge_project:
50
+ rubygems_version: 1.3.5
51
+ signing_key:
52
+ specification_version: 3
53
+ summary: A simple way to use custom ranges in Ruby
54
+ test_files: []
55
+