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