[Groonga-commit] groonga/groonga at cf6a68b [master] mrb: improve Logger::Flags API

Back to archive index
Kouhei Sutou null+****@clear*****
Tue May 21 18:41:12 JST 2019


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>


More information about the Groonga-commit mailing list
Back to archive index