utilrb 2.0.2.b2 → 2.1.0.rc1

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 (75) hide show
  1. checksums.yaml +4 -4
  2. data/.boring +40 -0
  3. data/.gitignore +13 -0
  4. data/.travis.yml +5 -0
  5. data/CMakeLists.txt +18 -0
  6. data/Gemfile +3 -0
  7. data/Makefile +8 -0
  8. data/Manifest.txt +0 -8
  9. data/{README.rd → README.md} +11 -7
  10. data/Rakefile +16 -63
  11. data/benchmarks/validate_options.rb +79 -0
  12. data/ext/utilrb/extconf.rb +1 -17
  13. data/ext/utilrb/utilrb.cc +0 -23
  14. data/lib/utilrb/column_formatter.rb +8 -5
  15. data/lib/utilrb/common.rb +1 -6
  16. data/lib/utilrb/enumerable/uniq.rb +2 -8
  17. data/lib/utilrb/event_loop.rb +5 -10
  18. data/lib/utilrb/kernel/load_dsl_file.rb +1 -2
  19. data/lib/utilrb/kernel/options.rb +25 -29
  20. data/lib/utilrb/logger/hierarchy.rb +0 -1
  21. data/lib/utilrb/logger/io.rb +3 -3
  22. data/lib/utilrb/logger/root.rb +12 -6
  23. data/lib/utilrb/module/ancestor_p.rb +0 -12
  24. data/lib/utilrb/module/is_singleton.rb +6 -0
  25. data/lib/utilrb/module/singleton_class_p.rb +14 -0
  26. data/lib/utilrb/object/attribute.rb +33 -65
  27. data/lib/utilrb/object/singleton_class.rb +1 -20
  28. data/lib/utilrb/pkgconfig.rb +21 -10
  29. data/lib/utilrb/socket/tcp_server.rb +2 -2
  30. data/lib/utilrb/spawn.rb +1 -1
  31. data/lib/utilrb/test.rb +65 -0
  32. data/lib/utilrb/thread_pool.rb +11 -13
  33. data/lib/utilrb/timepoints.rb +15 -0
  34. data/lib/utilrb/value_set.rb +10 -1
  35. data/lib/utilrb/version.rb +4 -0
  36. data/lib/utilrb/weakref.rb +11 -12
  37. data/lib/utilrb/yard.rb +0 -111
  38. data/lib/utilrb.rb +6 -1
  39. data/lib/yard-utilrb.rb +1 -0
  40. data/manifest.xml +19 -0
  41. data/package.xml +29 -0
  42. data/utilrb.gemspec +27 -0
  43. metadata +56 -107
  44. data/ext/utilrb/proc.c +0 -39
  45. data/ext/utilrb/readline.c +0 -52
  46. data/ext/utilrb/weakref.cc +0 -143
  47. data/lib/utilrb/models/inherited_enumerable.rb +0 -341
  48. data/lib/utilrb/models/registration.rb +0 -115
  49. data/lib/utilrb/module/inherited_enumerable.rb +0 -6
  50. data/lib/utilrb/objectstats.rb +0 -193
  51. data/lib/utilrb/ruby_object_graph.rb +0 -384
  52. data/test/data/test_pkgconfig.pc +0 -9
  53. data/test/data/test_pkgconfig_empty.pc +0 -10
  54. data/test/test_array.rb +0 -15
  55. data/test/test_config.rb +0 -4
  56. data/test/test_dir.rb +0 -22
  57. data/test/test_enumerable.rb +0 -119
  58. data/test/test_event_loop.rb +0 -407
  59. data/test/test_exception.rb +0 -38
  60. data/test/test_gc.rb +0 -34
  61. data/test/test_hash.rb +0 -102
  62. data/test/test_kernel.rb +0 -300
  63. data/test/test_logger.rb +0 -204
  64. data/test/test_misc.rb +0 -42
  65. data/test/test_models.rb +0 -212
  66. data/test/test_module.rb +0 -126
  67. data/test/test_object.rb +0 -77
  68. data/test/test_objectstats.rb +0 -26
  69. data/test/test_pkgconfig.rb +0 -84
  70. data/test/test_proc.rb +0 -31
  71. data/test/test_set.rb +0 -19
  72. data/test/test_thread_pool.rb +0 -409
  73. data/test/test_time.rb +0 -47
  74. data/test/test_unbound_method.rb +0 -23
  75. data/test/test_weakref.rb +0 -81
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: bcf5ca71fc1f19f529df4911c7b626010657ee4f
4
- data.tar.gz: b4b3f5f44a9df508352214921b5626d3f50fe27d
3
+ metadata.gz: 25dfac5169ea1deb85644a81fce37e34b57fbe06
4
+ data.tar.gz: d294185b07a13167202368e519b3dbdf1be0a46f
5
5
  SHA512:
