Project

General

Profile

Actions

Feature #11997

closed

A method to read a file with interpolations

Added by sawa (Tsuyoshi Sawada) over 8 years ago. Updated about 8 years ago.

Status:
Feedback
Assignee:
-
Target version:
-
[ruby-core:72883]

Description

I request a single method that reads a file while interpreting interpolated Ruby code in it (in the current context). For example, suppose I have a file foo.txt.

foo.txt

#{char * 20}
Hello, my name is #{name}.
#{char * 20}

I am not sure about what method name the proposed feature should have, and on which class it should be defined, but let's temporarily call it File.eval. Then I would like to do:

char = "*"
name = "John Doe"
File.eval("foo.txt") # => "********************\nHello, my name is John Doe.\n********************\n"

The use case that I have in mind is to easily create template engines/preprocessors, or do an equivalent of what such software do on the fly within a script. There are tools like erb, SCSS, haml, etc., but those force a particular syntax, and they are full fledged software with their own parsing capability, which means it takes an extra time to parse, and the sortware may have their own bugs. I often feel that I do not want to adopt any of the syntax forced in those limited choice of template/preprocessing software, but do it in a freer way.

Using what we have currently, I can do it with:

eval('"' + File.read("foo.txt") + '"')

but that looks cumbersome, and wish if Ruby had a C-level built-in capability for doing that. I believe that would encourage wide range of Ruby users to more freely create their own templating system.

Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0Like0Like0