utilrb 1.6.2 → 1.6.3

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/Manifest.txt CHANGED
@@ -22,6 +22,7 @@ lib/utilrb/configsearch.rb
22
22
  lib/utilrb/configsearch/configuration_finder.rb
23
23
  lib/utilrb/dir.rb
24
24
  lib/utilrb/dir/empty.rb
25
+ lib/utilrb/doc/rake.rb
25
26
  lib/utilrb/enumerable.rb
26
27
  lib/utilrb/enumerable/null.rb
27
28
  lib/utilrb/enumerable/random_element.rb
@@ -33,6 +34,8 @@ lib/utilrb/exception/full_message.rb
33
34
  lib/utilrb/gc.rb
34
35
  lib/utilrb/gc/force.rb
35
36
  lib/utilrb/hash.rb
37
+ lib/utilrb/hash/map_key.rb
38
+ lib/utilrb/hash/map_value.rb
36
39
  lib/utilrb/hash/recursive_merge.rb
37
40
  lib/utilrb/hash/slice.rb
38
41
  lib/utilrb/hash/to_s.rb
@@ -48,7 +51,10 @@ lib/utilrb/kernel/with_module.rb
48
51
  lib/utilrb/logger.rb
49
52
  lib/utilrb/logger/forward.rb
50
53
  lib/utilrb/logger/hierarchy.rb
54
+ lib/utilrb/logger/indent.rb
51
55
  lib/utilrb/logger/io.rb
56
+ lib/utilrb/logger/log_pp.rb
57
+ lib/utilrb/logger/root.rb
52
58
  lib/utilrb/marshal/load_with_missing_constants.rb
53
59
  lib/utilrb/module.rb
54
60
  lib/utilrb/module/ancestor_p.rb
@@ -58,6 +64,7 @@ lib/utilrb/module/cached_enum.rb
58
64
  lib/utilrb/module/const_defined_here_p.rb
59
65
  lib/utilrb/module/define_method.rb
60
66
  lib/utilrb/module/define_or_reuse.rb
67
+ lib/utilrb/module/dsl_attribute.rb
61
68
  lib/utilrb/module/include.rb
62
69
  lib/utilrb/module/inherited_enumerable.rb
63
70
  lib/utilrb/object.rb
@@ -67,17 +74,21 @@ lib/utilrb/object/scoped_eval.rb
67
74
  lib/utilrb/object/singleton_class.rb
68
75
  lib/utilrb/objectstats.rb
69
76
  lib/utilrb/pkgconfig.rb
77
+ lib/utilrb/rake_common.rb
70
78
  lib/utilrb/set.rb
71
79
  lib/utilrb/set/to_s.rb
72
80
  lib/utilrb/socket/tcp_server.rb
73
81
  lib/utilrb/socket/tcp_socket.rb
82
+ lib/utilrb/spawn.rb
74
83
  lib/utilrb/symbol/to_str.rb
75
84
  lib/utilrb/time.rb
76
85
  lib/utilrb/time/to_hms.rb
86
+ lib/utilrb/timepoints.rb
77
87
  lib/utilrb/unbound_method.rb
78
88
  lib/utilrb/unbound_method/call.rb
79
89
  lib/utilrb/value_set.rb
80
90
  lib/utilrb/weakref.rb
91
+ lib/utilrb/yard.rb
81
92
  patches/gc_live_objects.patch
82
93
  test/data/test_pkgconfig.pc
83
94
  test/data/test_pkgconfig_empty.pc
@@ -89,6 +100,7 @@ test/test_exception.rb
89
100
  test/test_gc.rb
90
101
  test/test_hash.rb
91
102
  test/test_kernel.rb
103
+ test/test_logger.rb
92
104
  test/test_misc.rb
93
105
  test/test_module.rb
94
106
  test/test_object.rb
data/Rakefile CHANGED
@@ -1,6 +1,7 @@
1
1
  require 'rake'