6
- metadata.gz: c60d168b824c6048b442905fa8541358496df2c4a2f68ecc984e2778dc6077b72ee8169bd47aee3486e0e68be642a011fdc3e55108ae201c8c9a61fe4c85aa11
7
- data.tar.gz: 5988d6ba18bab35ba2e8f64d87e88a88ba1b774f7d9c88790ef8c19561eee1b0ac26d34a488b355539a65334bb0f1c17c5f3c720cdda9214be12c305890497a1
6
+ metadata.gz: 8d7ec758b7d5aa8854c828b5f5845fa92c0aad1c3e424879ec0866236f8f7c9c420cb01c22f6c15c547fc87b93d98b1d8b6fcb66b096ddaed0f45d1c9f2f8d3c
7
+ data.tar.gz: 543b63138464740343424f0e81b01fe0ac7a541b69e2cefeb5193546f0845db6a2e6d83b6bf6ee282b05184e4adbf2bd2dedcd2cd885cc42425de1bfafa97404
data/.boring ADDED
@@ -0,0 +1,40 @@
1
+ # Boring file regexps:
2
+ \.hi$
3
+ \.o$
4
+ \.o\.cmd$
5
+ # *.ko files aren't boring by default because they might
6
+ # be Korean translations rather than kernel modules.
7
+ # \.ko$
8
+ \.ko\.cmd$
9
+ \.mod\.c$
10
+ (^|/)\.tmp_versions($|/)
11
+ (^|/)CVS($|/)
12
+ (^|/)RCS($|/)
13
+ ~$
14
+ #(^|/)\.[^/]
15
+ (^|/)_darcs($|/)
16
+ \.bak$
17
+ \.BAK$
18
+ \.orig$
19
+ (^|/)vssver\.scc$
20
+ \.swp$
21
+ (^|/)MT($|/)
22
+ (^|/)\{arch\}($|/)
23
+ (^|/).arch-ids($|/)
24
+ (^|/),
25
+ \.class$
26
+ \.prof$
27
+ (^|/)\.DS_Store$
28
+ (^|/)BitKeeper($|/)
29
+ (^|/)ChangeSet($|/)
30
+ (^|/)\.svn($|/)
31
+ \.py[co]$
32
+ \#
33
+ \.cvsignore$
34
+ (^|/)Thumbs\.db$
35
+ (^|/)autom4te\.cache($|/)
36
+ ^rcov
37
+ \.so$
38
+ ^ext/(Makefile|mkmf.log)$
39
+ -stamp$
40
+ ^(doc|html|pkg)$
data/.gitignore ADDED
@@ -0,0 +1,13 @@
1
+ coverage.html
2
+ *.swp
3
+ ext/*.o
4
+ ext/*.so
5
+ ext/Makefile
6
+ lib/utilrb_ext.so
7
+ doc/
8
+ coverage/
9
+ tmp/
10
+ .yardoc
11
+ lib/utilrb/utilrb.so
12
+ pkg/
13
+ /vendor/
data/.travis.yml ADDED
@@ -0,0 +1,5 @@
1
+ language: ruby
2
+ rvm:
3
+ - 2.0.0
4
+ - 2.1.6
5
+ - 2.2.2
data/CMakeLists.txt ADDED
@@ -0,0 +1,18 @@
1
+
2
+ cmake_minimum_required(VERSION 2.6)
3
+
4
+ project(utilrb)
5
+ FIND_PACKAGE(Ruby REQUIRED)
6
+
7
+ ADD_CUSTOM_TARGET(utilrb_ext ALL
8
+ COMMAND rake
9
+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
10
+
11
+ STRING(REGEX REPLACE ".*lib(32|64)?/?" "lib/" RUBY_EXTENSIONS_INSTALL_DIR ${RUBY_ARCH_DIR})
12
+ install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/lib/ DESTINATION ${RUBY_EXTENSIONS_INSTALL_DIR}
13
+ PATTERN "utilrb_ext.*" EXCLUDE )
14
+ install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/ext/ DESTINATION ${RUBY_EXTENSIONS_INSTALL_DIR}
15
+ FILES_MATCHING PATTERN "utilrb_ext.*"
16
+ PATTERN "*.o" EXCLUDE
17
+ PATTERN "*.cc" EXCLUDE
18
+ )
data/Gemfile ADDED
@@ -0,0 +1,3 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gemspec
data/Makefile ADDED
@@ -0,0 +1,8 @@
1
+ default: install
2
+ install:
3
+ rake
4
+ gems:
5
+ if [ -d ../rtt_gems ]; then gem install ../rtt_gems/*.gem; else gem install rake flexmock rdoc rake-compiler hoe hoe-yard facets; fi
6
+ touch gems
7
+ clean:
8
+ rake clean
data/Manifest.txt CHANGED
@@ -8,7 +8,6 @@ bm/allocation.rb
8
8
  bm/speed.rb
9
9
  ext/utilrb/extconf.rb
10
10
  ext/utilrb/proc.c
11
- ext/utilrb/readline.c
12
11
  ext/utilrb/ruby_allocator.hh
13
12
  ext/utilrb/utilrb.cc
14
13
  ext/utilrb/value_set.cc
@@ -57,8 +56,6 @@ lib/utilrb/logger/log_pp.rb
57
56
  lib/utilrb/logger/root.rb
58
57
  lib/utilrb/logger/silent.rb
59
58
  lib/utilrb/marshal/load_with_missing_constants.rb
60
- lib/utilrb/models/inherited_enumerable.rb
61
- lib/utilrb/models/registration.rb
62
59
  lib/utilrb/module.rb
63
60
  lib/utilrb/module/ancestor_p.rb
64
61
  lib/utilrb/module/attr_enumerable.rb
@@ -75,14 +72,12 @@ lib/utilrb/object/address.rb
75
72
  lib/utilrb/object/attribute.rb
76
73
  lib/utilrb/object/scoped_eval.rb
77
74
  lib/utilrb/object/singleton_class.rb
78
- lib/utilrb/objectstats.rb
79
75
  lib/utilrb/pathname.rb
80
76
  lib/utilrb/pathname/find_matching_parent.rb
81
77
  lib/utilrb/pkgconfig.rb
82
78
  lib/utilrb/qt/mime_data/mime_data.rb
83
79
  lib/utilrb/qt/variant/from_ruby.rb
84
80
  lib/utilrb/rake_common.rb
85
- lib/utilrb/ruby_object_graph.rb
86
81
  lib/utilrb/set.rb
87
82
  lib/utilrb/set/to_s.rb
88
83
  lib/utilrb/socket/tcp_server.rb
@@ -102,7 +97,6 @@ patches/gc_live_objects.patch
102
97
  test/data/test_pkgconfig.pc
103
98
  test/data/test_pkgconfig_empty.pc
104
99
  test/test_array.rb
105
- test/test_config.rb
106
100
  test/test_dir.rb
107
101
  test/test_enumerable.rb
108
102
  test/test_event_loop.rb
@@ -112,10 +106,8 @@ test/test_hash.rb
112
106
  test/test_kernel.rb
113
107
  test/test_logger.rb
114
108
  test/test_misc.rb
115
- test/test_models.rb
116
109
  test/test_module.rb
117
110
  test/test_object.rb
118
- test/test_objectstats.rb
119
111
  test/test_pkgconfig.rb
120
112
  test/test_proc.rb
121
113
  test/test_set.rb
@@ -1,18 +1,22 @@
1
- = Utilrb
1
+ [![Build Status](https://travis-ci.org/orocos-toolchain/utilrb.svg?branch=master)](https://travis-ci.org/orocos-toolchain/utilrb)
2
+ [![Gem Version](https://badge.fury.io/rb/utilrb.svg)](http://badge.fury.io/rb/utilrb)
3
+ [![Documentation](http://b.repl.ca/v1/yard-docs-blue.png)](http://rubydoc.info/gems/utilrb/frames)
4
+
5
+ Utilrb
6
+ ------
2
7
 
3
8
  homepage :: http://rock-robotics.org
4
9
  mailing list :: http://www.dfki.de/mailman/cgi-bin/listinfo/rock-dev
5
- bug tracker :: trac.rock-robotics.org
6
- rubygem page :: http://rubygems.org/gems/utilrb
7
- git repository :: http://gitorious.org/orocos-toolchain/utilrb.git
8
- API documentation :: http://rubydoc.info/gems/utilrb/1.6.6/frames
10
+ bug tracker :: https://github.com/orocos-toolchain/utilrb
9
11
 
10
- == DESCRIPTION
12
+ DESCRIPTION
13
+ -----------
11
14
 
12
15
  Utilrb is yet another Ruby toolkit, in the spirit of facets. It includes all
13
16
  the standard class extensions I use in other projects.
14
17
 
15
- == LICENSE
18
+ LICENSE
19
+ -------
16
20
 
17
21
  Copyright (c) 2006-2013
18
22
  Sylvain Joyeux <sylvain.joyeux@m4x.org>
data/Rakefile CHANGED
@@ -1,67 +1,20 @@
1
- $LOAD_PATH.unshift File.expand_path('lib', File.dirname(__FILE__))
2
- require 'rake'
3
-
4
- begin
5
- require 'hoe'
6
-
7
- Hoe::plugin :yard
8
-
9
- hoe_spec = Hoe.spec 'utilrb' do
10
- developer "Sylvain Joyeux", "sylvain.joyeux@m4x.org"
11
- self.readme_file = 'README.rd'
12
-
13
-
14
- extra_deps <<
15
- ['facets', '>= 2.4.0'] <<
16
- ['rake', '>= 0.9'] <<
17
- ["hoe", ">= 3.7.1"] <<
18
- ["hoe-yard", ">= 0.1.2"]
19
-
20
- if RUBY_VERSION < '2.0'
21
- spec_extras[:required_ruby_version] = '~> 1.9'
22
- extra_deps << ["rake-compiler", '~> 0.8.0']
23
- else
24
- spec_extras[:required_ruby_version] = '>= 2.0'
25
- extra_deps << ["rake-compiler"]
26
- end
27
-
28
- extra_dev_deps <<
29
- ['flexmock', '>= 0.8.6'] <<
30
- ['debugger-ruby_core_source', '>= 0']
31
-
32
- licenses << 'BSD'
33
-
34
- spec_extras[:extensions] = FileList["ext/**/extconf.rb"]
35
- end
36
-
37
- require 'rubygems/package_task'
38
- Gem::PackageTask.new(hoe_spec.spec) do |pkg|
39
- pkg.need_zip = true
40
- pkg.need_tar = true
41
- end
42
-
43
- require 'rake/extensiontask'
44
- utilrb_task = Rake::ExtensionTask.new('utilrb', hoe_spec.spec) do |ext|
45
- ext.name = 'utilrb'
46
- ext.ext_dir = 'ext/utilrb'
47
- ext.lib_dir = 'lib/utilrb'
48
- ext.source_pattern ="*.{c,cc,cpp}"
49
- end
50
-
51
- Rake.clear_tasks(/^default$/)
52
- task :default => :compile
53
-
54
- task :docs => :yard
55
- task :redocs => :yard
1
+ require "bundler/gem_tasks"
2
+ require "rake/testtask"
3
+
4
+ require 'rake/extensiontask'
5
+ Rake::ExtensionTask.new('utilrb') do |ext|
6
+ ext.name = 'utilrb'
7
+ ext.ext_dir = 'ext/utilrb'
8
+ ext.lib_dir = 'lib/utilrb'
9
+ ext.source_pattern ="*.{c,cc,cpp}"
10
+ end
56
11
 
