reflexion 0.3.3 → 0.3.4

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: fecd1db4ed537d71ce28cfcfd6d6556e2a7d39c108db0bfff677155bdb399fb6
4
- data.tar.gz: 22ea1366244b563a0ea67db01b8b18c89a25e273f781c78f11bab186761f3b90
3
+ metadata.gz: 92e1368f44fafa2ab8966bfec25f93af411b68a72eaf3f127bc6b95b97ba2fed
4
+ data.tar.gz: 6efaa218301242d6c4fea24062f9fd9d74f405e46a347eac1b231d6fe08a16c1
5
5
  SHA512:
6
- metadata.gz: 8d01aa555b6a680c53b4c88ac0a8eabca0beec42fe0db6a173e45d4d405f4baa4fa4c43e44ce57fdc24a86bb85dfedd7f103c5a5a250377e5a71992817b49060
7
- data.tar.gz: 706935d574fd567b9a597643f4797e93718baf1e8f8ef1fca2ae183982e6b6e50c9936dbe2ef5d7ca274f9221fc83e4814a9fa071f00413b1cc26b545c0bd971
6
+ metadata.gz: 3886ea311fccd85da0e7e3868771d61d32f10fd091612bf306df041dbbe2cf30490e3e6a5fa9cdc049e6cf41f3b8e090ea7af950753dff81db95548ffcb7df99
7
+ data.tar.gz: 1704f273a82ebd9b8272e7358c6936b81171a969ad1a6f085ad641dc0f833dfeb5b97d4f5cf71e80be8d00d9b7bdbc5cb4bdba9d2c9e1228ebb6b995e7903444
data/ChangeLog.md CHANGED
@@ -1,6 +1,15 @@
1
1
  # reflex ChangeLog
2
2
 
3
3
 
4
+ ## [v0.3.4] - 2025-03-07
5
+
6
+ - Captured key and pointer events can be blocked before being sent to the window and views
7
+ - Apply pixel<->meter scale to linear velocity and linear damping
8
+ - Call awake() after moving the view
9
+
10
+ - Fix an issue where capturing keys do not work
11
+
12
+
4
13
  ## [v0.3.3] - 2025-01-23
5
14
 
6
15
  - Remove dependence on the beeps library
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.3.3
1
+ 0.3.4
@@ -59,30 +59,30 @@ namespace Reflex
59
59
  enum Flag
60
60
  {
61
61
 
62
- FLAG_CLIP = Xot::bit(0),
62
+ FLAG_CLIP = Xot::bit(0),
63
63
 
64
- FLAG_CACHE = Xot::bit(1),
64
+ FLAG_CACHE = Xot::bit(1),
65
65
 
66
- FLAG_RESIZE_TO_FIT = Xot::bit(2),
66
+ FLAG_RESIZE_TO_FIT = Xot::bit(2),
67
67
 
68
- FLAG_SCROLL_TO_FIT = Xot::bit(3),
68
+ FLAG_SCROLL_TO_FIT = Xot::bit(3),
69
69
 
70
- FLAG_FIX_ANGLE = Xot::bit(4),
70
+ FLAG_FIX_ANGLE = Xot::bit(4),
71
71
 
72
- FLAG_LAST = FLAG_FIX_ANGLE
72
+ FLAG_LAST = FLAG_FIX_ANGLE
73
73
 
74
74
  };// Flag
75
75
 
76
76
  enum Capture
77
77
  {
78
78
 
79
- CAPTURE_NONE = 0,
79
+ CAPTURE_NONE = 0,
80
80
 
81
- CAPTURE_KEY = Xot::bit(0),
81
+ CAPTURE_KEY = Xot::bit(0),
82
82
 
83
- CAPTURE_POINTER = Xot::bit(1),
83
+ CAPTURE_POINTER = Xot::bit(1),
84
84
 
85
- CAPTURE_ALL = CAPTURE_KEY | CAPTURE_POINTER,
85
+ CAPTURE_ALL = CAPTURE_KEY | CAPTURE_POINTER,
86
86
 
87
87
  };// Capture
