kyanite 0.6.1 → 0.7.0

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 (86) hide show
  1. data/Div +6 -32
  2. data/{History.txt → History.rdoc} +8 -0
  3. data/{License.txt → License.rdoc} +0 -0
  4. data/Manifest.txt +6 -21
  5. data/README.rdoc +44 -0
  6. data/Rakefile.rb +19 -68
  7. data/console.rb +2 -4
  8. data/lib/kyanite.rb +151 -14
  9. data/lib/kyanite/array.rb +127 -4
  10. data/lib/kyanite/basics.rb +3 -7
  11. data/lib/kyanite/dictionary.rb +19 -21
  12. data/lib/kyanite/enumerable/enumerable_enumerables.rb +22 -24
  13. data/lib/kyanite/enumerable/enumerable_numerics.rb +51 -49
  14. data/lib/kyanite/enumerable/enumerable_strings.rb +18 -25
  15. data/lib/kyanite/enumerable/structure.rb +46 -58
  16. data/lib/kyanite/general/callerutils.rb +30 -28
  17. data/lib/kyanite/general/classutils.rb +73 -63
  18. data/lib/kyanite/general/kernel.rb +45 -64
  19. data/lib/kyanite/general/object.rb +22 -46
  20. data/lib/kyanite/general/true_false.rb +33 -27
  21. data/lib/kyanite/general/undoable.rb +12 -16
  22. data/lib/kyanite/hash.rb +63 -58
  23. data/lib/kyanite/numeric.rb +14 -1
  24. data/lib/kyanite/numeric/float.rb +32 -22
  25. data/lib/kyanite/numeric/integer.rb +12 -20
  26. data/lib/kyanite/optimizer.rb +41 -24
  27. data/lib/kyanite/range.rb +42 -22
  28. data/lib/kyanite/set.rb +56 -63
  29. data/lib/kyanite/string.rb +1 -2
  30. data/lib/kyanite/string/cast.rb +61 -37
  31. data/lib/kyanite/string/chars.rb +66 -36
  32. data/lib/kyanite/string/chars_const.rb +4 -3
  33. data/lib/kyanite/string/diff.rb +64 -34
  34. data/lib/kyanite/string/include.rb +16 -9
  35. data/lib/kyanite/string/list.rb +38 -8
  36. data/lib/kyanite/string/misc.rb +64 -0
  37. data/lib/kyanite/string/nested.rb +39 -22
  38. data/lib/kyanite/string/random.rb +117 -47
  39. data/lib/kyanite/string/split.rb +84 -45
  40. data/lib/kyanite/symbol.rb +30 -21
  41. data/lib/kyanite/tree.rb +33 -28
  42. data/test/_start_all.rb +18 -15
  43. data/test/array/test_array.rb +5 -7
  44. data/test/enumerable/test_enumerable_enumerables.rb +11 -15
  45. data/test/enumerable/test_enumerable_numerics.rb +50 -54
  46. data/test/enumerable/test_enumerable_strings.rb +8 -11
  47. data/test/enumerable/test_structure.rb +6 -8
  48. data/test/general/test_classutils.rb +9 -9
  49. data/test/general/test_object.rb +4 -5
  50. data/test/general/test_true_false.rb +4 -5
  51. data/test/numeric/test_numeric_integer.rb +6 -6
  52. data/test/string/test_cast.rb +4 -5
  53. data/test/string/test_chars.rb +6 -7
  54. data/test/string/test_diff.rb +4 -5
  55. data/test/string/test_list.rb +4 -5
  56. data/test/string/test_misc.rb +58 -0
  57. data/test/string/test_nested.rb +4 -5
  58. data/test/string/test_split.rb +10 -5
  59. data/test/test_dictionary.rb +4 -6
  60. data/test/test_hash.rb +5 -7
  61. data/test/test_optimizer.rb +4 -5
  62. data/test/test_range.rb +8 -9
  63. data/test/test_set.rb +7 -7
  64. data/test/test_tree.rb +7 -10
  65. data/version.rb +8 -0
  66. metadata +32 -33
  67. data/README.txt +0 -47
  68. data/lib/kyanite/array/array.rb +0 -140
  69. data/lib/kyanite/array/array2.rb +0 -142
  70. data/lib/kyanite/array/matrix2.rb +0 -120
  71. data/lib/kyanite/hoe.rb +0 -2
  72. data/lib/kyanite/matrix2.rb +0 -2
  73. data/lib/kyanite/numeric/numeric.rb +0 -54
  74. data/lib/kyanite/operation.rb +0 -5
  75. data/lib/kyanite/operation/call_tracker.rb +0 -69
  76. data/lib/kyanite/operation/hoe.rb +0 -12
  77. data/lib/kyanite/operation/rake.rb +0 -298
  78. data/lib/kyanite/operation/regexp.rb +0 -28
  79. data/lib/kyanite/operation/unit_test.rb +0 -50
  80. data/lib/kyanite/rake.rb +0 -2
  81. data/lib/kyanite/smart_load_path.rb +0 -6
  82. data/lib/kyanite/string/div.rb +0 -28
  83. data/lib/kyanite/string/mgsub.rb +0 -43
  84. data/lib/kyanite/unit_test.rb +0 -2
  85. data/test/array/test_matrix2.rb +0 -166
  86. data/test/string/test_mgsub.rb +0 -58
