Module: Ibex::Runtime::ASTData

Defined in:
lib/json5/generated_parser.rb

Overview

Builds Data classes on Ruby 3.2+ and an immutable Struct-compatible fallback on older supported Rubies.

Class Method Summary collapse

Class Method Details

.define(*members) ⇒ Object

RBS:

  • (*Symbol members) -> singleton(Object)



3572
3573
3574
3575
3576
3577
3578
3579
3580
3581
# File 'lib/json5/generated_parser.rb', line 3572

def define(*members)
  return ::Data.define(*members) if defined?(::Data)

  immutable = Module.new
  immutable.send(:define_method, :initialize) do |*arguments, **keywords|
    super(*arguments, **keywords)
    freeze
  end
  Struct.new(*members, keyword_init: true).tap { |node| node.prepend(immutable) }
end