Sha256: 101a868fbecd70bc104d51fb32a0899c899bfb24c452ce49666a5eaf16198424

Contents?: true

Size: 1.52 KB

Versions: 12

Compression:

Stored size: 1.52 KB

Contents

require 'stringio'
require 'irb/ruby-lex'

module Debugger

  class ExpressionInfoCommand < Command
    def regexp
      /^\s*ex(?:pression_info)?\s+/
    end

    def execute
      string_to_parse = @match.post_match.gsub("\\n", "\n") + "\n\n\n"
      total_lines = string_to_parse.count("\n") + 1

      lexer = RubyLex.new
      io = StringIO.new(string_to_parse)
      # for passing to the lexer
      io.instance_exec(string_to_parse.encoding) do |string_encoding|
        @my_encoding = string_encoding
        def self.encoding
          @my_encoding
        end
      end

      lexer.set_input(io)

      last_statement = ''
      last_prompt = ''
      last_indent = 0
      lexer.set_prompt do |ltype, indent, continue, lineno|
        next if (lineno >= total_lines)

        last_prompt = ltype || ''
        last_indent = indent
      end

      lexer.each_top_level_statement do |line, line_no|
        last_statement = line
      end

      incomplete = true
      if /\A\s*\Z/m =~ last_statement[0]
        incomplete = false
      end

      @printer.print_expression_info(incomplete, last_prompt, last_indent)
    end

    class << self
      def help_command
        "expression_info"
      end

      def help(cmd)
        %{
          ex[pression_info] <expression>\t
          returns parser-related information for the expression given\t\t
          'incomplete'=true|false\tindicates whether expression is a complete ruby
          expression and can be evaluated without getting syntax errors
        }
      end
    end
  end

end

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
ruby-debug-ide-0.4.27 lib/ruby-debug-ide/commands/expression_info.rb
ruby-debug-ide-0.4.26 lib/ruby-debug-ide/commands/expression_info.rb
ruby-debug-ide-0.4.25 lib/ruby-debug-ide/commands/expression_info.rb
ruby-debug-ide-0.4.24 lib/ruby-debug-ide/commands/expression_info.rb
ruby-debug-ide-0.4.24.beta5 lib/ruby-debug-ide/commands/expression_info.rb
ruby-debug-ide-0.4.24.beta4 lib/ruby-debug-ide/commands/expression_info.rb
ruby-debug-ide-0.4.23 lib/ruby-debug-ide/commands/expression_info.rb
ruby-debug-ide-0.4.23.beta11 lib/ruby-debug-ide/commands/expression_info.rb
ruby-debug-ide-0.4.23.beta10 lib/ruby-debug-ide/commands/expression_info.rb
ruby-debug-ide-0.4.23.beta9 lib/ruby-debug-ide/commands/expression_info.rb
ruby-debug-ide-0.4.23.beta8 lib/ruby-debug-ide/commands/expression_info.rb
ruby-debug-ide-0.4.23.beta7 lib/ruby-debug-ide/commands/expression_info.rb