@@ -1,4 +1,17 @@
1
1
  # ruby encoding: utf-8
2
2
  require 'kyanite/numeric/float'
3
3
  require 'kyanite/numeric/integer'
4
- require 'kyanite/numeric/numeric'
4
+
5
+
6
+
7
+ class Numeric
8
+
9
+ # +false+, Numerics are not empty.
10
+ # @return [Boolean]
11
+ # @private
12
+ def empty?
13
+ false
14
+ end
15
+
16
+
17
+ end # class
@@ -1,33 +1,43 @@
1
1
  # ruby encoding: utf-8
2
+ # ü
3
+ if $0 == __FILE__
4
+ require 'drumherum'
5
+ smart_init
6
+ end
7
+
2
8
  Infinity = 1.0/0 unless defined? Infinity
3
9
  Googol = 10**100 unless defined? Googol
4
10
 
5
- # [ | Kyanite | *Object* | Array | Set | Enumerable | Hash | ] | Object | String | Symbol | *Numeric* |
6
- # [ ] | Numeric | Integer | *Float* |
7
- #
8
- # ---
9
- #
10
- # == *Float*
11
- #
12
- #
11
+
12
+
13
+ # @!macro numeric
13
14
  class Float
14
15
 
15
- # 1.9 == 1.8 + 0.1 => false
16
- # 1.9.approx(1.8 + 0.1) => true
17
- # 98.6.approx(98.66) => false
18
- # 98.6.approx(98.66, 0.001) => true
19
- # Copyright 2006 O'Reilly Media, Ruby Cookbook, by Lucas Carlson and Leonard Richardson
16
+ # Fuzzy comparison of Floats. Example:
17
+ # (98.6).fuzzy_equal?(98.66) => false
18
+ # (98.6).fuzzy_equal?(98.66, 0.001) => true
20
19
  #
21
- def approx(other, relative_epsilon=Float::EPSILON, epsilon=Float::EPSILON)
22
- difference = other - self
23
- return true if difference.abs <= epsilon
24
- relative_error = (difference / (self > other ? self : other)).abs
25
- return relative_error <= relative_epsilon
20
+ # @param other [Float] Value to compare with
21
+ # @param error_max [Float] Maximum relative error
22
+ def fuzzy_equal?(other, error_max=0.000001)
23
+ diff = other - self
24
+ return true if diff.abs <= Float::EPSILON
25
+ relative_error = (diff / (self > other ? self : other)).abs
26
+ #puts relative_error
27
+ return relative_error <= error_max
26
28
  end
27
- # http://oreilly.com/catalog/9780596523695/
28
- # Ruby Cookbook, by Lucas Carlson and Leonard Richardson
29
- # Copyright 2006 O'Reilly Media
29
+
30
30
 