12
+ task :default => :compile
57
13
 
58
- rescue LoadError => e
59
- puts "'utilrb' cannot be build -- loading gem failed: #{e}"
14
+ Rake::TestTask.new(:test) do |t|
15
+ t.libs << "test"
16
+ t.libs << "lib"
17
+ t.test_files = FileList['test/**/test_*.rb']
60
18
  end
61
19
 
62
- task :full_test do
63
- ENV.delete_if { |name,val| name == "UTILRB_EXT_MODE" }
64
- system('testrb -I. test')
65
- ENV['UTILRB_EXT_MODE'] = 'yes'
66
- system('testrb -I. test')
67
- end
20
+ task :gem => :build
@@ -0,0 +1,79 @@
1
+ require 'benchmark'
2
+ require 'utilrb/kernel/options'
3
+
4
+ options = Hash[
5
+ test: 10,
6
+ other_test: 20]
7
+
8
+ TIMES = 100_000
9
+
10
+ def validate(options)
11
+ Kernel.validate_options options, :accept_opaques => false,
12
+ :accept_pointers => false,
13
+ :merge_skip_copy => true,
14
+ :remove_trailing_skips => true
15
+ end
16
+
17
+ def validate_with_new_style_hash(options)
18
+ Kernel.validate_options options, accept_opaques: false,
19
+ accept_pointers: false,
20
+ merge_skip_copy: true,
21
+ remove_trailing_skips: true
22
+ end
23
+
24
+ def validate_with_keyword_arguments(accept_opaques: false,
25
+ accept_pointers: false,
26
+ merge_skip_copy: true,
27
+ remove_trailing_skips: true)
28
+ Hash[accept_opaques: accept_opaques,
29
+ accept_pointers: accept_pointers,
30
+ merge_skip_copy: merge_skip_copy,
31
+ remove_trailing_skips: remove_trailing_skips]
32
+ end
33
+
34
+ Benchmark.bm do |x|
35
+ x.report("with empty options") do
36
+ TIMES.times do
37
+ validate(Hash.new)
38
+ end
39
+ end
40
+ x.report("with empty options and new-style hash") do
41
+ TIMES.times do
42
+ validate_with_new_style_hash(Hash.new)
43
+ end
44
+ end
45
+ x.report("with empty options and keyword arguments") do
46
+ TIMES.times do
47
+ validate_with_keyword_arguments(accept_opaques: false,
48
+ accept_pointers: false,
49
+ merge_skip_copy: true,
50
+ remove_trailing_skips: true)
51
+ end
52
+ end
53
+ x.report("with all options set") do
54
+ options = Hash[]
55
+ TIMES.times do
56
+ validate(:accept_opaques => false,
57
+ :accept_pointers => false,
58
+ :merge_skip_copy => true,
59
+ :remove_trailing_skips => true)
60
+ end
61
+ end
62
+ x.report("with all options set and new-style hash") do
63
+ TIMES.times do
64
+ validate_with_new_style_hash(accept_opaques: false,
65
+ accept_pointers: false,
66
+ merge_skip_copy: true,
67
+ remove_trailing_skips: true)
68
+ end
69
+ end
70
+ x.report("with all options set and keyword arguments") do
71
+ TIMES.times do
72
+ validate_with_keyword_arguments(accept_opaques: false,
73
+ accept_pointers: false,
74
+ merge_skip_copy: true,
75
+ remove_trailing_skips: true)
76
+ end
77
+ end
78
+ end
79
+
@@ -5,23 +5,7 @@ if try_link("int main() { }", "-module")
5
5
  $LDFLAGS += " -module"
