fusuma 2.4.0 → 2.5.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (78) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +34 -2
  3. data/fusuma.gemspec +17 -18
  4. data/lib/fusuma/config/index.rb +17 -17
  5. data/lib/fusuma/config/searcher.rb +1 -1
  6. data/lib/fusuma/config/yaml_duplication_checker.rb +7 -7
  7. data/lib/fusuma/config.rb +17 -13
  8. data/lib/fusuma/device.rb +12 -12
  9. data/lib/fusuma/environment.rb +10 -10
  10. data/lib/fusuma/hash_support.rb +1 -1
  11. data/lib/fusuma/libinput_command.rb +18 -19
  12. data/lib/fusuma/multi_logger.rb +4 -4
  13. data/lib/fusuma/plugin/base.rb +6 -6
  14. data/lib/fusuma/plugin/buffers/buffer.rb +5 -4
  15. data/lib/fusuma/plugin/buffers/gesture_buffer.rb +6 -6
  16. data/lib/fusuma/plugin/buffers/timer_buffer.rb +2 -2
  17. data/lib/fusuma/plugin/detectors/detector.rb +5 -5
  18. data/lib/fusuma/plugin/detectors/hold_detector.rb +29 -29
  19. data/lib/fusuma/plugin/detectors/pinch_detector.rb +47 -47
  20. data/lib/fusuma/plugin/detectors/rotate_detector.rb +40 -40
  21. data/lib/fusuma/plugin/detectors/swipe_detector.rb +43 -43
  22. data/lib/fusuma/plugin/events/event.rb +11 -11
  23. data/lib/fusuma/plugin/events/records/gesture_record.rb +5 -5
  24. data/lib/fusuma/plugin/events/records/index_record.rb +5 -5
  25. data/lib/fusuma/plugin/events/records/record.rb +2 -2
  26. data/lib/fusuma/plugin/events/records/text_record.rb +1 -1
  27. data/lib/fusuma/plugin/executors/command_executor.rb +4 -4
  28. data/lib/fusuma/plugin/executors/executor.rb +3 -3
  29. data/lib/fusuma/plugin/filters/filter.rb +3 -3
  30. data/lib/fusuma/plugin/filters/libinput_device_filter.rb +12 -12
  31. data/lib/fusuma/plugin/inputs/input.rb +8 -8
  32. data/lib/fusuma/plugin/inputs/libinput_command_input.rb +13 -13
  33. data/lib/fusuma/plugin/inputs/timer_input.rb +3 -3
  34. data/lib/fusuma/plugin/manager.rb +27 -21
  35. data/lib/fusuma/plugin/parsers/libinput_gesture_parser.rb +10 -10
  36. data/lib/fusuma/plugin/parsers/parser.rb +3 -3
  37. data/lib/fusuma/string_support.rb +3 -3
  38. data/lib/fusuma/version.rb +1 -1
  39. data/lib/fusuma.rb +10 -10
  40. metadata +3 -79
  41. data/spec/helpers/config_helper.rb +0 -20
  42. data/spec/lib/config/searcher_spec.rb +0 -179
  43. data/spec/lib/config_spec.rb +0 -104
  44. data/spec/lib/custom_process_spec.rb +0 -28
  45. data/spec/lib/device_spec.rb +0 -96
  46. data/spec/lib/dummy_config.yml +0 -31
  47. data/spec/lib/fusuma_spec.rb +0 -103
  48. data/spec/lib/libinput-list-devices_iberianpig-XPS-9360.txt +0 -181
  49. data/spec/lib/libinput-list-devices_magic_trackpad.txt +0 -51
  50. data/spec/lib/libinput-list-devices_razer_razer_blade.txt +0 -252
  51. data/spec/lib/libinput-list-devices_thejinx0r.txt +0 -361
  52. data/spec/lib/libinput-list-devices_unavailable.txt +0 -36
  53. data/spec/lib/libinput_command_spec.rb +0 -164
  54. data/spec/lib/plugin/base_spec.rb +0 -74
  55. data/spec/lib/plugin/buffers/buffer_spec.rb +0 -80
  56. data/spec/lib/plugin/buffers/dummy_buffer.rb +0 -20
  57. data/spec/lib/plugin/buffers/gesture_buffer_spec.rb +0 -192
  58. data/spec/lib/plugin/detectors/detector_spec.rb +0 -43
  59. data/spec/lib/plugin/detectors/dummy_detector.rb +0 -24
  60. data/spec/lib/plugin/detectors/hold_detector_spec.rb +0 -145
  61. data/spec/lib/plugin/detectors/pinch_detector_spec.rb +0 -119
  62. data/spec/lib/plugin/detectors/rotate_detector_spec.rb +0 -125
  63. data/spec/lib/plugin/detectors/swipe_detector_spec.rb +0 -118
  64. data/spec/lib/plugin/events/event_spec.rb +0 -30
  65. data/spec/lib/plugin/events/records/gesture_record_spec.rb +0 -22
  66. data/spec/lib/plugin/events/records/record_spec.rb +0 -31
  67. data/spec/lib/plugin/events/records/text_record_spec.rb +0 -26
  68. data/spec/lib/plugin/executors/command_executor_spec.rb +0 -57
  69. data/spec/lib/plugin/executors/executor_spec.rb +0 -164
  70. data/spec/lib/plugin/filters/filter_spec.rb +0 -92
  71. data/spec/lib/plugin/filters/libinput_filter_spec.rb +0 -120
  72. data/spec/lib/plugin/inputs/input_spec.rb +0 -70
  73. data/spec/lib/plugin/inputs/libinput_command_input_spec.rb +0 -121
  74. data/spec/lib/plugin/inputs/timer_input_spec.rb +0 -40
  75. data/spec/lib/plugin/manager_spec.rb +0 -27
  76. data/spec/lib/plugin/parsers/libinput_gesture_parser_spec.rb +0 -76
  77. data/spec/lib/plugin/parsers/parser_spec.rb +0 -45
  78. data/spec/spec_helper.rb +0 -20
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative '../base'
4
- require_relative '../events/event'
3
+ require_relative "../base"
4
+ require_relative "../events/event"
5
5
 