31
31
 
32
32
 
33
- end
33
+ end
34
+
35
+ # -----------------------------------------------------------------------------------------
36
+ # ausprobieren
37
+ #
38
+ if $0 == __FILE__ then
39
+
40
+ puts (98.6).fuzzy_equal?(98.66)
41
+ puts (98.6).fuzzy_equal?(98.66, 0.001)
42
+
43
+ end # if
@@ -1,32 +1,24 @@
1
1
  # ruby encoding: utf-8
2
- # [ | Kyanite | *Object* | Array | Set | Enumerable | Hash | ] | Object | String | Symbol | *Numeric* |
3
- # [ ] | Numeric | *Integer* | Float |
4
- #
5
- # ---
6
- #
7
- # == *Trivial* *Integer* *Methods*
8
- #
9
- #
2
+ # ü
3
+ if $0 == __FILE__
4
+ require 'drumherum'
5
+ smart_init
6
+ end
7
+
8
+
9
+ # @!macro numeric
10
10
  class Integer
11
11
 
12
- # Wandelt eine Sekundenzahl-seit-1970 in ein Time-Objekt
12
+ # Converts a number of seconds-since-1970 in a Time object
13
+ # @return [Time]
13
14
  def to_time
14
15
  return nil if self > 2099999999 # geht leider nur bis ins Jahr 2036
15
16
  ::Time.at(self) # ohne die Doppelpunkte sucht Ruby die Methode at in ::Time und wirft einen Error
16
17
  end
17
18
 
18
- # Rückgabe: self
19
- # Test: TestKyaniteNumeric#test_integer_triviales
20
- def to_integer; self; end
21
-
22
-
23
- # Rückgabe: self
24
- # Test: TestKyaniteNumeric#test_integer_triviales
25
- def to_integer_optional; self; end
26
-
27
19
 
28
- # Rückgabe: self
29
- # Test: TestKyaniteNumeric#test_integer_triviales
20
+ # +self+, you can not dup Integers
21
+ # @return [self]
30
22
  def dup; self; end
31
23
 
32
24
  end # class
@@ -1,24 +1,36 @@
1
1
  # ruby encoding: utf-8
2
+ # ü
3
+ if $0 == __FILE__
4
+ require 'drumherum'
5
+ smart_init
6
+ end
7
+
2
8
 
9
+
10
+
11
+
12
+ # @!macro optimizer
13
+ # ==== Example
14
+ # require 'kyanite/optimizer'
15
+ # test = Optimizer.new
16
+ # test.push 1, 'hello'
17
+ # test.push 5, 'item'
18
+ # test.push 6, 'maximum23'
19
+ # test.push -1, 'minimum'
20
+ # test.push -1, 'another minimum'
21
+ # test.content_max
22
+ # >= "maximum23"
23
+ # test.content_min
24
+ # >= "minimum"
25
+ # More tests and examples {TestKyaniteOptimizer here}.
3
26
  #
4
- # [ | *Kyanite* | Object | Array | Set | Enumerable | Hash | ] | Kyanite | TrueClass | FalseClass | NilClass | *Div* |
5
- # [ ] | Div | Tree::TreeNode | *Optimizer* |
6
- # ---
7
- #
8
- # == *Optimizer*
9
- # Auswahl von Objekten auf Basis von Scores. See TestKyaniteOptimizer for Tests and examples.
10
- #
11
- # Jedes Objekt wird per +push+ in den Optimizer geschrieben. Dabei wird auch sein Score übergeben.
12
- # +content_max+ bzw. +content_min+ liefern das Objekt mit dem höchsten / niedrigsten Score.
13
- # +delete_max+ bzw. +delete_min+ löschen das Objekt mit den höchsten / niedrigsten Score. Dadurch ist auch der Zugriff auf die zweiten und dritten Objekte möglich.
14
- #
27
+ class Optimizer < Hash
28
+
15
29
  # Drei Stufen für Marshall sind denkbar:
