module Kojo::Refinements
Public Instance Methods
args_to_hash()
click to toggle source
Convert an array of +[“key=value”, “key=value”]+ pairs to a hash
# File lib/kojo/refinements/array.rb, line 7 def args_to_hash collect { |a| a.split '=' } .to_h .symbolize_keys .typecast_values end
erb(template, vars)
click to toggle source
# File lib/kojo/refinements/string.rb, line 59 def erb(template, vars) ERB.new(template, nil, '-').result(OpenStruct.new(vars).instance_eval { binding }) end
eval_erb(args, filename)
click to toggle source
# File lib/kojo/refinements/string.rb, line 41 def eval_erb(args, filename) erb self, args rescue RuntimeError => e raise Kojo::TemplateError, "Invalid Ruby code #{e.message}\nin: #{filename}" rescue SyntaxError => e raise Kojo::TemplateError, "#{e.message}\nin: #{filename}" end
eval_vars(args, filename)
click to toggle source
# File lib/kojo/refinements/string.rb, line 35 def eval_vars(args, filename) resolve args.symbolize_keys rescue ArgumentError => e raise Kojo::TemplateError, "#{e.message}\nin: #{filename}" end
get_user_input()
click to toggle source
# File lib/kojo/refinements/string.rb, line 51 def get_user_input response = $stdin.gets raise Kojo::Interrupt unless response # Ctrl+D response.chomp rescue ::Interrupt # Ctrl+C raise Kojo::Interrupt end
resolve(vars)
click to toggle source
# File lib/kojo/refinements/string.rb, line 24 def resolve(vars) self % vars.symbolize_keys rescue KeyError => e raise unless Kojo.interactive? print "> #{e.key}: " vars[e.key] = get_user_input retry end
symbolize_keys()
click to toggle source
# File lib/kojo/refinements/hash.rb, line 6 def symbolize_keys transform_keys &:to_sym end
to_typed()
click to toggle source
Convert a string to the most appropriate type
# File lib/kojo/refinements/string.rb, line 8 def to_typed if self =~ /\A[+-]?\d+\Z/ self.to_i elsif self =~ /\A[+-]?\d+\.\d+\Z/ self.to_f elsif %w[yes no true false].include? downcase %w[yes true].include? downcase else self end end
typecast_values()
click to toggle source
# File lib/kojo/refinements/hash.rb, line 10 def typecast_values transform_values &:to_typed end