Sha256: 128d0a10385a5afe8d8ffc07902ce859d13462a7bf69390ed57b74409429d60b

Contents?: true

Size: 1.71 KB

Versions: 19

Compression:

Stored size: 1.71 KB

Contents

module Redcar
  class ExecuteCurrentTab

    def self.menus
      Menu::Builder.build do
        sub_menu "Plugins" do
          sub_menu "Execute", :priority => 59 do
            item "Execute Current Tab as Ruby File", ExecuteCurrentTab::Execute
            item "Eval Current Tab (within Redcar itself)", ExecuteCurrentTab::EmbeddedExecute
          end
        end
      end
    end

    class Execute < EditTabCommand

      TITLE = "Output"

      def execute
        path = doc.path
        if path
          execute_file(path)
        else
          path = File.join(Redcar.tmp_dir, "execute_file.rb")
          File.open(path, "w") { |file| file.puts doc.to_s }
          execute_file(path)
          FileUtils.rm(path)
        end
      end
      
      def output_tab
        tabs = win.notebooks.map {|nb| nb.tabs }.flatten
        tabs.detect {|t| t.title == TITLE} || Top::NewCommand.new.run
      end

      def execute_file(path)
        command = "ruby \"#{path}\""
        output = `#{command} 2>&1`
        tab = output_tab
        title = "[#{DateTime.now}]$ #{command}"
        tab.document.text = "#{tab.document.to_s}" +
          "#{"="*title.length}\n#{title}\n#{"="*title.length}\n\n#{output}"
        tab.title = TITLE
        tab.focus
      end
    end

    class EmbeddedExecute < EditTabCommand

      def execute
        out = doc.get_all_text
        if out
          begin
            eval(out, TOPLEVEL_BINDING, doc.path || doc.title || '')
          rescue Object => e
            Application::Dialog.message_box(
							"#{e.class}\n#{e.message}",
							:type => :error )
              
          end
        end
      end

    end

  end

end

Version data entries

19 entries across 19 versions & 1 rubygems

Version Path
redcar-0.11.0dev plugins/execute_current_tab/lib/execute_current_tab.rb
redcar-0.10 plugins/execute_current_tab/lib/execute_current_tab.rb
redcar-0.9.2 plugins/execute_current_tab/lib/execute_current_tab.rb
redcar-0.9.1 plugins/execute_current_tab/lib/execute_current_tab.rb
redcar-0.9.0 plugins/execute_current_tab/lib/execute_current_tab.rb
redcar-0.8.1 plugins/execute_current_tab/lib/execute_current_tab.rb
redcar-0.8 plugins/execute_current_tab/lib/execute_current_tab.rb
redcar-0.7 plugins/execute_current_tab/lib/execute_current_tab.rb
redcar-0.6.1 plugins/execute_current_tab/lib/execute_current_tab.rb
redcar-0.6 plugins/execute_current_tab/lib/execute_current_tab.rb
redcar-0.6.1dev plugins/execute_current_tab/lib/execute_current_tab.rb
redcar-0.5.1 plugins/execute_current_tab/lib/execute_current_tab.rb
redcar-0.5 plugins/execute_current_tab/lib/execute_current_tab.rb
redcar-0.5.6dev plugins/execute_current_tab/lib/execute_current_tab.rb
redcar-0.5.5dev plugins/execute_current_tab/lib/execute_current_tab.rb
redcar-0.5.4dev plugins/execute_current_tab/lib/execute_current_tab.rb
redcar-0.5.3dev plugins/execute_current_tab/lib/execute_current_tab.rb
redcar-0.5.2dev plugins/execute_current_tab/lib/execute_current_tab.rb
redcar-0.5.1dev plugins/execute_current_tab/lib/execute_current_tab.rb