Sha256: 2737143bf3b592cf6240368921df79ab183923fec1dda9b5f314d46ba0ff472a

Contents?: true

Size: 814 Bytes

Versions: 19

Compression:

Stored size: 814 Bytes

Contents

require 'pry'
require 'pry-disasm/commands'

class PryDisasm
  def self.process(expr)
    case expr
    when Method, Proc
      str = RubyVM::InstructionSequence.disasm(expr)
    when String
      str = RubyVM::InstructionSequence.compile(expr).disasm
    else
      return puts "Error: The command 'disasm' requires Method/Proc/String instance."
    end

    lines = str.split("\n")
    lines[0].gsub!(/=+/) { |s| "\033[0;32m#{s}\033[0m" }
    lines[0].gsub!(/<(.*?)@(.*?)>/) { "<\033[0;33m#{$1}\033[0m@\033[0;33m#{$2}\033[0m>" }

    (1..lines.length).each do |i|
      lines[i] = "\033[0;35m#{lines[i]}\033[0m"
      lines[i].gsub!(/^(.*?)(\s+)(.*?)(\s+)/) { "#{$1}#{$2}\033[0;36m#{$3}\033[0m#{$4}" }
      lines[i].gsub!(/<(.*?):(.*?)>/) { "<\033[0;34m#{$1}\033[0m#:#{$2}>" }
    end

    puts lines
  end
end

Version data entries

19 entries across 19 versions & 1 rubygems

Version Path
pryx-0.11.0 lib/pry-disasm.rb
pryx-0.10.3 lib/pry-disasm.rb
pryx-0.10.2 lib/pry-disasm.rb
pryx-0.10.1 lib/pry-disasm.rb
pryx-0.10.0 lib/pry-disasm.rb
pryx-0.9.2 lib/pry-disasm.rb
pryx-0.9.0 lib/pry-disasm.rb
pryx-0.8.7 lib/pry-disasm.rb
pryx-0.8.6 lib/pry-disasm.rb
pryx-0.8.5 lib/pry-disasm.rb
pryx-0.8.4 lib/pry-disasm.rb
pryx-0.8.3 lib/pry-disasm.rb
pryx-0.8.2 lib/pry-disasm.rb
pryx-0.8.1 lib/pry-disasm.rb
pryx-0.8.0 lib/pry-disasm.rb
pryx-0.7.2 lib/pry-disasm.rb
pryx-0.7.0 lib/pry-disasm.rb
pryx-0.6.1 lib/pry-disasm.rb
pryx-0.6.0 lib/pry-disasm.rb