6
6
  end
7
7
 
8
- $LDFLAGS += " -lreadline"
9
- if RUBY_VERSION < "1.9"
10
- $CFLAGS += " -DRUBY_IS_18"
11
- puts "not building with core source"
12
- create_makefile("utilrb/utilrb")
13
- else
14
- begin
15
- require 'debugger/ruby_core_source'
16
- hdrs = lambda { try_compile("#include <vm_core.h>") }
17
- $CFLAGS += " -DHAS_RUBY_SOURCE"
18
- Debugger::RubyCoreSource.create_makefile_with_core(hdrs, "utilrb/utilrb")
19
- rescue Exception
20
- $CFLAGS.gsub!(/ -DHAS_RUBY_SOURCE/, '')
21
- puts "not building with core source"
22
- create_makefile("utilrb/utilrb")
23
- end
24
- end
8
+ create_makefile("utilrb/utilrb")
25
9
 
26
10
  ## WORKAROUND a problem with mkmf.rb
27
11
  # It seems that the newest version do define an 'install' target. However, that
data/ext/utilrb/utilrb.cc CHANGED
@@ -28,19 +28,6 @@ static VALUE enumerable_each_uniq(VALUE self)
28
28
  return self;
29
29
  }
30
30
 
31
- /* call-seq:
32
- * Kernel.is_singleton?(object)
33
- *
34
- * Returns true if +self+ is a singleton class
35
- */
36
- static VALUE kernel_is_singleton_p(VALUE self)
37
- {
38
- if (BUILTIN_TYPE(self) == T_CLASS && FL_TEST(self, FL_SINGLETON))
39
- return Qtrue;
40
- else
41
- return Qfalse;
42
- }
43
-
44
31
  static VALUE kernel_is_immediate(VALUE klass, VALUE object)