88
88
 
@@ -1,9 +1,9 @@
1
1
  require 'xot/setter'
2
2
  require 'xot/universal_accessor'
3
+ require 'xot/hookable'
3
4
  require 'xot/block_util'
4
5
  require 'xot/inspectable'
5
6
  require 'reflex/ext'
6
- require 'reflex/helper'
7
7
 
8
8
 
9
9
  module Reflex
@@ -12,8 +12,8 @@ module Reflex
12
12
  class Application
13
13
 
14
14
  include Xot::Setter
15
+ include Xot::Hookable
15
16
  include Xot::Inspectable
16
- include Hookable
17
17
 
18
18
  universal_accessor :name
19
19
 
data/lib/reflex/helper.rb CHANGED
@@ -1,4 +1,3 @@
1
- require 'xot/hookable'
2
1
  require 'xot/universal_accessor'
3
2
  require 'reflex/point'
4
3
  require 'reflex/bounds'
@@ -7,17 +6,6 @@ require 'reflex/bounds'
7
6
  module Reflex
8
7
 
9
8
 
10
- module Hookable
11
-
12
- include Xot::Hookable
13
-
14
- def hook(name, &block)
15
- super "on_#{name}".intern, &block
16
- end
17
-
18
- end# Hookable
19
-
20
-
21
9
  module HasFrame
22
10
 
23
11
  def move_to(*args)
data/lib/reflex/shape.rb CHANGED
@@ -1,5 +1,6 @@
1
1
  require 'xot/setter'
2
2
  require 'xot/universal_accessor'
3
+ require 'xot/hookable'
3
4
  require 'xot/block_util'
4
5
  require 'reflex/ext'
5
6
  require 'reflex/helper'
@@ -11,7 +12,7 @@ module Reflex
11
12
  class Shape
12
13
 
13
14
  include Xot::Setter
14
- include Hookable
15
+ include Xot::Hookable
15
16
  include HasFrame
16
17
  include HasTags
17
18
 
data/lib/reflex/view.rb CHANGED
@@ -2,6 +2,7 @@ require 'forwardable'
2
2
  require 'xot/setter'
3
3
  require 'xot/bit_flag_accessor'
4
4
  require 'xot/universal_accessor'
5
+ require 'xot/hookable'
5
6
  require 'xot/block_util'
6
7
  require 'reflex/ext'
7
8
  require 'reflex/selector'
@@ -16,7 +17,7 @@ module Reflex
16
17
  class View
17
18
 
18
19
  include Xot::Setter
19
- include Hookable
20
+ include Xot::Hookable
20
21
  include HasFrame
21
22
  include HasTags
22
23
 
@@ -98,8 +99,14 @@ module Reflex
98
99
  end
99
100
 
100
101
  def capturing?(*args)
101
- cap = capture
102
- args.all? {|type| cap.include? type}
102
+ args, cap = args.flatten, capture
103
+ if args.empty?
104
+ not cap.empty?
105
+ elsif args.include?(:all)
106
+ cap == [:key, :pointer]
107
+ else
108
+ args.all? {|type| cap.include? type}
109
+ end
103
110
  end
104
111
 
105
112
  def on_contact(e)
data/lib/reflex/window.rb CHANGED
@@ -2,6 +2,7 @@ require 'forwardable'
2
2
  require 'xot/setter'
3
3
  require 'xot/bit_flag_accessor'
4
4
  require 'xot/universal_accessor'
5
+ require 'xot/hookable'
5
6
  require 'xot/block_util'
6
7
  require 'xot/inspectable'
7
8
  require 'reflex/ext'
@@ -14,8 +15,8 @@ module Reflex
14
15
  class Window
15
16
 
16
17
  include Xot::Setter
18
+ include Xot::Hookable
17
19
  include Xot::Inspectable
18
- include Hookable
19
20
  include HasFrame
20
21
 
21
22
  extend Forwardable
