Module: Henitai::UnparseHelper

Included in:
Mutant, Reporter::Terminal, Result
Defined in:
lib/henitai/unparse_helper.rb,
sig/henitai.rbs

Overview

Shared safe unparse helpers for user-facing output and report serialization.

Instance Method Summary collapse

Instance Method Details

#fallback_source(node) ⇒ String

Parameters:

  • (Object)

Returns:

  • (String)


20
21
22
23
24
25
# File 'lib/henitai/unparse_helper.rb', line 20

def fallback_source(node)
  return "" if node.nil?
  return node.type.to_s if node.respond_to?(:type)

  node.class.name
end

#safe_unparse(node) ⇒ String

Parameters:

  • (Object)

Returns:

  • (String)


10
11
12
13
14
15
16
17
18
# File 'lib/henitai/unparse_helper.rb', line 10

def safe_unparse(node)
  Unparser.unparse(node)
rescue Unparser::UnknownNodeError, Unparser::InvalidNodeError,
       Unparser::UnsupportedNodeError, EncodingError
  # Unparser does not support all AST node types, and some mutated string
  # segments carry incompatible encodings; fall back gracefully for those.
  # Other failures (e.g. NoMethodError) are bugs and must surface.
  fallback_source(node)
end