Sha256: 2814865f39c517f411d997f947dfd97951bb366e00ce3d0b23a130ae34089882

Contents?: true

Size: 914 Bytes

Versions: 1

Compression:

Stored size: 914 Bytes

Contents

module Kernel
  def let(name, &block)
    define_method(name, &block)
  end

  def let_self(name, &block)
    define_singleton_method(name, &block)
  end

  def when_present(item, &block)
    if block_given?
      item.nil? ? '' : block.call(item)
    else
      item
    end
  end

  def consists_of
    PoorsManStringBuilder.new.tap { |builder| yield(builder) }.result
  end

  class PoorsManStringBuilder
    attr_reader :result

    def initialize
      @result = ''
    end

    def add(item)
      @result << item.to_s
    end
    alias :always :add

    def when_present(item, &block)
      @result << Kernel.when_present(item, &block).to_s
    end

    def when(item, &block)
      return unless item
      @result << Kernel.when_present(item, &block).to_s
    end
  end
end

  #add sum to array, with or without name
  class Array
    def sum(name = nil)
      self.map(&name).reduce(0, :+)
    end
  end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
guerrilla_patch-2.3.1 lib/guerrilla_patch/kernel.rb