Class: Halibut::Builder::RootContext

Inherits:
Object
  • Object
show all
Defined in:
lib/halibut/builder.rb

Overview

This is the root context of Halibut::Builder.

Instance Method Summary collapse

Constructor Details

#initialize(resource, &resource_definition) ⇒ RootContext

Returns a new instance of RootContext.



31
32
33
34
35
# File 'lib/halibut/builder.rb', line 31

def initialize(resource, &resource_definition)
  @resource = resource

  instance_eval(&resource_definition) if block_given?
end

Instance Method Details

Adds a link to the respection relation of the resource.

Parameters:

  • relation (String)

    relation to which link will be added

  • href (String)

    URI of the link

  • options (Hash) (defaults to: {})

    Link optional parameters: templated, hreflang, etc

Returns:



53
54
55
# File 'lib/halibut/builder.rb', line 53

def link(relation, href, options={})
  @resource.add_link relation, href, options
end

#namespace(name, href) ⇒ Object

Adds a namespace to the resource.

A namespace is a conceptual abstraction of CURIE links. Since the client of the library doesn’t need to handle CURIE links directly because they’re just for dereferencing link relations, no CURIE links are presented.

resource = Halibut::Builder.new do
  namespace :john, 'http://appleseed.com'
end.resource
resource.namespace(:john).href
# => "http://appleseed.com"

Parameters:

  • name (String, Symbol)

    name of the namespace

  • href (String)

    URI of the namespace



72
73
74
# File 'lib/halibut/builder.rb', line 72

def namespace(name, href)
  @resource.add_namespace(name, href)
end

#property(name, value) ⇒ Halibut::Core::resource

Sets a property on the resource. Will overwrite any same-named existing property.

Parameters:

  • name (String)

    name of the property

  • value (String)

    value of the property

Returns:

  • (Halibut::Core::resource)

    resource with property set



43
44
45
# File 'lib/halibut/builder.rb', line 43

def property(name, value)
  @resource.set_property name, value
end

#relation(rel, &relation_definition) ⇒ Object

Adds links or resources to a relation.

Relation allows the user to specify links, or resources, per relation, instead of individually. This feature was introduced as an attempt to reduce repeating the relation per link/resource, and thus reducing typos.

resource = Halibut::Builder.new do
  relation :john do
    link 'http://appleseed.com/john'
  end
end.resource
resource.links[:john].first.href

Parameters:

  • rel (String, Symbol)
  • blk (Proc)

    Instructions to be executed in the relation context



104
105
106
# File 'lib/halibut/builder.rb', line 104

def relation(rel, &relation_definition)
  RelationContext.new(@resource, rel, &relation_definition)
end

#resource(rel, href = nil, &embedded_definition) ⇒ Object

Adds an embedded resource.

Parameters:

  • rel (String)

    Embedded resource relation to the parent resource

  • href (String) (defaults to: nil)

    URI to the resource itself

  • blk (Proc)

    Instructions to construct the embedded resource



81
82
83
84
85
# File 'lib/halibut/builder.rb', line 81

def resource(rel, href=nil, &embedded_definition)
  embedded = Halibut::Builder.new(href, &embedded_definition)

  @resource.embed_resource(rel, embedded.resource)
end