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 2428F7FA5C for ; Tue, 21 Jun 2016 17:34:30 +0200 (CEST) IronPort-PHdr: 9a23:tpMPCRdghoev1IfzAkS2I6qIlGMj4u6mDksu8pMizoh2WeGdxc6/Zx7h7PlgxGXEQZ/co6odzbGH6+a4ASdbvt6oizMrTt9lb1c9k8IYnggtUoauKHbQC7rUVRE8B9lIT1R//nu2YgB/Ecf6YEDO8DXptWZBUiv2OQc9HOnpAIma153xjLHqvcWLKF4XzBOGIppMbzyO5T3LsccXhYYwYo0Q8TDu5kVyRuJN2GlzLkiSlRuvru25/Zpk7jgC86l5r50IAu3GePETRLlcSTAnKHx9sMbisB2GSQqU+lMdVH8Xm1xGGV6Wwgv9W8LVvyz8v/Bx32G+NMLrS7l8Yymj/e8/TRjkjCkAHzE8+WDTzMd3ifQI81qauxVjztuMM8muP/1kc/aFcA== Authentication-Results: mail2-smtp-roc.national.inria.fr; spf=None smtp.pra=modlfo@gmail.com; spf=Pass smtp.mailfrom=modlfo@gmail.com; spf=None smtp.helo=postmaster@mail-io0-f169.google.com Received-SPF: None (mail2-smtp-roc.national.inria.fr: no sender authenticity information available from domain of modlfo@gmail.com) identity=pra; client-ip=209.85.223.169; receiver=mail2-smtp-roc.national.inria.fr; envelope-from="modlfo@gmail.com"; x-sender="modlfo@gmail.com"; x-conformance=sidf_compatible Received-SPF: Pass (mail2-smtp-roc.national.inria.fr: domain of modlfo@gmail.com designates 209.85.223.169 as permitted sender) identity=mailfrom; client-ip=209.85.223.169; receiver=mail2-smtp-roc.national.inria.fr; envelope-from="modlfo@gmail.com"; x-sender="modlfo@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-io0-f169.google.com) identity=helo; client-ip=209.85.223.169; receiver=mail2-smtp-roc.national.inria.fr; envelope-from="modlfo@gmail.com"; x-sender="postmaster@mail-io0-f169.google.com"; x-conformance=sidf_compatible X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: A0BPAgAHXmlXh6nfVdFdhBR9piIBAQaBVwQDh0iGJoUBgXoehXmBODoSAQEBAQEBAQERAQEBCA0JCSEvgjGCMxEdARseAxIJAQY3AiURAQUBIjWHcwEDFwShToIHgTE+MYs7gWqCWQWHRQoZJw1SgyMBAQgBAQEBAQEBGAIBBRCFT4I/CIc7glQrgi8FjXVwihSGCIgkiTgOhVsCjjkwgQ8lDoIcHoFaa4pIAQEB X-IPAS-Result: A0BPAgAHXmlXh6nfVdFdhBR9piIBAQaBVwQDh0iGJoUBgXoehXmBODoSAQEBAQEBAQERAQEBCA0JCSEvgjGCMxEdARseAxIJAQY3AiURAQUBIjWHcwEDFwShToIHgTE+MYs7gWqCWQWHRQoZJw1SgyMBAQgBAQEBAQEBGAIBBRCFT4I/CIc7glQrgi8FjXVwihSGCIgkiTgOhVsCjjkwgQ8lDoIcHoFaa4pIAQEB X-IronPort-AV: E=Sophos;i="5.26,504,1459807200"; d="scan'208,217";a="223325989" Received: from mail-io0-f169.google.com ([209.85.223.169]) by mail2-smtp-roc.national.inria.fr with ESMTP/TLS/AES128-GCM-SHA256; 21 Jun 2016 17:34:29 +0200 Received: by mail-io0-f169.google.com with SMTP id t74so19321290ioi.0 for ; Tue, 21 Jun 2016 08:34:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:subject:message-id:date:to:mime-version; bh=c9/2D5iZCWBhBywBV1d5uZFC7OC0zDoZuKZyhS9WtfY=; b=PIyUpJ3yJr7xppnszWlh+SyK35zugMgRLvUmyzzfbuGqX+dspeEOloTV0SWz7kaq2l zRYkkEpLWYtVByQSbasI+vuBEvy11ad9GRnCBjN2bElLVcUTp9GnpkD16plGeddCcORr SSOu0glWh3NhAfatl/NCy6JEQG+5dlDUTRujc8TBGrenIXajFGiY6hKKRBBV8qhNZ9gL nz9KFSEF2vaGjtv+pT3Hea2TUNtmnsH59DAt/6e+FWedigAjK2erh6pk4iZnjkg6yA4M g/nDYoXzNJbVnEHe8sgmEuquN3eG2BsPBu3m1H7kludImoZtQScuFUvzZ+G3B4f6GpuR akDA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:subject:message-id:date:to:mime-version; bh=c9/2D5iZCWBhBywBV1d5uZFC7OC0zDoZuKZyhS9WtfY=; b=OW0nTeVUdQjrw7uldCx4NiyPn8WeLGOk3+lAIUYSbZIT2DE4T8a3HWBNG2ey9lqoiU hQz6TxNFjjIilYnhvSzlsJmxdXCAfBDK7mH42FbEqjjngsqZQgUoP5hsBYVoSOC3lXyV N4AMsu//fh93CWv3WTZEOCQOhSkkHAqxc+oeEPt85fbTCnf0JTWncNVAiK2Bq8gS329f gagtCLUafwwiA7x0vGhPWgnOQq3bL0BVaLsFgcCVQHa8+3yVmee9EGjZx2isLgdq4st/ uj/Wt9aV8SPHEHYL7kNuMQCKJRQ6Rcjwijy4qh/7KdyeT2FwtxX9hfvRTlViDLB7sOAO KnaQ== X-Gm-Message-State: ALyK8tKjTABssghob7/rLpzITTdwEZxiPYxt0LZhLeRQtBPlMCi0UHC8CjH2MryNS61tYg== X-Received: by 10.107.132.14 with SMTP id g14mr5176407iod.178.1466523267893; Tue, 21 Jun 2016 08:34:27 -0700 (PDT) Received: from [192.168.1.235] ([78.130.204.197]) by smtp.gmail.com with ESMTPSA id j143sm1556867ita.16.2016.06.21.08.34.25 for (version=TLS1 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Tue, 21 Jun 2016 08:34:26 -0700 (PDT) From: Leonardo Laguna Ruiz Content-Type: multipart/alternative; boundary="Apple-Mail=_FFA920DD-4EE9-45DE-9D74-8CA1E479D834" Message-Id: <1C5A59FD-6565-4A5C-97CA-547A2103AB12@gmail.com> Date: Tue, 21 Jun 2016 18:34:22 +0300 To: Caml-list Mime-Version: 1.0 (Mac OS X Mail 9.3 \(3124\)) X-Mailer: Apple Mail (2.3124) Subject: [Caml-list] [ANN] Pla v1.0 - pxx for making templates --Apple-Mail=_FFA920DD-4EE9-45DE-9D74-8CA1E479D834 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=utf-8 Pla is a simple library and ppx syntax extension to create composable templ= ates based on verbatim strings. You can find the code and a quick description of it=E2=80=99s features https://modlfo.github.io/pla/ In a nutshell, the ppx transforms quoted strings in the form {pla| =E2=80= =A6. |pla} to templates. Inside templates it=E2=80=99s possible to add mark= ers whose contents is replaced by other templates, for example: let name =3D Pla.string =E2=80=9Cpla=E2=80=9D ;; let t =3D {pla|The library name is <#name#>|pla} ;; will produce =E2=80=9CThe library name is Pla=E2=80=9D When compiled, the markers are type-safe. Pla does not provide advanced pretty-printing features but it produces fast= functions to create large amounts of text. Leonardo= --Apple-Mail=_FFA920DD-4EE9-45DE-9D74-8CA1E479D834 Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset=utf-8 Pla is a simple library and p= px syntax extension to create composable templates based on verbatim string= s.

You can find the cod= e and a quick description of it=E2=80=99s features

In a nutshell, the ppx transforms quoted strin= gs in the form {pla| =E2=80=A6. |pla} to templates. Inside templates it=E2= =80=99s possible to add markers whose contents is replaced by other templat= es, for example:

= let name =3D Pla.string =E2=80=9Cpla=E2=80=9D ;;
let t= =3D {pla|The library name is <#name#>|pla} ;;
<= br class=3D"">
will produce =E2=80=9CThe library name = is Pla=E2=80=9D

W= hen compiled, the markers are type-safe.

Pla does not provide advanced pretty-printing featu= res but it produces fast functions to create large amounts of text.

Leonardo
= --Apple-Mail=_FFA920DD-4EE9-45DE-9D74-8CA1E479D834--