45
32
  { return IMMEDIATE_P(object) ? Qtrue : Qfalse; }
46
33
  #endif
@@ -53,9 +40,6 @@ static VALUE kernel_crash(VALUE klass)
53
40
  }
54
41
 
55
42
  extern "C" void Init_value_set();
56
- extern "C" void Init_weakref(VALUE mUtilrb);
57
- extern "C" void Init_proc();
58
- extern "C" void Init_utilrb_readline();
59
43
 
60
44
  extern "C" void Init_utilrb()
61
45
  {
@@ -63,17 +47,10 @@ extern "C" void Init_utilrb()
63
47
 
64
48
  #ifndef RUBINIUS
65
49
  rb_define_method(rb_mEnumerable, "each_uniq", RUBY_METHOD_FUNC(enumerable_each_uniq), 0);
66
- rb_define_method(rb_mKernel, "is_singleton?", RUBY_METHOD_FUNC(kernel_is_singleton_p), 0);
67
-
68
50
  rb_define_singleton_method(rb_mKernel, "crash!", RUBY_METHOD_FUNC(kernel_crash), 0);
69
51
  rb_define_singleton_method(rb_mKernel, "immediate?", RUBY_METHOD_FUNC(kernel_is_immediate), 1);
70
-
71
- Init_weakref(mUtilrb);
72
52
  #endif
73
53
 
74
- Init_proc();
75
-
76
54
  Init_value_set();
77
- Init_utilrb_readline();
78
55
  }
