diff options
author | Stan Lo <[email protected]> | 2024-02-16 16:47:32 +0000 |
---|---|---|
committer | git <[email protected]> | 2024-02-16 16:47:36 +0000 |
commit | f5801e2bf404cbb0f673a6ebb040b0ba6cd01b77 (patch) | |
tree | 8ee0d5041c9d46df4448c80c28ffb929daabe4b4 /lib/irb/command/edit.rb | |
parent | 4411cdeef9f49cc295b2456b15a14550e8d88804 (diff) |
[ruby/irb] Standardize command related names
(https://github.com/ruby/irb/pull/873)
* Replace ExtendCommand with Command and standardize command related names
1. Rename lib/irb/extend-command.rb to lib/irb/command.rb
2. Rename lib/irb/cmd/*.rb to lib/irb/command/*.rb
3. Rename test/irb/test_cmd.rb to test/irb/test_command.rb
4. Rename ExtendCommand to Command
* Alias ExtendCommand to Command and deprecate it
* Rename Command::Nop to Command::Base
* Not deprecate old constants just yet
* Add lib/irb/cmd/nop.rb back
https://github.com/ruby/irb/commit/462c1284af
Diffstat (limited to 'lib/irb/command/edit.rb')
-rw-r--r-- | lib/irb/command/edit.rb | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/lib/irb/command/edit.rb b/lib/irb/command/edit.rb new file mode 100644 index 0000000000..1a8ded6bcf --- /dev/null +++ b/lib/irb/command/edit.rb @@ -0,0 +1,54 @@ +require 'shellwords' + +require_relative "../source_finder" + +module IRB + # :stopdoc: + + module Command + class Edit < Base + category "Misc" + description 'Open a file with the editor command defined with `ENV["VISUAL"]` or `ENV["EDITOR"]`.' + + class << self + def transform_args(args) + # Return a string literal as is for backward compatibility + if args.nil? || args.empty? || string_literal?(args) + args + else # Otherwise, consider the input as a String for convenience + args.strip.dump + end + end + end + + def execute(*args) + path = args.first + + if path.nil? + path = @irb_context.irb_path + elsif !File.exist?(path) + source = SourceFinder.new(@irb_context).find_source(path) + + if source&.file_exist? && !source.binary_file? + path = source.file + end + end + + unless File.exist?(path) + puts "Can not find file: #{path}" + return + end + + if editor = (ENV['VISUAL'] || ENV['EDITOR']) + puts "command: '#{editor}'" + puts " path: #{path}" + system(*Shellwords.split(editor), path) + else + puts "Can not find editor setting: ENV['VISUAL'] or ENV['EDITOR']" + end + end + end + end + + # :startdoc: +end |