lib/rubylexer.rb in rubylexer-0.7.4 vs lib/rubylexer.rb in rubylexer-0.7.5

- old
+ new

@@ -200,11 +200,11 @@ @encoding=:ascii @encoding=:utf8 if @file.skip( /\xEF\xBB\xBF/ ) #bom if @file.skip( /\A#!/ ) loop do til_charset( /[\s\v]/ ) - break if @file.skip( / ([^-\s\v]|--[\s\v])/,4 ) + break if @file.match( / ([^-\s\v]|--[\s\v])/,4 ) if @file.skip( /.-K(.)/ ) case $1 when 'u'; @encoding=:utf8 when 'e'; @encoding=:euc when 's'; @encoding=:sjis @@ -975,11 +975,10 @@ @moretokens.concat divide_ws(ws,offset) if ws @moretokens.push KeywordToken.new('::',offset+md.end(0)-2) if dc loop do offset=input_position @file.scan(/\A(#@@WSTOKS)?(#@@UCLETTER#@@LETTER_DIGIT*)(::)?/o) - #this regexp---^ will need to change in order to support utf8 properly. md=@file.last_match all,ws,name,dc=*md if ws @moretokens.concat divide_ws(ws,offset) incr=ws.size @@ -1018,17 +1017,18 @@ def keyword_elsif(str,offset,result) result.unshift(*abort_noparens!(str)) @parsestack.push ExpectThenOrNlContext.new(str,@linenum) return result end + def keyword_begin(str,offset,result) result.first.has_end! @parsestack.push WantsEndContext.new(str,@linenum) return result end - alias keyword_case keyword_begin + def keyword_while(str,offset,result) #could be infix form without end if after_nonid_op?{false} #prefix form result.first.has_end! @parsestack.push WantsEndContext.new(str,@linenum) expect_do_or_end_or_nl! str @@ -1036,11 +1036,10 @@ else #infix form result.unshift(*abort_noparens!(str)) end return result end - alias keyword_until keyword_while def keyword_for(str,offset,result) result.first.has_end! result.push KwParamListStartToken.new(offset+str.length) @@ -1048,10 +1047,11 @@ @parsestack.push WantsEndContext.new(str,@linenum) #expect_do_or_end_or_nl! str #handled by ForSMContext now @parsestack.push ForSMContext.new(@linenum) return result end + def keyword_do(str,offset,result) result.unshift(*abort_noparens_for_do!(str)) if ExpectDoOrNlContext===@parsestack.last @parsestack.pop assert WantsEndContext===@parsestack.last @@ -2151,11 +2151,10 @@ assert FileAndLineToken===fal @offset_adjust=@min_offset_adjust @moretokens.unshift(*optional_here_bodies) - result=@moretokens.shift #adjust line count in fal to account for newlines in here bodys i=@moretokens.size-1 while(i>=0) #assert FileAndLineToken===@moretokens[i] @@ -2166,15 +2165,16 @@ i-=1 end if pre_fal - @moretokens.unshift result + result=@moretokens.first pre.offset=result.offset - result=pre + @moretokens.unshift pre end start_of_line_directives + result=@moretokens.shift return result end #----------------------------------- EQBEGIN=%r/^=begin[ \t\v\r\n\f]$/