utilrb 1.4.0 → 1.5.0

Sign up to get free protection for your applications and to get access to all the features.
File without changes
data/Rakefile CHANGED
@@ -1,9 +1,8 @@
1
1
  require 'rake'
2
2
  require './lib/utilrb/common'
3
+ require './lib/utilrb/rake_common'
3
4
 
4
- begin
5
- require 'hoe'
6
-
5
+ Utilrb::Rake.hoe do
7
6
  hoe_spec = Hoe.spec 'utilrb' do
8
7
  developer "Sylvain Joyeux", "sylvain.joyeux@m4x.org"
9
8
  extra_deps <<
@@ -19,12 +18,6 @@ begin
19
18
  hoe_spec.spec.extensions << 'ext/extconf.rb'
20
19
  Rake.clear_tasks(/^default$/)
21
20
  Rake.clear_tasks(/publish_docs/)
22
-
23
- rescue Exception => e
24
- if e.message !~ /\.rubyforge/
25
- STDERR.puts "WARN: cannot load the Hoe gem, or Hoe fails. Publishing tasks are disabled"
26
- STDERR.puts "WARN: error message is: #{e.message}"
27
- end
28
21
  end
29
22
 
30
23
  task :default => :setup
@@ -39,15 +32,6 @@ task :setup do
39
32
  FileUtils.ln_sf "../ext/utilrb_ext.so", "lib/utilrb_ext.so"
40
33
  end
41
34
 
42
- task 'publish_docs' => 'redocs' do
43
- if !system('./update_github')
44
- raise "cannot update the gh-pages branch for GitHub"
45
- end
46
- if !system('git', 'push', 'github', '+gh-pages')
47
- raise "cannot push the documentation"
48
- end
49
- end
50
-
51
35
  task :clean do
52
36
  puts "Cleaning extension in ext/"
53
37
  FileUtils.rm_f "lib/utilrb_ext.so"
@@ -1,6 +1,6 @@
1
1
  module Utilrb
2
2
  unless defined? Utilrb::VERSION
3
- VERSION = "1.4.0"
3
+ VERSION = "1.5.0"
4
4
  RUBY_IS_19 = (RUBY_VERSION >= "1.9.2")
5
5
  RUBY_IS_191 = (RUBY_VERSION >= "1.9") && (RUBY_VERSION < "1.9.2")
6
6
  end
@@ -170,7 +170,7 @@ module Kernel
170
170
 
171
171
  # Check if the user defined new constants by using class K and/or
172
172
  # mod Mod
173
- if !Utilrb::RUBY_IS_191
173
+ if !Utilrb::RUBY_IS_191 && !new_constants
174
174
  new_constants = Kernel.constants
175
175
  end
176
176
 
@@ -14,6 +14,14 @@ class Logger
14
14
  def #{level}(*args, &proc); logger.#{level}(*args, &proc) end
15
15
  EOF
16
16
  end
17
+
18
+ def log_nest(size, level = nil, &block)
19
+ logger.nest(size, level, &block)
20
+ end
21
+
22
+ def log_pp(level, object, *first_line_format)
23
+ logger.log_pp(level, object, *first_line_format)
24
+ end
17
25
  end
18
26
  end
19
27
 
@@ -1,7 +1,11 @@
1
1
  require 'facets/module/spacename'
2
2
  require 'facets/kernel/constant'
3
+ require 'utilrb/object/singleton_class'
4
+ require 'utilrb/logger/forward'
5
+
3
6
  class Logger
4
7
  # Define a hierarchy of loggers mapped to the module hierarchy.
8
+ #
5
9
  # It defines the #logger accessor which either returns the logger
6
10
  # attribute of the module, if one is defined, or its parent logger
7
11
  # attribute.
@@ -21,23 +25,50 @@ class Logger
21
25
  module Hierarchy
22
26
  attr_writer :logger
23
27
 
28
+ def self.included(obj)
29
+ if obj.singleton_class.ancestors.include?(Logger::Forward)
30
+ obj.send(:include, Logger::Forward)
31
+ end
32
+ end
33
+
34
+ def self.extended(obj)
35
+ if obj.kind_of?(Module)
36
+ parent_module = constant(obj.spacename)
37
+ if (parent_module.singleton_class.ancestors.include?(Logger::Forward))
38
+ obj.send(:extend, Logger::Forward)
39
+ end
40
+ end
41
+ end
42
+
24
43
  def has_own_logger?
25
44
  defined?(@logger) && @logger
26
45
  end
27
46
 
28
- def make_own_logger(new_level = nil)
47
+ def make_own_logger(new_progname = nil, new_level = nil)
29
48
  if !has_own_logger?
30
49
  @logger = self.logger.dup
31
50
  end
51
+ if new_progname
52
+ @logger.progname = new_progname
53
+ end
32
54
  if new_level
33
55
  @logger.level = new_level
34
56
  end
35
57
  @logger
36
58
  end
