Module: Prism::Serialize

Defined in:
lib/prism/serialize.rb

Overview

A module responsible for deserializing parse results.

Defined Under Namespace

Classes: Loader

Constant Summary collapse

MAJOR_VERSION =

The major version of prism that we are expecting to find in the serialized strings.

0
MINOR_VERSION =

The minor version of prism that we are expecting to find in the serialized strings.

19
PATCH_VERSION =

The patch version of prism that we are expecting to find in the serialized strings.

0
TOKEN_TYPES =

The token types that can be indexed by their enum values.

[
  nil,
  :EOF,
  :MISSING,
  :NOT_PROVIDED,
  :AMPERSAND,
  :AMPERSAND_AMPERSAND,
  :AMPERSAND_AMPERSAND_EQUAL,
  :AMPERSAND_DOT,
  :AMPERSAND_EQUAL,
  :BACKTICK,
  :BACK_REFERENCE,
  :BANG,
  :BANG_EQUAL,
  :BANG_TILDE,
  :BRACE_LEFT,
  :BRACE_RIGHT,
  :BRACKET_LEFT,
  :BRACKET_LEFT_ARRAY,
  :BRACKET_LEFT_RIGHT,
  :BRACKET_LEFT_RIGHT_EQUAL,
  :BRACKET_RIGHT,
  :CARET,
  :CARET_EQUAL,
  :CHARACTER_LITERAL,
  :CLASS_VARIABLE,
  :COLON,
  :COLON_COLON,
  :COMMA,
  :COMMENT,
  :CONSTANT,
  :DOT,
  :DOT_DOT,
  :DOT_DOT_DOT,
  :EMBDOC_BEGIN,
  :EMBDOC_END,
  :EMBDOC_LINE,
  :EMBEXPR_BEGIN,
  :EMBEXPR_END,
  :EMBVAR,
  :EQUAL,
  :EQUAL_EQUAL,
  :EQUAL_EQUAL_EQUAL,
  :EQUAL_GREATER,
  :EQUAL_TILDE,
  :FLOAT,
  :FLOAT_IMAGINARY,
  :FLOAT_RATIONAL,
  :FLOAT_RATIONAL_IMAGINARY,
  :GLOBAL_VARIABLE,
  :GREATER,
  :GREATER_EQUAL,
  :GREATER_GREATER,
  :GREATER_GREATER_EQUAL,
  :HEREDOC_END,
  :HEREDOC_START,
  :IDENTIFIER,
  :IGNORED_NEWLINE,
  :INSTANCE_VARIABLE,
  :INTEGER,
  :INTEGER_IMAGINARY,
  :INTEGER_RATIONAL,
  :INTEGER_RATIONAL_IMAGINARY,
  :KEYWORD_ALIAS,
  :KEYWORD_AND,
  :KEYWORD_BEGIN,
  :KEYWORD_BEGIN_UPCASE,
  :KEYWORD_BREAK,
  :KEYWORD_CASE,
  :KEYWORD_CLASS,
  :KEYWORD_DEF,
  :KEYWORD_DEFINED,
  :KEYWORD_DO,
  :KEYWORD_DO_LOOP,
  :KEYWORD_ELSE,
  :KEYWORD_ELSIF,
  :KEYWORD_END,
  :KEYWORD_END_UPCASE,
  :KEYWORD_ENSURE,
  :KEYWORD_FALSE,
  :KEYWORD_FOR,
  :KEYWORD_IF,
  :KEYWORD_IF_MODIFIER,
  :KEYWORD_IN,
  :KEYWORD_MODULE,
  :KEYWORD_NEXT,
  :KEYWORD_NIL,
  :KEYWORD_NOT,
  :KEYWORD_OR,
  :KEYWORD_REDO,
  :KEYWORD_RESCUE,
  :KEYWORD_RESCUE_MODIFIER,
  :KEYWORD_RETRY,
  :KEYWORD_RETURN,
  :KEYWORD_SELF,
  :KEYWORD_SUPER,
  :KEYWORD_THEN,
  :KEYWORD_TRUE,
  :KEYWORD_UNDEF,
  :KEYWORD_UNLESS,
  :KEYWORD_UNLESS_MODIFIER,
  :KEYWORD_UNTIL,
  :KEYWORD_UNTIL_MODIFIER,
  :KEYWORD_WHEN,
  :KEYWORD_WHILE,
  :KEYWORD_WHILE_MODIFIER,
  :KEYWORD_YIELD,
  :KEYWORD___ENCODING__,
  :KEYWORD___FILE__,
  :KEYWORD___LINE__,
  :LABEL,
  :LABEL_END,
  :LAMBDA_BEGIN,
  :LESS,
  :LESS_EQUAL,
  :LESS_EQUAL_GREATER,
  :LESS_LESS,
  :LESS_LESS_EQUAL,
  :METHOD_NAME,
  :MINUS,
  :MINUS_EQUAL,
  :MINUS_GREATER,
  :NEWLINE,
  :NUMBERED_REFERENCE,
  :PARENTHESIS_LEFT,
  :PARENTHESIS_LEFT_PARENTHESES,
  :PARENTHESIS_RIGHT,
  :PERCENT,
  :PERCENT_EQUAL,
  :PERCENT_LOWER_I,
  :PERCENT_LOWER_W,
  :PERCENT_LOWER_X,
  :PERCENT_UPPER_I,
  :PERCENT_UPPER_W,
  :PIPE,
  :PIPE_EQUAL,
  :PIPE_PIPE,
  :PIPE_PIPE_EQUAL,
  :PLUS,
  :PLUS_EQUAL,
  :QUESTION_MARK,
  :REGEXP_BEGIN,
  :REGEXP_END,
  :SEMICOLON,
  :SLASH,
  :SLASH_EQUAL,
  :STAR,
  :STAR_EQUAL,
  :STAR_STAR,
  :STAR_STAR_EQUAL,
  :STRING_BEGIN,
  :STRING_CONTENT,
  :STRING_END,
  :SYMBOL_BEGIN,
  :TILDE,
  :UAMPERSAND,
  :UCOLON_COLON,
  :UDOT_DOT,
  :UDOT_DOT_DOT,
  :UMINUS,
  :UMINUS_NUM,
  :UPLUS,
  :USTAR,
  :USTAR_STAR,
  :WORDS_SEP,
  :__END__,
]

Class Method Summary collapse

Class Method Details

.load(input, serialized) ⇒ Object

Deserialize the AST represented by the given string into a parse result.



37
38
39
40
41
42
43
44
45
# File 'lib/prism/serialize.rb', line 37

def self.load(input, serialized)
  input = input.dup
  source = Source.new(input)
  loader = Loader.new(source, serialized)
  result = loader.load_result

  input.force_encoding(loader.encoding)
  result
end

.load_tokens(source, serialized) ⇒ Object

Deserialize the tokens represented by the given string into a parse result.



49
50
51
# File 'lib/prism/serialize.rb', line 49

def self.load_tokens(source, serialized)
  Loader.new(source, serialized).load_tokens_result
end