12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
# File 'lib/glimmer/dsl/web/element_expression.rb', line 12
def can_interpret?(parent, keyword, *args, &block)
slot = keyword.to_s.to_sym
Glimmer::Web::ElementProxy.keyword_supported?(keyword) &&
(
(
args.empty? &&
(
parent.nil? ||
!parent.respond_to?(:slot_elements) ||
!(parent.slot_elements.keys.include?(slot) || parent.slot_elements.keys.include?(slot.to_s))
)
) ||
args.size == 1 && args.first.is_a?(String) ||
args.size == 1 && args.first.is_a?(Hash) ||
args.size == 2 && args.first.is_a?(String) && args.last.is_a?(Hash)
) &&
(
keyword != 'title' ||
parent.nil? ||
parent.keyword == 'head'
) &&
( !Glimmer::Web::ElementProxy.svg_keyword_supported?(keyword) ||
keyword == 'svg' ||
parent.find_ancestor(include_self: true) { |ancestor| ancestor.keyword == 'svg' }
)
end
|