Sha256: ddc28963bbbce64af1013d74c3fa811727843c8aa78b319cd72c4e17c83c318a

Contents?: true

Size: 738 Bytes

Versions: 1

Compression:

Stored size: 738 Bytes

Contents

# frozen_string_literal: true

require 'optparse'
require 'anyway/ext/string'

module Anyway # :nodoc:
  using Anyway::Ext::String

  # Initializes the OptionParser instance using the given configuration
  class OptionParserBuilder
    class << self
      def call(options)
        OptionParser.new do |opts|
          options.each do |key, description|
            opts.on(*option_parser_on_args(key, description)) do |arg|
              yield [key, arg.serialize]
            end
          end
        end
      end

      private

      def option_parser_on_args(key, description)
        on_args = ["--#{key.to_s.tr('_', '-')} VALUE"]
        on_args << description unless description.nil?
        on_args
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
anyway_config-1.4.0 lib/anyway/option_parser_builder.rb