class Urlenc::Urlenc

-d, –decode : Decode/unescape STDIN -e, –encode : Encode/escape STDIN

Attributes

params[RW]

Public Class Methods

new() click to toggle source
# File lib/urlenc.rb, line 32
def initialize
  @params = { encode: true }
end

Public Instance Methods

define_options(opts) click to toggle source
# File lib/urlenc.rb, line 57
    def define_options(opts) # rubocop:disable Metrics/AbcSize
      opts.version = VERSION
      opts.separator ' Required:'
      opts.on('-d', '--decode', *DESC_DECODE.split(/\R/)) { |v| v }
      opts.on('-e', '--encode', *DESC_ENCODE.split(/\R/)) { |v| v }
      opts.separator ''
      opts.separator ' Optional:'
      opts.on('-s', '--[no-]split', *DESC_SPLIT.split(/\R/)) { |v| v }
      opts.separator ''
      opts.separator ' Common options:'
      opts.on_tail('-h', '--help', 'Show this message') do
        puts opts
        exit
      end
      opts.on_tail('-V', '--version', 'Show version') do
        puts opts.ver
        exit
      end
      opts.banner = <<~BANNER

        #{opts.ver}
        #{DESCRIPTION}
        Usage: #{opts.program_name} {decode/encode} [options]
      BANNER
      opts
    end
parse_options() click to toggle source
# File lib/urlenc.rb, line 36
def parse_options
  OptionParser.new do |opts|
    opts = define_options(opts)
    opts.parse!(ARGV, into: @params)
    puts opts.help if @params[:decode].nil? && @params[:encode].nil?
  end
end
run() click to toggle source
# File lib/urlenc.rb, line 44
def run
  if @params[:decode]
    STDIN.each { |line| puts CGI.unescape(line.chomp) }
  elsif @params[:split]
    STDIN.each do |line|
      protocol = line.chomp!.slice!(%r{^.+://}) || ''
      puts protocol + line.split('/', -1).map { |e| ERB::Util.url_encode(e) }.join('/')
    end
  else
    STDIN.each { |line| puts ERB::Util.url_encode(line.chomp) }
  end
end