Module: Herb::PrismInspect
- Defined in:
- lib/herb/prism_inspect.rb
Constant Summary collapse
- SKIP_FIELDS =
[:node_id, :location, :flags].freeze
Class Method Summary collapse
-
.inspect_prism_node(node, source, prefix) ⇒ Object
: (Prism::Node, String, String) -> String.
-
.inspect_prism_serialized(serialized_bytes, source, prefix) ⇒ Object
: (String, String, String) -> String.
Class Method Details
.inspect_prism_node(node, source, prefix) ⇒ Object
: (Prism::Node, String, String) -> String
29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
# File 'lib/herb/prism_inspect.rb', line 29 def inspect_prism_node(node, source, prefix) output = +"" node_name = node.class.name&.split("::")&.last || "Node" output << "@ #{node_name} (location: #{format_location(node.location)})\n" fields = display_fields(node) fields.each_with_index do |(name, value), i| is_last = i == fields.size - 1 symbol = is_last ? "└── " : "├── " child_prefix = prefix + (is_last ? " " : "│ ") output << inspect_field(name, value, source, prefix, symbol, child_prefix) end output end |
.inspect_prism_serialized(serialized_bytes, source, prefix) ⇒ Object
: (String, String, String) -> String
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
# File 'lib/herb/prism_inspect.rb', line 9 def inspect_prism_serialized(serialized_bytes, source, prefix) return "∅" unless serialized_bytes begin require "prism" rescue LoadError return "(#{serialized_bytes.bytesize} bytes, prism gem not available)" end node = Prism.load(source, serialized_bytes).value return "∅" unless node tree = inspect_prism_node(node, source, "#{prefix} ") "\n#{prefix}└── #{tree.strip}" rescue StandardError => e "(#{serialized_bytes.bytesize} bytes, deserialize error: #{e.})" end |