data/reflex.gemspec CHANGED
@@ -25,9 +25,9 @@ Gem::Specification.new do |s|
25
25
  s.platform = Gem::Platform::RUBY
26
26
  s.required_ruby_version = '>= 3.0.0'
27
27
 
28
- s.add_dependency 'xot', '~> 0.3.3', '>= 0.3.3'
29
- s.add_dependency 'rucy', '~> 0.3.3', '>= 0.3.3'
30
- s.add_dependency 'rays', '~> 0.3.3', '>= 0.3.3'
28
+ s.add_dependency 'xot', '~> 0.3.4', '>= 0.3.4'
29
+ s.add_dependency 'rucy', '~> 0.3.4', '>= 0.3.4'
30
+ s.add_dependency 'rays', '~> 0.3.4', '>= 0.3.4'
31
31
 
32
32
  s.files = `git ls-files`.split $/
33
33
  s.executables = s.files.grep(%r{^bin/}) {|f| File.basename f}
data/src/body.cpp CHANGED
@@ -291,9 +291,7 @@ namespace Reflex
291
291
  assert(b2to && b2from);
292
292
 
293
293
  b2to->SetType( b2from->GetType());
294
- b2to->SetLinearVelocity( b2from->GetLinearVelocity());
295
294
  b2to->SetAngularVelocity(b2from->GetAngularVelocity());
296
- b2to->SetLinearDamping( b2from->GetLinearDamping());
297
295
  b2to->SetAngularDamping( b2from->GetAngularDamping());
298
296
  b2to->SetGravityScale( b2from->GetGravityScale());
299
297
  b2to->SetBullet( b2from->IsBullet());
@@ -301,12 +299,24 @@ namespace Reflex
301
299
  float ppm_to = to->self->ppm;
302
300
  float ppm_from = from.self->ppm;
303
301
  if (ppm_to == ppm_from)
304
- b2to->SetTransform(b2from->GetPosition(), b2from->GetAngle());
302
+ {
303
+ b2to->SetTransform( b2from->GetPosition(),
304
+ b2from->GetAngle());
305
+ b2to->SetLinearVelocity(b2from->GetLinearVelocity());
306
+ b2to->SetLinearDamping( b2from->GetLinearDamping());
307
+ }
305
308
  else
306
309
  {
307
- auto pos = b2from->GetPosition();
308
- pos *= ppm_from / ppm_to;
310
+ float scale = ppm_from / ppm_to;
311
+ auto pos = b2from->GetPosition();
312
+ auto vel = b2from->GetLinearVelocity();
313
+ auto damp = b2from->GetLinearDamping();
314
+ pos *= scale;
315
+ vel *= scale;
316
+ damp *= scale;
309
317
  b2to->SetTransform(pos, b2from->GetAngle());
318
+ b2to->SetLinearVelocity(vel);
319
+ b2to->SetLinearDamping(damp);
310
320
  }
311
321
  }
312
322
 
@@ -369,13 +369,7 @@ ReflexViewController_get_show_fun ()
369
369
 
370
370
  ++update_count;
371
371
 
372
- double now = Xot::time();
373
- Reflex::UpdateEvent e(now, now - win->self->prev_time_update);
374
- win->self->prev_time_update = now;
375
-
376
- win->on_update(&e);
377
- if (!e.is_blocked())
378
- Reflex::View_update_tree(win->root(), e);
372
+ Window_call_update_event(win);
379
373
 
380
374
  if (win->self->redraw)
381
375
  {
@@ -201,13 +201,7 @@ move_to_main_screen_origin (NativeWindow* window)
201
201
 
202
202
  ++update_count;
203
203
 
204
- double now = Xot::time();
205
- Reflex::UpdateEvent e(now, now - win->self->prev_time_update);
206
- win->self->prev_time_update = now;
207
-
208
- win->on_update(&e);
209
- if (!e.is_blocked())
210
- Reflex::View_update_tree(win->root(), e);
204
+ Window_call_update_event(win);
211
205
 
212
206
  if (win->self->redraw)
213
207
  {
data/src/view.cpp CHANGED
@@ -235,6 +235,8 @@ namespace Reflex
235
235
  }
236
236
  else
237
237
  pbody->set_transform(frame.x, frame.y, angle);
238
+
239
+ pbody->awake();
238
240
  }
