class method
Prism::Serialize.load_lex
load_lex(input, serialized, freeze)
lib/prism/serialize.rb
View on GitHub ↗
# File tmp/rubies/ruby-4.0.0/lib/prism/serialize.rb, line 87
def self.load_lex(input, serialized, freeze)
source = Source.for(input)
loader = Loader.new(source, serialized)
tokens = loader.load_tokens
encoding = loader.load_encoding
start_line = loader.load_varsint
offsets = loader.load_line_offsets(freeze)
source.replace_start_line(start_line)
source.replace_offsets(offsets)
comments = loader.load_comments(freeze)
magic_comments = loader.load_magic_comments(freeze)
data_loc = loader.load_optional_location_object(freeze)
errors = loader.load_errors(encoding, freeze)
warnings = loader.load_warnings(encoding, freeze)
raise unless loader.eof?
result = LexResult.new(tokens, comments, magic_comments, data_loc, errors, warnings, source)
tokens.each do |token|
token[0].value.force_encoding(encoding)
if freeze
token[0].deep_freeze
token.freeze
end
end
if freeze
source.deep_freeze
tokens.freeze
result.freeze
end
result
end
Deserialize the dumped output from a request to lex or lex_file.
The formatting of the source of this method is purposeful to illustrate the structure of the serialized data.