README.md in halva-0.3.0 vs README.md in halva-0.4.0

- old
+ new

@@ -1,15 +1,22 @@ # Halva -HAL-compliant serializer +HAL-compliant decorator [![Ruby](https://github.com/denblackstache/halva/actions/workflows/main.yml/badge.svg)](https://github.com/denblackstache/halva/actions/workflows/main.yml) [![Gem Version](https://badge.fury.io/rb/halva.svg)](https://badge.fury.io/rb/halva) -Links +**Links** * [HAL - Hypertext Application Language](https://stateless.co/hal_specification.html) * [Specification Draft](https://datatracker.ietf.org/doc/html/draft-kelly-json-hal-08) +**Goals** + +* No DSL +* HAL-compliant +* Not responsible for the whole presentation layer +* Simple, extensible, self-discoverable + ## Installation Add this line to your application's Gemfile: ```ruby @@ -36,10 +43,24 @@ .embed(Halva::Resource.from_model(order.customer), :customer) .link(Halva::Link.new('/orders/1', :self)) .link(Halva::Link.new('/orders/1/customer', :customer)) .to_h +# { +# :id => 1, +# :name => "Order Example" +# :_embedded => { +# :customer => [{ +# :id => 1, +# :name => "Customer Example" +# }] +# }, +# :_links => { +# :self => {:href => "/orders/1"}, +# :customer => {:href => "/orders/1/customer"} +# } +# } ``` ### Representing a collection ```ruby @@ -48,14 +69,35 @@ orders = Order.find Halva::Resource.from_empty_model .embed(orders.map do |order| Halva::Resource.from_model(order) .link(Halva::Link.new("/orders/#{order.id}", :self)) - end) - .link(Halva::Link.new('/orders?page=3', :next)) + end, :'acme:order') .link(Halva::Link.new('/orders?page=2', :self)) + .link(Halva::Link.new('/orders?page=3', :next)) .link(Halva::Link.new('/orders?page=1', :prev)) + .link(Halva::Curie.new('https://docs.acme.com/relations/{rel}', 'acme')) .to_h + +# { +# :_embedded => { +# :"acme:order" => [{ +# :id => 1, +# :name => "Example" +# :_links => {:self => {:href => "/orders/1"} } +# }] +# }, +# :_links => { +# :self => {:href => "/orders/1?page=2"}, +# :next => {:href => "/orders/1?page=3"}, +# :prev => {:href => "/orders/1?page=1"}, +# :curies => [{ +# name: 'acme', +# href: 'https://docs.acme.com/relations/{rel}', +# templated: true +# }] +# } +# } ``` ## Development