37
59
 
60
+ def reset_own_logger
61
+ @logger = nil
62
+ end
63
+
38
64
  def logger
39
- return @logger if defined?(@logger) && @logger
40
- @logger =
65
+ if defined?(@logger) && @logger
66
+ return @logger
67
+ elsif defined?(@default_logger) && @default_logger
68
+ return @default_logger
69
+ end
70
+
71
+ @default_logger ||=
41
72
  if kind_of?(Module)
42
73
  constant(self.spacename).logger
43
74
  else
@@ -109,11 +109,23 @@ module Utilrb
109
109
  end
110
110
  end
111
111
 
112
+ # Exception raised when a request pkg-config file is not found
112
113
  class NotFound < RuntimeError
114
+ # The name of the pkg-config package
113
115
  attr_reader :name
116
+
114
117
  def initialize(name); @name = name end
115
118
  end
116
119
 
120
+ # Exception raised when invalid data is found in a pkg-config file
121
+ class Invalid < RuntimeError
122
+ # The name of the pkg-config package
123
+ attr_reader :name
124
+
125
+ def initialize(name); @name = name end
126
+ end
127
+
128
+
117
129
  attr_reader :file
118
130
  attr_reader :path
119
131
 
@@ -192,10 +204,29 @@ module Utilrb
192
204
 
193
205
  raw_variables = Hash.new
194
206
  raw_fields = Hash.new
195
- file.each do |line|
207
+
208
+ running_line = nil
209
+ @file = file.map do |line|
196
210
  line.gsub! /\s*#.*$/, ''
211
+ line = line.strip
197
212
  next if line.empty?
198
213
 
214
+ value = line.gsub(/\\$/, '')
215
+ if running_line
216
+ running_line << " " << value
217
+ end
218
+
219
+ if line =~ /\\$/
220
+ running_line ||= value
221
+ elsif running_line
222
+ running_line = nil
223
+ else
224
+ value
225
+ end
226
+ end.compact
227
+
228
+
229
+ file.each do |line|
199
230
  case line
