0.1.0 • Published 11 months ago

@kopflos-labs/html-template v0.1.0

Weekly downloads
-
License
MIT
Repository
github
Last release
11 months ago

Template processor for kopflos

Renders <template> elements in kopflos but running their contents in a templating library.

Usage

Add to a handler chain to process templates.

Two parameters are required: 1. A (template: string, graph: MultiPointer): string function delegate 2. The URL of the resource to render (⚠️ This is bound to change soon ⚠️)

The function is called for every <template> element in the document, bottom up. The HTML contents of the <template> element are passed as the template parameter. The graph parameter is a clownface object representing the resource to render. The node which it represents depend on the nesting of the <template> elements.

[
  a kl:ResourceShape ;
  kl:handler
    [
      a kl:Handler ;
      kl:method "GET" ;
      code:implementedBy
        (
          # ...previous handlers to prepare the template...
          [
            a code:EcmaScriptModule ;
            code:link <node:@kopflos-labs/html-template#default> ;
            code:arguments
              (
                [ a code:EcmaScriptModule; code:link <node:@kopflos-labs/handlebars#default> ]
                "${uri}"^^code:EcmaScriptTemplateLiteral
              ) ;
          ]
        )
    ] ;
] .

Templating libraries

Writing templates

Target Class

The target-class attribute on the <template> element is used to select resources to render from the graph.

The value can be a relative URL, which will be resolved against the API's base IRI.

<!DOCTYPE html>
<html lang="en">
<body>
  <template target-class="/api/schema/Plaque">
    <!-- use a templating library to render instances of /api/schema/Plaque -->
    <div>
      <h1>{{ schema:name }}</h1>
    </div>
  </template>
</body>
</html>

Property Paths

A <template> element with property attribute is used to drill down into the graph.

<!DOCTYPE html>
<html lang="en">
<body>
  <template target-class="/api/schema/Plaque">
    <template property="schema:image">
      <!-- here the context changes to the image of the plaque resource -->
      <img src="{{ schema:url }}" />
    </template>   
  </template>
</body>
</html>
0.1.0

11 months ago

0.1.0-beta.2

12 months ago

0.1.0-beta.1

12 months ago

0.1.0-beta.0

12 months ago