Module: Jade::AST::Nodes

Included in:
Jade::AST, Pattern
Defined in:
lib/jade/ast/nodes.rb

Instance Method Summary collapse

Instance Method Details

#define(name, *fields) ⇒ Object



6
7
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
# File 'lib/jade/ast/nodes.rb', line 6

def define(name, *fields)
  Data.define(
    *fields,
    :range,
    :symbol,
    :id,
    :leading_comments,
    :trailing_comments,
    :dangling_comments,
    :trailing_comma,
    :dictionaries
  ) {
    include Node

    define_method(:initialize) do |**kwargs|
      kwargs[:symbol] ||= nil
      kwargs[:id]     ||= Node.next_id
      kwargs[:leading_comments]  ||= []
      kwargs[:trailing_comments] ||= []
      kwargs[:dangling_comments] ||= []
      kwargs[:trailing_comma]    ||= false
      kwargs[:dictionaries]      ||= []
      super(**kwargs)
    end
  }
   .then { const_set(name, it) }
end