Sha256: 0f5457e8461975a2d9eb1a5bdd3dd9280a501708023f3e86a6c219ce18231c5e
Contents?: true
Size: 1015 Bytes
Versions: 3
Compression:
Stored size: 1015 Bytes
Contents
module Jimmy class Link < Hash attr_reader :schema def initialize(schema, rel, href) @schema = schema merge! 'rel' => rel.to_s, 'href' => href.to_s end def dsl @dsl ||= DSL.new(self) end def schemas @schemas ||= {} end def domain schema.domain end def compile merge schemas.map { |k, v| [(k ? "#{k}Schema" : 'schema'), v.compile] }.to_h end class DSL attr_reader :link def initialize(link) @link = link end def domain link.domain end def title(value) link['title'] = value end def method(value) link['method'] = value.to_s.upcase end def evaluate(&block) instance_exec &block end def schema(type = nil, &block) link.schemas[type] = Schema.new(:object, domain, {}, &block) end def set(**values) values.each { |k, v| link[k.to_s] = v } end end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
jimmy-0.3.3 | lib/jimmy/link.rb |
jimmy-0.3.2 | lib/jimmy/link.rb |
jimmy-0.3.1 | lib/jimmy/link.rb |