Sha256: 994ea18c717cea9a2d2cf054c40b6cb7a7a79eec021f4e37f3cccab66052684c

Contents?: true

Size: 1.78 KB

Versions: 31

Compression:

Stored size: 1.78 KB

Contents

module Eco
  class CLI
    class Config
      class Filters
        include Eco::CLI::Config::Help
        attr_reader :core_config

        def initialize(core_config:)
          @core_config = core_config
          @filters     = {}
          @description = {}
        end

        # @return [String] summary of the filters.
        def help(msg = nil, refine: nil)
          refinement = refine.is_a?(String)? " (containing: '#{refine}')" : ""
          msg ||= "The following are the available filters#{refinement}:"

          [msg].then do |lines|
            max_len = keys_max_len(@filters.keys)
            @filters.keys.sort.select do |key|
              !refine.is_a?(String) || key.include?(refine)
            end.each do |key|
              lines << help_line(key, @description[key], max_len)
            end
            lines
          end.join("\n")
        end

        def available(keys: false)
          return @filters.keys if keys

          @filters.keys.map do |key|
            [key, @filters[key], @description[key]]
          end
        end

        # @param option [String] the command line option that activates this filter.
        # @param desc [String] description of the filter.
        def add(option, desc = nil, &block)
          raise ArgumentError, "Missing block to define the filters builder" unless block_given?

          callback = block
          [option].flatten.compact.each do |opt|
            @filters[opt]     = callback
            @description[opt] = desc
          end
          self
        end

        def process(*)
          raise "You need to override this method in child classes"
        end
      end
    end
  end
end

require_relative 'filters/people_filters'
require_relative 'filters/input_filters'

Version data entries

31 entries across 31 versions & 1 rubygems

Version Path
eco-helpers-3.0.21 lib/eco/cli/config/filters.rb
eco-helpers-3.0.20 lib/eco/cli/config/filters.rb
eco-helpers-3.0.19 lib/eco/cli/config/filters.rb
eco-helpers-3.0.18 lib/eco/cli/config/filters.rb
eco-helpers-3.0.17 lib/eco/cli/config/filters.rb
eco-helpers-3.0.16 lib/eco/cli/config/filters.rb
eco-helpers-3.0.15 lib/eco/cli/config/filters.rb
eco-helpers-3.0.14 lib/eco/cli/config/filters.rb
eco-helpers-3.0.13 lib/eco/cli/config/filters.rb
eco-helpers-3.0.12 lib/eco/cli/config/filters.rb
eco-helpers-3.0.11 lib/eco/cli/config/filters.rb
eco-helpers-3.0.10 lib/eco/cli/config/filters.rb
eco-helpers-3.0.9 lib/eco/cli/config/filters.rb
eco-helpers-3.0.8 lib/eco/cli/config/filters.rb
eco-helpers-3.0.7 lib/eco/cli/config/filters.rb
eco-helpers-3.0.6 lib/eco/cli/config/filters.rb
eco-helpers-3.0.5 lib/eco/cli/config/filters.rb
eco-helpers-3.0.4 lib/eco/cli/config/filters.rb
eco-helpers-3.0.3 lib/eco/cli/config/filters.rb
eco-helpers-3.0.2 lib/eco/cli/config/filters.rb