summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorkeiju <keiju@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2012-12-27 12:35:28 +0000
committerkeiju <keiju@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2012-12-27 12:35:28 +0000
commit8f4d0c4526d38eac768c5d8517feb3a003b3d45c (patch)
tree9ba31e62288f97682cb49a413c89f05b664c4e24 /lib
parent89182621d9949b24e67d48b751a1997e9eeb06ec (diff)
* lib/irb/ruby-lex.rb: allow to handle recursive heredocs on
irb[Bug #5648]. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@38631 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'lib')
-rw-r--r--lib/irb/ruby-lex.rb23
1 files changed, 19 insertions, 4 deletions
diff --git a/lib/irb/ruby-lex.rb b/lib/irb/ruby-lex.rb
index 295dc9fa06..19b7b9198b 100644
--- a/lib/irb/ruby-lex.rb
+++ b/lib/irb/ruby-lex.rb
@@ -907,10 +907,25 @@ class RubyLex
end
@here_header = false
- while l = gets
- l = l.sub(/(:?\r)?\n\z/, '')
- if (indent ? l.strip : l) == quoted
- break
+# while l = gets
+# l = l.sub(/(:?\r)?\n\z/, '')
+# if (indent ? l.strip : l) == quoted
+# break
+# end
+# end
+
+ line = ""
+ while ch = getc
+ if ch == "\n"
+ if line == quoted
+ break
+ end
+ line = ""
+ else
+ line.concat ch unless indent && line == "" && /\s/ =~ ch
+ if @ltype != "'" && ch == "#" && peek(0) == "{"
+ identify_string_dvar
+ end
end
end