2
2
  require './lib/utilrb/common'
3
3
  require './lib/utilrb/rake_common'
4
+ require './lib/utilrb/doc/rake'
4
5
 
5
6
  Utilrb::Rake.hoe do
6
7
  hoe_spec = Hoe.spec 'utilrb' do
@@ -17,11 +18,13 @@ Utilrb::Rake.hoe do
17
18
  end
18
19
  hoe_spec.spec.extensions << 'ext/extconf.rb'
19
20
  Rake.clear_tasks(/^default$/)
20
- Rake.clear_tasks(/publish_docs/)
21
+ Rake.clear_tasks(/doc/)
21
22
  end
22
23
 
23
24
  task :default => :setup
24
25
 
26
+ Utilrb.doc
27
+
25
28
  desc "builds Utilrb's C extension"
26
29
  task :setup do
27
30
  Dir.chdir("ext") do
data/lib/utilrb/common.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  module Utilrb
2
2
  unless defined? Utilrb::VERSION
3
- VERSION = "1.6.2"
3
+ VERSION = "1.6.3"
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
@@ -0,0 +1,51 @@
1
+ require 'utilrb/kernel/options'
2
+
3
+ module Utilrb
4
+ DOC_MODE =
5
+ begin
6
+ require 'yard'
7
+ require 'yard/rake/yardoc_task'
8
+ 'yard'
9
+ rescue LoadError
10
+ begin
11
+ require 'rdoc/task'
12
+ 'rdoc-new'
13
+ rescue LoadError
14
+ begin
15
+ require 'rake/rdoctask'
16
+ 'rdoc-old'
17
+ rescue LoadError
18
+ end
19
+ end
20
+ end
21
+
22
+ def self.doc(target = 'docs', options = Hash.new)
23
+ options = Kernel.validate_options options,
24
+ :include => [File.join(Dir.pwd, 'lib', '**'), File.join(Dir.pwd, 'ext', '**')],
25
+ :exclude => [],
26
+ :target_dir => 'doc',
27
+ :title => '',
28
+ :plugins => []
29
+
30
+ case DOC_MODE
31
+ when 'yard'
32
+ task = YARD::Rake::YardocTask.new(target)
33
+ task.files.concat(options[:include])
34
+ task.options << '--title' << options[:title] << '--output-dir' << options[:target_dir]
35
+ options[:plugins].each do |plugin_name|
36
+ require "#{plugin_name}/yard"
37
+ end
38
+ when /rdoc/
39
+ klass = if DOC_MODE == 'rdoc-new'
40
+ RDoc::Task
41
+ else
42
+ Rake::RdocTask
43
+ end
44
+ task = klass.new(target)
45
+ task.rdoc_files.include(*options[:include])
46
+ task.rdoc_files.exclude(*options[:exclude])
47
+ task.title = options[:title]
48
+ task.rdoc_dir = File.expand_path(options[:target_dir])
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,13 @@
1
+ class Hash
2
+ # Creates a new hash for in which k => v has been mapped to yield(k, v) => v
3
+ #
4
+ # See also #map_value
5
+ def map_key
6
+ result = Hash.new
7
+ each do |k, v|
8
+ result[yield(k, v)] = v
9
+ end
10
+ result
11
+ end
12
+ end
13
+
@@ -0,0 +1,13 @@
1
+ class Hash
2
+ # Creates a new hash for in which k => v has been mapped to k => yield(k, v)
3
+ #
4
+ # See also #map_key
5
+ def map_value
6
+ result = Hash.new
7
+ each do |k, v|
8
+ result[k] = yield(k, v)
9
+ end
10
+ result
11
+ end
12
+ end
13
+
@@ -0,0 +1,40 @@
1
+ require 'utilrb/object/attribute'
2
+ class Logger
3
+ attribute(:nest_size) { 0 }
4
+ def nest_size=(new_value)
5
+ @nest_string = nil
6
+ @nest_size = new_value
7
+ end
8
+
9
+ def nest(size, level = nil)
10
+ if level
11
+ send(level) do
12
+ nest(size) do
13
+ yield
14
+ end
15
+ return
16
+ end
17
+ end
18
+
19
+ if block_given?
20
+ begin
21
+ current = self.nest_size
22
+ self.nest_size += size
23
+ yield
24
+ ensure
25
+ self.nest_size = current
26
+ end
27
+ else
28
+ self.nest_size += size
29
+ end
30
+ end
31
+
32
+ def format_message(severity, datetime, progname, msg)
33
+ if !@nest_string
34
+ @nest_string = " " * self.nest_size
35
+ end
36
+ msg = "#{@nest_string}#{msg}"
37
+ (@formatter || @default_formatter).call(severity, datetime, progname, msg)
38
+ end
39
+ end
40
+
@@ -0,0 +1,48 @@
1
+ begin
2
+ require "highline"
3
+ rescue LoadError
4
+ end
5
+
6
+ require 'utilrb/exception/full_message'
7
+ class Logger
8
+ def self.pp_to_array(object)
9
+ message =
10
+ begin
11
+ PP.pp(object, "")
12
+ rescue Exception => formatting_error
13
+ begin
14
+ "error formatting object using pretty-printing\n" +
15
+ object.to_s +
16
+ "\nplease report the formatting error: \n" +
17
+ formatting_error.full_message
18
+ rescue Exception => formatting_error
19
+ "\nerror formatting object using pretty-printing\n" +
20
+ formatting_error.full_message
21
+ end
22
+ end
23
+
24
+ message.split("\n")
25
+ end
26
+
27
+ if defined? HighLine
28
+ def color(*args)
29
+ @color_generator ||= HighLine.new
30
+ @color_generator.color(*args)
31
+ end
32
+ end
33
+
34
+ def log_pp(level, object, *first_line_format)
35
+ send(level) do
36
+ first_line = !first_line_format.empty? && defined?(HighLine)
37
+ Logger.pp_to_array(object).each do |line|
38
+ if first_line
39
+ line = color(line, *first_line_format)
40
+ first_line = false
41
+ end
42
+ send(level, line)
43
+ end
44
+ break
45
+ end
46
+ end
47
+ end
48
+
@@ -0,0 +1,65 @@
1
+ class Logger
2
+ HAS_COLOR =
3
+ begin
4
+ require 'highline'
5
+ @console = HighLine.new
6
+ rescue LoadError
7
+ end
8
+
9
+ LEVEL_TO_COLOR =
10
+ { 'DEBUG' => [],
11
+ 'INFO' => [],
12
+ 'WARN' => [:magenta],
13
+ 'ERROR' => [:red],
14
+ 'FATAL' => [:red, :bold] }
15
+
16
+ # Defines a logger on a module, allowing to use that module as a root in a
17
+ # hierarchy (i.e. having submodules use the Logger::Hierarchy support)
18
+ #
19
+ # +progname+ is used as the logger's program name
20
+ #
21
+ # +base_level+ is the level at which the logger is initialized
22
+ #
23
+ # If a block is given, it will be provided the message severity, time,
24
+ # program name and text and should return the formatted message.
25
+ #
26
+ # This method creates a +logger+ attribute in which the module can be
27
+ # accessed. Moreover, it includes Logger::Forward, which allows to access
28
+ # the logger's output methods on the module directly
29
+ #
30
+ # Example:
31
+ #
32
+ # module MyModule
33
+ # extend Logger.Root('MyModule', :WARN)
34
+ # end
35
+ #
36
+ # MyModule.info "text"
37
+ # MyModule.warn "warntext"
38
+ def self.Root(progname, base_level, &block)
39
+ console = @console
40
+ formatter =
41
+ if block then lambda(&block)
42
+ elsif HAS_COLOR
43
+ lambda do |severity, time, progname, msg|
44
+ console.color("#{progname}[#{severity}]: #{msg}\n", *LEVEL_TO_COLOR[severity])
45
+ end
46
+ else lambda { |severity, time, progname, msg| "#{progname}[#{severity}]: #{msg}\n" }
47
+ end
48
+
49
+ Module.new do
50
+ include Logger::Forward
51
+
52
+ singleton = (class << self; self end)
53
+ singleton.send(:define_method, :extended) do |mod|
54
+ logger = Logger.new(STDOUT)
55
+ logger.level = base_level
56
+ logger.progname = progname
57
+ logger.formatter = formatter
58
+ mod.instance_variable_set(:@logger, logger)
59
+ end
60
+
61
+ attr_accessor :logger
62
+ end
63
+ end
64
+ end
65
+
@@ -0,0 +1,65 @@
1
+ class Module
2
+ # call-seq:
3
+ # dsl_attribute(name)
4
+ # dsl_attribute(name) { |value| ... }
5
+ #
6
+ # This defines a +name+ instance method on the given class which accepts zero or one argument
7
+ #
8
+ # Without any argument, it acts as a getter for the +@name+ attribute. With
9
+ # one argument, it acts instead as a setter for the same attribute and
10
+ # returns self. If a block has been given to +dsl_attribute+, any new value
11
+ # is passed to the block, whose return value is actually saved in the
12
+ # instance variable. This block can therefore both filter the value
13
+ # (convert it to a desired form) and validate it.
14
+ #
15
+ # The goal of this method is to have a nicer way to handle attribute in DSLs: instead
16
+ # of
17
+ #
18
+ # model = create_model do
19
+ # self.my_model_attribute = 'bla'
20
+ #
21
+ # if (my_model_attribute)
22
+ # <do something>
23
+ # end
24
+ # end
25
+ #
26
+ # (or worse, using set_ and get_ prefixes), we can do
27
+ #
28
+ # model = create_model do
29
+ # my_model_attribute 'bla', arg0, arg1, ...
30
+ #
31
+ # if (my_model_attribute)
32
+ # <do something>
33
+ # end
34
+ # end
35
+ #
36
+ def dsl_attribute(name, &filter_block)
37
+ class_eval do
38
+ if filter_block
39
+ define_method("__dsl_attribute__#{name}__filter__", &filter_block)
40
+ end
41
+
42
+ define_method(name) do |*value|
43
+ if value.empty?
44
+ instance_variable_get("@#{name}")
45
+ elsif filter_block
46
+ if filter_block.arity >= 0 && value.size != filter_block.arity
47
+ raise ArgumentError, "too much arguments. Got #{value.size}, expected #{filter_block.arity}"
48
+ end
49
+
50
+ filtered_value = send("__dsl_attribute__#{name}__filter__", *value)
51
+ instance_variable_set("@#{name}", filtered_value)
52
+ self
53
+ else
54
+ if value.size == 1
55
+ instance_variable_set("@#{name}", value.first)
56
+ else
57
+ instance_variable_set("@#{name}", value)
58
+ end
59
+ self
60
+ end
61
+ end
62
+ end
63
+ end
64
+ end
65
+
@@ -0,0 +1,28 @@
1
+ module Utilrb
2
+ module Rake
3
+ def self.hoe
4
+ require 'hoe'
5
+ yield
6
+
7
+ rescue LoadError => e
8
+ STDERR.puts "INFO: cannot load the Hoe gem. Distribution is disabled"
9
+ STDERR.puts "INFO: error message is: #{e.message}"
10
+ rescue Exception => e
11
+ STDERR.puts "INFO: cannot load the Hoe gem, or Hoe fails. Distribution is disabled"
12
+ STDERR.puts "INFO: error message is: #{e.message}"
13
+ end
14
+
15
+ def self.rdoc
16
+ require 'rdoc/task'
17
+ yield
18
+
19
+ rescue LoadError => e
20
+ STDERR.puts "INFO: cannot load RDoc, Documentation generation is disabled"
21
+ STDERR.puts "INFO: error message is: #{e.message}"
22
+ rescue Exception => e
23
+ STDERR.puts "INFO: cannot load the RDoc gem, or RDoc failed to load. Documentation generation is disabled"
24
+ STDERR.puts "INFO: error message is: #{e.message}"
25
+ end
26
+ end
27
+ end
28
+
@@ -0,0 +1,60 @@
1
+ module Utilrb
2
+ class SpawnFailed < RuntimeError; end
3
+ def self.spawn(*cmdline)
4
+ options =
5
+ if cmdline.last.kind_of?(Hash)
6
+ cmdline.pop
7
+ else Hash.new
8
+ end
9
+
10
+ options = Kernel.validate_options options, :redirect => nil,
11
+ :working_directory => nil,
12
+ :nice => nil
13
+
14
+ output = options[:redirect]
15
+ workdir = options[:working_directory]
16
+
17
+ read, write = IO.pipe
18
+ pid = fork do
19
+ if output
20
+ if !output.kind_of?(IO)
21
+ output_file_name = output.
22
+ gsub('%p', ::Process.pid.to_s)
23
+ if workdir
24
+ output_file_name = File.expand_path(output_file_name, workdir)
25
+ end
26
+ output = File.open(output, 'a')
27
+ end
28
+ end
29
+
30
+ if output
31
+ STDERR.reopen(output)
32
+ STDOUT.reopen(output)
33
+ end
34
+
35
+ read.close
36
+ write.sync = true
37
+ write.fcntl(Fcntl::F_SETFD, Fcntl::FD_CLOEXEC)
38
+ ::Process.setpgrp
39
+ if options[:nice]
40
+ Process.setpriority(Process::PRIO_PROCESS, 0, options[:nice])
41
+ end
42
+
43
+ begin
44
+ if workdir
45
+ Dir.chdir(workdir)
46
+ end
47
+ exec(*cmdline)
48
+ rescue Exception => e
49
+ write.write("FAILED")
50
+ end
51
+ end
52
+
53
+ write.close
54
+ if read.read == "FAILED"
55
+ raise SpawnFailed, "cannot start #{cmdline.inspect}"
56
+ end
57
+ pid
58
+ end
59
+ end
60
+
@@ -0,0 +1,23 @@
1
+ module Utilrb
2
+ module Timepoints
3
+ def clear_timepoints
4
+ @timepoints ||= Array.new
5
+ @timepoints.clear
6
+ end
7
+
8
+ def add_timepoint(*names)
9
+ @timepoints ||= Array.new
10
+ @timepoints << [Time.now, names]
11
+ end
12
+
13
+ def format_timepoints
14
+ result = []
15
+ @timepoints.inject(@timepoints.first.first) do |last_t, (t, name)|
16
+ result << name + [t - last_t]
17
+ t
18
+ end
19
+ result
20
+ end
21
+ end
22
+ end
23
+
@@ -0,0 +1,161 @@
1
+ require 'pp'
2
+ module Utilrb
3
+ module YARD
4
+ include ::YARD
5
+ class InheritedEnumerableHandler < YARD::Handlers::Ruby::AttributeHandler
6
+ handles method_call(:inherited_enumerable)
7
+ namespace_only
8
+
9
+ def self.process(handler, name, attr_name, is_map)
10
+ handler.send(:push_state, :scope => :class) do
11
+ namespace = handler.send(:namespace)
12
+ scope = handler.send(:scope)
13
+
14
+ object = YARD::CodeObjects::MethodObject.new(namespace, attr_name, scope) do |o|
15
+ o.dynamic = true
16
+ o.aliases << "self_#{name}"
17
+ end
18
+ handler.send(:register, object)
19
+ key_name ||=
20
+ if object.docstring.has_tag?('key_name')
21
+ object.docstring.tag('key_name').text
22
+ else
23
+ 'key'
24
+ end
25
+ return_type ||=
26
+ if object.docstring.has_tag?('return')
27
+ object.docstring.tag('return').types.first
28
+ elsif is_map
29
+ 'Hash<Object,Object>'
30
+ else
31
+ 'Array<Object>'
32
+ end
33
+ if return_type =~ /^\w+\<(.*)\>$/
34
+ if is_map
35
+ key_type, value_type = $1.split(',')
36
+ else
37
+ value_type = $1
38
+ end
39
+ else
40
+ key_type = "Object"
41
+ value_type = "Object"
42
+ end
43
+
44
+ object = YARD::CodeObjects::MethodObject.new(namespace, "all_#{name}", scope)
45
+ object.dynamic = true
46
+ handler.send(:register, object)
47
+ object.docstring.replace("The union, along the class hierarchy, of all the values stored in #{name}\n@return [Array<#{value_type}>]")
48
+
49
+ if is_map
50
+ object = YARD::CodeObjects::MethodObject.new(namespace, "find_#{name}", scope)
51
+ object.dynamic = true
52
+ handler.send(:register, object)
53
+ object.parameters << [key_name]
54
+ object.docstring.replace("Looks for objects registered in #{name} under the given key, and returns the first one in the ancestor chain (i.e. the one tha thas been registered in the most specialized class)\n@return [#{value_type},nil] the found object, or nil if none is registered under that key")
55
+
56
+ object = YARD::CodeObjects::MethodObject.new(namespace, "has_#{name}?", scope)
57
+ object.dynamic = true
58
+ handler.send(:register, object)
59
+ object.parameters << [key_name]
60
+ object.docstring.replace("Returns true if an object is registered in #{name} anywhere in the class hierarchy\n@return [Boolean]")
61
+ object.signature = "def has_#{name}?(key)"
62
+
63
+ object = YARD::CodeObjects::MethodObject.new(namespace, "each_#{name}", scope)
64
+ object.dynamic = true
65
+ handler.send(:register, object)
66
+ object.parameters << [key_name, "nil"] << ["uniq", "true"]
67
+ object.docstring.replace("
68
+ @overload each_#{name}(#{key_name}, uniq = true)
69
+ Enumerates all objects registered in #{name} under the given key
70
+ @yield [element]
71
+ @yieldparam [#{value_type}] element
72
+ @overload each_#{name}(nil, uniq = true)
73
+ Enumerates all objects registered in #{name}
74
+ @yield [#{key_name}, element]
75
+ @yieldparam [#{key_type}] #{key_name}
76
+ @yieldparam [#{value_type}] element
77
+ ")
78
+ else
79
+ object = YARD::CodeObjects::MethodObject.new(namespace, "each_#{name}", scope)
80
+ object.dynamic = true
81
+ handler.send(:register, object)
82
+ object.docstring.replace("Enumerates all objects registered in #{name}\n@return []\n@yield [element]\n@yieldparam [#{value_type}] element")
83
+ end
84
+ end
85
+ end
86
+
87
+ def process
88
+ name = statement.parameters[0].jump(:tstring_content, :ident).source
89
+ if statement.parameters.size == 4
90
+ attr_name = statement.parameters[1].jump(:tstring_content, :ident).source
91
+ else
92
+ attr_name = name
93
+ end
94
+ options = statement.parameters.jump(:assoc)
95
+
96
+ is_map = false
97
+ if options != statement.parameters
98
+ key = options[0].jump(:ident).source
99
+ value = options[1].jump(:ident).source
100
+ if key == "map" && value == "true"
101
+ is_map = true
102
+ end
103
+ end
104
+
105
+ self.class.process(self, name, attr_name, is_map)
106
+ end
107
+ end
108
+ YARD::Tags::Library.define_tag("Key for inherited_enumerable(_, :map => true)", :key_name)
109
+
110
+ class AttrEnumerableHandler < YARD::Handlers::Ruby::AttributeHandler
111
+ handles method_call(:attr_enumerable)
112
+ namespace_only
113
+
114
+ def process
115
+ name = statement.parameters.first.jump(:tstring_content, :ident).source
116
+
117
+ object = YARD::CodeObjects::MethodObject.new(namespace, name, scope)
118
+ object.dynamic = true
119
+ register(object)
120
+ object = YARD::CodeObjects::MethodObject.new(namespace, "#{name}=", scope)
121
+ object.dynamic = true
122
+ register(object)
123
+ object = YARD::CodeObjects::MethodObject.new(namespace, "each_#{name}", scope)
124
+ object.dynamic = true
125
+ register(object)
126
+ end
127
+ end
128
+
129
+ class AttrPredicateHandler < YARD::Handlers::Ruby::AttributeHandler
130
+ handles method_call(:attr_predicate)
131
+ namespace_only
132
+
133
+ def process
134
+ name = statement.parameters.first.jump(:tstring_content, :ident).source
135
+
136
+ rw = false
137
+ if statement.parameters[1]
138
+ rw = (statement.parameters[1].jump(:kw).source == "true")
139
+ end
140
+
141
+ if name.to_s =~ /^(.*)\?$/
142
+ name = $1
143
+ end
144
+ wname, pname = "#{name}=", "#{name}?"
145
+
146
+ object = YARD::CodeObjects::MethodObject.new(namespace, pname, scope)
147
+ object.dynamic = true
148
+ register(object)
149
+ object.docstring.create_tag("return", "[Boolean]")
150
+ if rw
151
+ object = YARD::CodeObjects::MethodObject.new(namespace, wname, scope)
152
+ object.dynamic = true
153
+ object.parameters << ["value", nil]
154
+ object.signature
155
+ object.docstring.create_tag("param", "[Boolean] value")
156
+ object.docstring.create_tag("return", "[Boolean]")
157
+ end
158
+ end
159
+ end
160
+ end
161
+ 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: 11
4
+ hash: 9
5
5
  prerelease:
6
6
  segments:
7
7
  - 1
8
8
  - 6
9
- - 2
10
- version: 1.6.2
9
+ - 3
10
+ version: 1.6.3
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: 2012-04-18 00:00:00 Z
18
+ date: 2012-04-19 00:00:00 Z
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
21
21
  name: facets
@@ -136,6 +136,7 @@ files:
136
136
  - lib/utilrb/configsearch/configuration_finder.rb
137
137
  - lib/utilrb/dir.rb
138
138
  - lib/utilrb/dir/empty.rb
139
+ - lib/utilrb/doc/rake.rb
139
140
  - lib/utilrb/enumerable.rb
140
141
  - lib/utilrb/enumerable/null.rb
141
142
  - lib/utilrb/enumerable/random_element.rb
@@ -147,6 +148,8 @@ files:
147
148
  - lib/utilrb/gc.rb
148
149
  - lib/utilrb/gc/force.rb
149
150
  - lib/utilrb/hash.rb
151
+ - lib/utilrb/hash/map_key.rb
152
+ - lib/utilrb/hash/map_value.rb
150
153
  - lib/utilrb/hash/recursive_merge.rb
151
154
  - lib/utilrb/hash/slice.rb
152
155
  - lib/utilrb/hash/to_s.rb
@@ -162,7 +165,10 @@ files:
162
165
  - lib/utilrb/logger.rb
163
166
  - lib/utilrb/logger/forward.rb
164
167
  - lib/utilrb/logger/hierarchy.rb
168
+ - lib/utilrb/logger/indent.rb
165
169
  - lib/utilrb/logger/io.rb
170
+ - lib/utilrb/logger/log_pp.rb
171
+ - lib/utilrb/logger/root.rb
166
172
  - lib/utilrb/marshal/load_with_missing_constants.rb
167
173
  - lib/utilrb/module.rb
168
174
  - lib/utilrb/module/ancestor_p.rb
@@ -172,6 +178,7 @@ files:
172
178
  - lib/utilrb/module/const_defined_here_p.rb
173
179
  - lib/utilrb/module/define_method.rb
174
180
  - lib/utilrb/module/define_or_reuse.rb
181
+ - lib/utilrb/module/dsl_attribute.rb
175
182
  - lib/utilrb/module/include.rb
176
183
  - lib/utilrb/module/inherited_enumerable.rb
177
184
  - lib/utilrb/object.rb
@@ -181,17 +188,21 @@ files:
181
188
  - lib/utilrb/object/singleton_class.rb
182
189
  - lib/utilrb/objectstats.rb
183
190
  - lib/utilrb/pkgconfig.rb
191
+ - lib/utilrb/rake_common.rb
184
192
  - lib/utilrb/set.rb
185
193
  - lib/utilrb/set/to_s.rb
186
194
  - lib/utilrb/socket/tcp_server.rb
187
195
  - lib/utilrb/socket/tcp_socket.rb
196
+ - lib/utilrb/spawn.rb
188
197
  - lib/utilrb/symbol/to_str.rb
189
198
  - lib/utilrb/time.rb
190
199
  - lib/utilrb/time/to_hms.rb
200
+ - lib/utilrb/timepoints.rb
191
201
  - lib/utilrb/unbound_method.rb
192
202
  - lib/utilrb/unbound_method/call.rb
193
203
  - lib/utilrb/value_set.rb
194
204
  - lib/utilrb/weakref.rb
205
+ - lib/utilrb/yard.rb
195
206
  - patches/gc_live_objects.patch
196
207
  - test/data/test_pkgconfig.pc
197
208
  - test/data/test_pkgconfig_empty.pc
@@ -203,6 +214,7 @@ files:
203
214
  - test/test_gc.rb
204
215
  - test/test_hash.rb
205
216
  - test/test_kernel.rb
217
+ - test/test_logger.rb
206
218
  - test/test_misc.rb
207
219
  - test/test_module.rb
208
220
  - test/test_object.rb
@@ -213,7 +225,6 @@ files:
213
225
  - test/test_time.rb
214
226
  - test/test_unbound_method.rb
215
227
  - test/test_weakref.rb
216
- - test/test_logger.rb
217
228
  homepage: http://utilrb.rubyforge.org
218
229
  licenses: []
219
230
 
@@ -249,22 +260,22 @@ signing_key:
249
260
  specification_version: 3
250
261
  summary: Yet another Ruby toolkit
251
262
  test_files:
252
- - test/test_misc.rb
263
+ - test/test_time.rb
264
+ - test/test_weakref.rb
265
+ - test/test_config.rb
253
266
  - test/test_array.rb
254
- - test/test_gc.rb
255
- - test/test_module.rb
256
267
  - test/test_kernel.rb
268
+ - test/test_module.rb
257
269
  - test/test_proc.rb
258
- - test/test_weakref.rb
259
- - test/test_exception.rb
260
- - test/test_unbound_method.rb
261
- - test/test_hash.rb
262
- - test/test_config.rb
263
- - test/test_logger.rb
264
270
  - test/test_set.rb
265
- - test/test_dir.rb
271
+ - test/test_hash.rb
272
+ - test/test_pkgconfig.rb
266
273
  - test/test_objectstats.rb
274
+ - test/test_unbound_method.rb
275
+ - test/test_gc.rb
276
+ - test/test_dir.rb
277
+ - test/test_misc.rb
267
278
  - test/test_enumerable.rb
268
- - test/test_pkgconfig.rb
279
+ - test/test_exception.rb
280
+ - test/test_logger.rb
269
281
  - test/test_object.rb
270
- - test/test_time.rb