kyanite 0.3.7 → 0.4.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.
- data/0_rake_test.bat +12 -0
- data/1_rake_install_gem.bat +20 -0
- data/3_rake_deploy.bat +4 -0
- data/4_ruby_script_console.bat +12 -0
- data/Div +23 -0
- data/History.txt +4 -2
- data/License.txt +21 -2
- data/Manifest.txt +46 -29
- data/README.txt +26 -33
- data/Rakefile.rb +6 -6
- data/config/website.yml +2 -0
- data/lib/kyanite.rb +46 -2
- data/lib/kyanite/array/array.rb +15 -14
- data/lib/kyanite/array/array2.rb +1 -1
- data/lib/kyanite/dictionary.rb +17 -2
- data/lib/kyanite/enumerable/enumerable_enumerables.rb +19 -9
- data/lib/kyanite/enumerable/enumerable_numerics.rb +25 -19
- data/lib/kyanite/enumerable/enumerable_strings.rb +14 -6
- data/lib/kyanite/enumerable/structure.rb +45 -29
- data/lib/kyanite/general/callerutils.rb +9 -1
- data/lib/kyanite/general/classutils.rb +59 -78
- data/lib/kyanite/general/kernel.rb +21 -3
- data/lib/kyanite/general/nil.rb +34 -12
- data/lib/kyanite/general/object.rb +25 -3
- data/lib/kyanite/general/true_false.rb +28 -10
- data/lib/kyanite/general/undoable.rb +24 -0
- data/lib/kyanite/hash.rb +43 -28
- data/lib/kyanite/numeric/float.rb +12 -5
- data/lib/kyanite/numeric/integer.rb +16 -9
- data/lib/kyanite/numeric/numeric.rb +19 -11
- data/lib/kyanite/operation/regexp.rb +5 -1
- data/lib/kyanite/optimizer.rb +31 -16
- data/lib/kyanite/range.rb +15 -8
- data/lib/kyanite/set.rb +35 -6
- data/lib/kyanite/string/cast.rb +18 -7
- data/lib/kyanite/string/chars.rb +24 -17
- data/lib/kyanite/string/diff.rb +14 -5
- data/lib/kyanite/string/div.rb +8 -1
- data/lib/kyanite/string/include.rb +13 -5
- data/lib/kyanite/string/list.rb +3 -3
- data/lib/kyanite/string/mgsub.rb +6 -2
- data/lib/kyanite/string/nested.rb +22 -3
- data/lib/kyanite/string/random.rb +4 -0
- data/lib/kyanite/string/split.rb +15 -7
- data/lib/kyanite/symbol.rb +14 -0
- data/lib/kyanite/tree.rb +10 -4
- data/script/console +10 -0
- data/script/console.cmd +1 -0
- data/script/destroy +14 -0
- data/script/destroy.cmd +1 -0
- data/script/generate +14 -0
- data/script/generate.cmd +1 -0
- data/script/txt2html +82 -0
- data/script/txt2html.cmd +1 -0
- data/tasks/deployment.rake +92 -0
- data/tasks/documentation.rake +28 -0
- data/tasks/environment.rake +7 -0
- data/test/array/test_matrix2.rb +1 -0
- data/test/enumerable/test_enumerable_numerics.rb +3 -2
- data/test/general/test_classutils.rb +3 -0
- data/test/general/test_nil.rb +1 -0
- data/test/general/test_object.rb +2 -1
- data/test/general/test_true_false.rb +1 -0
- data/test/numeric/test_numeric_integer.rb +2 -0
- data/test/string/test_cast.rb +4 -0
- data/test/string/test_chars.rb +3 -0
- data/test/string/test_diff.rb +3 -0
- data/test/string/test_list.rb +2 -0
- data/test/string/test_nested.rb +2 -0
- data/test/string/test_split.rb +3 -0
- data/test/test_dictionary.rb +3 -0
- data/test/test_hash.rb +2 -0
- data/test/test_optimizer.rb +14 -14
- data/test/test_range.rb +1 -0
- data/test/test_tree.rb +1 -1
- metadata +48 -31
@@ -11,7 +11,18 @@ unless defined? RUBYDIR
|
|
11
11
|
end
|
12
12
|
|
13
13
|
|
14
|
-
|
14
|
+
|
15
|
+
|
16
|
+
# [ | Kyanite | *Object* | Array | Set | Enumerable | Hash | ] | *Object* | String | Symbol | Numeric |
|
17
|
+
# [ ] | Object | *KKernel* | CallerUtils | Undoable | Class |
|
18
|
+
#
|
19
|
+
# ---
|
20
|
+
#
|
21
|
+
#
|
22
|
+
# == *General* *Tools*
|
23
|
+
#
|
24
|
+
#
|
25
|
+
module KKernel
|
15
26
|
|
16
27
|
# Wiederholt einen Block so lange, bis die Zeit abgelaufen ist.
|
17
28
|
# Liefert die Anzahl der Durchläufe, die in dieser Zeit möglich waren.
|
@@ -37,7 +48,10 @@ module KyaniteKernel
|
|
37
48
|
|
38
49
|
|
39
50
|
|
40
|
-
|
51
|
+
|
52
|
+
# [ ] Stellt für den nachfolgenden Block die Ruby-Warnungen ab.
|
53
|
+
# [ ] Nützlich, um z.B. Konstanten zu überschreiben.
|
54
|
+
# [ ] Quelle: Rails http://api.rubyonrails.org/classes/Kernel.html#M001639
|
41
55
|
def silence_warnings
|
42
56
|
old_verbose, $VERBOSE = $VERBOSE, nil
|
43
57
|
yield
|
@@ -46,6 +60,10 @@ module KyaniteKernel
|
|
46
60
|
end
|
47
61
|
|
48
62
|
|
63
|
+
|
64
|
+
# [ ] Vereinfacht die require-Statements in den Tests.
|
65
|
+
# [ ] Wird in allen Kyanite-Tests angewendet, Verwendung siehe dort.
|
66
|
+
#
|
49
67
|
def smart_load_path(__file__ = nil)
|
50
68
|
__file__ = caller[0] unless __file__
|
51
69
|
dir_caller =File.dirname(__file__)
|
@@ -76,7 +94,7 @@ module KyaniteKernel
|
|
76
94
|
end # class
|
77
95
|
|
78
96
|
class Object
|
79
|
-
include
|
97
|
+
include KKernel
|
80
98
|
end
|
81
99
|
|
82
100
|
|
data/lib/kyanite/general/nil.rb
CHANGED
@@ -1,23 +1,46 @@
|
|
1
1
|
|
2
|
-
|
3
|
-
#
|
4
|
-
#
|
2
|
+
# [ | *Kyanite* | Object | Array | Set | Enumerable | Hash | ] | Kyanite | TrueClass | FalseClass | *NilClass* | Div |
|
3
|
+
#
|
4
|
+
# ---
|
5
|
+
#
|
6
|
+
#
|
7
|
+
# == *Transparent* *Nil*
|
8
|
+
# Nil nervt oft. Zwar ist es ein schöner Fehlerindikator
|
9
|
+
# (meist läuft irgendwas schief wenn man es unerwartet mit nil zu tun hat)
|
10
|
+
# aber man verunstaltet seinen Quellcode schnell mit Fallunterscheidungen, die den nil-Fall behandeln.
|
11
|
+
#
|
12
|
+
# [ ] In Kyanite werden daher zahlreiche Methoden für nil definiert.
|
13
|
+
# [ ] Nil verhält sich damit wie alle anderen Objekte auch.
|
14
|
+
# [ ] Man kann immer noch nach Nil fragen, wenn man es möchte, aber man muss es nicht mehr tun!
|
5
15
|
#
|
6
|
-
|
7
16
|
class NilClass
|
8
|
-
|
9
|
-
# Spezielle Rückgaben
|
10
17
|
|
18
|
+
# Rückgabe: Array mit dem einen Element
|
11
19
|
def <<(element); [element]; end
|
12
|
-
|
20
|
+
|
21
|
+
# Rückgabe: true
|
22
|
+
def empty?; true; end
|
23
|
+
|
24
|
+
# Rückgabe: 0
|
13
25
|
def length; 0; end
|
26
|
+
|
27
|
+
# Rückgabe: 0
|
14
28
|
def size; 0; end
|
29
|
+
|
30
|
+
# Rückgabe: 0
|
15
31
|
def count(*a); 0; end
|
32
|
+
|
33
|
+
# Rückgabe: leeres Array
|
16
34
|
def split(*a); []; end
|
35
|
+
|
36
|
+
# Rückgabe: false
|
17
37
|
def =~(other); false; end
|
18
|
-
def include?(*a); false; end # redundante Definition
|
19
38
|
|
20
|
-
# Rückgabe
|
39
|
+
# Rückgabe: false
|
40
|
+
# redundante Definition!
|
41
|
+
def include?(*a); false; end
|
42
|
+
|
43
|
+
|
21
44
|
def -(other); nil; end
|
22
45
|
def +(other); nil; end
|
23
46
|
def <(*a); nil; end
|
@@ -32,12 +55,10 @@ class NilClass
|
|
32
55
|
def downcase; nil; end
|
33
56
|
def dup; nil; end
|
34
57
|
def each(*a); nil; end
|
35
|
-
# def first; nil; end
|
36
58
|
def grep(*a); nil; end
|
37
59
|
def gsub!(*a); nil; end
|
38
60
|
def gsub(*a); nil; end
|
39
|
-
def join; nil; end
|
40
|
-
# def last; nil; end
|
61
|
+
def join; nil; end
|
41
62
|
def pop(*a); nil; end
|
42
63
|
def push(*a); nil; end
|
43
64
|
def split(*a); nil; end
|
@@ -51,6 +72,7 @@ class NilClass
|
|
51
72
|
def uniq; nil; end
|
52
73
|
def [](*a); nil; end
|
53
74
|
def []=(*a); nil; end
|
75
|
+
|
54
76
|
|
55
77
|
end
|
56
78
|
|
@@ -3,22 +3,39 @@
|
|
3
3
|
$KCODE = 'UTF8'
|
4
4
|
require 'active_support'
|
5
5
|
|
6
|
+
|
7
|
+
# [ | Kyanite | *Object* | Array | Set | Enumerable | Hash | ] | *Object* | String | Symbol | Numeric |
|
8
|
+
# [ ] | *Object* | KKernel | CallerUtils | Undoable | Class |
|
9
|
+
#
|
10
|
+
# ---
|
11
|
+
#
|
12
|
+
#
|
13
|
+
# == *For* *All* *Objects*
|
14
|
+
# [ ] Tests and examples see TestKyaniteObject
|
15
|
+
#
|
16
|
+
#
|
6
17
|
class Object
|
7
18
|
|
8
19
|
# <tt> false </tt>
|
9
20
|
#
|
10
|
-
#
|
21
|
+
# Tests and examples see TestKyaniteObject
|
22
|
+
#
|
11
23
|
def blank?
|
12
24
|
false
|
13
25
|
end
|
14
26
|
|
27
|
+
|
15
28
|
# Quelle: Facets http://facets.rubyforge.org/quick/rdoc/core/classes/Kernel.html#M000379
|
29
|
+
#
|
16
30
|
def respond(sym, *args)
|
17
31
|
return nil if not respond_to?(sym)
|
18
32
|
send(sym, *args)
|
19
33
|
end
|
20
34
|
|
21
35
|
|
36
|
+
# Alternative zu Object#dup. Dupliziert auch Unterobjekte. Langsam.
|
37
|
+
# Wird z.B. für Undo-Operationen verwendet, siehe Modul Undoable.
|
38
|
+
#
|
22
39
|
def deep_copy
|
23
40
|
Marshal.load( Marshal.dump( self ) )
|
24
41
|
end
|
@@ -26,7 +43,8 @@ class Object
|
|
26
43
|
|
27
44
|
# Ist ein Objekt numerisch?
|
28
45
|
#
|
29
|
-
# Tests
|
46
|
+
# Tests and examples see TestKyaniteObject
|
47
|
+
#
|
30
48
|
def is_numeric?
|
31
49
|
Float self
|
32
50
|
rescue Exception => e
|
@@ -73,8 +91,12 @@ end
|
|
73
91
|
|
74
92
|
class NilClass
|
75
93
|
|
76
|
-
|
94
|
+
# Rückgabe: false
|
95
|
+
def blank?; false; end
|
96
|
+
|
97
|
+
# Rückgabe: false
|
77
98
|
def is_numeric?; false; end
|
99
|
+
|
78
100
|
def to_nil; nil; end
|
79
101
|
def to_nil_unless(*a); nil; end
|
80
102
|
def name_of_constant(*a); nil; end
|
@@ -1,21 +1,34 @@
|
|
1
1
|
|
2
|
-
|
2
|
+
# [ | *Kyanite* | Object | Array | Set | Enumerable | Hash | ] | Kyanite | *TrueClass* | FalseClass | NilClass | Div |
|
3
|
+
#
|
4
|
+
# ---
|
5
|
+
#
|
6
|
+
# == *True*
|
7
|
+
#
|
8
|
+
#
|
3
9
|
class TrueClass
|
4
10
|
|
5
|
-
|
11
|
+
|
12
|
+
# Rückgabe: 1
|
6
13
|
def to_i; 1; end
|
7
14
|
|
8
|
-
|
15
|
+
|
16
|
+
# Rückgabe: self
|
9
17
|
def strip; self; end
|
10
18
|
|
11
|
-
|
19
|
+
|
20
|
+
# Rückgabe: self
|
12
21
|
def dup; self; end
|
13
22
|
|
23
|
+
|
24
|
+
# see TestKyaniteTrueFalse#test_raumschiff_operator for tests
|
14
25
|
def <=>(other)
|
15
26
|
return 1 if ! other
|
16
27
|
return 0
|
17
28
|
end
|
18
29
|
|
30
|
+
|
31
|
+
# Rückgabe: false
|
19
32
|
def blank?; false; end
|
20
33
|
|
21
34
|
|
@@ -24,19 +37,24 @@ end # class
|
|
24
37
|
|
25
38
|
|
26
39
|
|
27
|
-
|
40
|
+
# [ | *Kyanite* | Object | Array | Set | Enumerable | Hash | ] | Kyanite | TrueClass | *FalseClass* | NilClass | Div |
|
41
|
+
#
|
42
|
+
# ---
|
43
|
+
#
|
44
|
+
# == *False*
|
45
|
+
#
|
28
46
|
class FalseClass
|
29
47
|
|
30
|
-
#
|
48
|
+
# Rückgabe: 0
|
31
49
|
def to_i; 0; end
|
32
50
|
|
33
|
-
#
|
51
|
+
# Rückgabe: self
|
34
52
|
def strip; self; end
|
35
53
|
|
36
|
-
#
|
54
|
+
# Rückgabe: self
|
37
55
|
def dup; self; end
|
38
56
|
|
39
|
-
#
|
57
|
+
# see TestKyaniteTrueFalse#test_raumschiff_operator for tests
|
40
58
|
def <=>(other)
|
41
59
|
return -1 if other
|
42
60
|
return 0
|
@@ -45,7 +63,7 @@ class FalseClass
|
|
45
63
|
|
46
64
|
# umdefiniert!
|
47
65
|
#
|
48
|
-
#
|
66
|
+
# TestKyaniteObject#test_blank
|
49
67
|
def blank?; self; end
|
50
68
|
|
51
69
|
|
@@ -1,21 +1,45 @@
|
|
1
1
|
|
2
|
+
|
3
|
+
# [ | Kyanite | *Object* | Array | Set | Enumerable | Hash | ] | *Object* | String | Symbol | Numeric | Class |
|
4
|
+
# [ ] | Object | KKernel | CallerUtils | *Undoable* | Class |
|
5
|
+
#
|
6
|
+
# ---
|
7
|
+
#
|
8
|
+
#
|
9
|
+
# == *Undo*
|
10
|
+
#
|
11
|
+
#
|
2
12
|
module Undoable
|
3
13
|
|
4
14
|
@@undoable_history = Hash.new
|
5
15
|
|
16
|
+
# [ ] Speichert ein Objekt.
|
17
|
+
# [ ] Verwendet standardmäßig Object#dup. Für komplexere Objekte muss allerdings Object#deep_copy genutzt werden.
|
18
|
+
#
|
6
19
|
def save(method=:dup)
|
7
20
|
return if self == @@undoable_history[self.object_id] # nichts zu tun
|
8
21
|
@@undoable_history[self.object_id] = self.send(method)
|
9
22
|
end
|
10
23
|
|
24
|
+
|
25
|
+
# [ ] Rückgriff auf den gespeicherten Zustand eines Objektes.
|
26
|
+
# [ ] Der gespeicherte Zustand verbleibt im Speicher.
|
27
|
+
#
|
11
28
|
def load_and_keep
|
12
29
|
@@undoable_history[self.object_id]
|
13
30
|
end
|
14
31
|
|
32
|
+
|
33
|
+
# [ ] Rückgriff auf den gespeicherten Zustand eines Objektes.
|
34
|
+
# [ ] Der gespeicherte Zustand wird verworfen.
|
35
|
+
#
|
15
36
|
def load_and_delete
|
16
37
|
@@undoable_history.delete(self.object_id)
|
17
38
|
end
|
18
39
|
|
40
|
+
|
41
|
+
# Verwirft alle gepeicherten Objektzustände.
|
42
|
+
#
|
19
43
|
def self.clear
|
20
44
|
@@undoable_history.clear
|
21
45
|
end
|
data/lib/kyanite/hash.rb
CHANGED
@@ -7,67 +7,76 @@ class Hash
|
|
7
7
|
include ActiveSupport::CoreExtensions::Hash::Slice
|
8
8
|
end
|
9
9
|
|
10
|
-
|
11
|
-
|
12
|
-
|
10
|
+
|
11
|
+
|
12
|
+
|
13
|
+
# [ | Kyanite | Object | Array | Set | Enumerable | *Hash* | ] | *Hash* | Dictionary |
|
14
|
+
# ---
|
13
15
|
#
|
14
16
|
#
|
15
|
-
# ==
|
16
|
-
#
|
17
|
-
# * Rubys +delete+ und +delete_if+ verändern den Hash! Siehe TestHash#test_delete
|
17
|
+
# == *Tools* *For* *Hash*
|
18
|
+
# See TestKyaniteHash for tests and examples.
|
18
19
|
#
|
20
|
+
# [Generelle Anmerkungen zu Hashes] Definiert man in irgendeinem Objekt die Methode <tt>==(other)</tt>, so muss man auch die Methode +hash+ neu definieren!
|
21
|
+
# [ ] Rubys +delete+ und +delete_if+ verändern den Hash! Siehe TestHash#test_delete
|
22
|
+
#
|
23
|
+
#
|
24
|
+
# Aus {Facets/Hash}[http://facets.rubyforge.org/doc/api/core/classes/Hash.html] eingefügt:
|
25
|
+
# [ ] *reverse_merge*(other_hash)
|
26
|
+
# [ ] Beispiel: <tt>options.reverse_merge!(:key => default_value)</tt>
|
27
|
+
#
|
19
28
|
#
|
20
29
|
class Hash
|
21
30
|
|
22
31
|
|
23
32
|
if RUBY_VERSION < "1.9"
|
24
|
-
|
25
|
-
#
|
33
|
+
|
34
|
+
# [ ] Credit: Paul Murur http://mucur.name/posts/when-is-a-set-not-a-set
|
35
|
+
# [ ] Create a hash based on the keys and values.
|
26
36
|
def hash
|
27
37
|
keys.hash + values.hash + (default ? default.hash : 0)
|
28
38
|
end
|
29
39
|
|
30
|
-
# Credit: Paul Murur http://mucur.name/posts/when-is-a-set-not-a-set
|
31
|
-
# To determine whether two hashes are the same, compare
|
32
|
-
# their hashes.
|
40
|
+
# [ ] Credit: Paul Murur http://mucur.name/posts/when-is-a-set-not-a-set
|
41
|
+
# [ ] To determine whether two hashes are the same, compare their hashes.
|
33
42
|
def eql?(other)
|
34
43
|
hash == other.hash
|
35
44
|
end
|
45
|
+
|
36
46
|
end # Ruby Version
|
37
47
|
|
38
48
|
|
39
49
|
|
40
|
-
# Entfernt alle Key-Value-Paare mit <b>nil-Keys</b> in-place.
|
41
|
-
#
|
42
|
-
# Tests: TestHash#test_delete
|
50
|
+
# [ ] Entfernt alle Key-Value-Paare mit <b>nil-Keys</b> in-place.
|
51
|
+
# [ ] Tests: TestHash#test_delete
|
43
52
|
def compact_keys!
|
44
53
|
delete_if {|key, value| key.nil? }
|
45
54
|
end
|
46
55
|
|
47
56
|
|
48
|
-
# Entfernt alle alle Key-Value-Paare mit <b>nil-Values</b> in-place.
|
49
|
-
#
|
50
|
-
# Tests: TestHash#test_compact
|
57
|
+
# [ ] Entfernt alle alle Key-Value-Paare mit <b>nil-Values</b> in-place.
|
58
|
+
# [ ] Tests: TestHash#test_compact
|
51
59
|
def compact_values!
|
52
60
|
delete_if {|key, value| value.nil? }
|
53
61
|
end
|
54
62
|
|
55
63
|
|
56
|
-
# Entfernt das Key-Value-Paar mit einem bestimmten Key in-place.
|
57
|
-
# Rückgabe ist der modifizierte Hash (im Gegensatz zur +delete+-Methode, die das entfernte Key-Value-Paar zurückgibt! ).
|
64
|
+
# [ ] Entfernt das Key-Value-Paar mit einem bestimmten Key in-place.
|
65
|
+
# [ ] Rückgabe ist der modifizierte Hash (im Gegensatz zur +delete+-Methode, die das entfernte Key-Value-Paar zurückgibt! ).
|
58
66
|
def delete_key(key)
|
59
67
|
delete_if { |k,v| k == key }
|
60
68
|
end
|
61
69
|
|
62
|
-
# Entfernt alle Key-Value-Paare mit einem bestimmten Value in-place.
|
70
|
+
# [ ] Entfernt alle Key-Value-Paare mit einem bestimmten Value in-place.
|
63
71
|
#
|
64
72
|
def delete_value(value)
|
65
73
|
delete_if { |k,v| v == value }
|
66
74
|
end
|
67
75
|
|
68
76
|
|
69
|
-
# erzwingt ein Array der Länge 1, wenn sowohl Einzelwerte als auch Arrays erlaubt sind.
|
70
|
-
#
|
77
|
+
# [ ] erzwingt ein Array der Länge 1, wenn sowohl Einzelwerte als auch Arrays erlaubt sind.
|
78
|
+
# [ ] Beispiel:
|
79
|
+
# inputoptions = options.arrayize(:skip, :debug)
|
71
80
|
#
|
72
81
|
def arrayize(*keys)
|
73
82
|
keys.each do |k|
|
@@ -80,7 +89,8 @@ class Hash
|
|
80
89
|
end
|
81
90
|
|
82
91
|
|
83
|
-
# Greift auf den Hash mit nicht-ganz-passenden Schlüsseln zu
|
92
|
+
# [ ] Greift auf den Hash mit nicht-ganz-passenden Schlüsseln zu
|
93
|
+
#
|
84
94
|
def fuzzyget(key, level = 3)
|
85
95
|
try = self[key]
|
86
96
|
return try if try || level <= 0
|
@@ -91,8 +101,11 @@ class Hash
|
|
91
101
|
end
|
92
102
|
|
93
103
|
|
94
|
-
# Liefert die Verteilung der
|
95
|
-
#
|
104
|
+
# [ ] Liefert die Verteilung der size
|
105
|
+
# [ ] oder die Verteilung der class
|
106
|
+
# [ ] oder die Verteilung eines anderen Merkmals der aufgezählten Elemente.
|
107
|
+
# [ ] Siehe auch Enumerable#distribution.
|
108
|
+
# [ ] Die Keys des Hash werden ignoriert.
|
96
109
|
#
|
97
110
|
def distribution( mode = :size)
|
98
111
|
verteilung = Hash.new
|
@@ -108,7 +121,8 @@ class Hash
|
|
108
121
|
end
|
109
122
|
|
110
123
|
|
111
|
-
# liefert irgendein Value
|
124
|
+
# [ ] liefert irgendein Value
|
125
|
+
#
|
112
126
|
def first
|
113
127
|
self.each do |key, value|
|
114
128
|
return value
|
@@ -116,7 +130,8 @@ class Hash
|
|
116
130
|
end #def
|
117
131
|
|
118
132
|
|
119
|
-
# liefert irgendein anderes Value
|
133
|
+
# [ ] liefert irgendein anderes Value
|
134
|
+
#
|
120
135
|
def last
|
121
136
|
first = nil
|
122
137
|
self.each do |key, value|
|
@@ -148,7 +163,7 @@ end
|
|
148
163
|
|
149
164
|
|
150
165
|
|
151
|
-
|
166
|
+
# ---------------------------------------------------------
|
152
167
|
# Ausprobieren
|
153
168
|
#
|
154
169
|
if $0 == __FILE__
|