239
241
 
240
242
  void update_body_states ()
@@ -2295,9 +2297,9 @@ namespace Reflex
2295
2297
  bool capture = types != CAPTURE_NONE;
2296
2298
 
2297
2299
  if (capture && !registered)
2298
- Window_register_capture(w, this, CAPTURE_ALL);
2300
+ Window_register_capture(w, this, CAPTURE_ALL_EVENTS);
2299
2301
  else if (!capture && registered)
2300
- Window_unregister_capture(w, this, CAPTURE_ALL);
2302
+ Window_unregister_capture(w, this, CAPTURE_ALL_EVENTS);
2301
2303
 
2302
2304
  CaptureEvent e(~old & types, old & ~types);
2303
2305
  on_capture(&e);
data/src/win32/window.cpp CHANGED
@@ -154,13 +154,7 @@ namespace Reflex
154
154
  {
155
155
  WindowData* self = get_data(win);
156
156
 
157
- double now = Xot::time();
158
- Reflex::UpdateEvent e(now, now - self->prev_time_update);
159
- self->prev_time_update = now;
160
-
161
- win->on_update(&e);
162
- if (!e.is_blocked())
163
- Reflex::View_update_tree(win->root(), e);
157
+ Window_call_update_event(win);
164
158
 
165
159
  if (self->redraw)
166
160
  {
data/src/window.cpp CHANGED
@@ -129,7 +129,7 @@ namespace Reflex
129
129
  return;
130
130
 
131
131
  targets.insert(
132
- target == CAPTURE_ALL ? targets.begin() : targets.end(),
132
+ target == CAPTURE_ALL_EVENTS ? targets.begin() : targets.end(),
133
133
  target);
134
134
  }
135
135
 
@@ -163,23 +163,38 @@ namespace Reflex
163
163
  }
164
164
 
165
165
  void
166
- Window_call_activate_event (Reflex::Window* window)
166
+ Window_call_activate_event (Window* window)
167
167
  {
168
168
  if (!window) return;
169
169
 
170
- Reflex::Event e;
170
+ Event e;
171
171
  window->on_activate(&e);
172
172
  }
173
173
 
174
174
  void
175
- Window_call_deactivate_event (Reflex::Window* window)
175
+ Window_call_deactivate_event (Window* window)
176
176
  {
177
177
  if (!window) return;
178
178
 
179
- Reflex::Event e;
179
+ Event e;
180
180
  window->on_deactivate(&e);
181
181
  }
182
182
 
183
+ void
184
+ Window_call_update_event (Window* window)
185
+ {
186
+ Window::Data* self = window->self.get();
187
+
188
+ double now = Xot::time();
189
+ UpdateEvent e(now, now - self->prev_time_update);
190
+ self->prev_time_update = now;
191
+
192
+ window->on_update(&e);
193
+ if (e.is_blocked()) return;
194
+
195
+ View_update_tree(window->root(), e);
196
+ }
197
+
183
198
  void
184
199
  Window_call_draw_event (Window* window, DrawEvent* event)
185
200
  {
@@ -203,19 +218,19 @@ namespace Reflex
203
218
 
204
219
  window->on_draw(event);
205
220
  if (!event->is_blocked())
206
- Reflex::View_draw_tree(window->root(), event, 0, frame.move_to(0));
221
+ View_draw_tree(window->root(), event, 0, frame.move_to(0));
207
222
 
208
223
  painter->pop_state();
209
224
  painter->end();
210
225
  }
211
226
 
212
227
  static bool
