Server IP : 66.29.132.122 / Your IP : 3.149.251.130 Web Server : LiteSpeed System : Linux business142.web-hosting.com 4.18.0-553.lve.el8.x86_64 #1 SMP Mon May 27 15:27:34 UTC 2024 x86_64 User : admazpex ( 531) PHP Version : 7.2.34 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /proc/self/root/proc/thread-self/root/proc/thread-self/root/opt/alt/ruby33/share/ruby/prism/ |
Upload File : |
# frozen_string_literal: true module Prism # This object is responsible for generating the output for the inspect method # implementations of child nodes. class NodeInspector # :nodoc: attr_reader :prefix, :output def initialize(prefix = "") @prefix = prefix @output = +"" end # Appends a line to the output with the current prefix. def <<(line) output << "#{prefix}#{line}" end # This generates a string that is used as the header of the inspect output # for any given node. def header(node) output = +"@ #{node.class.name.split("::").last} (" output << "location: (#{node.location.start_line},#{node.location.start_column})-(#{node.location.end_line},#{node.location.end_column})" output << ", newline: true" if node.newline? output << ")\n" output end # Generates a string that represents a list of nodes. It handles properly # using the box drawing characters to make the output look nice. def list(prefix, nodes) output = +"(length: #{nodes.length})\n" last_index = nodes.length - 1 nodes.each_with_index do |node, index| pointer, preadd = (index == last_index) ? ["└── ", " "] : ["├── ", "│ "] node_prefix = "#{prefix}#{preadd}" output << node.inspect(NodeInspector.new(node_prefix)).sub(node_prefix, "#{prefix}#{pointer}") end output end # Generates a string that represents a location field on a node. def location(value) if value "(#{value.start_line},#{value.start_column})-(#{value.end_line},#{value.end_column}) = #{value.slice.inspect}" else "∅" end end # Generates a string that represents a child node. def child_node(node, append) node.inspect(child_inspector(append)).delete_prefix(prefix) end # Returns a new inspector that can be used to inspect a child node. def child_inspector(append) NodeInspector.new("#{prefix}#{append}") end # Returns the output as a string. def to_str output end end end