Module: Pry::Clipboard
- Defined in:
- lib/pry/clipboard.rb
Overview
Originally from github.com/hotchpotch/pry-clipboard but modified since it is broken in Ruby 2.7
Constant Summary collapse
- Command =
Pry::CommandSet.new do create_command "paste" do description "Paste from clipboard" " Usage: paste [-q|--quiet]\n BANNER\n\n def options(opt)\n opt.on :q, :quiet, \"quiet output\", optional: true\n end\n\n def process\n str = Clipboard.paste\n unless opts.present?(:q)\n pry_instance.output.puts green(\"-*-*- Paste from clipboard -*-*-\")\n pry_instance.output.puts str\n end\n eval_string << str\n end\n end\n\n create_command \"copy-history\" do\n description \"Copy history to clipboard\"\n\n banner <<-BANNER\n Usage: copy-history [N] [-T|--tail N] [-H|--head N] [-R|--range N..M] [-G|--grep match] [-l] [-q|--quiet]\n e.g: `copy-history`\n e.g: `copy-history -l`\n e.g: `copy-history 10`\n e.g: `copy-history -H 10`\n e.g: `copy-history -T 5`\n e.g: `copy-history -R 5..10`\n BANNER\n\n def options(opt)\n opt.on :l, \"Copy history with last result\", optional: true\n opt.on :H, :head, \"Copy the first N items.\", optional: true, as: Integer\n opt.on :T, :tail, \"Copy the last N items.\", optional: true, as: Integer\n opt.on :R, :range, \"Copy the given range of lines.\", optional: true, as: Range\n opt.on :G, :grep, \"Copy lines matching the given pattern.\", optional: true, as: String\n opt.on :q, :quiet, \"quiet output\", optional: true\n end\n\n def process\n history = Pry::Code(Pry.history.to_a)\n\n history = if num_arg\n history.take_lines(num_arg, 1)\n else\n history = history.grep(opts[:grep]) if opts.present?(:grep)\n if opts.present?(:range)\n history.between(opts[:range])\n elsif opts.present?(:head)\n history.take_lines(1, opts[:head] || 10)\n elsif opts.present?(:tail) || opts.present?(:grep)\n n = opts[:tail] || 10\n n = history.lines.count if n > history.lines.count\n history.take_lines(-n, n)\n else\n history.take_lines(-1, 1)\n end\n end\n\n str = history.raw\n str += \"#=> \#{pry_instance.last_result}\\n\" if opts.present?(:l)\n Clipboard.copy str\n\n return if opts.present?(:q)\n pry_instance.output.puts green(\"-*-*- Copy history to clipboard -*-*-\")\n pry_instance.output.puts str\n end\n\n def num_arg\n first = args[0]\n first.to_i if first && first.to_i.to_s == first\n end\n end\n\n create_command \"copy-result\" do\n description \"Copy result to clipboard.\"\n\n banner <<-BANNER\n Usage: copy-result [-q|--quiet]\n BANNER\n\n def options(opt)\n opt.on :q, :quiet, \"quiet output\", optional: true\n end\n\n def process\n res = \"\#{pry_instance.last_result}\\n\"\n Clipboard.copy res\n\n return if opts.present?(:q)\n pry_instance.output.puts green(\"-*-*- Copy result to clipboard -*-*-\")\n pry_instance.output.print res\n end\n end\nend\n"