213
- is_capturing_all (
228
+ is_capturing (
214
229
  const View* view, const CaptureTargetIDList& targets, View::Capture type)
215
230
  {
216
231
  return
217
232
  !targets.empty() &&
218
- targets[0] == CAPTURE_ALL &&
233
+ targets[0] == CAPTURE_ALL_EVENTS &&
219
234
  (view->capture() & type) == type;
220
235
  }
221
236
 
@@ -227,20 +242,11 @@ namespace Reflex
227
242
  if (!event)
228
243
  argument_error(__FILE__, __LINE__);
229
244
 
230
- window->on_key(event);
231
-
232
- switch (event->action())
233
- {
234
- case KeyEvent::DOWN: window->on_key_down(event); break;
235
- case KeyEvent::UP: window->on_key_up(event); break;
236
- default: break;
237
- }
238
-
239
245
  for (auto& [view, targets] : window->self->captures)
240
246
  {
241
247
  if (
242
248
  !view->window() ||
243
- !is_capturing_all(view.get(), targets, View::CAPTURE_KEY))
249
+ !is_capturing(view.get(), targets, View::CAPTURE_KEY))
244
250
  {
245
251
  continue;
246
252
  }
@@ -248,9 +254,24 @@ namespace Reflex
248
254
  KeyEvent e = event->dup();
249
255
  KeyEvent_set_captured(&e, true);
250
256
  View_call_key_event(const_cast<View*>(view.get()), &e);
257
+
258
+ if (e.is_blocked()) event->block();
251
259
  }
252
260
 
253
- if (window->self->focus)
261
+ if (!event->is_blocked())
262
+ window->on_key(event);
263
+
264
+ if (!event->is_blocked())
265
+ {
266
+ switch (event->action())
267
+ {
268
+ case KeyEvent::DOWN: window->on_key_down(event); break;
269
+ case KeyEvent::UP: window->on_key_up(event); break;
270
+ default: break;
271
+ }
272
+ }
273
+
274
+ if (!event->is_blocked() && window->self->focus)
254
275
  View_call_key_event(window->self->focus.get(), event);
255
276
 
256
277
  cleanup_captures(window);
@@ -367,7 +388,7 @@ namespace Reflex
367
388
  result->clear();
368
389
  for (const auto& [view, targets] : window->self->captures)
369
390
  {
370
- if (is_capturing_all(view.get(), targets, View::CAPTURE_POINTER))
391
+ if (is_capturing(view.get(), targets, View::CAPTURE_POINTER))
371
392
  result->emplace_back(view);
372
393
  }
373
394
  }
@@ -416,7 +437,7 @@ namespace Reflex
416
437
 
417
438
  static void
418
439
  capture_targeted_pointers_and_call_events (
419
- ExtractedPointerIDSet* extracteds,
440
+ ExtractedPointerIDSet* extracteds, bool* blocked,
420
441
  Window* window, const PointerMap& pointers)
421
442
  {
422
443
  for (auto& [view, targets] : window->self->captures)
@@ -430,6 +451,8 @@ namespace Reflex
430
451
 
431
452
  PointerEvent_update_for_capturing_view(&event, view);
432
453
  View_call_pointer_event(const_cast<View*>(view.get()), &event);
454
+
455
+ if (event.is_blocked()) *blocked = true;
433
456
  }
434
457
  }
435
458
 
@@ -451,7 +474,7 @@ namespace Reflex
451
474
 
452
475
  static void
453
476
  capture_hovering_pointers_and_call_events (
454
- ExtractedPointerIDSet* extracteds,
477
+ ExtractedPointerIDSet* extracteds, bool* blocked,
455
478
  const ViewList& views_capturing_all, const PointerMap& pointers)
456
479
  {
457
480
  assert(extracteds);
@@ -470,6 +493,8 @@ namespace Reflex
470
493
  PointerEvent e = event.dup();
471
494
  PointerEvent_update_for_capturing_view(&e, view);
472
495
  View_call_pointer_event(const_cast<View*>(view.get()), &e);
496
+
497
+ if (e.is_blocked()) *blocked = true;
473
498
  }
474
499
  }
475
500
 
@@ -512,11 +537,17 @@ namespace Reflex
512
537
  });
513
538
 