6
6
  module Fusuma
7
7
  module Plugin
@@ -10,7 +10,7 @@ module Fusuma
10
10
  class Detector < Base
11
11
  # @return [Array<String>]
12
12
  def sources
13
- @source ||= self.class.const_get('SOURCES')
13
+ @source ||= self.class.const_get(:SOURCES)
14
14
  end
15
15
 
16
16
  # Always watch buffers and detect them or not
@@ -53,11 +53,11 @@ module Fusuma
53
53
 
54
54
  class << self
55
55
  def tag
56
- name.split('Detectors::').last.underscore
56
+ name.split("Detectors::").last.underscore
57
57
  end
58
58
 
59
59
  def type(tag_name = tag)
60
- tag_name.gsub('_detector', '')
60
+ tag_name.gsub("_detector", "")
61
61
  end
62
62
  end
63
63
  end
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative './detector'
3
+ require_relative "./detector"
4
4
 
5
5
  module Fusuma
6
6
  module Plugin
@@ -8,8 +8,8 @@ module Fusuma
8
8
  # Detect Hold gesture
9
9
  class HoldDetector < Detector
10
10
  SOURCES = %w[gesture timer].freeze
11
- BUFFER_TYPE = 'gesture'
12
- GESTURE_RECORD_TYPE = 'hold'
11
+ BUFFER_TYPE = "gesture"
12
+ GESTURE_RECORD_TYPE = "hold"
13
13
 
14
14
  BASE_THERESHOLD = 0.7
15
15
 
@@ -23,7 +23,7 @@ module Fusuma
23
23
 
24
24
  hold_events = hold_buffer.events
