Sha256: 57075a431d6b12dce5ee963bd34031fa8da4bf677e36c0f101dd6990fbbf242d
Contents?: true
Size: 1.01 KB
Versions: 1
Compression:
Stored size: 1.01 KB
Contents
# frozen_string_literal: true module Refinements module Structs refine Struct.singleton_class do def keyworded? inspect.include? "keyword_init: true" end def with_keywords arguments keyworded? ? new(arguments) : new.merge!(arguments) end def with_positions *values keyworded? ? new(Hash[members.zip values]) : new(*values) end end refine Struct do def merge **attributes dup.merge! attributes end def merge! **attributes to_h.merge(attributes).each { |key, value| self[key] = value } self end def revalue attributes = each_pair return self unless block_given? dup.tap do |copy| attributes.each { |key, value| copy[key] = yield self[key], value } end end def revalue! attributes = each_pair return self unless block_given? attributes.each { |key, value| self[key] = yield self[key], value } self end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
refinements-7.18.0 | lib/refinements/structs.rb |