514
539
  ExtractedPointerIDSet extracteds;
515
- capture_targeted_pointers_and_call_events(&extracteds, window, pointers);
540
+ bool blocked = false;
541
+
542
+ capture_targeted_pointers_and_call_events(
543
+ &extracteds, &blocked, window, pointers);
516
544
  erase_extracted_pointers(&pointers, extracteds);
517
545
 
518
- capture_hovering_pointers_and_call_events(&extracteds, views_capturing_all, pointers);
546
+ capture_hovering_pointers_and_call_events(
547
+ &extracteds, &blocked, views_capturing_all, pointers);
519
548
  erase_extracted_pointers(event, extracteds);
549
+
550
+ if (blocked) event->block();
520
551
  }
521
552
 
522
553
  void
@@ -529,20 +560,24 @@ namespace Reflex
529
560
 
530
561
  setup_pointer_event(window, event);
531
562
 
532
- window->on_pointer(event);
563
+ call_captured_pointer_events(window, event);
564
+
565
+ if (!event->is_blocked() && !event->empty())
566
+ window->on_pointer(event);
533
567
 
534
- switch ((*event)[0].action())
568
+ if (!event->is_blocked() && !event->empty())
535
569
  {
536
- case Pointer::DOWN: window->on_pointer_down(event); break;
537
- case Pointer::UP: window->on_pointer_up(event); break;
538
- case Pointer::MOVE: window->on_pointer_move(event); break;
539
- case Pointer::CANCEL: window->on_pointer_cancel(event); break;
540
- default: break;
570
+ switch ((*event)[0].action())
571
+ {
572
+ case Pointer::DOWN: window->on_pointer_down(event); break;
573
+ case Pointer::UP: window->on_pointer_up(event); break;
574
+ case Pointer::MOVE: window->on_pointer_move(event); break;
575
+ case Pointer::CANCEL: window->on_pointer_cancel(event); break;
576
+ default: break;
577
+ }
541
578
  }
542
579
 