16
30
  # * kein Marshal
17
31
  # * Marshal.load(Marshal.dump) beim Schreiben. Dadurch sind Schreibzugriffe teuer, Lesezugriffe aber billig
18
32
  # * Marshal.dump beim Schreiben, Marshal.load beim Lesen. Dadurch sind Lese- und Schreibzugriffe teuer,
19
33
  # die im Optimizer gespeicherten Objekte sind aber abgeschottet und geschützt.
20
- #
21
- class Optimizer < Hash
22
34
 
23
35
  #@@marshal = true
24
36
 
@@ -27,24 +39,25 @@ class Optimizer < Hash
27
39
  # end
28
40
 
29
41
 
30
- # Liefert den Wert des höchsten Scores.
42
+
43
+ # @return [Numeric] Value of maximum score
31
44
  def score_max
32
45
  return nil if size == 0
33
46
  keys.max
34
47
  end
35
48
 
36
49
 
37
- # Liefert den Wert des niedrigsten Scores.
50
+ # @return [Numeric] Value of minimum score
38
51
  def score_min
39
52
  return nil if size == 0
40
53
  keys.min
41
54
  end
42
55
 
43
56
 
44
- # Liefert den Content mit dem höchsten Score. Mit
45
- # [] content_max(0) erhält man den ersten Content mit maximalem Score, mit
46
- # [] content_max(-1) den letzten Content mit maximalem Score und mit
47
- # [] content_max(0..-1) alle Contents mit maximalem Score (dann als Array).
57
+ # Returns the content with maximum score.
58
+ # content_max(0) # returns the first content with maximum score
59
+ # content_max(-1) # returns the last content with maximum score
60
+ # content_max(0..-1) # returns all contents with maximum score (as Array)
48
61
  #
49
62
  def content_max(range=0..0)
50
63
  return nil if size == 0
@@ -61,7 +74,11 @@ class Optimizer < Hash
61
74
  end
62
75
 
63
76
 
64
- # siehe #content_max
77
+ # Returns the content with minimum score.
78
+ # content_min(0) # returns the first content with minimum score
79
+ # content_min(-1) # returns the last content with minimum score
80
+ # content_min(0..-1) # returns all contents with minimum score (as Array)
81
+ #
65
82
  def content_min(range=0..0)
66
83
  return nil if size == 0
67
84
  range = (range..range) if range.kind_of?(Fixnum)
@@ -77,7 +94,7 @@ class Optimizer < Hash
77
94
  end
78
95
 
79
96
 
80
- # Beladen des Optimizers mit Objekten.
97
+ # Load the optimizer with objects.
81
98
  def push( score, content, options={} )
82
99
  if self.has_key?(score)
83
100
  self[score] << Marshal.dump(content)
@@ -87,7 +104,7 @@ class Optimizer < Hash
87
104
  end
88
105
 
89
106
 
90
- # Löscht alle Objekte in der Mitte.
107
+ # Deletes all objects in the middle.
91
108
  def cleanup
92
109
  return false if size <= 2
93
110
  keys.sort[1..-2].each do | key |
@@ -97,14 +114,14 @@ class Optimizer < Hash
97
114
  end
98
115
 
99
116
 
100
- # Löscht das Objekt mit dem niedrigsten Score.
117
+ # Deletes the object with the lowest score.
101
118
  def delete_min
102
119
  return false if size <= 1
103
120
  self.delete(keys.min)
104
121
  true
105
122
  end
106
123
 
107
- # Löscht das Objekt mit dem höchsten Score.
124
+ # Deletes the object with the highest score.
108
125
  def delete_max
109
126
  return false if size <= 1
110
127
  self.delete(keys.max)
data/lib/kyanite/range.rb CHANGED
@@ -1,46 +1,63 @@
1
1
  # ruby encoding: utf-8
2
- # ü
2
+ #
3
3
  if $0 == __FILE__
4
- require File.join(File.dirname(__FILE__), '..', '..', 'smart_load_path.rb' )
5
- smart_load_path
4
+ require 'drumherum'
5
+ smart_init
6
6
  end
