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