{"id":18110397,"url":"https://github.com/strd6/tempest","last_synced_at":"2025-08-18T09:36:55.185Z","repository":{"id":9881093,"uuid":"11883890","full_name":"STRd6/tempest","owner":"STRd6","description":"Templating that doesn't blow.","archived":false,"fork":false,"pushed_at":"2013-11-24T00:31:37.000Z","size":846,"stargazers_count":2,"open_issues_count":1,"forks_count":2,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-06-27T19:09:59.463Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"CoffeeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/STRd6.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2013-08-04T19:42:37.000Z","updated_at":"2019-08-13T15:24:47.000Z","dependencies_parsed_at":"2022-09-10T05:50:49.805Z","dependency_job_id":null,"html_url":"https://github.com/STRd6/tempest","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/STRd6/tempest","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/STRd6%2Ftempest","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/STRd6%2Ftempest/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/STRd6%2Ftempest/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/STRd6%2Ftempest/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/STRd6","download_url":"https://codeload.github.com/STRd6/tempest/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/STRd6%2Ftempest/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":263335554,"owners_count":23450875,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-01T00:09:10.581Z","updated_at":"2025-07-03T13:33:07.891Z","avatar_url":"https://github.com/STRd6.png","language":"CoffeeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![Build Status](https://travis-ci.org/STRd6/tempest.png?branch=master)](https://travis-ci.org/STRd6/tempest)\n\nTempest\n=======\n\n[Demo](http://strd6.github.io/tempest)\n\nTempest uses HamlJr with Observable models to provide automagic HTML template data binding.\n\nHamlJr is similar to haml-coffee. They both use CoffeeScript for the scripting language,\nthey both run in the browser, and they both output executable JavaScript. The difference is\nthat HamlJr templates are automatically aware of observable properties and can set up bindings\nfor you.\n\n    template.haml \u003e\u003e HAMLjr \u003e\u003e template.js\n\nTemplates are functions that return HTML based on the properties of an object they are given.\nMany existing templating engines return a string of text or characters but because HamlJr is\nnative to the browser HamlJr templates return document fragments.\n\n    template(object) # =\u003e DocumentFragment\n\nInvoking a template by passing a normal object works fine. The real magic comes when passing\nan object that has observable properties.\n\n    objectWithObservableProperties =\n      name: Observable \"HamlJr\"\n\n    template(objectWithObservableProperties)\n\n    # Set a new value\n    objectWithObservableProperties.name(\"Yolo\")\n    # Any node referencing this observable is automatically updated\n\nA simple data object can be automatically made into an observable model:\n\n    observableModel = Model(data).observeAll()\n\nSetup\n=====\n\nIn the tempest folder run\n\n\tnpm install\n\tscript/demo\n\nin the directory gh-pages run\n\t\n\tnserver\n\ngo to localhost:8000 in your browser\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstrd6%2Ftempest","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fstrd6%2Ftempest","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstrd6%2Ftempest/lists"}