7
+
7
8
  require 'facets/range/combine'
8
9
  require 'facets/range/within'
9
- require 'kyanite/enumerable' # is_collection? ist für Ranges false
10
+ require 'kyanite/enumerable' # is_collection? ist false for Ranges
10
11
 
11
- # [ | Kyanite | Object | *Array* | Set | Enumerable | Hash | ] | Array | ArrayOfNumerics | ArrayOfStrings | ArrayOfEnumerables | *Range* |
12
- # ---
13
- #
14
- #
15
- # == *Range*
16
- #
17
- #
18
- # Aus {Facets/Range}[http://facets.rubyforge.org/doc/api/core/classes/Range.html] eingefügt:
19
- # umbrella(range)
20
- # within?
21
- # combine(range)
12
+
13
+
14
+
15
+ # @!macro range
22
16
  #
17
+ # === Added from {http://rubyworks.github.com/rubyfaux/?doc=http://rubyworks.github.com/facets/docs/facets-2.9.3/core.json#api-class-Range Facets Range}:
18
+ # [+umbrella(range)+] Returns a two element array of the relationship between two Ranges
19
+ # [+within? (range)+] Is another Range anywhere within this Range?
20
+ # [+combine(range)+] Combine ranges
23
21
  #
24
22
  class Range
25
23
 
26
- # Invertiert den Range, mit dem ein Ausschnitt eines Strings oder eines Arrays bestimmt wird.
27
- # Liefert einen Range, mit dem der inverse Teil des Strings ausgewählt werden kann.
28
- # Beispiele siehe TestKyaniteRange.
24
+
25
+
26
+ # Given a range for selecting a section of a {String} or an {Array},
27
+ # +invert_index+ inverts this range, so that the result
28
+ # selects the inverse part of the {String} or {Array}.
29
+ #
30
+ # @example
31
+ # # return back
32
+ # (0..5).invert_index
33
+ # => (6..-1)
34
+ #
35
+ # # return front
36
+ # (3..-1).invert_index
37
+ # => (0..2)
38
+ #
39
+ # # return outer
40
+ # (2..4).invert_index
41
+ # => [0..1, 5..-1]
42
+ #
43
+ # Tests and more examples {TestKyaniteRange here}.
29
44
  #
45
+ #
46
+ # @return [Range] or [Array] of two Ranges
30
47
  def invert_index
31
48
 
32
- # hinteren Teil ausgeben
49
+ # back
33
50
  if first == 0
34
51
  return (1..0) if last == -1 # leer
35
52
  return (last+1..-1) # hinterer Teil
36
53
 
37
- # vorderen Teil ausgeben
54
+ # front
38
55
  else
39
56
  return (0..first-1) if last == -1 # vorderer Teil
40
57
 
41
58
  end
42
59
 
43
- # äußere Teile ausgeben
60
+ # outer
44
61
  return [(first..-1).invert_index, (0..last).invert_index]
45
62
  end # def
46
63
 
@@ -53,13 +70,16 @@ end # class
53
70
 
54
71
  if defined? TransparentNil
55
72
  class NilClass
56
- def invert_index; nil; end
73
+ # @!group return nil
74
+ def invert_index; nil; end
57
75
  def umbrella(*a); nil; end
58
76
  def combine(*a); nil; end
59
77
  def within?(*a); nil; end
60
78
  end
61
79
  end # if defined? TransparentNil
62
80
 
81
+
82
+
63
83
  # ==================================================================================
64
84
  # Ausprobieren
65
85
  #
data/lib/kyanite/set.rb CHANGED
@@ -1,8 +1,8 @@
1
1
  # ruby encoding: utf-8
2
2
  # ü
3
3
  if $0 == __FILE__
4
- require File.join(File.dirname(__FILE__), '..', '..', 'smart_load_path.rb' )
5
- smart_load_path
4
+ require 'drumherum'
5
+ smart_init
6
6
  end
7
7
 
8
8
  require 'set'
