Sha256: 2c492167a2ec86935464aff919ca368aebe483e42fd50c488c32b5c202d0d710

Contents?: true

Size: 1.37 KB

Versions: 70

Compression:

Stored size: 1.37 KB

Contents

module HammerCLIForeman

  class AbstractParamsFilter

    def for_action(action)
      filter(action.params)
    end

    def filter(params)
      []
    end

  end

  class ParamsFlattener < AbstractParamsFilter

    def filter(params)
      flatten_params(params)
    end

    private

    def flatten_params(params)
      result = params
      params.each do |p|
        result += flatten_params(p.params)
      end
      result
    end

  end

  class IdParamsFilter < AbstractParamsFilter

    def initialize(options={})
      @required = !(options[:only_required] == false)
    end

    def filter(params)
      params = ParamsFlattener.new.filter(params)
      params = params.select{ |p| p.name.end_with?("_id") }
      params = params.select{ |p| p.required? } if @required
      params
    end

  end


  class IdArrayParamsFilter < AbstractParamsFilter

    def initialize(options={})
      @required = !(options[:only_required] == false)
    end

    def filter(params)
      params = ParamsFlattener.new.filter(params)
      params = params.select{ |p| p.name.end_with?("_ids") }
      params = params.select{ |p| p.required? } if @required
      params
    end

  end


  class ParamsNameFilter < AbstractParamsFilter

    def initialize(name)
      @name = name
    end

    def filter(params)
      ParamsFlattener.new.filter(params).select{ |p| p.name == @name }
    end

  end

end

Version data entries

70 entries across 70 versions & 1 rubygems

Version Path
hammer_cli_foreman-3.14.0 lib/hammer_cli_foreman/param_filters.rb
hammer_cli_foreman-3.13.0 lib/hammer_cli_foreman/param_filters.rb
hammer_cli_foreman-3.12.0 lib/hammer_cli_foreman/param_filters.rb
hammer_cli_foreman-3.10.0 lib/hammer_cli_foreman/param_filters.rb
hammer_cli_foreman-3.9.0 lib/hammer_cli_foreman/param_filters.rb
hammer_cli_foreman-3.8.0 lib/hammer_cli_foreman/param_filters.rb
hammer_cli_foreman-3.7.0 lib/hammer_cli_foreman/param_filters.rb
hammer_cli_foreman-3.5.1 lib/hammer_cli_foreman/param_filters.rb
hammer_cli_foreman-3.6.0 lib/hammer_cli_foreman/param_filters.rb
hammer_cli_foreman-3.5.0 lib/hammer_cli_foreman/param_filters.rb
hammer_cli_foreman-3.4.0 lib/hammer_cli_foreman/param_filters.rb
hammer_cli_foreman-3.3.0 lib/hammer_cli_foreman/param_filters.rb
hammer_cli_foreman-3.2.0 lib/hammer_cli_foreman/param_filters.rb
hammer_cli_foreman-2.5.2 lib/hammer_cli_foreman/param_filters.rb
hammer_cli_foreman-3.1.0 lib/hammer_cli_foreman/param_filters.rb
hammer_cli_foreman-3.0.0 lib/hammer_cli_foreman/param_filters.rb
hammer_cli_foreman-2.5.1 lib/hammer_cli_foreman/param_filters.rb
hammer_cli_foreman-2.5.0 lib/hammer_cli_foreman/param_filters.rb
hammer_cli_foreman-2.3.2 lib/hammer_cli_foreman/param_filters.rb
hammer_cli_foreman-2.4.0 lib/hammer_cli_foreman/param_filters.rb