200
231
  when /^(#{VAR_NAME_RX})\s*=(.*)/
201
232
  raw_variables[$1] = $2.strip
@@ -292,13 +323,21 @@ module Utilrb
292
323
  # Returns the list of include directories listed in the Cflags: section
293
324
  # of the pkgconfig file
294
325
  def include_dirs
295
- Shellwords.shellsplit(cflags_only_I).map { |v| v[2..-1] }
326
+ result = Shellwords.shellsplit(cflags_only_I).map { |v| v[2..-1] }
327
+ if result.any?(&:empty?)
328
+ raise Invalid, "empty include directory (-I without argument) found in pkg-config package #{name}"
329
+ end
330
+ result
296
331
  end
297
332
 
298
333
  # Returns the list of library directories listed in the Libs: section
299
334
  # of the pkgconfig file
300
335
  def library_dirs
301
- Shellwords.shellsplit(libs_only_L).map { |v| v[2..-1] }
336
+ result = Shellwords.shellsplit(libs_only_L).map { |v| v[2..-1] }
337
+ if result.any?(&:empty?)
338
+ raise Invalid, "empty link directory (-L without argument) found in pkg-config package #{name}"
339
+ end
340
+ result
302
341
  end
303
342
 
304
343
  ACTIONS = %w{cflags cflags-only-I cflags-only-other
@@ -374,6 +413,16 @@ module Utilrb
374
413
  result
375
414
  end
376
415
 
416
+ def self.available_package_names
417
+ result = []
418
+ each_pkgconfig_directory do |dir|
419
+ Dir.glob(File.join(dir, "*.pc")) do |path|
420
+ result << File.basename(path, ".pc")
421
+ end
422
+ end
423
+ result
424
+ end
425
+
377
426
  # Returns true if there is a package with this name
378
427
  def self.has_package?(name)
379
428
  !find_all_package_files(name).empty?
@@ -385,7 +434,6 @@ module Utilrb
385
434
  seen = Set.new
386
435
  each_pkgconfig_directory do |dir|
387
436
  Dir.glob(File.join(dir, '*.pc')) do |file|
388
- puts file
389
437
  pkg_name = File.basename(file, ".pc")
390
438
  next if seen.include?(pkg_name)
391
439
  next if regex && pkg_name !~ regex
@@ -26,5 +26,13 @@ class TC_Hash < Test::Unit::TestCase
26
26
  values = $1.split(", ")
27
27
  assert_equal(["1 => 2", "2 => 3", "3 => ..."].to_set, values.to_set)
28
28
  end
29
+
30
+ def test_map_value
31
+ base = { 'a' => 1, 'b' => 2 }
32
+ result = base.map_value { |k, v| v += 1 }
33
+
34
+ assert_equal({ 'a' => 1, 'b' => 2 }, base)
35
+ assert_equal({ 'a' => 2, 'b' => 3 }, result)
36
+ end
29
37
  end
30
38
 
@@ -0,0 +1,55 @@
1
+ require 'test_config'
2
+ require 'utilrb/logger'
3
+
4
+ class TC_Logger < Test::Unit::TestCase
5
+ module Root
6
+ extend Logger::Root('TC_Logger', Logger::INFO)
7
+
8
+ module Child
9
+ extend Logger::Hierarchy
10
+ end
11
+ end
12
+
13
+ def teardown
14
+ Root::Child.reset_own_logger
15
+ end
16
+
17
+ def test_logger_root
18
+ assert Root.respond_to?(:logger)
19
+ assert Root.logger
20
+ assert_equal Logger::INFO, Root.logger.level
21
+ assert_equal 'TC_Logger', Root.logger.progname
22
+
23
+ assert Root.respond_to?(:warn)
24
+ end
25
+
26
+ def test_logger_hierarchy
27
+ child = Root::Child
28
+ assert child.respond_to?(:logger)
29
+ assert child.logger
30
+ assert_same Root.logger, child.logger
31
+ assert child.respond_to?(:warn)
32
+ end
33
+
34
+ def test_logger_hierarch_make_own
35
+ child = Root::Child
36
+ assert_same Root.logger, child.logger
37
+
38
+ child.make_own_logger('child', Logger::DEBUG)
39
+ assert_not_same Root.logger, child.logger
40
+ assert_equal "child", child.logger.progname
41
+ assert_equal Logger::DEBUG, child.logger.level
42
+ assert_equal "TC_Logger", Root.logger.progname
43
+ assert_equal Logger::INFO, Root.logger.level
44
+
45
+ assert child.has_own_logger?
46
+ end
47
+
48
+ def test_logger_hierarch_reset_own
49
+ child = Root::Child
50
+ child.make_own_logger('child', Logger::DEBUG)
51
+ assert_not_same Root.logger, child.logger
52
+ child.reset_own_logger
53
+ test_logger_hierarchy
54
+ end
55
+ end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: utilrb
3
3
  version: !ruby/object:Gem::Version
4
- hash: 7
4
+ hash: 3
5
5
  prerelease:
6
6
  segments:
7
7
  - 1
8
- - 4
8
+ - 5
9
9
  - 0
10
- version: 1.4.0
10
+ version: 1.5.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - Sylvain Joyeux
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-08-03 00:00:00 Z
18
+ date: 2011-11-03 00:00:00 Z
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
21
21
  name: facets
@@ -69,14 +69,13 @@ dependencies:
69
69
  requirement: &id004 !ruby/object:Gem::Requirement
70
70
  none: false
71
71
  requirements:
72
- - - ">="
72
+ - - ~>
73
73
  - !ruby/object:Gem::Version
74
- hash: 47
74
+ hash: 27
75
75
  segments:
76
76
  - 2
77
- - 8
78
- - 0
79
- version: 2.8.0
77
+ - 12
78
+ version: "2.12"
80
79
  type: :development
81
80
  version_requirements: *id004
82
81
  description: |-
@@ -198,6 +197,8 @@ files:
198
197
  - test/test_time.rb
199
198
  - test/test_unbound_method.rb
200
199
  - test/test_weakref.rb
200
+ - test/test_logger.rb
201
+ - .gemtest
201
202
  homepage: http://utilrb.rubyforge.org
202
203
  licenses: []
203
204
 
@@ -228,26 +229,27 @@ required_rubygems_version: !ruby/object:Gem::Requirement
228
229
  requirements: []
229
230
 
230
231
  rubyforge_project: utilrb
231
- rubygems_version: 1.7.2
232
+ rubygems_version: 1.8.10
232
233
  signing_key:
233
234
  specification_version: 3
234
235
  summary: Yet another Ruby toolkit
235
236
  test_files:
237
+ - test/test_kernel.rb
236
238
  - test/test_unbound_method.rb
237
239
  - test/test_hash.rb
238
- - test/test_misc.rb
239
240
  - test/test_exception.rb
240
- - test/test_kernel.rb
241
- - test/test_gc.rb
242
- - test/test_proc.rb
243
- - test/test_time.rb
244
- - test/test_pkgconfig.rb
245
- - test/test_weakref.rb
246
- - test/test_object.rb
247
- - test/test_enumerable.rb
248
241
  - test/test_config.rb
249
- - test/test_dir.rb
250
- - test/test_array.rb
242
+ - test/test_time.rb
243
+ - test/test_logger.rb
251
244
  - test/test_module.rb
252
245
  - test/test_objectstats.rb
246
+ - test/test_enumerable.rb
247
+ - test/test_gc.rb
248
+ - test/test_misc.rb
249
+ - test/test_object.rb
250
+ - test/test_array.rb
251
+ - test/test_dir.rb
252
+ - test/test_weakref.rb
253
+ - test/test_proc.rb
253
254
  - test/test_set.rb
255
+ - test/test_pkgconfig.rb