Module: Slamdown::Immutable

Defined in:
lib/slamdown/immutable.rb

Overview

Copies nested public values into an immutable representation shared by Slamdown's boundary objects.

Class Method Summary collapse

Class Method Details

.copy(value) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
18
19
20
# File 'lib/slamdown/immutable.rb', line 7

def self.copy(value)
	case value
	when String, Regexp
		value.dup.freeze
	when Array
		value.map { |item| copy(item) }.freeze
	when Hash
		value.each_with_object({}) do |(name, item), result|
			result[copy(name)] = copy(item)
		end.freeze
	else
		value
	end
end