Module: Dhall::Operator::FetchFromMerge

Included in:
RecursiveRecordMerge, RightBiasedRecordMerge
Defined in:
lib/dhall/ast.rb

Instance Method Summary collapse

Instance Method Details

#fetch(selector) ⇒ Object



368
369
370
371
372
373
374
375
376
377
378
# File 'lib/dhall/ast.rb', line 368

def fetch(selector)
	first = public_send(self.class::FETCH1K)
	second = public_send(self.class::FETCH2K)
	if first.is_a?(Record)
		first.fetch(selector) { second.fetch(selector) }
	elsif second.is_a?(Record)
		fetch_second_record(first, second, selector)
	else
		super
	end
end

#fetch_second_record(first, second, selector) ⇒ Object



355
356
357
358
359
360
361
362
363
364
365
366
# File 'lib/dhall/ast.rb', line 355

def fetch_second_record(first, second, selector)
	rec = self.class.new(
		self.class::FETCH2K => second.slice(selector),
		self.class::FETCH1K => first
	).normalize

	if rec.class == self.class
		RecordSelection.new(record: rec, selector: selector)
	else
		rec.fetch(selector)
	end
end