dommy 0.7.0 → 0.8.0
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 +4 -4
- data/lib/dommy/animation.rb +9 -1
- data/lib/dommy/attr.rb +192 -39
- data/lib/dommy/backend/nokogiri_adapter.rb +76 -0
- data/lib/dommy/backend/nokolexbor_adapter.rb +37 -0
- data/lib/dommy/backend.rb +46 -0
- data/lib/dommy/blob.rb +28 -9
- data/lib/dommy/bridge/constructor_registry.rb +28 -0
- data/lib/dommy/bridge/methods.rb +57 -0
- data/lib/dommy/bridge.rb +97 -0
- data/lib/dommy/callable_invoker.rb +36 -0
- data/lib/dommy/cookie_store.rb +3 -1
- data/lib/dommy/crypto.rb +7 -1
- data/lib/dommy/css.rb +46 -0
- data/lib/dommy/custom_elements.rb +27 -3
- data/lib/dommy/data_transfer.rb +4 -0
- data/lib/dommy/document.rb +615 -48
- data/lib/dommy/dom_parser.rb +28 -15
- data/lib/dommy/element.rb +999 -471
- data/lib/dommy/event.rb +260 -96
- data/lib/dommy/event_source.rb +6 -2
- data/lib/dommy/fetch.rb +505 -43
- data/lib/dommy/file_reader.rb +11 -3
- data/lib/dommy/form_data.rb +2 -0
- data/lib/dommy/history.rb +43 -8
- data/lib/dommy/html_collection.rb +55 -2
- data/lib/dommy/html_elements.rb +102 -1519
- data/lib/dommy/internal/css_pseudo_handlers.rb +109 -0
- data/lib/dommy/internal/global_functions.rb +26 -0
- data/lib/dommy/internal/idna.rb +16 -7
- data/lib/dommy/internal/ipv4_parser.rb +22 -7
- data/lib/dommy/internal/mutation_coordinator.rb +11 -2
- data/lib/dommy/internal/namespaces.rb +70 -0
- data/lib/dommy/internal/node_equality.rb +86 -0
- data/lib/dommy/internal/node_wrapper_cache.rb +62 -27
- data/lib/dommy/internal/observable_callback.rb +1 -5
- data/lib/dommy/internal/parent_node.rb +126 -0
- data/lib/dommy/internal/reflected_attributes.rb +103 -13
- data/lib/dommy/internal/selector_parser.rb +664 -0
- data/lib/dommy/internal/url_parser.rb +677 -0
- data/lib/dommy/intersection_observer.rb +2 -0
- data/lib/dommy/location.rb +2 -0
- data/lib/dommy/media_query_list.rb +7 -1
- data/lib/dommy/message_channel.rb +32 -2
- data/lib/dommy/mutation_observer.rb +55 -12
- data/lib/dommy/navigator.rb +26 -12
- data/lib/dommy/node.rb +158 -28
- data/lib/dommy/notification.rb +3 -1
- data/lib/dommy/performance.rb +4 -0
- data/lib/dommy/performance_observer.rb +2 -0
- data/lib/dommy/promise.rb +14 -14
- data/lib/dommy/range.rb +74 -5
- data/lib/dommy/resize_observer.rb +2 -0
- data/lib/dommy/scheduler.rb +34 -13
- data/lib/dommy/shadow_root.rb +23 -54
- data/lib/dommy/storage.rb +2 -0
- data/lib/dommy/streams.rb +18 -27
- data/lib/dommy/svg_elements.rb +204 -3606
- data/lib/dommy/text_codec.rb +174 -21
- data/lib/dommy/tree_walker.rb +255 -66
- data/lib/dommy/url.rb +287 -449
- data/lib/dommy/url_pattern.rb +2 -0
- data/lib/dommy/version.rb +1 -1
- data/lib/dommy/web_socket.rb +37 -7
- data/lib/dommy/window.rb +202 -213
- data/lib/dommy/worker.rb +7 -7
- data/lib/dommy/xml_http_request.rb +15 -5
- data/lib/dommy.rb +7 -0
- metadata +12 -3
|
@@ -210,12 +210,19 @@ module Dommy
|
|
|
210
210
|
@with_credentials = !!value
|
|
211
211
|
else
|
|
212
212
|
event = inline_event_for(key)
|
|
213
|
-
|
|
213
|
+
return Bridge::UNHANDLED unless event
|
|
214
|
+
|
|
215
|
+
set_inline_handler(event, value)
|
|
214
216
|
end
|
|
215
217
|
|
|
216
218
|
nil
|
|
217
219
|
end
|
|
218
220
|
|
|
221
|
+
include Bridge::Methods
|
|
222
|
+
js_methods %w[
|
|
223
|
+
open send setRequestHeader abort getResponseHeader getAllResponseHeaders overrideMimeType
|
|
224
|
+
addEventListener removeEventListener dispatchEvent
|
|
225
|
+
]
|
|
219
226
|
def __js_call__(method, args)
|
|
220
227
|
case method
|
|
221
228
|
when "open"
|
|
@@ -235,7 +242,7 @@ module Dommy
|
|
|
235
242
|
when "addEventListener"
|
|
236
243
|
add_event_listener(args[0], args[1], args[2])
|
|
237
244
|
when "removeEventListener"
|
|
238
|
-
remove_event_listener(args[0], args[1])
|
|
245
|
+
remove_event_listener(args[0], args[1], args[2])
|
|
239
246
|
when "dispatchEvent"
|
|
240
247
|
dispatch_event(args[0])
|
|
241
248
|
end
|
|
@@ -366,9 +373,10 @@ module Dommy
|
|
|
366
373
|
end
|
|
367
374
|
|
|
368
375
|
when "arraybuffer"
|
|
369
|
-
|
|
376
|
+
# responseType "arraybuffer" yields a real ArrayBuffer.
|
|
377
|
+
Bridge::ArrayBuffer.new(body.bytes)
|
|
370
378
|
when "blob"
|
|
371
|
-
Blob.new([body], "type" => response_content_type)
|
|
379
|
+
Blob.new([body], {"type" => response_content_type}, @window)
|
|
372
380
|
when "document"
|
|
373
381
|
parse_document(body)
|
|
374
382
|
else
|
|
@@ -420,12 +428,14 @@ module Dommy
|
|
|
420
428
|
class XMLHttpRequestUpload
|
|
421
429
|
include EventTarget
|
|
422
430
|
|
|
431
|
+
include Bridge::Methods
|
|
432
|
+
js_methods %w[addEventListener removeEventListener dispatchEvent]
|
|
423
433
|
def __js_call__(method, args)
|
|
424
434
|
case method
|
|
425
435
|
when "addEventListener"
|
|
426
436
|
add_event_listener(args[0], args[1], args[2])
|
|
427
437
|
when "removeEventListener"
|
|
428
|
-
remove_event_listener(args[0], args[1])
|
|
438
|
+
remove_event_listener(args[0], args[1], args[2])
|
|
429
439
|
when "dispatchEvent"
|
|
430
440
|
dispatch_event(args[0])
|
|
431
441
|
end
|
data/lib/dommy.rb
CHANGED
|
@@ -5,6 +5,10 @@ require "set"
|
|
|
5
5
|
require_relative "dommy/version"
|
|
6
6
|
require_relative "dommy/backend"
|
|
7
7
|
require_relative "dommy/dom_exception"
|
|
8
|
+
require_relative "dommy/internal/namespaces"
|
|
9
|
+
require_relative "dommy/internal/global_functions"
|
|
10
|
+
require_relative "dommy/callable_invoker"
|
|
11
|
+
require_relative "dommy/bridge/methods"
|
|
8
12
|
require_relative "dommy/node"
|
|
9
13
|
require_relative "dommy/html_collection"
|
|
10
14
|
require_relative "dommy/event"
|
|
@@ -17,6 +21,7 @@ require_relative "dommy/crypto"
|
|
|
17
21
|
require_relative "dommy/text_codec"
|
|
18
22
|
require_relative "dommy/internal/observable_callback"
|
|
19
23
|
require_relative "dommy/internal/css_pseudo_handlers"
|
|
24
|
+
require_relative "dommy/internal/selector_parser"
|
|
20
25
|
require_relative "dommy/internal/punycode"
|
|
21
26
|
require_relative "dommy/internal/idna"
|
|
22
27
|
require_relative "dommy/internal/ipv4_parser"
|
|
@@ -27,6 +32,7 @@ require_relative "dommy/internal/range_text_serializer"
|
|
|
27
32
|
require_relative "dommy/range"
|
|
28
33
|
require_relative "dommy/animation"
|
|
29
34
|
require_relative "dommy/bridge"
|
|
35
|
+
require_relative "dommy/bridge/constructor_registry"
|
|
30
36
|
require_relative "dommy/storage"
|
|
31
37
|
require_relative "dommy/fetch"
|
|
32
38
|
require_relative "dommy/xml_http_request"
|
|
@@ -49,6 +55,7 @@ require_relative "dommy/parser"
|
|
|
49
55
|
require_relative "dommy/attr"
|
|
50
56
|
require_relative "dommy/window"
|
|
51
57
|
require_relative "dommy/document"
|
|
58
|
+
require_relative "dommy/internal/parent_node"
|
|
52
59
|
require_relative "dommy/element"
|
|
53
60
|
require_relative "dommy/internal/reflected_attributes"
|
|
54
61
|
require_relative "dommy/html_elements"
|
metadata
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: dommy
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.8.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- takahashim
|
|
8
8
|
bindir: bin
|
|
9
9
|
cert_chain: []
|
|
10
|
-
date: 2026-05-
|
|
10
|
+
date: 2026-05-31 00:00:00.000000000 Z
|
|
11
11
|
dependencies: []
|
|
12
12
|
description: 'A pure Ruby DOM polyfill built on Nokogiri::HTML5, inspired by happy-dom
|
|
13
13
|
and jsdom. It gives Ruby tests a browser style DOM with events, MutationObserver,
|
|
@@ -30,6 +30,9 @@ files:
|
|
|
30
30
|
- lib/dommy/backend/nokolexbor_adapter.rb
|
|
31
31
|
- lib/dommy/blob.rb
|
|
32
32
|
- lib/dommy/bridge.rb
|
|
33
|
+
- lib/dommy/bridge/constructor_registry.rb
|
|
34
|
+
- lib/dommy/bridge/methods.rb
|
|
35
|
+
- lib/dommy/callable_invoker.rb
|
|
33
36
|
- lib/dommy/compression_streams.rb
|
|
34
37
|
- lib/dommy/cookie_store.rb
|
|
35
38
|
- lib/dommy/crypto.rb
|
|
@@ -51,21 +54,27 @@ files:
|
|
|
51
54
|
- lib/dommy/internal/cookie_jar.rb
|
|
52
55
|
- lib/dommy/internal/css_pseudo_handlers.rb
|
|
53
56
|
- lib/dommy/internal/dom_matching.rb
|
|
57
|
+
- lib/dommy/internal/global_functions.rb
|
|
54
58
|
- lib/dommy/internal/idna.rb
|
|
55
59
|
- lib/dommy/internal/idna_data.rb
|
|
56
60
|
- lib/dommy/internal/ipv4_parser.rb
|
|
57
61
|
- lib/dommy/internal/mutation_coordinator.rb
|
|
62
|
+
- lib/dommy/internal/namespaces.rb
|
|
63
|
+
- lib/dommy/internal/node_equality.rb
|
|
58
64
|
- lib/dommy/internal/node_traversal.rb
|
|
59
65
|
- lib/dommy/internal/node_wrapper_cache.rb
|
|
60
66
|
- lib/dommy/internal/observable_callback.rb
|
|
61
67
|
- lib/dommy/internal/observer_manager.rb
|
|
62
68
|
- lib/dommy/internal/observer_matcher.rb
|
|
69
|
+
- lib/dommy/internal/parent_node.rb
|
|
63
70
|
- lib/dommy/internal/punycode.rb
|
|
64
71
|
- lib/dommy/internal/range_text_serializer.rb
|
|
65
72
|
- lib/dommy/internal/reflected_attributes.rb
|
|
66
73
|
- lib/dommy/internal/scope_resolution.rb
|
|
74
|
+
- lib/dommy/internal/selector_parser.rb
|
|
67
75
|
- lib/dommy/internal/shadow_root_registry.rb
|
|
68
76
|
- lib/dommy/internal/template_content_registry.rb
|
|
77
|
+
- lib/dommy/internal/url_parser.rb
|
|
69
78
|
- lib/dommy/intersection_observer.rb
|
|
70
79
|
- lib/dommy/location.rb
|
|
71
80
|
- lib/dommy/media_query_list.rb
|
|
@@ -112,7 +121,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
112
121
|
requirements:
|
|
113
122
|
- - ">="
|
|
114
123
|
- !ruby/object:Gem::Version
|
|
115
|
-
version: '3.
|
|
124
|
+
version: '3.2'
|
|
116
125
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
117
126
|
requirements:
|
|
118
127
|
- - ">="
|