From: "jeremyevans0 (Jeremy Evans) via ruby-core" <ruby-core@...>
Date: 2023-02-26T17:10:41+00:00
Subject: [ruby-core:112612] [Ruby master Feature#19458] Expose HEREDOC identifier

Issue #19458 has been updated by jeremyevans0 (Jeremy Evans).





Exposing the identifier for only heredocs seems inconsistent.  However, for consistency, we could expose the identifier for all literal Ruby strings:



```ruby

'foo'.identifier # => "'"

"foo".identifier # => "\""

%[foo].identifier # => "%["

%q{foo}.identifier # => "%q{"

%Q|foo|.identifier # => "%Q|"

?f.identifier # => "?"

```



For strings created via the C-API, `identifier` would return `nil`.  This could result in interesting applications.



That being said, I'm against the adding such a method.  I do see the advantage in avoiding redundancy, but it seems a specialized case, and not something worth adding a core method for.



----------------------------------------

Feature #19458: Expose HEREDOC identifier

https://bugs.ruby-lang.org/issues/19458#change-102059



* Author: joelhawksley (Joel Hawksley)

* Status: Open

* Priority: Normal

----------------------------------------

I���d like to have access to the HEREDOC identifier.



In the ViewComponent framework I help maintain, we added a method to declare a template as such:



```ruby

class Component

  erb_template <<~ERB

    <h1>Hello, <%= @name %>!</h1>

  ERB

end

```



I'd prefer to be able to write:



```ruby

class Component

  template <<~ERB

    <h1>Hello, <%= @name %>!</h1>

  ERB

end

```



And be able to see that the argument passed to `.template` was from a HEREDOC with an `ERB` identifier, which would allow me to use the correct template handler to compile the template.



I could see this being implemented:



1) As a new property of String, such as `identifier` or `heredoc_identifier`.

2) By having HEREDOCs return a subclass of String that includes an `identifier` property.



I'd be happy to work on implementing this change.



---Files--------------------------------

clipboard-202302251947-5owjc.png (16.4 KB)





-- 

https://bugs.ruby-lang.org/

 ______________________________________________
 ruby-core mailing list -- ruby-core@ml.ruby-lang.org
 To unsubscribe send an email to ruby-core-leave@ml.ruby-lang.org
 ruby-core info -- https://ml.ruby-lang.org/mailman3/postorius/lists/ruby-core.ml.ruby-lang.org/