543
- call_captured_pointer_events(window, event);
544
-
545
- if (!event->empty())
580
+ if (!event->is_blocked() && !event->empty())
546
581
  {
547
582
  PointerEvent_update_for_child_view(event, window->root());
548
583
  View_call_pointer_event(window->root(), event);
data/src/window.h CHANGED
@@ -23,7 +23,7 @@ namespace Reflex
23
23
  typedef std::list<Pointer> PointerList;
24
24
 
25
25
 
26
- enum {CAPTURE_ALL = INT_MAX};
26
+ enum {CAPTURE_ALL_EVENTS = INT_MAX};
27
27
 
28
28
 
29
29
  struct Window::Data
@@ -120,6 +120,8 @@ namespace Reflex
120
120
 
121
121
  void Window_call_deactivate_event (Window* window);
122
122
 
123
+ void Window_call_update_event (Window* window);
124
+
123
125
  void Window_call_draw_event (Window* window, DrawEvent* event);
124
126
 
125
127
  void Window_call_key_event (Window* window, KeyEvent* event);
data/test/test_view.rb CHANGED
@@ -373,6 +373,57 @@ class TestView < Test::Unit::TestCase
373
373
  assert_raise(ArgumentError) {v.scroll_by 100}
374
374
  end
375
375
 
376
+ def test_capture()
377
+ v, w = view, window
378
+ w.add v
379
+ assert_equal [], v.capture
380
+
381
+ v.capture = :key; assert_equal [:key], v.capture
382
+ v.capture = :pointer; assert_equal [:pointer], v.capture
383
+ v.capture = :all; assert_equal [:key, :pointer], v.capture
384
+
385
+ v.capture -= [:key]; assert_equal [:pointer], v.capture
386
+ v.capture += [:key]; assert_equal [:key, :pointer], v.capture
387
+
388
+ v.capture = []; assert_equal [], v.capture
389
+ v.capture += [:key, :pointer]; assert_equal [:key, :pointer], v.capture
390
+ v.capture = []; assert_equal [], v.capture
391
+ v.capture += [:all]; assert_equal [:key, :pointer], v.capture
392
+
393
+ v.capture -= []; assert_equal [:key, :pointer], v.capture
394
+ v.capture = []; assert_equal [], v.capture
395
+ v.capture += []; assert_equal [], v.capture
396
+ end
397
+
398
+ def test_capturing()
399
+ v, w = view, window
400
+ w.add v
401
+
402
+ v.capture = []
403
+ assert_false v.capturing?
404
+ assert_false v.capturing? :key
405
+ assert_false v.capturing? :pointer
406
+ assert_false v.capturing? :all
407
+
408
+ v.capture = :key
409
+ assert_true v.capturing?
410
+ assert_true v.capturing? :key
411
+ assert_false v.capturing? :pointer
412
+ assert_false v.capturing? :all
413
+
414
+ v.capture = :pointer
415
+ assert_true v.capturing?
416
+ assert_false v.capturing? :key
417
+ assert_true v.capturing? :pointer
418
+ assert_false v.capturing? :all
419
+
420
+ v.capture = :all
421
+ assert_true v.capturing?
422
+ assert_true v.capturing? :key
423
+ assert_true v.capturing? :pointer
424
+ assert_true v.capturing? :all
425
+ end
426
+
376
427
  def test_parent()
377
428
  parent, child = view, view
378
429
  parent.add_child child
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: reflexion
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.3
4
+ version: 0.3.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - xordog
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2025-01-22 00:00:00.000000000 Z
11
+ date: 2025-03-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: xot
@@ -16,60 +16,60 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 0.3.3
19
+ version: 0.3.4
20
20
  - - ">="
21
21
  - !ruby/object:Gem::Version
22
- version: 0.3.3
22
+ version: 0.3.4
23
23
  type: :runtime
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
26
26
  requirements:
27
27
  - - "~>"
28
28
  - !ruby/object:Gem::Version
29
- version: 0.3.3
29
+ version: 0.3.4
30
30
  - - ">="
31
31
  - !ruby/object:Gem::Version
32
- version: 0.3.3
32
+ version: 0.3.4
33
33
  - !ruby/object:Gem::Dependency
34
34
  name: rucy
35
35
  requirement: !ruby/object:Gem::Requirement
36
36
  requirements:
37
37
  - - "~>"
38
38
  - !ruby/object:Gem::Version
39
- version: 0.3.3
39
+ version: 0.3.4
40
40
  - - ">="
41
41
  - !ruby/object:Gem::Version
42
- version: 0.3.3
42
+ version: 0.3.4
43
43
  type: :runtime
44
44
  prerelease: false
45
45
  version_requirements: !ruby/object:Gem::Requirement
46
46
  requirements:
47
47
  - - "~>"
48
48
  - !ruby/object:Gem::Version
49
- version: 0.3.3
49
+ version: 0.3.4
50
50
  - - ">="
51
51
  - !ruby/object:Gem::Version
52
- version: 0.3.3
52
+ version: 0.3.4
53
53
  - !ruby/object:Gem::Dependency
54
54
  name: rays
55
55
  requirement: !ruby/object:Gem::Requirement
56
56
  requirements:
57
57
  - - "~>"
58
58
  - !ruby/object:Gem::Version
59
- version: 0.3.3
59
+ version: 0.3.4
60
60
  - - ">="
61
61
  - !ruby/object:Gem::Version
62
- version: 0.3.3
62
+ version: 0.3.4
63
63
  type: :runtime
64
64
  prerelease: false
65
65
  version_requirements: !ruby/object:Gem::Requirement
66
66
  requirements:
67
67
  - - "~>"
68
68
  - !ruby/object:Gem::Version
69
- version: 0.3.3
69
+ version: 0.3.4
70
70
  - - ">="
71
71
  - !ruby/object:Gem::Version
72
- version: 0.3.3
72
+ version: 0.3.4
73
73
  description: This library helps you to develop interactive graphical user interface.
74
74
  email: xordog@gmail.com
75
75
  executables: []