Sha256: 655b63ce7161cb38bea29a49251b8630c1bd644f120a5b70cb0e3f35981bfa6f
Contents?: true
Size: 1.12 KB
Versions: 2
Compression:
Stored size: 1.12 KB
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 = :object, prefix = nil, &block) link.schemas[prefix] = Schema.new(type, link.schema).tap { |s| s.setup &block } end def target_schema(type = :object, &block) schema type, :target, &block end def set(**values) values.each { |k, v| link[k.to_s] = v } end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
jimmy-0.4.1 | lib/jimmy/link.rb |
jimmy-0.4 | lib/jimmy/link.rb |