[前][次][番号順一覧][スレッド一覧]

ruby-changes:12732

From: yugui <ko1@a...>
Date: Sun, 9 Aug 2009 15:04:01 +0900 (JST)
Subject: [ruby-changes:12732] Ruby:r24448 (ruby_1_9_1): merges r24258 from trunk into ruby_1_9_1.

yugui	2009-08-08 19:55:48 +0900 (Sat, 08 Aug 2009)

  New Revision: 24448

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=24448

  Log:
    merges r24258 from trunk into ruby_1_9_1.
    --
     * lib/irb/ruby-lex.rb: make irb be able to parse
      string_dvar. [ruby-core: 24051]

  Modified files:
    branches/ruby_1_9_1/ChangeLog
    branches/ruby_1_9_1/lib/irb/ruby-lex.rb
    branches/ruby_1_9_1/version.h

Index: ruby_1_9_1/ChangeLog
===================================================================
--- ruby_1_9_1/ChangeLog	(revision 24447)
+++ ruby_1_9_1/ChangeLog	(revision 24448)
@@ -1,3 +1,8 @@
+Thu Jul 23 17:31:02 2009  Keiju Ishitsuka  <keiju@r...>
+
+	* lib/irb/ruby-lex.rb: make irb be able to parse
+	  string_dvar. [ruby-core: 24051]
+
 Wed Jul 22 22:23:24 2009  Yusuke Endoh  <mame@t...>
 
 	* vm_core.h (struct rb_iseq_t): add a new field line_no.  This field
Index: ruby_1_9_1/lib/irb/ruby-lex.rb
===================================================================
--- ruby_1_9_1/lib/irb/ruby-lex.rb	(revision 24447)
+++ ruby_1_9_1/lib/irb/ruby-lex.rb	(revision 24448)
@@ -1047,6 +1047,8 @@
       while ch = getc
 	if @quoted == ch and nest == 0
 	  break
+	elsif ch == "#" and peek(0) == "{"
+	  identify_string_dvar
 	elsif @ltype != "'" && @ltype != "]" && @ltype != ":" and ch == "#"
 	  subtype = true
 	elsif ch == '\\' and @ltype == "'" #'
@@ -1082,6 +1084,42 @@
       @lex_state = EXPR_END
     end
   end
+
+  def identify_string_dvar
+    begin
+      getc
+
+      reserve_continue = @continue
+      reserve_ltype = @ltype
+      reserve_indent = @indent
+      reserve_indent_stack = @indent_stack
+      reserve_state = @lex_state
+      reserve_quoted = @quoted
+
+      @ltype = nil
+      @quoted = nil
+      @indent = 0
+      @indent_stack = []
+      @lex_state = EXPR_BEG
+      
+      loop do
+	@continue = false
+	prompt
+	tk = token
+	if @ltype or @continue or @indent > 0
+	  next
+	end
+	break if tk.kind_of?(TkRBRACE)
+      end
+    ensure
+      @continue = reserve_continue
+      @ltype = reserve_ltype
+      @indent = reserve_indent
+      @indent_stack = reserve_indent_stack
+      @lex_state = reserve_state
+      @quoted = reserve_quoted
+    end
+  end
   
   def identify_comment
     @ltype = "#"
Index: ruby_1_9_1/version.h
===================================================================
--- ruby_1_9_1/version.h	(revision 24447)
+++ ruby_1_9_1/version.h	(revision 24448)
@@ -1,5 +1,5 @@
 #define RUBY_VERSION "1.9.1"
-#define RUBY_PATCHLEVEL 253
+#define RUBY_PATCHLEVEL 254
 #define RUBY_VERSION_MAJOR 1
 #define RUBY_VERSION_MINOR 9
 #define RUBY_VERSION_TEENY 1

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]