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
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 |