Class: Copypasta::SettingsDSL
- Inherits:
-
Object
- Object
- Copypasta::SettingsDSL
- Defined in:
- lib/copypasta/settings_dsl.rb
Instance Attribute Summary collapse
-
#settings ⇒ Object
readonly
Returns the value of attribute settings.
Instance Method Summary collapse
- #csv(name, description, postprocess: nil) ⇒ Object
-
#initialize(settings = nil) ⇒ SettingsDSL
constructor
A new instance of SettingsDSL.
- #json(name, description) ⇒ Object
- #parameter(name, description, default: nil, postprocess: nil) ⇒ Object
- #yaml(name, description) ⇒ Object
Constructor Details
#initialize(settings = nil) ⇒ SettingsDSL
Returns a new instance of SettingsDSL.
13 14 15 16 17 18 |
# 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 |
Instance Attribute Details
#settings ⇒ Object (readonly)
Returns the value of attribute settings.
11 12 13 |
# File 'lib/copypasta/settings_dsl.rb', line 11 def settings @settings end |
Instance Method Details
#csv(name, description, postprocess: nil) ⇒ Object
55 56 57 58 59 60 61 62 63 64 65 |
# 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) ⇒ Object
44 45 46 47 48 49 50 51 52 53 |
# 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) ⇒ Object
20 21 22 23 24 25 26 27 28 29 30 31 |
# 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) ⇒ Object
33 34 35 36 37 38 39 40 41 42 |
# 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 |