25
25
 
26
- timer_buffer = buffers.find { |b| b.type == 'timer' }
26
+ timer_buffer = buffers.find { |b| b.type == "timer" }
27
27
  timer_events = timer_buffer.events
28
28
 
29
29
  finger = hold_buffer.finger
@@ -31,27 +31,27 @@ module Fusuma
31
31
 
32
32
  @timeout ||= nil
33
33
  status = case hold_events.last.record.status
34
- when 'begin'
35
- if holding_time.zero?
36
- 'begin'
37
- else
38
- 'timer'
39
- end
40
- when 'cancelled'
41
- 'cancelled'
42
- when 'end'
43
- 'end'
44
- else
45
- last_record = hold_events.last.record.status
46
- raise "Unexpected Status:#{last_record.status} in #{last_record}"
47
- end
34
+ when "begin"
35
+ if holding_time.zero?
36
+ "begin"
37
+ else
38
+ "timer"
39
+ end
40
+ when "cancelled"
41
+ "cancelled"
42
+ when "end"
43
+ "end"
44
+ else
45
+ last_record = hold_events.last.record.status
46
+ raise "Unexpected Status:#{last_record.status} in #{last_record}"
47
+ end
48
48
 
49
49
  repeat_index = create_repeat_index(finger: finger, status: status)
50
50
  oneshot_index = create_oneshot_index(finger: finger)
51
51
 
52
- @timeout = nil if status == 'begin'
52
+ @timeout = nil if status == "begin"
53
53
 
54
- if status == 'timer'
54
+ if status == "timer"
55
55
  return if @timeout
56
56
 
57
57
  return unless enough?(index: oneshot_index, holding_time: holding_time)
@@ -96,16 +96,16 @@ module Fusuma
96
96
  # @return [Buffers::GestureBuffer]
97
97
  def find_hold_buffer(buffers)
98
98
  buffers.find { |b| b.type == BUFFER_TYPE }
99
- .select_from_last_begin
100
- .select_by_events { |e| e.record.gesture == GESTURE_RECORD_TYPE }
99
+ .select_from_last_begin
100
+ .select_by_events { |e| e.record.gesture == GESTURE_RECORD_TYPE }
101
101
  end
102
102
 
103
103
  def calc_holding_time(hold_events:, timer_events:)
104
104
  last_time = if !timer_events.empty? && (hold_events.last.time < timer_events.last.time)
105
- timer_events.last.time
106
- else
107
- hold_events.last.time
108
- end
105
+ timer_events.last.time
106
+ else
107
+ hold_events.last.time
108
+ end
109
109
  last_time - hold_events.first.time
110
110
  end
111
111
 
@@ -116,10 +116,10 @@ module Fusuma
116
116
  def threshold(index:)
117
117
  @threshold ||= {}
118
118
  @threshold[index.cache_key] ||= begin
119
- keys_specific = Config::Index.new [*index.keys, 'threshold']
120
- keys_global = Config::Index.new ['threshold', type]
119
+ keys_specific = Config::Index.new [*index.keys, "threshold"]
120
+ keys_global = Config::Index.new ["threshold", type]
121
121
  config_value = Config.search(keys_specific) ||
122
- Config.search(keys_global) || 1
122
+ Config.search(keys_global) || 1
123
123
  BASE_THERESHOLD * config_value
124
124
  end
125
125
  end
@@ -1,14 +1,14 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative './detector'
3
+ require_relative "./detector"
4
4
 
5
5
  module Fusuma
6
6
  module Plugin
7
7
  module Detectors
8
8
  class PinchDetector < Detector
9
- SOURCES = ['gesture'].freeze
10
- BUFFER_TYPE = 'gesture'
11
- GESTURE_RECORD_TYPE = 'pinch'
9
+ SOURCES = ["gesture"].freeze
10
+ BUFFER_TYPE = "gesture"
11
+ GESTURE_RECORD_TYPE = "pinch"
12
12
 