@@ -13,41 +13,34 @@ require 'kyanite/symbol' # damit man auch Symbols aufnehmen kann
13
13
  require 'kyanite/hash' # Korrektur der Methoden hash und eql?
14
14
 
15
15
 
16
- # [ | Kyanite | Object | Array | *Set* | Enumerable | Hash | ] | *Set* | OrderedSet | SortedSet |
17
- # ---
18
- #
19
- #
20
- # == *General* *Set*
21
- # Tests and examples see TestKyaniteSet
22
- #
23
- #
24
- # === Unterschiede der verschiedenen Set-Klassen
25
- # * Ein {Set}[http://www.ruby-doc.org/core/classes/Set.html] ist ungeordnet.
26
- # Beispiele: TestKyaniteSet#test_set
27
- # * Ein OrderedSet ist geordnet, es behält die ursprüngliche Reihenfolge, wird aber nicht kontinuierlich neu sortiert.
28
- # Es sei denn, man sorgt dafür mit Dictionary#order_by
29
- # Beispiele: TestKyaniteSet#test_ordered_set
30
- # * Ein {SortedSet}[http://www.ruby-doc.org/core/classes/SortedSet.html] ist geordnet und sortiert. Es behält immer die Sortierung.
31
- # Beispiele: TestKyaniteSet#test_sorted_set
32
- #
16
+
17
+
18
+
19
+
20
+
21
+
22
+
23
+ # @!macro set
33
24
  class Set
34
25
 
35
- # Fügt das Element an das Set an.
26
+ # Adds the element to the set.
36
27
  def push(elt)
37
28
  self << elt
38
29
  end
39
30
 
40
31
 
41
- # Vergleichsoperator, Standardsortierung: Size
32
+ # Comparison operator (by size)
33
+ # @return [Integer] 1, 0, -1
42
34
  def <=>(other)
43
35
  self.size <=> other.size
44
36
  end
45
37
 
46
38
  # def hash_raw
47
- # @hash
39
+ # hash
48
40
  # end
49
41
 
50
- # Liefert irgendein Element.
42
+
43
+ # @return any element
51
44
  def first
52
45
  @hash.each do |key, value|
53
46
  return key
@@ -55,7 +48,7 @@ class Set
55
48
  end #def
56
49
 
57
50
 
58
- # Liefert irgendein anderes Element.
51
+ # @return any other element
59
52
  def last
60
53
  first = nil
61
54
  @hash.each do |key, value|
@@ -71,16 +64,10 @@ class Set
71
64
  end
72
65
 
73
66
 
74
- # [ | Kyanite | Object | Array | *Set* | Enumerable | Hash | ] | Set | *OrderedSet* | SortedSet |
75
- # ---
76
- #
77
- #
78
- # == *Ordered* *Set*
79
- # Tests and examples see TestKyaniteSet
80
- #
81
- # Ein OrderedSet ist geordnet, es behält die ursprüngliche Reihenfolge, wird aber nicht kontinuierlich neu sortiert.
82
- # Es sei denn, man sorgt dafür mit Dictionary#order_by
83
- #
67
+
68
+ # =================================================================================================================
69
+ # @!macro set
70
+ #
84
71
  class OrderedSet < Set
85
72
 
86
73
  def initialize(enum = nil, &block) # :yields: o
@@ -94,30 +81,32 @@ class OrderedSet < Set
94
81
  end
95
82
 
96
83
 
97
- # Liefert das n-te Element.
84
+ # @return n-th Element
98
85
  def [](index)
99
86
  @hash.order[index]
100
87
  end
101
88
 
102
-
103
- def zugrundeliegendes_dictionary # :nodoc:
89
+ # @private
90
+ def zugrundeliegendes_dictionary
104
91
  @hash
105
92
  end
93
+
106
94
 
107
- # Liefert ein entsprechendes Array.
108
- # Diese Methode ist schnell. Es muss nichts umgeformt werden. Andere Methoden können also gerne auf to_a basieren.
95
+ # This method is fast. Nothing needs to be converted.
96
+ # @return [Array]
109
97
  def to_a