79
56
 
@@ -1,3 +1,6 @@
1
+ puts "WARN: ColumnFormatter is deprecated, use the tty-table gem which provides"
2
+ puts "WARN: more functionality in a much nicer API"
3
+
1
4
  # Displays a set of data into a column-formatted table
2
5
  class ColumnFormatter
3
6
  MARGIN = 1
@@ -53,18 +56,18 @@ class ColumnFormatter
53
56
  # First, determine the columns width and height, and
54
57
  # convert data into strings
55
58
  data = data.map do |line_data|
56
- line_data = line_data.inject({}) do |h, (label, data)|
57
- h[label.to_s] = data.to_s
59
+ line_data = line_data.inject({}) do |h, (label, value)|
60
+ h[label.to_s] = value.to_s
58
61
  h
59
62
  end
60
63
 
61
- line_data.each do |label, data|
64
+ line_data.each do |label, value|
62
65
  unless width.has_key?(label)
63
66
  width[label] = label.length
64
67
  end
65
68
 
66
- if width[label] < data.length
67
- width[label] = data.length
69
+ if width[label] < value.length
70
+ width[label] = value.length
68
71
  end
69
72
  end
70
73
  end
data/lib/utilrb/common.rb CHANGED
@@ -1,11 +1,8 @@
1
+ require 'utilrb/version'
1
2
 
2
3
  # Utilrb is yet another Ruby toolkit, in the spirit of facets. It includes all
