Module: Ruwi::NodesEqual

Defined in:
lib/ruwi/runtime/nodes_equal.rb

Class Method Summary collapse

Class Method Details

.equal?(node_one, node_two) ⇒ Boolean

Parameters:

Returns:

  • (Boolean)


8
9
10
11
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
39
40
41
42
43
# File 'lib/ruwi/runtime/nodes_equal.rb', line 8

def equal?(node_one, node_two)
  if node_one.type != node_two.type
    return false
  end

  if node_one.type == Ruwi::Vdom::DOM_TYPES[:ELEMENT]
    tag_one = node_one.tag
    key_one = node_one.props[:key]
    tag_two = node_two.tag
    key_two = node_two.props[:key]

    return tag_one == tag_two && key_one == key_two
  end

  if node_one.type == Ruwi::Vdom::DOM_TYPES[:COMPONENT]
    component_one = node_one.tag
    key_one = node_one.props[:key]
    component_two = node_two.tag
    key_two = node_two.props[:key]

    return component_one == component_two && key_one == key_two
  end

  if node_one.type == Ruwi::Vdom::DOM_TYPES[:TEXT]
    value_one = node_one.value
    value_two = node_two.value

    return value_one == value_two
  end

  if node_one.type == Ruwi::Vdom::DOM_TYPES[:FRAGMENT]
    return true
  end

  false
end