Sha256: 0689117cdd1c98a8027d266ce56a9a9b5ce201d3e34f2a3864ed5fdde97e93c2

Contents?: true

Size: 1.99 KB

Versions: 2

Compression:

Stored size: 1.99 KB

Contents

# frozen_string_literal: true

module LB
  class Persistence
    # LB transproc functions
    module Functions
      extend Transproc::Registry
      extend Transproc::Composer

      import Transproc::Coercions
      import Transproc::Conditional
      import Transproc::ArrayTransformations
      import Transproc::HashTransformations
      import Transproc::ClassTransformations
      import Transproc::ProcTransformations

      class << self
        def debug_p(value)
          p value
        end

        def debug_pp(value)
          pp value
        end

        def debug_puts(value)
          puts value
        end

        def remove_prefix(key, prefix)
          remove_prefix_from_key(key.to_s, prefix).to_sym
        end

        def remove_prefix_from_key(key, prefix)
          key.start_with?(prefix) ? key.gsub(/^#{prefix}/, '') : key
        end

        def group_prefix(array, key, keys, prefix, model = nil)
          compose do |ops|
            ops << t(:group, key, keys)
            ops << t(:map_array,
                     t(:remove_key_prefix_inject_for, key, prefix, model))
          end.call(array)
        end

        def remove_key_prefix_inject_for(hash, key, prefix, model = nil)
          t(:map_value, key,
            t(:map_array,
              t(:remove_key_prefix_inject, prefix, model))).call(hash)
        end

        def remove_key_prefix_inject(keys, prefix, model = nil)
          compose do |ops|
            ops << t(:remove_key_prefix, prefix)
            ops << t(:inject_if_given, model)
          end.call(keys)
        end

        def remove_key_prefix(keys, prefix)
          t(:map_keys, t(:remove_prefix, prefix)).call(keys)
        end

        def inject_if_given(value, model)
          t(:guard, ->(_v) { !model.nil? },
            t(:constructor_inject, model)).call(value)
        end

        def inject_array(array, model)
          t(:map_array, t(:constructor_inject, model)).call(array)
        end
        alias model inject_array
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
lb-persistence-0.0.7 lib/lb/persistence/functions.rb
lb-persistence-0.0.6 lib/lb/persistence/functions.rb