kyanite 0.5.0 → 0.5.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.
- data/Div +1 -7
- data/History.txt +3 -0
- data/Manifest.txt +0 -5
- data/README.txt +6 -6
- data/Rakefile.rb +27 -34
- data/lib/kyanite/array/array.rb +2 -9
- data/lib/kyanite/array/array2.rb +5 -5
- data/lib/kyanite/array/matrix2.rb +13 -13
- data/lib/kyanite/array.rb +1 -0
- data/lib/kyanite/array_of_enumerables.rb +1 -1
- data/lib/kyanite/array_of_numerics.rb +1 -1
- data/lib/kyanite/array_of_strings.rb +1 -1
- data/lib/kyanite/basics.rb +1 -2
- data/lib/kyanite/dictionary.rb +4 -4
- data/lib/kyanite/enumerable/enumerable_enumerables.rb +5 -5
- data/lib/kyanite/enumerable/enumerable_numerics.rb +4 -4
- data/lib/kyanite/enumerable/enumerable_strings.rb +6 -5
- data/lib/kyanite/enumerable/structure.rb +28 -25
- data/lib/kyanite/enumerable.rb +1 -1
- data/lib/kyanite/general/callerutils.rb +1 -1
- data/lib/kyanite/general/classutils.rb +23 -24
- data/lib/kyanite/general/kernel.rb +6 -6
- data/lib/kyanite/general/nil.rb +4 -4
- data/lib/kyanite/general/object.rb +1 -1
- data/lib/kyanite/general/true_false.rb +1 -1
- data/lib/kyanite/general/undoable.rb +7 -7
- data/lib/kyanite/general.rb +1 -1
- data/lib/kyanite/hash.rb +22 -22
- data/lib/kyanite/matrix2.rb +1 -1
- data/lib/kyanite/nil.rb +1 -1
- data/lib/kyanite/numeric/float.rb +1 -1
- data/lib/kyanite/numeric/integer.rb +7 -7
- data/lib/kyanite/numeric/numeric.rb +9 -9
- data/lib/kyanite/numeric.rb +1 -1
- data/lib/kyanite/operation/call_tracker.rb +1 -1
- data/lib/kyanite/operation/regexp.rb +1 -1
- data/lib/kyanite/operation/unit_test.rb +1 -1
- data/lib/kyanite/operation.rb +1 -1
- data/lib/kyanite/optimizer.rb +4 -4
- data/lib/kyanite/rake.rb +1 -1
- data/lib/kyanite/range.rb +4 -4
- data/lib/kyanite/set.rb +4 -6
- data/lib/kyanite/string/cast.rb +4 -4
- data/lib/kyanite/string/chars.rb +5 -5
- data/lib/kyanite/string/diff.rb +1 -1
- data/lib/kyanite/string/div.rb +1 -1
- data/lib/kyanite/string/include.rb +6 -6
- data/lib/kyanite/string/list.rb +1 -1
- data/lib/kyanite/string/nested.rb +1 -1
- data/lib/kyanite/string/split.rb +3 -3
- data/lib/kyanite/string.rb +1 -1
- data/lib/kyanite/symbol.rb +1 -1
- data/lib/kyanite/tree.rb +1 -1
- data/lib/kyanite/undoable.rb +1 -1
- data/lib/kyanite/unit_test.rb +1 -1
- data/lib/kyanite.rb +6 -6
- data/test/string/test_list.rb +2 -1
- data/test/test_hash.rb +1 -1
- data/test/test_range.rb +2 -1
- metadata +3 -8
- data/0_rake_test.bat +0 -13
- data/1_rake_install_gem.bat +0 -20
- data/3_rake_deploy.bat +0 -4
- data/4_ruby_script_console.bat +0 -13
- data/lib/kyanite/operation/rake.rb +0 -119
data/Div
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
# ruby encoding: utf-8
|
1
2
|
|
2
3
|
[ | *Kyanite* | Object | Array | Set | Enumerable | Hash | ] | Kyanite | TrueClass | FalseClass | NilClass | *Div* |
|
3
4
|
[ ] | *Div* | Tree::TreeNode | Optimizer |
|
@@ -9,13 +10,6 @@
|
|
9
10
|
* Undoable Undo für komplexe Objekte
|
10
11
|
|
11
12
|
|
12
|
-
== *Rake*
|
13
|
-
Beispiele siehe Rakefile.rb
|
14
|
-
* Methode remove_task, um Tasks überschreiben zu können
|
15
|
-
* Tasks werden beim Auflisten nach Namespace gruppiert, nicht verwendete Tasks lassen sich ausblenden,
|
16
|
-
* neuer Rake Task sleep_5
|
17
|
-
|
18
|
-
|
19
13
|
== *Unit* *Tests*
|
20
14
|
Die Klasse UnitTest enthält Ergänzungen zu Test::Unit::TestCase:
|
21
15
|
* Statusanzeige für durchlaufende Tests
|
data/History.txt
CHANGED
data/Manifest.txt
CHANGED
@@ -1,7 +1,3 @@
|
|
1
|
-
0_rake_test.bat
|
2
|
-
1_rake_install_gem.bat
|
3
|
-
3_rake_deploy.bat
|
4
|
-
4_ruby_script_console.bat
|
5
1
|
Div
|
6
2
|
History.txt
|
7
3
|
License.txt
|
@@ -42,7 +38,6 @@ lib/kyanite/numeric/integer.rb
|
|
42
38
|
lib/kyanite/numeric/numeric.rb
|
43
39
|
lib/kyanite/operation.rb
|
44
40
|
lib/kyanite/operation/call_tracker.rb
|
45
|
-
lib/kyanite/operation/rake.rb
|
46
41
|
lib/kyanite/operation/regexp.rb
|
47
42
|
lib/kyanite/operation/unit_test.rb
|
48
43
|
lib/kyanite/optimizer.rb
|
data/README.txt
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
# ruby encoding: utf-8
|
1
2
|
|
2
3
|
= *Kyanite*
|
3
4
|
|
@@ -10,7 +11,6 @@ http://kyanite.rubyforge.org
|
|
10
11
|
== Features
|
11
12
|
Kyanite is a general toolbox like Facets or ActiveSupport.
|
12
13
|
* Transparent nil Handling, see NilClass
|
13
|
-
* Beautiful Rake, see Div
|
14
14
|
* Comfortable UnitTests, see Div
|
15
15
|
|
16
16
|
|
@@ -22,17 +22,17 @@ Kyanite is a general toolbox like Facets or ActiveSupport.
|
|
22
22
|
|
23
23
|
|
24
24
|
== License
|
25
|
-
|
26
|
-
|
27
|
-
|
25
|
+
cc-by-sa
|
26
|
+
Creative Commons Attribution-Share Alike 3.0 Germany
|
27
|
+
http://creativecommons.org/licenses/by-sa/3.0/de/deed.en
|
28
28
|
|
29
29
|
|
30
30
|
== Homepage
|
31
|
-
|
31
|
+
http://kyanite.rubyforge.org
|
32
32
|
|
33
33
|
|
34
34
|
== Author
|
35
|
-
|
35
|
+
Björn Klippstein
|
36
36
|
|
37
37
|
|
38
38
|
== Disclaimer
|
data/Rakefile.rb
CHANGED
@@ -1,65 +1,58 @@
|
|
1
|
-
|
2
|
-
# ----------------------------------------------------------------------------------------------
|
3
|
-
# Deploy
|
4
|
-
#
|
1
|
+
# ruby encoding: utf-8
|
5
2
|
|
6
3
|
require 'rubygems'
|
7
4
|
require 'hoe'
|
8
|
-
require
|
9
|
-
#
|
5
|
+
require 'rake'
|
6
|
+
# require File.dirname(__FILE__) + '/lib/kyanite'
|
7
|
+
# require 'kyanite/rake'
|
10
8
|
|
11
9
|
|
10
|
+
|
11
|
+
# ----------------------------------------------------------------------------------------------
|
12
|
+
# Deploy
|
13
|
+
#
|
14
|
+
# http://nubyonrails.com/articles/tutorial-publishing-rubygems-with-hoe
|
15
|
+
#
|
12
16
|
$hoe = Hoe.spec 'kyanite' do | p |
|
13
17
|
|
14
18
|
# self.rubyforge_name = 'yourgemx' # if different than 'yourgem'
|
15
19
|
|
16
20
|
p.developer('Bjoern Klippstein', 'klippstein@klippstein.com')
|
21
|
+
p.summary = 'General toolbox like Facets or ActiveSupport.'
|
22
|
+
p.url = 'http://kyanite.rubyforge.org'
|
17
23
|
p.remote_rdoc_dir = '' # Release to root only one project
|
18
24
|
p.extra_deps = [ ['activesupport', '>= 3.2.8'],
|
19
25
|
['facets', '>= 2.9.3'],
|
20
26
|
['rubytree', '>= 0.8.3'] ]
|
21
|
-
|
22
|
-
# p.author = 'Bjoern Klippstein'
|
23
|
-
# p.email = 'bjoernklippstein@gmail.com'
|
24
|
-
# p.url = 'http://rapidrubyonrails.de'
|
25
|
-
# p.url = 'http://kyanite.rubyforge.org'
|
26
|
-
|
27
|
-
# p.rubyforge_name = p.name
|
28
|
-
# p.summary = 'General toolbox like Facets or ActiveSupport.'
|
29
|
-
# p.changes = p.paragraphs_of("History.txt", 0..1).join("\n\n")
|
30
|
-
# p.clean_globs |= %w[**/.DS_Store tmp *.log]
|
31
|
-
# path = (p.rubyforge_name == p.name) ? p.rubyforge_name : "\#{p.rubyforge_name}/\#{p.name}"
|
32
|
-
# p.rsync_args = "-av --delete --exclude=statsvn/"
|
27
|
+
|
33
28
|
end
|
34
29
|
|
35
30
|
|
36
31
|
|
37
32
|
|
38
33
|
# ----------------------------------------------------------------------------------------------
|
39
|
-
#
|
34
|
+
# Local Tasks
|
40
35
|
#
|
41
36
|
|
42
|
-
#
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
#
|
37
|
+
# remove_task 'release_to_gemcutter'
|
38
|
+
# remove_task 'ridocs'
|
39
|
+
# Dir['tasks/**/*.rake'].each { |t| load t }
|
40
|
+
# remove_task 'rdoc'
|
41
|
+
# remove_task 'docs'
|
42
|
+
# remove_task 'audit'
|
43
|
+
# remove_task 'dcov'
|
44
|
+
# remove_task 'debug_email'
|
45
|
+
# remove_task 'debug_gem'
|
46
|
+
# remove_task 'default'
|
47
|
+
# remove_task 'deps:email'
|
48
|
+
# remove_task 'multi'
|
49
|
+
# remove_task 'newb'
|
49
50
|
|
50
51
|
|
51
52
|
|
52
53
|
|
53
|
-
# ----------------------------------------------------------------------------------------------
|
54
|
-
# Local Tasks
|
55
|
-
#
|
56
|
-
|
57
|
-
# require 'newgem/tasks' # load /tasks/*.rake
|
58
|
-
# Dir['tasks/**/*.rake'].each { |t| load t }
|
59
54
|
|
60
55
|
|
61
|
-
# TODO - want other tests/tasks run by default? Add them to the list
|
62
|
-
# task :default => [:spec, :features]
|
63
56
|
|
64
57
|
|
65
58
|
|
data/lib/kyanite/array/array.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
|
1
|
+
# ruby encoding: utf-8
|
2
2
|
require 'facets/array/delete' # Methoden delete_unless, delete_values, delete_values_at
|
3
3
|
require 'facets/array/rotate' # Methoden rotate, rotate!
|
4
4
|
require 'facets/array/select' # Methode select!
|
@@ -15,7 +15,7 @@ require 'kyanite/symbol' # size
|
|
15
15
|
# ---
|
16
16
|
#
|
17
17
|
# == *Tools* *And* *Casts* *For* *Array*
|
18
|
-
#
|
18
|
+
# See TestKyaniteArray for tests and examples.
|
19
19
|
#
|
20
20
|
#
|
21
21
|
# Aus {Facets/Array}[http://facets.rubyforge.org/doc/api/core/classes/Array.html] eingefügt:
|
@@ -87,13 +87,6 @@ class Array
|
|
87
87
|
|
88
88
|
|
89
89
|
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
90
|
|
98
91
|
|
99
92
|
|
data/lib/kyanite/array/array2.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
|
1
|
+
# ruby encoding: utf-8
|
2
2
|
require 'kyanite/array/array'
|
3
3
|
|
4
4
|
class Array
|
@@ -18,7 +18,7 @@ class NilClass
|
|
18
18
|
def row_to_nil; nil; end
|
19
19
|
end
|
20
20
|
|
21
|
-
# Ein Array2 ist eine spezielle Form von Array,
|
21
|
+
# Ein Array2 ist eine spezielle Form von Array, nämlich immer zweidimensional. Siehe auch Matrix2!
|
22
22
|
#
|
23
23
|
# Ein Array2 kann <b>in jeder Zeile eine verschiedene Anzahl Spalten </b> haben (im Gegensatz zu Instanzen der Klasse Matrix2!)
|
24
24
|
# Jede Zeile hat einen Zeilenheader (Zelle 0), einen Spaltenheader gibt es nicht.
|
@@ -36,7 +36,7 @@ class Array2 < Array
|
|
36
36
|
end
|
37
37
|
|
38
38
|
|
39
|
-
# Liefert eine bestimmte Zeile
|
39
|
+
# Liefert eine bestimmte Zeile zurück.
|
40
40
|
#
|
41
41
|
# Tests: TestMatrix2#test_matrix_zellen_und_zeilen
|
42
42
|
def row(i)
|
@@ -74,8 +74,8 @@ class Array2 < Array
|
|
74
74
|
|
75
75
|
|
76
76
|
# Liefert eine bereinigte Kopie des Array2.
|
77
|
-
# Level=0:: Platzhalter
|
78
|
-
# Level=1:: Zeilen ohne Zeilenheader werden
|
77
|
+
# Level=0:: Platzhalter für den More-Link durch echten More-Link ersetzen
|
78
|
+
# Level=1:: Zeilen ohne Zeilenheader werden gelöscht
|
79
79
|
#
|
80
80
|
def clean4view(level = 0)
|
81
81
|
new = self.collect { |zeile|
|
@@ -1,18 +1,18 @@
|
|
1
|
-
|
1
|
+
# ruby encoding: utf-8
|
2
2
|
require 'kyanite/array/array2'
|
3
3
|
|
4
|
-
# Datenstruktur
|
4
|
+
# Datenstruktur für streng-zweidimensionale Matritzen. Erbt die Methoden von Array2 und Array. Beispiele siehe TestMatrix2.
|
5
5
|
#
|
6
6
|
# Eine Matrix2 ist eine spezielle Form von Array2, sie hat <b>in jeder Zeile die gleiche Anzahl Spalten</b>.
|
7
7
|
# Jede Zeile hat einen Zeilenheader row(0), jede Spalte einen Spaltenheader column(0).
|
8
8
|
#
|
9
|
-
# Man
|
9
|
+
# Man könnte auch die Standard-Library Matrix verwenden, aber die ist langsam, fehlerhaft und eher auf numerische Werte zugeschnitten denn auf beliebige Objekte.
|
10
10
|
#
|
11
11
|
# noch nicht implementiert: append!(top | bottom | left | right)
|
12
12
|
class Matrix2 < Array2
|
13
13
|
|
14
|
-
# Liefert eine bestimmte Spalte
|
15
|
-
# Dabei wird die Matrix2 vorher mit clean4view!(0) behandelt, d.h. sie
|
14
|
+
# Liefert eine bestimmte Spalte zurück.
|
15
|
+
# Dabei wird die Matrix2 vorher mit clean4view!(0) behandelt, d.h. sie verändert sich ggf.!
|
16
16
|
#
|
17
17
|
# Tests: TestMatrix2#test_spalten
|
18
18
|
def column(j)
|
@@ -22,7 +22,7 @@ class Matrix2 < Array2
|
|
22
22
|
|
23
23
|
|
24
24
|
# Setzt den Wert einer Spalte.
|
25
|
-
# Dabei wird die Matrix2 vorher mit clean4view!(0) behandelt, d.h. sie
|
25
|
+
# Dabei wird die Matrix2 vorher mit clean4view!(0) behandelt, d.h. sie verändert sich ggf.!
|
26
26
|
#
|
27
27
|
# Tests: TestMatrix2#test_spalten
|
28
28
|
def set_column!(j,wert)
|
@@ -35,22 +35,22 @@ class Matrix2 < Array2
|
|
35
35
|
return wertdup
|
36
36
|
end
|
37
37
|
|
38
|
-
# Wieviele Spalten hat die Tabelle?
|
38
|
+
# Wieviele Spalten hat die Tabelle? Maßgeblich dafür ist die Header-Spalte!
|
39
39
|
def column_size
|
40
40
|
self[0].size
|
41
41
|
end
|
42
42
|
|
43
43
|
|
44
44
|
# Liefert eine bereinigte Kopie der Matrix2.
|
45
|
-
# Level=0:: Resize to Header, d.h. alle Zeilen werden auf die
|
46
|
-
# Level=1:: Zeilen ohne Zeilenheader werden
|
47
|
-
# Level=2:: Spalten ohne Spaltenheader werden
|
45
|
+
# Level=0:: Resize to Header, d.h. alle Zeilen werden auf die Länge der ersten Zeile angepasst (beschnitten oder mit nil aufgefüllt)
|
46
|
+
# Level=1:: Zeilen ohne Zeilenheader werden gelöscht
|
47
|
+
# Level=2:: Spalten ohne Spaltenheader werden gelöscht
|
48
48
|
#
|
49
49
|
# Test: TestMatrix2#test_resize_to_header
|
50
50
|
#
|
51
51
|
def clean4view(level = 0)
|
52
52
|
|
53
|
-
# Level 0 : Resize to Header, d.h. alle Zeilen werden auf die
|
53
|
+
# Level 0 : Resize to Header, d.h. alle Zeilen werden auf die Länge der ersten Zeile angepasst (beschnitten oder mit nil aufgefüllt)
|
54
54
|
cs = self.column_size
|
55
55
|
new = self.collect { |zeile|
|
56
56
|
zs = zeile.size
|
@@ -64,13 +64,13 @@ class Matrix2 < Array2
|
|
64
64
|
return Matrix2.new(new) if level == 0 # Level 0
|
65
65
|
|
66
66
|
|
67
|
-
#Level 1 : Zeilen ohne Zeilenheader werden
|
67
|
+
#Level 1 : Zeilen ohne Zeilenheader werden gelöscht
|
68
68
|
new.collect! { | zeile | zeile.row_to_nil }
|
69
69
|
new.compact!
|
70
70
|
return Matrix2.new(new) if level == 1 # Level 1
|
71
71
|
|
72
72
|
|
73
|
-
# Level 2 : Spalten ohne Spaltenheader werden
|
73
|
+
# Level 2 : Spalten ohne Spaltenheader werden gelöscht
|
74
74
|
new.transpose!
|
75
75
|
new.collect! { | spalte | spalte.row_to_nil }
|
76
76
|
new.compact!
|
data/lib/kyanite/array.rb
CHANGED
@@ -1,2 +1,2 @@
|
|
1
|
-
|
1
|
+
# ruby encoding: utf-8
|
2
2
|
require 'kyanite/enumerable/enumerable_enumerables'
|
@@ -1,2 +1,2 @@
|
|
1
|
-
|
1
|
+
# ruby encoding: utf-8
|
2
2
|
require 'kyanite/enumerable/enumerable_numerics'
|
@@ -1,2 +1,2 @@
|
|
1
|
-
|
1
|
+
# ruby encoding: utf-8
|
2
2
|
require 'kyanite/enumerable/enumerable_strings'
|
data/lib/kyanite/basics.rb
CHANGED
data/lib/kyanite/dictionary.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
|
1
|
+
# ruby encoding: utf-8
|
2
2
|
require 'hashery' # old: 'facets/dictionary'
|
3
3
|
require 'kyanite/enumerable' # is_collection?
|
4
4
|
|
@@ -9,9 +9,9 @@ require 'kyanite/enumerable' # is_collection?
|
|
9
9
|
#
|
10
10
|
#
|
11
11
|
# == *Tools* *For* *Facets* *Dictionary*
|
12
|
-
#
|
13
|
-
#
|
14
|
-
#
|
12
|
+
# A Dictionary is a ordered Hash.
|
13
|
+
# Expands {Facets/Dictionary}[http://facets.rubyforge.org/doc/api/more/classes/Dictionary.html].
|
14
|
+
# See TestKyaniteDictionary for tests and examples.
|
15
15
|
#
|
16
16
|
#
|
17
17
|
class Dictionary < Hashery::Dictionary
|
@@ -15,9 +15,9 @@ end
|
|
15
15
|
#
|
16
16
|
#
|
17
17
|
# == *Enumeration* *Of* *Enumerations*
|
18
|
-
#
|
19
|
-
#
|
20
|
-
#
|
18
|
+
# Für zweidimensionale Enumerables bzw. Aufzählungen von Objekten, die wiederum aufzählbar sind.
|
19
|
+
# See TestKyaniteEnumerableEnumerables for tests and examples.
|
20
|
+
# See ArrayOfEnumerables for an Array with modul EnumerableEnumerables included.
|
21
21
|
#
|
22
22
|
#
|
23
23
|
module EnumerableEnumerables
|
@@ -51,8 +51,8 @@ end
|
|
51
51
|
#
|
52
52
|
#
|
53
53
|
# == *Array* *Of* *Enumerations*
|
54
|
-
#
|
55
|
-
#
|
54
|
+
# An ArrayOfEnumerables is an Array with modul EnumerableEnumerables included.
|
55
|
+
# See TestKyaniteEnumerableEnumerables for tests and examples.
|
56
56
|
#
|
57
57
|
class ArrayOfEnumerables < Array
|
58
58
|
include EnumerableEnumerables
|
@@ -5,8 +5,8 @@
|
|
5
5
|
#
|
6
6
|
#
|
7
7
|
# == *Enumeration* *Of* *Numerics*
|
8
|
-
#
|
9
|
-
#
|
8
|
+
# See TestKyaniteEnumerableNumerics for tests and examples.
|
9
|
+
# See ArrayOfNumerics for an Array with modul EnumerableNumerics included.
|
10
10
|
#
|
11
11
|
#
|
12
12
|
module EnumerableNumerics
|
@@ -119,8 +119,8 @@ end #class
|
|
119
119
|
#
|
120
120
|
#
|
121
121
|
# == *Array* *Of* *Numerics*
|
122
|
-
#
|
123
|
-
#
|
122
|
+
# An ArrayOfNumerics is an Array with modul EnumerableNumerics included.
|
123
|
+
# See TestKyaniteEnumerableNumerics for tests and examples.
|
124
124
|
#
|
125
125
|
class ArrayOfNumerics < Array
|
126
126
|
include EnumerableNumerics
|
@@ -1,12 +1,13 @@
|
|
1
|
-
# ruby encoding: utf-8
|
1
|
+
# ruby encoding: utf-8
|
2
|
+
# ü
|
2
3
|
|
3
4
|
# [ | Kyanite | Object | Array | Set | *Enumerable* | Hash | ] | Enumerable | EnumerableNumerics | *EnumerableStrings* | EnumerableEnumerables |
|
4
5
|
# ---
|
5
6
|
#
|
6
7
|
#
|
7
8
|
# == *Enumeration* *Of* *Strings*
|
8
|
-
#
|
9
|
-
#
|
9
|
+
# See TestKyaniteEnumerableStrings for tests and examples.
|
10
|
+
# See ArrayOfStrings for an Array with modul EnumerableStrings included.
|
10
11
|
#
|
11
12
|
#
|
12
13
|
module EnumerableStrings
|
@@ -42,8 +43,8 @@ end
|
|
42
43
|
#
|
43
44
|
#
|
44
45
|
# == *Array* *Of* *Strings*
|
45
|
-
#
|
46
|
-
#
|
46
|
+
# An ArrayOfstrings is an Array with modul EnumerableStrings included.
|
47
|
+
# See TestKyaniteEnumerableStrings for tests and examples.
|
47
48
|
#
|
48
49
|
class ArrayOfStrings < Array
|
49
50
|
include EnumerableStrings
|
@@ -1,15 +1,18 @@
|
|
1
1
|
# ruby encoding: utf-8
|
2
|
+
require File.join(File.dirname(__FILE__), '..', '..', '..', 'smart_load_path.rb' ); smart_load_path if $0 == __FILE__
|
2
3
|
|
3
4
|
require 'kyanite/general/object'
|
4
5
|
require 'kyanite/array/array'
|
6
|
+
require 'kyanite/dictionary'
|
7
|
+
|
5
8
|
|
6
9
|
|
7
10
|
|
8
11
|
class Object
|
9
12
|
|
10
|
-
#
|
11
|
-
#
|
12
|
-
#
|
13
|
+
# Enthält ein Objekt mehrere Objekte?
|
14
|
+
# String und Range gelten nicht als Collection.
|
15
|
+
# See TestKyaniteEnumerableStructure for tests and examples.
|
13
16
|
def is_collection?; false; end
|
14
17
|
|
15
18
|
end
|
@@ -17,10 +20,10 @@ end
|
|
17
20
|
|
18
21
|
module Enumerable
|
19
22
|
|
20
|
-
#
|
21
|
-
#
|
22
|
-
#
|
23
|
-
#
|
23
|
+
# Enthält ein Objekt mehrere Objekte?
|
24
|
+
# Rückgabe: true
|
25
|
+
# String und Range gelten nicht als Collection.
|
26
|
+
# See TestKyaniteEnumerableStructure for tests and examples.
|
24
27
|
def is_collection?; true; end
|
25
28
|
|
26
29
|
end
|
@@ -32,10 +35,10 @@ class String
|
|
32
35
|
# :section: Structure
|
33
36
|
#
|
34
37
|
|
35
|
-
#
|
36
|
-
#
|
37
|
-
#
|
38
|
-
#
|
38
|
+
# Enthält ein Objekt mehrere Objekte?
|
39
|
+
# Rückgabe: false
|
40
|
+
# String und Range gelten nicht als Collection.
|
41
|
+
# See TestKyaniteEnumerableStructure for tests and examples.
|
39
42
|
def is_collection?; false; end
|
40
43
|
|
41
44
|
|
@@ -44,10 +47,10 @@ end
|
|
44
47
|
|
45
48
|
class Range
|
46
49
|
|
47
|
-
#
|
48
|
-
#
|
49
|
-
#
|
50
|
-
#
|
50
|
+
# Enthält ein Objekt mehrere Objekte?
|
51
|
+
# Rückgabe: false
|
52
|
+
# String und Range gelten nicht als Collection.
|
53
|
+
# See TestKyaniteEnumerableStructure for tests and examples.
|
51
54
|
def is_collection?; false; end
|
52
55
|
|
53
56
|
end
|
@@ -63,16 +66,16 @@ end
|
|
63
66
|
#
|
64
67
|
#
|
65
68
|
# == *General* *Enumerations*
|
66
|
-
#
|
69
|
+
# See TestKyaniteEnumerableStructure for tests and examples.
|
67
70
|
#
|
68
71
|
#
|
69
72
|
module Enumerable
|
70
73
|
|
71
|
-
#
|
72
|
-
#
|
73
|
-
#
|
74
|
-
#
|
75
|
-
#
|
74
|
+
# Liefert die Verteilung der size
|
75
|
+
# oder die Verteilung der class
|
76
|
+
# oder die Verteilung eines anderen Merkmals der aufgezählten Elemente.
|
77
|
+
# die Methode gibt es auch als Hash#distribution.
|
78
|
+
# See TestKyaniteEnumerableStructure for tests and examples.
|
76
79
|
#
|
77
80
|
def distribution( mode = :size)
|
78
81
|
verteilung = Hash.new
|
@@ -135,7 +138,7 @@ module Enumerable
|
|
135
138
|
end
|
136
139
|
|
137
140
|
when :all
|
138
|
-
unless ( self.kind_of?(Hash) || self.kind_of?(Dictionary) )
|
141
|
+
unless ( self.kind_of?(Hash) || self.kind_of?(Hashery::Dictionary) )
|
139
142
|
c = self.collect {|e| e.class}
|
140
143
|
else
|
141
144
|
c = self.collect {| key, value | value.class}
|
@@ -174,14 +177,14 @@ end #module
|
|
174
177
|
#
|
175
178
|
if $0 == __FILE__
|
176
179
|
|
177
|
-
require 'kyanite/smart_load_path'; smart_load_path
|
178
180
|
class Array
|
179
181
|
include Enumerable
|
180
182
|
end
|
181
183
|
|
182
184
|
|
183
|
-
test = [ ]
|
184
|
-
|
185
|
+
test = [ 1,2,3]
|
186
|
+
puts "Hallo"
|
187
|
+
puts test.contentclass(:precision => :all)
|
185
188
|
|
186
189
|
|
187
190
|
|
data/lib/kyanite/enumerable.rb
CHANGED