13
13
  FINGERS = [2, 3, 4].freeze
14
14
  BASE_THERESHOLD = 1.3
@@ -18,8 +18,8 @@ module Fusuma
18
18
  # @return [NilClass] if event is NOT detected
19
19
  def detect(buffers)
20
20
  gesture_buffer = buffers.find { |b| b.type == BUFFER_TYPE }
21
- .select_from_last_begin
22
- .select_by_events { |e| e.record.gesture == GESTURE_RECORD_TYPE }
21
+ .select_from_last_begin
22
+ .select_by_events { |e| e.record.gesture == GESTURE_RECORD_TYPE }
23
23
 
24
24
  updating_events = gesture_buffer.updating_events
25
25
  return if updating_events.empty?
@@ -27,29 +27,29 @@ module Fusuma
27
27
  finger = gesture_buffer.finger
28
28
 
29
29
  status = case gesture_buffer.events.last.record.status
30
- when 'end'
31
- 'end'
32
- when 'update'
33
- if updating_events.length == 1
34
- 'begin'
35
- else
36
- 'update'
37
- end
38
- else
39
- gesture_buffer.events.last.record.status
40
- end
41
-
42
- prev_event, event = if status == 'end'
43
- [
44
- gesture_buffer.events[-3],
45
- gesture_buffer.events[-2]
46
- ]
47
- else
48
- [
49
- gesture_buffer.events[-2],
50
- gesture_buffer.events[-1]
51
- ]
52
- end
30
+ when "end"
31
+ "end"
32
+ when "update"
33
+ if updating_events.length == 1
34
+ "begin"
35
+ else
36
+ "update"
37
+ end
38
+ else
39
+ gesture_buffer.events.last.record.status
40
+ end
41
+
42
+ prev_event, event = if status == "end"
43
+ [
44
+ gesture_buffer.events[-3],
45
+ gesture_buffer.events[-2]
46
+ ]
47
+ else
48
+ [
49
+ gesture_buffer.events[-2],
50
+ gesture_buffer.events[-1]
51
+ ]
52
+ end
53
53
  delta = event.record.delta
54
54
  prev_delta = prev_event.record.delta
55
55
 
@@ -57,25 +57,25 @@ module Fusuma
57
57
  # repeat_quantity = Quantity.new(target: delta.zoom, base: (prev_delta&.zoom || 1.0)).to_f
58
58
 
59
59
  repeat_index = create_repeat_index(gesture: type, finger: finger,
60
- direction: repeat_direction,
61
- status: status)
62
- if status == 'update'
60
+ direction: repeat_direction,
61
+ status: status)
62
+ if status == "update"
63
63
  return unless moved?(prev_event, event)
64
64
 
65
65
  first_zoom, avg_zoom = if updating_events.size >= 10
66
- [updating_events[-10].record.delta.zoom,
67
- gesture_buffer.class.new(
68
- updating_events[-10..-1]
69
- ).avg_attrs(:zoom)]
70
- else
71
- [updating_events.first.record.delta.zoom,
72
- gesture_buffer.avg_attrs(:zoom)]
73
- end
66
+ [updating_events[-10].record.delta.zoom,
67
+ gesture_buffer.class.new(
68
+ updating_events[-10..-1]
69
+ ).avg_attrs(:zoom)]
70
+ else
71
+ [updating_events.first.record.delta.zoom,
72
+ gesture_buffer.avg_attrs(:zoom)]
73
+ end
74
74
 
75
75
  oneshot_quantity = Quantity.new(target: avg_zoom, base: first_zoom).to_f
76
76
  oneshot_direction = Direction.new(target: avg_zoom, base: first_zoom).to_s
77
77
  oneshot_index = create_oneshot_index(gesture: type, finger: finger,
78
- direction: oneshot_direction)
78
+ direction: oneshot_direction)
79
79
  if enough_oneshot_threshold?(index: oneshot_index, quantity: oneshot_quantity)
