summaryrefslogtreecommitdiff
path: root/template
diff options
context:
space:
mode:
Diffstat (limited to 'template')
-rw-r--r--template/prelude.c.tmpl12
1 files changed, 8 insertions, 4 deletions
diff --git a/template/prelude.c.tmpl b/template/prelude.c.tmpl
index 00230ab6be..8f331d9ce4 100644
--- a/template/prelude.c.tmpl
+++ b/template/prelude.c.tmpl
@@ -42,10 +42,14 @@ class Prelude
result = [@preludes.size, @vpath.strip(filename), lines, sub]
@vpath.foreach(filename) do |line|
@preludes[filename] ||= result
- line.sub!(/(?:^|\s+)\#(?:$|\s.*)/, '')
- line.sub!(/require\s*\(?\s*(["'])(.*?)\1\)?/) do
- orig, path = $&, $2
- path = translate(path, true) rescue nil
+ line.sub!(/(?:^|\s+)\#(?:$|[#\s].*)/, '')
+ line.sub!(/require(_relative)?\s*\(?\s*(["'])(.*?)(?:\.rb)?\2\)?/) do
+ orig, rel, path = $&, $2, $3
+ if rel
+ path = File.join(File.dirname(filename), path)
+ nil while path.gsub!(%r'(\A|/)(?!\.\.?/)[^/]+/\.\.(?:/|\z)', '')
+ end
+ path = translate("#{path}.rb", true) rescue nil
if path
@have_sublib = true
"TMP_RUBY_PREFIX.require(#{path[0]})"