Kouhei Sutou 2019-05-21 18:41:12 +0900 (Tue, 21 May 2019) Revision: cf6a68b38e115cb17589cbcd1d835cf3fd2120f6 https://github.com/groonga/groonga/commit/cf6a68b38e115cb17589cbcd1d835cf3fd2120f6 Message: mrb: improve Logger::Flags API Added files: test/command/suite/ruby/eval/logger_flags/and.expected test/command/suite/ruby/eval/logger_flags/and.rb test/command/suite/ruby/eval/logger_flags/array.expected test/command/suite/ruby/eval/logger_flags/array.rb test/command/suite/ruby/eval/logger_flags/or.expected test/command/suite/ruby/eval/logger_flags/or.rb Modified files: lib/mrb/scripts/logger/flags.rb Modified: lib/mrb/scripts/logger/flags.rb (+23 -13) =================================================================== --- lib/mrb/scripts/logger/flags.rb 2019-05-21 18:32:25 +0900 (8b3198ddd) +++ lib/mrb/scripts/logger/flags.rb 2019-05-21 18:41:12 +0900 (d877d0f00) @@ -12,17 +12,7 @@ module Groonga attr_reader :value def initialize(value) - case value - when String, Symbol - @value = VALUES[value.to_sym] - if****@value*****? - available_names = VALUES.keys.inspect - message = "unknown flag name: #{value.inspect}: #{available_names}" - raise ArgumentError, message - end - else - @value = value - end + @value = resolve_value(value) end def to_i @@ -39,12 +29,32 @@ module Groonga def |(other) other = self.class.new(other) unless other.is_a?(self.class) - new(@value | other.to_i) + self.class.new(@value | other.to_i) end def &(other) other = self.class.new(other) unless other.is_a?(self.class) - new(@value & other.to_i) + self.class.new(@value & other.to_i) + end + + private + def resolve_value(value) + case value + when String, Symbol + resolved_value = VALUES[value.to_sym] + if resolved_value.nil? + available_names = VALUES.keys.inspect + message = "unknown flag name: #{value.inspect}: #{available_names}" + raise ArgumentError, message + end + resolved_value + when ::Array + value.inject(0) do |resolved_value, v| + resolved_value | resolve_value(v) + end + else + value + end end NONE = new(0) Added: test/command/suite/ruby/eval/logger_flags/and.expected (+4 -0) 100644 =================================================================== --- /dev/null +++ test/command/suite/ruby/eval/logger_flags/and.expected 2019-05-21 18:41:12 +0900 (2af26b882) @@ -0,0 +1,4 @@ +plugin_register ruby/eval +[[0,0.0,0.0],true] +ruby_eval "(Groonga::Logger::Flags.new([:time, :thread_id]) & [:location, :time]).to_s" +[[0,0.0,0.0],{"value":"time"}] Added: test/command/suite/ruby/eval/logger_flags/and.rb (+5 -0) 100644 =================================================================== --- /dev/null +++ test/command/suite/ruby/eval/logger_flags/and.rb 2019-05-21 18:41:12 +0900 (d57efad2a) @@ -0,0 +1,5 @@ +#@on-error omit +plugin_register ruby/eval +#@on-error default + +ruby_eval "(Groonga::Logger::Flags.new([:time, :thread_id]) & [:location, :time]).to_s" Added: test/command/suite/ruby/eval/logger_flags/array.expected (+4 -0) 100644 =================================================================== --- /dev/null +++ test/command/suite/ruby/eval/logger_flags/array.expected 2019-05-21 18:41:12 +0900 (7853f24f1) @@ -0,0 +1,4 @@ +plugin_register ruby/eval +[[0,0.0,0.0],true] +ruby_eval "Groonga::Logger::Flags.new([:time, 'title', 4]).to_i" +[[0,0.0,0.0],{"value":7}] Added: test/command/suite/ruby/eval/logger_flags/array.rb (+5 -0) 100644 =================================================================== --- /dev/null +++ test/command/suite/ruby/eval/logger_flags/array.rb 2019-05-21 18:41:12 +0900 (1f7e6aa75) @@ -0,0 +1,5 @@ +#@on-error omit +plugin_register ruby/eval +#@on-error default + +ruby_eval "Groonga::Logger::Flags.new([:time, 'title', 4]).to_i" Added: test/command/suite/ruby/eval/logger_flags/or.expected (+4 -0) 100644 =================================================================== --- /dev/null +++ test/command/suite/ruby/eval/logger_flags/or.expected 2019-05-21 18:41:12 +0900 (50a7dd93b) @@ -0,0 +1,4 @@ +plugin_register ruby/eval +[[0,0.0,0.0],true] +ruby_eval "(Groonga::Logger::Flags::TIME | :location).to_s" +[[0,0.0,0.0],{"value":"time|location"}] Added: test/command/suite/ruby/eval/logger_flags/or.rb (+5 -0) 100644 =================================================================== --- /dev/null +++ test/command/suite/ruby/eval/logger_flags/or.rb 2019-05-21 18:41:12 +0900 (32532d3a7) @@ -0,0 +1,5 @@ +#@on-error omit +plugin_register ruby/eval +#@on-error default + +ruby_eval "(Groonga::Logger::Flags::TIME | :location).to_s" -------------- next part -------------- An HTML attachment was scrubbed... URL: <https://lists.osdn.me/mailman/archives/groonga-commit/attachments/20190521/d9c72e10/attachment-0001.html>