Sha256: 37f06b73ab3b5c98622045d27e18d728b81099b1f69bb2b0c0583155b2f5c85b
Contents?: true
Size: 1.21 KB
Versions: 5
Compression:
Stored size: 1.21 KB
Contents
# frozen_string_literal: true require_relative "ref/builder" require_relative "ref/defer" require_relative "ref/resolver" require_relative "ref/shorthand_methods" module Factrey # Represents a reference that can be embedded in the data and resolved later. # # {Ref}s and {Defer}s are usually created through {ShorthandMethods#ref}. # @example # # Some data containing several references: # include Factrey::Ref::ShorthandMethods # some_data1 = [12, ref.foo, 34, ref.bar, 56] # some_data2 = { foo: ref.foo, foobar: ref { |foo, bar| foo + bar } } # # # Resolve references by a `mapping` hash table: # mapping = { foo: 'hello', bar: 'world' } # resolver = Factrey::Ref::Resolver.new { mapping.fetch(_1) } # resolver.resolve(some_data1) #=> [12, 'hello', 34, 'world', 56] # resolver.resolve(some_data2) #=> { foo: 'hello', foobar: 'helloworld' } class Ref # @return [Symbol] attr_reader :name # @param name [Symbol] def initialize(name) raise TypeError, "name must be a Symbol" unless name.is_a?(Symbol) @name = name end def ==(other) = other.is_a?(Ref) && other.name == name def eql?(other) = self == other def hash = name.hash end end
Version data entries
5 entries across 5 versions & 1 rubygems
Version | Path |
---|---|
factrey-0.5.0 | lib/factrey/ref.rb |
factrey-0.4.0 | lib/factrey/ref.rb |
factrey-0.3.0 | lib/factrey/ref.rb |
factrey-0.2.0 | lib/factrey/ref.rb |
factrey-0.1.0 | lib/factrey/ref.rb |