‘foo #{bar}` ^^^^^^^^^^^^
foo => bar ^^^^^^^^^^
/(?<foo>foo)/ =~ bar ^^^^^^^^^^^^^^^^^^^^
Ripper
gives back the escaped string content but strips out the common leading whitespace. Prism
gives back the unescaped string content and a location for the escaped string content. Unfortunately these don’t work well together, so here we need to re-derive the common leading whitespace.
Reset nil attributes to their default values to make the spec valid
Parses the most indented lines into blocks that are marked and added to the frontier
Returns the node id for the given backtrace location.
begin raise rescue => e loc = e.backtrace_locations.first RubyVM::AbstractSyntaxTree.node_id_for_backtrace_location(loc) end # => 0
def foo(**); bar(**); end
^^
{ **foo }
^^^^^
case foo; in bar; end ^^^^^^^^^^^^^^^^^^^^^
“foo #{bar}” ^^^^^^^^^^^^
:“foo #{bar}” ^^^^^^^^^^^^^
‘foo #{bar}` ^^^^^^^^^^^^
foo => bar ^^^^^^^^^^
/(?<foo>foo)/ =~ bar ^^^^^^^^^^^^^^^^^^^^
def foo(**); bar(**); end
^^
{ **foo }
^^^^^