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,5 +0,0 @@
1
- # ruby encoding: utf-8
2
-
3
- require 'kyanite/operation/call_tracker'
4
- require 'kyanite/operation/regexp'
5
- require 'kyanite/operation/unit_test'
@@ -1,69 +0,0 @@
1
- # ruby encoding: utf-8
2
-
3
-
4
- # http://oreilly.com/catalog/9780596523695/
5
- # Ruby Cookbook, by Lucas Carlson and Leonard Richardson
6
- # Copyright 2006 O'Reilly Media
7
- #
8
- class CallTracker
9
-
10
- # Initialize and start the trace.
11
- def initialize(show_stack_depth=1)
12
- @show_stack_depth = show_stack_depth
13
- @to_trace = Hash.new { |h,k| h[k] = {} }
14
- start
15
- at_exit { stop }
16
- end
17
-
18
- # Register a class/method combination as being interesting. Subsequent calls
19
- # to the method will be tallied by tally_calls.
20
- def register(klass, method_symbol)
21
- @to_trace[klass][method_symbol] = {}
22
- end
23
-
24
- # Tells the Ruby interpreter to call tally_calls whenever it's about to
25
- # do anything interesting.
26
- def start
27
- set_trace_func method(:tally_calls).to_proc
28
- end
29
-
30
- # Stops the profiler, and prints a report of the interesting calls made
31
- # while it was running.
32
- def stop(out=$stderr)
33
- set_trace_func nil
34
- report(out)
35
- end
36
-
37
- # If the interpreter is about to call a method we find interesting,
38
- # increment the count for that method.
39
- def tally_calls(event, file, line, symbol, binding, klass)
40
- if @to_trace[klass] and @to_trace[klass][symbol] and
41
- (event == 'call' or event =='c-call')
42
- stack = caller
43
- stack = stack[1..(@show_stack_depth ? @show_stack_depth : stack.size)]
44
- @to_trace[klass][symbol][stack] ||= 0
45
- @to_trace[klass][symbol][stack] += 1
46
- end
47
- end
48
-
49
- # Prints a report of the lines of code that called interesting
50
- # methods, sorted so that the the most active lines of code show up
51
- # first.
52
- def report(out=$stderr)
53
- first = true
54
- @to_trace.each do |klass, symbols|
55
- symbols.each do |symbol, calls|
56
- total = calls.inject(0) { |sum, ct| sum + ct[1] }
57
- padding = total.to_s.size
58
- separator = (klass.is_a? Class) ? '#' : '.'
59
- plural = (total == 1) ? '' : 's'
60
- stack_join = "\n" + (' ' * (padding+2))
61
- first ? first = false : out.puts
62
- out.puts "#{total} call#{plural} to #{klass}#{separator}#{symbol}"
63
- (calls.sort_by { |caller, times| -times }).each do |caller, times|
64
- out.puts " %#{padding}.d #{caller.join(stack_join)}" % times
65
- end
66
- end
67
- end
68
- end
69
- end
@@ -1,12 +0,0 @@
1
- # ruby encoding: utf-8
2
-
3
- require 'hoe'
4
-
5
- module Kyanite #:nodoc
6
-
7
- class << self
8
- attr_accessor :projectname
9
- attr_accessor :github_username
10
- end
11
-
12
- end
@@ -1,298 +0,0 @@
1
- # ruby encoding: utf-8
2
-
3
- #== *Rake*
4
- #Beispiele siehe Rakefile.rb
5
- #* Methode remove_task, um Tasks überschreiben zu können
6
-
7
-
8
- # ----------------------------------------------------------------------------------------------
9
- # Rake initialisieren
10
- #
11
-
12
- require 'rake'
13
- #require 'rake/testtask'
14
-
15
-
16
-
17
-
18
- # ----------------------------------------------------------------------------------------------
19
- # Ergänzung: Alte Tasks entfernen
20
- # sonst kann man sie nämlich nicht überschreiben!
21
- # Beispiel: remove_task 'test:plugins'
22
- # Quelle: http://matthewbass.com/2007/03/07/overriding-existing-rake-tasks/
23
- # dies hier stimmt nicht: http://www.dcmanges.com/blog/modifying-rake-tasks
24
-
25
- Rake::TaskManager.class_eval do
26
- def remove_task(task_name)
27
- @tasks.delete(task_name.to_s)
28
- end
29
- end
30
-
31
- def remove_task(task_name)
32
- Rake.application.remove_task(task_name)
33
- end
34
-
35
-
36
-
37
-
38
- # -------------------------------------------------------------------------------------------------------
39
- # publish
40
- #
41
-
42
- # Task :publish
43
- #
44
- desc 'publish all on github and rubygems, reinstall gem'
45
- task :publish => [ :utf8, :redocs, :rubygems_publish, :gem_uninstall, :git_publish, :git_publish_docs, :sleep_15, :utf8, :gem_install] do
46
- puts 'done.'
47
- end
48
-
49
-
50
-
51
- # -------------------------------------------------------------------------------------------------------
52
- # git
53
- #
54
-
55
-
56
- # git_publish
57
- #
58
- desc 'publish actual version to github'
59
- task :git_publish => [ :git_add, :git_commit, :git_push ] do
60
- puts; puts; puts; puts
61
- if Hoe::WINDOZE
62
- sh "start https://github.com/#{Kyanite.github_username}/#{Kyanite.projectname} "
63
- else
64
- puts "done. Visit https://github.com/#{Kyanite.github_username}/#{Kyanite.projectname} "
65
- end
66
- end
67
-
68
-
69
-
70
- # git_status
71
- #
72
- desc 'git status'
73
- task :git_status do
74
- if Hoe::WINDOZE
75
- sh "git status "
76
- sh 'chcp 65001 > NUL '
77
- else
78
- sh "sudo git status "
79
- end
80
- end
81
-
82
-
83
-
84
- # git_add
85
- #
86
- desc 'git_add -A'
87
- task :git_add do
88
- if Hoe::WINDOZE
89
- sh "git add -A "
90
- sh 'chcp 65001 > NUL '
91
- else
92
- sh "sudo git add -A "
93
- end
94
- end
95
-
96
-
97
-
98
- # git_commit
99
- #
100
- desc 'git commit -m'
101
- task :git_commit do
102
- if Hoe::WINDOZE
103
- sh 'git commit -m "---" '
104
- sh 'chcp 65001 > NUL '
105
- else
106
- sh 'sudo git commit -m "---" '
107
- end
108
- end
109
-
110
-
111
- # git push origin master
112
- #
113
- desc 'git_push'
114
- task :git_push do
115
- if Hoe::WINDOZE
116
- sh 'git push origin master '
117
- sh 'chcp 65001 > NUL '
118
- else
119
- sh 'sudo git push origin master '
120
- end
121
- end
122
-
123
-
124
-
125
- # git_publish_docs
126
- #
127
- desc 'publish docs to github'
128
- task :git_publish_docs do
129
- puts; puts; puts; puts
130
-
131
- # Repository erstellen, wenn nötig
132
- Dir.chdir '/tmp' do
133
- sh "#{'sudo ' unless Hoe::WINDOZE }git clone https://github.com/#{Kyanite.github_username}/#{Kyanite.projectname} " do |ok,res|
134
- if ok
135
- Dir.chdir "/tmp/#{Kyanite.projectname}" do
136
- if Hoe::WINDOZE
137
- sh 'git checkout --orphan gh-pages '
138
- sh 'chcp 65001 > NUL '
139
- else
140
- sh 'sudo git checkout --orphan gh-pages '
141
- end
142
- end # do chdir
143
- else # not ok
144
- sh 'chcp 65001 > NUL ' if Hoe::WINDOZE
145
- end
146
- end # do sh
147
- end # do chdir
148
-
149
- # alles löschen
150
- Dir.chdir "/tmp/#{Kyanite.projectname}" do
151
- if Hoe::WINDOZE
152
- sh 'git rm -rf --ignore-unmatch . '
153
- sh 'chcp 65001 > NUL '
154
- else
155
- sh 'sudo git rm -rf --ignore-unmatch . '
156
- end
157
- end
158
-
159
- # doc rüberkopieren
160
- Dir.chdir 'doc' do
161
- if Hoe::WINDOZE
162
- sh "xcopy /E *.* \\tmp\\#{Kyanite.projectname} "
163
- else
164
- sh "sudo cp . /tmp/#{Kyanite.projectname} "
165
- end
166
- end
167
-
168
- # publish
169
- Dir.chdir "/tmp/#{Kyanite.projectname}" do
170
- if Hoe::WINDOZE
171
- sh 'git add -A '
172
- sh 'git commit -m "---" --allow-empty'
173
- sh 'git push origin +gh-pages ' # C:\Users\Klippstein\_netrc enthält die Login-Daten
174
- sh "start http://#{Kyanite.github_username}.github.com/#{Kyanite.projectname} "
175
- sh 'chcp 65001 > NUL '
176
- else
177
- sh 'sudo git add -A '
178
- sh 'sudo git commit -m "---" --allow-empty'
179
- sh 'sudo git push origin +gh-pages ' # .netrc enthält die Login-Daten
180
- puts "done. Visit http://#{Kyanite.github_username}.github.com/#{Kyanite.projectname} "
181
- end # if
182
-
183
- end # do chdir
184
-
185
-
186
- end # do task
187
-
188
-
189
-
190
-
191
- # -------------------------------------------------------------------------------------------------------
192
- # rubygems
193
- #
194
-
195
-
196
- # Task :rubygems_publish
197
- #
198
- desc 'release actual version to rubygems'
199
- task :rubygems_publish do
200
- puts; puts; puts; puts
201
- ENV["VERSION"] = Kyanite.projectname.to_class.const_get('VERSION')
202
- Rake::Task[:release].invoke
203
-
204
- end
205
-
206
-
207
-
208
- # Task :gem_uninstall
209
- #
210
- desc 'uninstall old gem'
211
- task :gem_uninstall do
212
- puts; puts; puts; puts
213
- sh "#{'sudo ' unless Hoe::WINDOZE }gem uninstall #{Kyanite.projectname} --a --ignore-dependencies "
214
- end
215
-
216
-
217
-
218
- # Task :gem_install
219
- #
220
- desc 'install gem from rubygems'
221
- task :gem_install do
222
- puts; puts; puts; puts
223
- sh "#{'sudo ' unless Hoe::WINDOZE }gem install #{Kyanite.projectname} "
224
- end
225
-
226
-
227
-
228
-
229
-
230
-
231
- # -------------------------------------------------------------------------------------------------------
232
- # Div
233
- #
234
-
235
- # Task :utf8
236
- #
237
- desc 'Set Codepage to 65001'
238
- task :utf8 do
239
-
240
- sh 'chcp 65001 > NUL ' if Hoe::WINDOZE
241
-
242
- end
243
-
244
-
245
- # Task :version
246
- #
247
- desc 'VERSION of the current project'
248
- task :version do
249
-
250
- version = Kyanite.projectname.to_class.const_get('VERSION')
251
- puts "\n#{Kyanite.projectname} (#{version})\n\n"
252
-
253
- end
254
-
255
-
256
-
257
- # Task :sleep_5
258
- #
259
- desc 'Sleep 5 seconds'
260
- task :sleep_5 do
261
- puts
262
- puts
263
- puts
264
- if Hoe::WINDOZE
265
- sh "wait 5"
266
- else
267
- sh "sleep 5"
268
- end
269
-
270
- end
271
-
272
-
273
- # Task :sleep_15
274
- #
275
- desc 'Sleep 15 seconds'
276
- task :sleep_15 do
277
- puts
278
- puts
279
- puts
280
- if Hoe::WINDOZE
281
- sh "wait 15"
282
- else
283
- sh "sleep 15"
284
- end
285
-
286
- end
287
-
288
-
289
-
290
-
291
- # namespace :manifest do
292
- # desc 'Recreate Manifest.txt to include ALL files'
293
- # task :refresh do
294
- # `rake check_manifest | patch -p0 > Manifest.txt`
295
- # end
296
- # end
297
-
298
-
@@ -1,28 +0,0 @@
1
- # ruby encoding: utf-8
2
-
3
-
4
- class String
5
-
6
- # ---------------------------------------------------------------------------------------------------------------------------------
7
- # :section: Operation
8
- #
9
-
10
- # Zeigt das Ergebnis eines Matches mit einer Regular Expression. Erleichtert das Entwickeln regulärer Ausdrücke.
11
- #
12
- def show_regexp(re)
13
- if self =~ re
14
- "#{$`}<<#{$&}>>#{$'}"
15
- else
16
- "no match"
17
- end # if
18
- end
19
-
20
- end
21
-
22
- if defined? TransparentNil
23
- class NilClass
24
- def show_regexp(*a); nil; end
25
- end
26
- end
27
-
28
-
@@ -1,50 +0,0 @@
1
- # ruby encoding: utf-8
2
- require 'test/unit'
3
-
4
-
5
-
6
- class UnitTest < Test::Unit::TestCase # :nodoc:
7
-
8
- # Meldet den aktuell durchlaufenden Test
9
- def test0 #:nodoc:
10
- name = self.class.to_s.gsub(/^.*::/, '')
11
- name.gsub!(/^Test/, '')
12
- name.gsub!(/^[0-9]+/, '')
13
- if name != 'UnitTest'
14
- print "\n #{name} "
15
- else
16
- puts
17
- puts
18
- end
19
- end
20
-
21
-
22
-
23
-
24
-
25
-
26
- end
27
-
28
-
29
-
30
-
31
- # ---------------------------------------------------------
32
- # Ausprobieren
33
- #
34
- if $0 == __FILE__
35
-
36
- class Test030Blatest < UnitTest # :nodoc:
37
-
38
- def test_bla
39
- # 1 / 0
40
- assert false
41
- end
42
-
43
- end
44
-
45
-
46
-
47
-
48
-
49
- end
50
-