kyanite 0.5.0 → 0.5.1
Sign up to get free protection for your applications and to get access to all the features.
- 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