80
80
  return [
81
81
  create_event(record: Events::Records::IndexRecord.new(
@@ -137,18 +137,18 @@ module Fusuma
137
137
  def threshold(index:)
138
138
  @threshold ||= {}
139
139
  @threshold[index.cache_key] ||= begin
140
- keys_specific = Config::Index.new [*index.keys, 'threshold']
141
- keys_global = Config::Index.new ['threshold', type]
142
- config_value = Config.search(keys_specific) ||
143
- Config.search(keys_global) || 1
140
+ keys_specific = Config::Index.new [*index.keys, "threshold"]
141
+ keys_global = Config::Index.new ["threshold", type]
142
+ config_value = Config.search(keys_specific) ||
143
+ Config.search(keys_global) || 1
144
144
  BASE_THERESHOLD * config_value
145
145
  end
146
146
  end
147
147
 
148
148
  # direction of gesture
149
149
  class Direction
150
- IN = 'in'
151
- OUT = 'out'
150
+ IN = "in"
151
+ OUT = "out"
152
152
 
153
153
  def initialize(target:, base:)
154
154
  @target = target.to_f
@@ -1,14 +1,14 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative './detector'
3
+ require_relative "./detector"
4
4
 
5
5
  module Fusuma
6
6
  module Plugin
7
7
  module Detectors
8
8
  class RotateDetector < Detector
9
- SOURCES = ['gesture'].freeze
10
- BUFFER_TYPE = 'gesture'
11
- GESTURE_RECORD_TYPE = 'pinch'
9
+ SOURCES = ["gesture"].freeze
10
+ BUFFER_TYPE = "gesture"
11
+ GESTURE_RECORD_TYPE = "pinch"
12
12
 
13
13
  FINGERS = [2, 3, 4].freeze
14
14
  BASE_THERESHOLD = 0.5
@@ -18,58 +18,58 @@ module Fusuma
18
18
  # @return [NilClass] if event is NOT detected
19
19
  def detect(buffers)
20
20
  gesture_buffer = buffers.find { |b| b.type == BUFFER_TYPE }
21
- .select_from_last_begin
22
- .select_by_events { |e| e.record.gesture == GESTURE_RECORD_TYPE }
21
+ .select_from_last_begin
22
+ .select_by_events { |e| e.record.gesture == GESTURE_RECORD_TYPE }
23
23
 
24
24
  updating_events = gesture_buffer.updating_events
25
25
  return if updating_events.empty?
26
26
 
27
27
  oneshot_angle = if updating_events.size >= 10
28
- updating_time = 100 * (updating_events[-1].time - updating_events[-10].time)
29
- last_10 = gesture_buffer.class.new(updating_events[-10..-1])
30
- last_10.sum_attrs(:rotate) / updating_time
31
- else
32
- updating_time = 100 * (updating_events.last.time - updating_events.first.time)
33
- gesture_buffer.sum_attrs(:rotate) / updating_time
34
- end
28
+ updating_time = 100 * (updating_events[-1].time - updating_events[-10].time)
29
+ last_10 = gesture_buffer.class.new(updating_events[-10..-1])
30
+ last_10.sum_attrs(:rotate) / updating_time
31
+ else
32
+ updating_time = 100 * (updating_events.last.time - updating_events.first.time)
33
+ gesture_buffer.sum_attrs(:rotate) / updating_time
34
+ end
35
35
 
36
36
  return if updating_events.empty?
37
37
 
38
38
  finger = gesture_buffer.finger
39
39
 
40
40
  status = case gesture_buffer.events.last.record.status
41
- when 'end'
42
- 'end'
43
- when 'update'
44
- if updating_events.length == 1
45
- 'begin'
46
- else
47
- 'update'
48
- end
49
- else
50
- gesture_buffer.events.last.record.status
51
- end
52
-
53
- delta = if status == 'end'
54
- gesture_buffer.events[-2].record.delta
55
- else
56
- gesture_buffer.events.last.record.delta
57
- end
41
+ when "end"
42
+ "end"
43
+ when "update"
44
+ if updating_events.length == 1
45
+ "begin"
46
+ else
47
+ "update"
48
+ end
49
+ else
50
+ gesture_buffer.events.last.record.status
51
+ end
52
+
53
+ delta = if status == "end"
54
+ gesture_buffer.events[-2].record.delta
55
+ else
56
+ gesture_buffer.events.last.record.delta
57
+ end
58
58
 
59
59
  repeat_direction = Direction.new(angle: delta.rotate).to_s
60
60
  repeat_quantity = Quantity.new(angle: delta.rotate).to_f
61
61
 
62
62
  repeat_index = create_repeat_index(gesture: type, finger: finger,
63
- direction: repeat_direction,
64
- status: status)
63
+ direction: repeat_direction,
64
+ status: status)
65
65
 
66
- if status == 'update'
66
+ if status == "update"
67
67
  return unless moved?(repeat_quantity)
68
68
 
69
69
  oneshot_direction = Direction.new(angle: oneshot_angle).to_s
70
70
  oneshot_quantity = Quantity.new(angle: oneshot_angle).to_f
71
71
  oneshot_index = create_oneshot_index(gesture: type, finger: finger,
72
- direction: oneshot_direction)
72
+ direction: oneshot_direction)
73
73
  if enough_oneshot_threshold?(index: oneshot_index, quantity: oneshot_quantity)
74
74
  return [
75
75
  create_event(record: Events::Records::IndexRecord.new(
@@ -129,18 +129,18 @@ module Fusuma
129
129
  def threshold(index:)
130
130
  @threshold ||= {}
131
131
  @threshold[index.cache_key] ||= begin
132
- keys_specific = Config::Index.new [*index.keys, 'threshold']
133
- keys_global = Config::Index.new ['threshold', type]
134
- config_value = Config.search(keys_specific) ||
135
- Config.search(keys_global) || 1
132
+ keys_specific = Config::Index.new [*index.keys, "threshold"]
133
+ keys_global = Config::Index.new ["threshold", type]
134
+ config_value = Config.search(keys_specific) ||
135
+ Config.search(keys_global) || 1
136
136
  BASE_THERESHOLD * config_value
137
137
  end
138
138
  end
139
139
 
140
140
  # direction of gesture
141
141
  class Direction
142
- CLOCKWISE = 'clockwise'
143
- COUNTERCLOCKWISE = 'counterclockwise'
142
+ CLOCKWISE = "clockwise"
143
+ COUNTERCLOCKWISE = "counterclockwise"
144
144
 
145
145
  def initialize(angle:)
146
146
  @angle = angle.to_f
@@ -1,14 +1,14 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative './detector'
3
+ require_relative "./detector"
4
4
 
5
5
  module Fusuma
6
6
  module Plugin
7
7
  module Detectors
8
8
  class SwipeDetector < Detector
9
- SOURCES = ['gesture'].freeze
10
- BUFFER_TYPE = 'gesture'
11
- GESTURE_RECORD_TYPE = 'swipe'
9
+ SOURCES = ["gesture"].freeze
10
+ BUFFER_TYPE = "gesture"
11
+ GESTURE_RECORD_TYPE = "swipe"
12
12
 
13
13
  FINGERS = [3, 4].freeze
14
14
  BASE_THERESHOLD = 25
@@ -18,57 +18,57 @@ module Fusuma
18
18
  # @return [NilClass] if event is NOT detected
19
19
  def detect(buffers)
20
20
  gesture_buffer = buffers.find { |b| b.type == BUFFER_TYPE }
21
- .select_from_last_begin
22
- .select_by_events { |e| e.record.gesture == GESTURE_RECORD_TYPE }
21
+ .select_from_last_begin
22
+ .select_by_events { |e| e.record.gesture == GESTURE_RECORD_TYPE }
23
23
 
24
24
  updating_events = gesture_buffer.updating_events
25
25
  return if updating_events.empty?
26
26
 
27
27
  oneshot_move_x, oneshot_move_y = if updating_events.size >= 10
28
- updating_time = 100 * (updating_events[-1].time - updating_events[-10].time)
29
- last_10 = gesture_buffer.class.new(updating_events[-10..-1])
30
- [last_10.sum_attrs(:move_x) / updating_time,
31
- last_10.sum_attrs(:move_y) / updating_time]
32
- else
33
- updating_time = 100 * (updating_events.last.time - updating_events.first.time)
34
- [gesture_buffer.sum_attrs(:move_x) / updating_time,
35
- gesture_buffer.sum_attrs(:move_y) / updating_time]
36
- end
37
- gesture_buffer.sum_attrs(:move_x) / updating_time
28
+ updating_time = 100 * (updating_events[-1].time - updating_events[-10].time)
29
+ last_10 = gesture_buffer.class.new(updating_events[-10..-1])
30
+ [last_10.sum_attrs(:move_x) / updating_time,
31
+ last_10.sum_attrs(:move_y) / updating_time]
32
+ else
33
+ updating_time = 100 * (updating_events.last.time - updating_events.first.time)
34
+ [gesture_buffer.sum_attrs(:move_x) / updating_time,
35
+ gesture_buffer.sum_attrs(:move_y) / updating_time]
36
+ end
37
+ (gesture_buffer.sum_attrs(:move_x) / updating_time)
38
38
 
39
39
  finger = gesture_buffer.finger
40
40
  status = case gesture_buffer.events.last.record.status
41
- when 'end'
42
- 'end'
43
- when 'update'
44
- if updating_events.length == 1
45
- 'begin'
46
- else
47
- 'update'
48
- end
49
- else
50
- gesture_buffer.events.last.record.status
51
- end
52
-
53
- delta = if status == 'end'
54
- gesture_buffer.events[-2].record.delta
55
- else
56
- gesture_buffer.events.last.record.delta
57
- end
41
+ when "end"
42
+ "end"
43
+ when "update"
44
+ if updating_events.length == 1
45
+ "begin"
46
+ else
47
+ "update"
48
+ end
49
+ else
50
+ gesture_buffer.events.last.record.status
51
+ end
52
+
53
+ delta = if status == "end"
54
+ gesture_buffer.events[-2].record.delta
55
+ else
56
+ gesture_buffer.events.last.record.delta
57
+ end
58
58
 
59
59
  repeat_direction = Direction.new(move_x: delta.move_x, move_y: delta.move_y).to_s
60
60
  repeat_quantity = Quantity.new(move_x: delta.move_x, move_y: delta.move_y).to_f
61
61
 
62
62
  repeat_index = create_repeat_index(gesture: type, finger: finger,
63
- direction: repeat_direction, status: status)
63
+ direction: repeat_direction, status: status)
64
64
 
65
- if status == 'update'
65
+ if status == "update"
66
66
  return unless moved?(repeat_quantity)
67
67
 
68
68
  oneshot_direction = Direction.new(move_x: oneshot_move_x, move_y: oneshot_move_y).to_s
69
69
  oneshot_quantity = Quantity.new(move_x: oneshot_move_x, move_y: oneshot_move_y).to_f
70
70
  oneshot_index = create_oneshot_index(gesture: type, finger: finger,
71
- direction: oneshot_direction)
71
+ direction: oneshot_direction)
72
72
  if enough_oneshot_threshold?(index: oneshot_index, quantity: oneshot_quantity)
73
73
  return [
74
74
  create_event(record: Events::Records::IndexRecord.new(
@@ -128,20 +128,20 @@ module Fusuma
128
128
  def threshold(index:)
129
129
  @threshold ||= {}
130
130
  @threshold[index.cache_key] ||= begin
131
- keys_specific = Config::Index.new [*index.keys, 'threshold']
132
- keys_global = Config::Index.new ['threshold', type]
131
+ keys_specific = Config::Index.new [*index.keys, "threshold"]
132
+ keys_global = Config::Index.new ["threshold", type]
133
133
  config_value = Config.search(keys_specific) ||
134
- Config.search(keys_global) || 1
134
+ Config.search(keys_global) || 1
135
135
  BASE_THERESHOLD * config_value
136
136
  end
137
137
  end
138
138
 
139
139
  # direction of gesture
140
140
  class Direction
141
- RIGHT = 'right'
142
- LEFT = 'left'
143
- DOWN = 'down'
144
- UP = 'up'
141
+ RIGHT = "right"
142
+ LEFT = "left"
143
+ DOWN = "down"
144
+ UP = "up"
145
145
 
146
146
  def initialize(move_x:, move_y:)
147
147
  @move_x = move_x.to_f
@@ -1,8 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative '../base'
4
- require_relative './records/record'
5
- require_relative './records/text_record'
3
+ require_relative "../base"
4
+ require_relative "./records/record"
5
+ require_relative "./records/text_record"
6
6
 
7
7
  module Fusuma
8
8
  module Plugin
@@ -20,14 +20,14 @@ module Fusuma
20
20
  @time = time
21
21
  @tag = tag
22
22
  @record = case record
23
- when Records::Record
24
- record
25
- when String
26
- Records::TextRecord.new(record)
27
- else
28
- raise ArgumentError,
29
- '@record should be String or Record'
30
- end
23
+ when Records::Record
24
+ record
25
+ when String
26
+ Records::TextRecord.new(record)
27
+ else
28
+ raise ArgumentError,
29
+ "@record should be String or Record"
30
+ end
31
31
  end
32
32
 
33
33
  def inspect
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative './text_record'
3
+ require_relative "./text_record"
4
4
 
5
5
  module Fusuma
6
6
  module Plugin
@@ -12,8 +12,8 @@ module Fusuma
12
12
  attr_reader :status, :gesture, :finger, :delta
13
13
 
14
14
  Delta = Struct.new(:move_x, :move_y,
15
- :unaccelerated_x, :unaccelerated_y,
16
- :zoom, :rotate)
15
+ :unaccelerated_x, :unaccelerated_y,
16
+ :zoom, :rotate)
17
17
 
18
18
  # @param status [String]
19
19
  # @param gesture [String]
@@ -21,9 +21,9 @@ module Fusuma
21
21
  # @param delta [Delta, NilClass]
22
22
  def initialize(status:, gesture:, finger:, delta:)
23
23
  super()
24
- @status = status
24
+ @status = status
25
25
  @gesture = gesture
26
- @finger = finger.to_i
26
+ @finger = finger.to_i
27
27
  @delta = delta
28
28
  end
29
29
  end
@@ -44,11 +44,11 @@ module Fusuma
44
44
 
45
45
  record = records.shift
46
46
  new_index = case record.position
47
- when :surfix
48
- Config::Index.new([*index.keys, *record.index.keys])
49
- else
50
- raise "invalid index position: #{record}"
51
- end
47
+ when :surfix
48
+ Config::Index.new([*index.keys, *record.index.keys])
49
+ else
50
+ raise "invalid index position: #{record}"
51
+ end
52
52
 
53
53
  return unless exist_on_conf?(new_index)
54
54
 
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative '../../base'
3
+ require_relative "../../base"
4
4
 
5
5
  module Fusuma
6
6
  module Plugin
@@ -11,7 +11,7 @@ module Fusuma
11
11
  class Record < Base
12
12
  # @return [Symbol]
13
13
  def type
14
- raise NotImplementedError, 'override #type'
14
+ raise NotImplementedError, "override #type"
15
15
  end
16
16
  end
17
17
  end