3
4
  # the standard class extensions used by www.rock-robotics.org projects.
4
5
  module Utilrb
5
- unless defined? Utilrb::VERSION
6
- VERSION = "2.0.2.b2"
7
- end
8
-
9
6
  LIB_DIR = File.expand_path(File.dirname(__FILE__))
10
7
 
11
8
  unless defined? UTILRB_EXT_MODE
@@ -14,8 +11,6 @@ module Utilrb
14
11
  STDERR.puts "Utilrb: not loading the C extension"
15
12
  else
16
13
  begin
17
- # We need readline
18
- require 'readline'
19
14
  require 'utilrb/utilrb'
20
15
  UTILRB_EXT_MODE = true
21
16
  STDERR.puts "Utilrb: loaded C extension" if ENV['UTILRB_EXT_MODE']
@@ -2,15 +2,9 @@ require 'utilrb/common'
2
2
  require 'enumerator'
3
3
  require 'set'
4
4
 
5
- enumerator = if defined?(Enumerable::Enumerator)
6
- Enumerable::Enumerator
7
- else
8
- Enumerator
9
- end
10
-
11
5
  # Enumerator object which removes duplicate entries.
12
6
  # See also Object#enum_uniq and Enumerable#each_uniq
13
- class UniqEnumerator < enumerator
7
+ class UniqEnumerator < Enumerator
14
8
  # Creates the enumerator on +obj+ using the method +enum_with+ to
15
9
  # enumerate. The method will be called with the arguments in +args+.
16
10
  #
@@ -60,7 +54,7 @@ Utilrb.unless_ext do
60
54
  # each_uniq { |obj| ... }
61
55
  #
62
56
  # Yields all unique values found in +enum+
63
- def each_uniq(&iterator)
57
+ def each_uniq
64
58
  seen = Set.new
65
59
  each do |obj|
66
60
  if !seen.include?(obj)
@@ -74,10 +74,6 @@ module Utilrb
74
74
  @event_loop.cancel_timer self
75
75
  end
76
76
 
77
- def single_shot?
78
- @single_shot
79
- end
80
-
81
77
  def stopped?
82
78
  @stopped
83
79
  end
@@ -364,7 +360,7 @@ module Utilrb
364
360
  raise ArgumentError "no block given" unless block
365
361
  if delay && delay > 0
366
362
  timer = Timer.new(self,delay,true,&block)
367
- timer.start
363
+ timer.start(timer.period, false)
368
364
  else
369
365
  add_event(Event.new(block))
370
366
  end
@@ -579,7 +575,7 @@ module Utilrb
579
575
  end
580
576
 
581
577
  def reraise_error(error)
582
- raise error, error.message, error.backtrace + caller(1)
578
+ raise error, error.message, (error.backtrace || []) + caller(1)
583
579
  end
584
580
 
585
581
  # Handles all current events and timers. If a code
@@ -594,7 +590,7 @@ module Utilrb
594
590
  #copy all work otherwise it would not be allowed to
595
591
  #call any event loop functions from a timer
596
592
  timers,call = @mutex.synchronize do
597
- @every_cylce_events.delete_if &:ignore?
593
+ @every_cylce_events.delete_if(&:ignore?)
598
594
  @every_cylce_events.each do |event|
599
595
  add_event event
600
596
  end
@@ -897,7 +893,6 @@ module Utilrb
897
893
 
