Sha256: 08cb59462bc7eee6e255521b3f8165fcab6f75a0b38509d616f81f6e2e071d26

Contents?: true

Size: 956 Bytes

Versions: 1

Compression:

Stored size: 956 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


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

    def sum(name)
      self.map(&name).reduce(0, :+)
    end
  end

end

Version data entries

1 entries across 1 versions & 1 rubygems

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