class Copypasta::SettingsDSL

Attributes

settings[R]

Public Class Methods

new(settings = nil) click to toggle source
# File lib/copypasta/settings_dsl.rb, line 13
def initialize(settings = nil)
  raise "settings must be a Copypasta::Settings." \
    if !settings.nil? && !settings.is_a?(Copypasta::Settings)

  @settings = settings || Copypasta::Settings.new
end

Public Instance Methods

csv(name, description, postprocess: nil) click to toggle source
# File lib/copypasta/settings_dsl.rb, line 55
def csv(name, description, postprocess: nil)
  parameter(name, description,
            postprocess: ->(raw) {
              r = raw.split(",").map(&:strip)
              if postprocess
                postprocess.call(r)
              else
                r
              end
            })
end
json(name, description) click to toggle source
# File lib/copypasta/settings_dsl.rb, line 44
def json(name, description)
  parameter(name, description,
            postprocess: ->(raw) {
              if raw.is_a?(String)
                raw
              else
                JSON.parse(raw)
              end
            })
end
parameter(name, description, default: nil, postprocess: nil) click to toggle source
# File lib/copypasta/settings_dsl.rb, line 20
def parameter(name, description, default: nil, postprocess: nil)
  name = name.to_sym
  raise "Duplicate parameter '#{name}' detected." \
    if settings.parameter_definitions.key?(name)

  param = Copypasta::ParameterDefinition.new(name, description,
                                             default,
                                             postprocess)
  param.freeze

  settings.parameter_definitions[name] = param
end
yaml(name, description) click to toggle source
# File lib/copypasta/settings_dsl.rb, line 33
def yaml(name, description)
  parameter(name, description,
            postprocess: ->(raw) {
              if raw.is_a?(String)
                raw
              else
                YAML.safe_load(raw)
              end
            })
end