898
894
  line_no = __LINE__; str = %Q{
899
895
  def #{ali}(*args, &block)
900
- options = Hash.new
901
896
  accessor,error = #{if options[:known_errors]
902
897
  %Q{
903
898
  begin
@@ -923,7 +918,7 @@ module Utilrb
923
918
  raise error
924
919
  end
925
920
  else
926
- work = Proc.new do |*args|
921
+ work = Proc.new do |*callback_args|
927
922
  acc,err = #{accessor} # cache accessor
928
923
  if !acc
929
924
  if err
@@ -932,7 +927,7 @@ module Utilrb
932
927
  raise DesignatedObjectNotFound,'designated object is nil'
933
928
  end
934
929
  else
935
- acc.__send__(:#{method}, *args, &block)
930
+ acc.__send__(:#{method}, *callback_args, &block)
936
931
  end
937
932
  end
938
933
  callback = #{filter ? "block.to_proc.arity == 2 ? Proc.new { |r,e| block.call(#{filter}(r),e)} : Proc.new {|r| block.call(#{filter}(r))}" : "block"}
@@ -1,5 +1,4 @@
1
1
  require 'utilrb/common'
2
- require 'utilrb/object/singleton_class'
3
2
  require 'utilrb/kernel/with_module'
4
3
 
5
4
  module Kernel
@@ -67,7 +66,7 @@ module Kernel
67
66
 
68
67
  filtered_backtrace = backtrace[0, backtrace.size - our_frame_pos].
69
68
  map do |line|
70
- line.gsub! /:in `.*dsl.*'/, ''
69
+ line = line.gsub(/:in `.*dsl.*'/, '')
71
70
  if line =~ /load_dsl_file.*(method_missing|send)/
72
71
  next
73
72
  end
@@ -1,6 +1,19 @@
1
1
  require 'utilrb/hash/to_sym_keys'
2
2
  require 'utilrb/hash/slice'
3
3
  module Kernel
4
+ def filter_options_handle_single_entry(known_options, options, key)
5
+ key = key.to_sym
6
+ if options.has_key?(key)
7
+ known_options[key] = options.delete(key)
8
+ false
9
+ elsif options.has_key?(key_s = key.to_s)
10
+ known_options[key] = options.delete(key_s)
11
+ false
12
+ else
13
+ true
14
+ end
15
+ end
16
+
4
17
  # Partitions an option hash between known arguments and unknown
5
18
  # arguments, with default value support. All option keys are
6
19
  # converted to symbols for consistency.
@@ -17,44 +30,27 @@ module Kernel
17
30
  # filter_options(nil, known_options) -> default_options, {}
18
31
  #
19
32
  def filter_options(options, *user_option_spec)
20
- option_spec = Hash.new
33
+ options = options.dup
34
+ known_options = Hash.new
21
35
  user_option_spec.each do |opt|
22
36
  if opt.respond_to?(:to_hash)
23
- option_spec.merge!(opt)
37
+ opt.each do |key, value|
38
+ if filter_options_handle_single_entry(known_options, options, key)
39
+ if !value.nil?
40
+ known_options[key.to_sym] = value
41
+ end
42
+ end
43
+ end
24
44
  elsif opt.respond_to?(:to_ary)
25
45
  opt.each do |key|
26
- option_spec[key] = nil
46
+ filter_options_handle_single_entry(known_options, options, key)
27
47
  end
28
48
  else
29
- option_spec[opt] = nil
49
+ filter_options_handle_single_entry(known_options, options, opt)
30
50
  end
31
51
  end
32
52
 
33
- unknown_options = Hash.new
34
- options = options.dup
35
- options.delete_if do |key, value|
36
- if !key.respond_to?(:to_sym)
37
- unknown_options[key] = value
38
- true
39
- end
40
- end
41
-
42
- options = (options.to_hash || Hash.new).to_sym_keys
43
- # cannot use #to_sym_keys as option_spec can be an array
44
- option_spec = option_spec.inject({}) { |h, (k, v)| h[k.to_sym] = v; h }
45
-
46
- unknown_options.merge!(options.slice(*(options.keys - option_spec.keys)))
47
- known_options = options.slice(*option_spec.keys)
48
-
49
- # Set default values defined in the spec
50
- option_spec.each_key do |k|
51
- value = option_spec[k]
52
- if !known_options.has_key?(k) && !value.nil?
53
- known_options[k] ||= value
54
- end
55
- end
56
-
57
- return *[known_options, unknown_options]
53
+ return *[known_options, options]
58
54
  end
59
55
 
60
56
  # Normalizes all keys in the given option hash to symbol and returns the
@@ -1,7 +1,6 @@
1
1
  require 'facets/module/spacename'
2
2
  require 'facets/kernel/constant'
3
3
  require 'utilrb/object/attribute'
4
- require 'utilrb/object/singleton_class'
5
4
  require 'utilrb/logger/forward'
6
5
 
7
6
  class Logger