110
98
  @hash.order
111
99
  end
112
100
 
113
-
101
+
102
+ # @return [Boolean]
114
103
  def ==(other)
115
104
  silence_warnings do
116
105
  self.to_a.to_set == other.to_a.to_set
117
106
  end
118
107
  end
119
108
 
120
- # Wie Array#index
109
+ # like Array#index
121
110
  def index(object)
122
111
  self.to_a.index(object)
123
112
  end
@@ -131,10 +120,12 @@ class OrderedSet < Set
131
120
  @hash.order_by( &block )
132
121
  end
133
122
 
123
+ # @return first element
134
124
  def first
135
125
  self[0]
136
126
  end
137
127
 
128
+ # @return last element
138
129
  def last
139
130
  self[-1]
140
131
  end
@@ -144,37 +135,35 @@ class OrderedSet < Set
144
135
  end # class
145
136
 
146
137
 
147
- # [ | Kyanite | Object | | Array | *Set* | Enumerable | Hash ] | Set | OrderedSet | *SortedSet* |
148
- # ---
149
- #
150
- #
151
- # == *Sorted* *Set*
152
- # Tests and examples see TestKyaniteSet
153
- #
154
- # Ein {SortedSet}[http://www.ruby-doc.org/core/classes/SortedSet.html] ist geordnet und sortiert. Es behält immer die Sortierung.
155
- # Beispiele: TestKyaniteSet#test_sorted_set
156
- #
138
+
139
+ # =================================================================================================================
140
+ # @!macro set
141
+ #
157
142
  class SortedSet
158
143
 
159
- # Liefert das n-te Element.
160
- # ineffizient!!
144
+ # @return n-th Element
145
+ # n-th Element. inefficient!!
161
146
  def [](index)
162
147
  self.to_a[index]
163
148
  end
164
149
 
150
+ # @return first element
165
151
  def first
166
152
  self[0]
167
153
  end
168
154
 
155
+ # @return last element
169
156
  def last
170
157
  self[-1]
171
158
  end
172
159
 
173
160
  # das war mal auskommentiert, wird aber von nat_lang gebraucht
174
- def unshift(e) # :nodoc:
161
+ # @private
162
+ def unshift(e)
175
163
  self << e
176
164
  end
177
165
 
166
+ # @return self
178
167
  def to_sorted_set
179
168
  self
180
169
  end
@@ -183,32 +172,36 @@ end # class
183
172
 
184
173
 
185
174
 
186
-
175
+ # ===========================================================================================================================
176
+ #
187
177
 
188
178
  class Array
189
179
 
190
- # Liefert ein OrderedSet, das dem Array entspricht.
191
- # Übersicht über die verschiedenen Set-Klassen siehe Set.
192
- # Tests siehe TestKyaniteSet#test_ordered_set
180
+ # @!group Cast
181
+
182
+ # Returns {OrderedSet}, tests and examples {TestKyaniteSet#test_ordered_set here}.
183
+ # @return [OrderedSet]
193
184
  def to_ordered_set
194
185
  OrderedSet.new(self)
195
186
  end
196
187
 
197
- # Liefert ein SortedSet, das dem Array entspricht.
198
- # Übersicht über die verschiedenen Set-Klassen siehe Set.
199
- # Tests siehe TestKyaniteSet#test_sorted_set
188
+
189
+ # Returns {SortedSet}, tests and examples {TestKyaniteSet#test_sorted_set here}.
190
+ # @return [SortedSet]
200
191
  def to_sorted_set
201
192
  SortedSet.new(self)
202
193
  end
203
194
 
195
+ # @!endgroup
204
196
 
205
197
  end # class
206
198
 
207
199
 
208
200
  class Object
209
201
 
210
- # Liefert ein Set mit einem Element
211
- #
202
+
203
+ # Returns {Set} with one element
204
+ # @return [Set] with one element
212
205
  def to_set; Set.new([self]); end
213
206
 
214
207
  end