class Referral::ParsesOptions

Public Instance Methods

call(argv) click to toggle source
# File lib/referral/parses_options.rb, line 6
def call(argv)
  options = snake_case(run_optparse(argv))
  Value::Options.default.merge(
    merge_files(options, argv)
  ).freeze
end

Private Instance Methods

help!(op) click to toggle source
# File lib/referral/parses_options.rb, line 59
def help!(op)
  op.on("-h", "--help", "Prints this help") do
    puts op
    exit 0
  end
end
merge_files(options, argv) click to toggle source
# File lib/referral/parses_options.rb, line 46
def merge_files(options, argv)
  options.merge(
    files: argv.empty? ? Dir["**/*.rb"] : argv.dup
  )
end
run_optparse(argv) click to toggle source
# File lib/referral/parses_options.rb, line 15
def run_optparse(argv)
  {}.tap do |options|
    op = OptionParser.new
    op.banner += " files"
    op.version = Referral::VERSION
    version!(op)
    help!(op)
    op.on("-n", "--name [NAME]", Array, "Partial or complete name(s) to filter")
    op.on("--exact-name [NAME]", Array, "Exact name(s) to filter")
    op.on("--full-name [NAME]", Array, "Exact, fully-qualified name(s) to filter")
    op.on("--scope [SCOPE]", Array, "Scope(s) in which to filter (e.g. Hastack#hide)")
    op.on("-p", "--pattern [PATTERN]", Regexp, "Regex pattern to filter")
    op.on("-t", "--type [TYPES]", Array, "Include only certain types. See Referral::TOKEN_TYPES.")
    op.on("--arity [ARITY]", "Number of arguments to a method call.  (e.g. 2+)")
    op.on("--include-unnamed", TrueClass, "Include reference without identifiers (default: false)")
    op.on("-s", "--sort {file,scope}", "(default: file). See Referral::SORT_FUNCTIONS")
    op.on("--print-headers", TrueClass, "Print header names (default: false)")
    op.on("-c", "--columns [COL1,COL2,COL3]", Array, "(default: location,type,scope,name). See Referral::COLUMN_FUNCTIONS")
    op.on("-d", "--delimiter [DELIM]", "String separating columns (default: ' ')") do |v|
      "\"#{v}\"".undump
    end
    op.parse!(argv, into: options)
  end
end
snake_case(options) click to toggle source
# File lib/referral/parses_options.rb, line 40
def snake_case(options)
  options.transform_keys { |k|
    k.to_s.tr("-", "_").to_sym
  }
end
version!(op) click to toggle source
# File lib/referral/parses_options.rb, line 52
def version!(op)
  op.on("-v", "--version", "Prints the version") do
    puts VERSION
    exit 0
  end
end