Module: Crate::Hook
- Included in:
- Crate
- Defined in:
- lib/crate/hook.rb
Instance Method Summary collapse
- #_hook_check_undefined_keys(**options) ⇒ Object
- #_hook_convert(name, **options, &block) ⇒ Object
-
#_hook_convert_impl(name, **options, &block) ⇒ Object
rubocop:disable Metrics/AbcSize, Metrics/MethodLength, Metrics/LineLength.
- #_hook_default(name, *args, **options, &block) ⇒ Object
- #_hook_must_be(name, klass, **options) ⇒ Object
- #_hook_required(name, **options) ⇒ Object
- #_hook_strip(name, **options) ⇒ Object
- #_hook_type(name, klass, **options) ⇒ Object
- #_type_convert(klass) ⇒ Object
Instance Method Details
#_hook_check_undefined_keys(**options) ⇒ Object
65 66 67 68 69 70 71 72 |
# File 'lib/crate/hook.rb', line 65 def _hook_check_undefined_keys(**) _log(**, name: _fullname, **, severity: Logger::DEBUG) undefined_keys = _raw.keys - self.class._names return if undefined_keys.empty? _log(**, name: _fullname, severity: Logger::WARN, **) do "has undefined keys: #{undefined_keys.inspect}" end end |
#_hook_convert(name, **options, &block) ⇒ Object
21 22 23 |
# File 'lib/crate/hook.rb', line 21 def _hook_convert(name, **, &block) _hook_convert_impl(name, **, &block) end |
#_hook_convert_impl(name, **options, &block) ⇒ Object
rubocop:disable Metrics/AbcSize, Metrics/MethodLength, Metrics/LineLength
7 8 9 10 11 12 13 14 15 16 17 18 19 |
# File 'lib/crate/hook.rb', line 7 def _hook_convert_impl(name, **, &block) # rubocop:disable Metrics/AbcSize, Metrics/MethodLength, Metrics/LineLength _log(**, name: _name(name), **, severity: Logger::DEBUG) before_value = _raw[name] after_value = instance_exec(before_value, &block) return if before_value == after_value not_set = !_raw.key?(name) _raw[name] = after_value = not_set ? 'not set' : before_value.inspect _log(**, name: _name(name), tag: 'convert', severity: Logger::INFO, **) do "was #{} and is now #{after_value.inspect}" end end |
#_hook_default(name, *args, **options, &block) ⇒ Object
25 26 27 28 29 30 31 |
# File 'lib/crate/hook.rb', line 25 def _hook_default(name, *args, **, &block) default, = args block ||= proc { default } _hook_convert_impl(name, **) do |before| _raw.key?(name) ? before : instance_exec(&block) end end |
#_hook_must_be(name, klass, **options) ⇒ Object
56 57 58 59 60 61 62 63 |
# File 'lib/crate/hook.rb', line 56 def _hook_must_be(name, klass, **) _log(**, name: _name(name), **, severity: Logger::DEBUG) return if _raw[name].is_a?(klass) _log(**, name: _name(name), severity: Logger::FATAL, **) do "must be #{klass} but is #{_raw[name].class}" end exit 1 end |
#_hook_required(name, **options) ⇒ Object
47 48 49 50 51 52 53 54 |
# File 'lib/crate/hook.rb', line 47 def _hook_required(name, **) _log(**, name: _name(name), **, severity: Logger::DEBUG) return if _raw.key?(name) _log(**, name: _name(name), severity: Logger::FATAL, **) do 'is not set' end exit 1 end |
#_hook_strip(name, **options) ⇒ Object
43 44 45 |
# File 'lib/crate/hook.rb', line 43 def _hook_strip(name, **) _hook_convert_impl(name, **, &:strip) end |
#_hook_type(name, klass, **options) ⇒ Object
37 38 39 40 41 |
# File 'lib/crate/hook.rb', line 37 def _hook_type(name, klass, **) _hook_convert_impl(name, **) do |before| _type_convert(klass).call(before) end end |
#_type_convert(klass) ⇒ Object
33 34 35 |
# File 'lib/crate/hook.rb', line 33 def _type_convert(klass) Kernel.method(klass.to_s.to_sym) end |