From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Original-To: caml-list@sympa.inria.fr Delivered-To: caml-list@sympa.inria.fr Received: from mail2-relais-roc.national.inria.fr (mail2-relais-roc.national.inria.fr [192.134.164.83]) by sympa.inria.fr (Postfix) with ESMTPS id E1B387FA5E for ; Mon, 15 May 2017 08:03:37 +0200 (CEST) Authentication-Results: mail2-smtp-roc.national.inria.fr; spf=None smtp.pra=mmatalka@gmail.com; spf=Pass smtp.mailfrom=mmatalka@gmail.com; spf=None smtp.helo=postmaster@mail-wm0-f42.google.com Received-SPF: None (mail2-smtp-roc.national.inria.fr: no sender authenticity information available from domain of mmatalka@gmail.com) identity=pra; client-ip=74.125.82.42; receiver=mail2-smtp-roc.national.inria.fr; envelope-from="mmatalka@gmail.com"; x-sender="mmatalka@gmail.com"; x-conformance=sidf_compatible Received-SPF: Pass (mail2-smtp-roc.national.inria.fr: domain of mmatalka@gmail.com designates 74.125.82.42 as permitted sender) identity=mailfrom; client-ip=74.125.82.42; receiver=mail2-smtp-roc.national.inria.fr; envelope-from="mmatalka@gmail.com"; x-sender="mmatalka@gmail.com"; x-conformance=sidf_compatible; x-record-type="v=spf1" Received-SPF: None (mail2-smtp-roc.national.inria.fr: no sender authenticity information available from domain of postmaster@mail-wm0-f42.google.com) identity=helo; client-ip=74.125.82.42; receiver=mail2-smtp-roc.national.inria.fr; envelope-from="mmatalka@gmail.com"; x-sender="postmaster@mail-wm0-f42.google.com"; x-conformance=sidf_compatible IronPort-PHdr: =?us-ascii?q?9a23=3AI8oZSh+lmU5fHf9uRHKM819IXTAuvvDOBiVQ1KB3?= =?us-ascii?q?0+8cTK2v8tzYMVDF4r011RmSDNmds6oMotGVmpioYXYH75eFvSJKW713fDhBt/?= =?us-ascii?q?8rmRc9CtWOE0zxIa2iRSU7GMNfSA0tpCnjYgBaF8nkelLdvGC54yIMFRXjLwp1?= =?us-ascii?q?Ifn+FpLPg8it2e2//5Lebx9UiDahfLh/MAi4oQLNu8cMnIBsMLwxyhzHontJf+?= =?us-ascii?q?RZ22ZlLk+Nkhj/+8m94odt/zxftPw9+cFAV776f7kjQrxDEDsmKWE169b1uhTF?= =?us-ascii?q?UACC+2ETUmQSkhpPHgjF8BT3VYr/vyfmquZw3jSRMMvrRr42RDui9b9mRh/2hi?= =?us-ascii?q?kaOTA382/YhcNsg69AvBKtuwZyz5LIbIyPKPZzeL7Wc9MARWpGW8ZcTytPDZm4?= =?us-ascii?q?b4QTCOoBOeNYpJT6qVQUsRuxHw2sBOD1xTRVgXL22Kg63P49EQ7c2AwgHMgBvW?= =?us-ascii?q?/brNXwLqgSUOS1wLPUwjXEavNbwDHw45XGfBAmpPGDR7NwcczJxEY1DwPFllGQ?= =?us-ascii?q?qY37MDyIyusNtG2b7/J7Ve2zim4nrxt+rSO1ysgwjYnJg5oZxUvF9SVl24k1OM?= =?us-ascii?q?G3SE1lbt64CpdQsDuaN4RwT8g/QG9ooD43x78JtJKhYSQG1pQqywTcZvCZaYSF?= =?us-ascii?q?7QzvWP6fLDp6nn5pZbKyihio/US91uHxVdO43EhUoidDj9LCrGoC1wbJ5ciCUv?= =?us-ascii?q?Z9/lmu2TKI1w3L7+FLO0E0la7CJ58vx748ioMfsUrMEyPogkn2g6iWdkIr+uis?= =?us-ascii?q?9evreKnpppiZN4NsiwH+NLohmtCnDOk6PQUCRXWX9fq82bH5/kD1Xq9Gg/Ionq?= =?us-ascii?q?XBtZDVP8Ubpqq3Aw9P1YYj7g6yDzKj0NsCgXkINlZFeBGdgIXyNFHOJer3Dfa7?= =?us-ascii?q?g1i2jDhrwPXGMqX7AprRNnjDjKvhfbFl5kFA0gUzyNRf64tQCrEAO/LzRlT8tM?= =?us-ascii?q?fYDx88Kwy72fzrCNR71oMEWGKAGLWVMK3IsQzA2uV6KOCJYMoRuS3hA/kj/f/n?= =?us-ascii?q?y3EjynEHeqz8+JITY3e8G7xDKlmQZXnlyoMEFG4Wtw49RcTljVSDVXhYYHPkDP?= =?us-ascii?q?F03S0yFI/zVdSLfYuqmrHUhCo=3D?= X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: =?us-ascii?q?A0CFCQCdQxlZfypSfUpcHAEBFgEBBQEBC?= =?us-ascii?q?gEBFgEBBQEBg3+BDKh1jm8OHoUuhWdDFAEBAQEBAQEBAQEBEgEBCQsLCCYxgjM?= =?us-ascii?q?igwoBGx4DEhAWNAEEDxEBBQGKPwEDFQQKnHaDRT+OCwUBHIMKBYNSChknDVaCO?= =?us-ascii?q?AEKAQEBHAIGCQEIhk2HboI6ggkMgxEFngqHHIt/ggRVhGaDM4Z3ApJ7M4EVNoE?= =?us-ascii?q?rLyAIGRVfhl12AYheAQEB?= X-IPAS-Result: =?us-ascii?q?A0CFCQCdQxlZfypSfUpcHAEBFgEBBQEBCgEBFgEBBQEBg3+?= =?us-ascii?q?BDKh1jm8OHoUuhWdDFAEBAQEBAQEBAQEBEgEBCQsLCCYxgjMigwoBGx4DEhAWN?= =?us-ascii?q?AEEDxEBBQGKPwEDFQQKnHaDRT+OCwUBHIMKBYNSChknDVaCOAEKAQEBHAIGCQE?= =?us-ascii?q?Ihk2HboI6ggkMgxEFngqHHIt/ggRVhGaDM4Z3ApJ7M4EVNoErLyAIGRVfhl12A?= =?us-ascii?q?YheAQEB?= X-IronPort-AV: E=Sophos;i="5.38,343,1491256800"; d="scan'208";a="273083356" Received: from mail-wm0-f42.google.com ([74.125.82.42]) by mail2-smtp-roc.national.inria.fr with ESMTP/TLS/AES128-GCM-SHA256; 15 May 2017 08:03:37 +0200 Received: by mail-wm0-f42.google.com with SMTP id v15so33134706wmv.1 for ; Sun, 14 May 2017 23:03:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id:user-agent:mime-version; bh=Sr9oI9Xm5zmFb2vQk5sgIySJzCo7KIdSUiwIk6yBd+c=; b=L9cyOJrAFHmroEfmqogOs6L2GL7qD6ZLZh5v1zLNeb3v5m64Peu33Du/UpqP/IyoJx dQzuAmzyFpMkBjv2t2CkmGGfCLLdSul/E8e3wNmen23UN7WJaphLi2eKKz8sr9j2YTDm QoYf5G0pRotS1/wiB4s9moAPN0BAv/yjlGNzuXItfXcWyPy2DEe7gp/zF68G5rbrFwgh jSgGwC6e+K6B14UiPkNELPxfbtsZ2RKh2ulGurtWf96YXmllcizO9+NDknKmtT5sHOu0 1xyeprwWQcYtDMVGrml8dR4yuI8a15pg08vKk6czyGRrUnuf1/cs6rSxYMDOL/htEPBf Bmbw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:user-agent :mime-version; bh=Sr9oI9Xm5zmFb2vQk5sgIySJzCo7KIdSUiwIk6yBd+c=; b=plP11WWGm8oEUo7DpLvQ7lldO9koM52tgpA/n4LFuGwsKJaGjOE6MLdz6Bx3aymG2S PKJZVhVAlZkGRUqLXhjDSDxdzZuzUfumYxFv9ZQDFLE8WXrFCDmJhShBeGgu5fvora7Y 4P0QaciFgi5I4Mgncj24Q5fR9DDqKQsWXH94+dub0bD/Qkbu58u4TaNaWM3oIxJNcJzh bPGjWMKPdyX6df/yUnyHZ09JQbB6bhMw87v/6ZpwixfVdyZvzuXFMkyL4qw44nX5POmq I+Az4OajNsvze30tI7GxCfSVlb/+IQ/CIQEPiWUEUHenKp83VVljEp6wZUw6MuT3XRwu q8eQ== X-Gm-Message-State: AODbwcAXiLUx0PGK9cq8Qas1eTsng+lkWVeOEFv3pC0/QWIoQm6XUXJa o0uXHkzGoaSmw6o8Fmc= X-Received: by 10.80.147.133 with SMTP id o5mr3599428eda.112.1494828216886; Sun, 14 May 2017 23:03:36 -0700 (PDT) Received: from localhost ([37.153.108.22]) by smtp.gmail.com with ESMTPSA id s40sm5204364edd.21.2017.05.14.23.03.35 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 14 May 2017 23:03:36 -0700 (PDT) From: Malcolm Matalka To: caml-list@inria.fr Date: Mon, 15 May 2017 06:03:35 +0000 Message-ID: <868tlyk66g.fsf@gmail.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.5 (berkeley-unix) MIME-Version: 1.0 Content-Type: text/plain Subject: [Caml-list] [ANN] Snabela 1.0: Logic-less @templates@ Snabela 1.0 is released today (thanks to Anil for several back and forths). Snabela is a logic-less template system loosely based on Mustache but attempting to fix some issues I had with Mustache. To install Snabela simply do: opam install snabela Snabela is a spec, a library, and a CLI tool to evaluate templates. Some features Snabela has: - It supports applying arbitrary transformers to the values being replaced. This is useful for ensuring values are escaped, representing numeric values as money, applying locales, capitalizing text, etc. - Like Mustache, it has sections for iterating over lists and conditionally applying a portion of a template. - Unlike Mustache, Snabela is strict-by-default, in that a missing value, or the wrong type in a test is an error. - Snabela supports escaping the template code, which is @ by doing @@. - Snabela is meant to be implementable in a wide array of languages and the language is meant to be small. You can find a gentle introduction to Snabela here: http://blog.appliedcompscilab.com/snabela-release/index.html If you run into any issues with Snabela, please don't hesitate to make an issue here: https://bitbucket.org/acslab/snabela/issues Enjoy, /Malcolm