- From: Gregg Kellogg <gregg@greggkellogg.net>
- Date: Wed, 17 Sep 2014 13:00:55 +0100
- To: Ivan Herman <ivan@w3.org>
- Cc: Dan Brickley <danbri@google.com>, W3C CSV on the Web Working Group <public-csv-wg@w3.org>
On Sep 17, 2014, at 11:50 AM, Ivan Herman <ivan@w3.org> wrote: > > >> On 17 Sep 2014, at 12:42 , Dan Brickley <danbri@google.com> wrote: >> >>> On 10 September 2014 08:58, Ivan Herman <ivan@w3.org> wrote: >>> >>> As a followup on my previous mail... >>> >>> I wanted to see whether it is complicated to implement a very simple template (Alternative 2.5 in [1]) using existing tools, ie, to make it quickly available, with some extra work, to the community at large. I think the answer is yes; >> >> Personal opinion: I think the answer is 'yes' too, after some similar >> experimentation and talking to a bunch of people. I believe we have a >> very good chance of doing substantially better than 100% mechanistic >> mappings, roughly around the level of Mustache ("Logic-less", but with >> simple conditionals) with some regex pre-processing and a few >> W3C-oriented supporting functions. > > Actually, what I have is even simpler. In the 'filtered-templates' branch of the repo[1] what I have in the readme is: > > [[[ > - `{{#rows}}` - `{{\rows}}` (where `rows` is a fixed symbol) at the beginning of a line means that the full templates enclosed between these two lines are to be repeated for all rows of the CSV content. > - `{{name}}` has two possible roles: > - if used *within* a `{{#rows}}` - `{{\rows}}` context, `{{name}}` refers to a column name, and the template is replaced with the content of the corresponding cell > - if used *outside* a `{{#rows}}` - `{{\rows}}` context, `{{name}}` refers to a top-level key in the metadata **if its value is a string**; the template is replaced with the corresponding value > - `{{name}}` can also have *filters*. The tag can have the format: ``{{name.f1.f2.….fn}}``, where ``f1,…,fn`` are filter functions. A filter function may have argument, i.e., it may look like ``fi("a","b")``; the arguments are strings surrounded by the ``"`` or the ``'`` characters. If there are no arguments, the argument list can be dropped altogether. Filter functions are invoked with: the output of the previous filter or the value corresponding ``{{name}}``; the reference to the metadata object; the list of the arguments (strings) if applicable. The filter function must return a replacement for the template value. > > The list of available filter functions will be specified by the WG, and a mechanism to add a user-defined filter will be provided. At present, there are only a few filters, these are ``upper``, ``lower``, ``concat(str)``, ``replace(regexp,str)``. > ]]] > > That is it. Ie, no conditional and variables, nor any regex preprocessing (except for the "replace" filter) +1 modulo referencing micro syntax expressions and substitution patterns, although there may be a simpler way to accomplish this. Gregg > Ivan > > > [1] https://github.com/w3c/csvw/tree/filtered-templates > > > >> I believe there is also a very good chance that a *simple* technology >> like this will be picked up by search engines as a way of getting >> graph-oriented data (schema.org and suchlike). But I also believe that >> we could find this effort bedevilled by creeping complexity and that >> there's some risk it might not make it to W3C REC. It's worth trying >> though! >> >> </opinion> >> >> Dan >> >> >>> look at: >>> >>> https://github.com/w3c/csvw/tree/gh-pages/experiments/simple-templates-jquery >>> >>> for further details. See >>> >>> https://github.com/w3c/csvw/tree/gh-pages/experiments/simple-templates-jquery/simple_test >>> >>> for the test I used so far. >>> >>> The implementation is rough at the edges, and I am still in the process to make it a bit better code-wise. But that still gives, I hope, an idea of where this *may* go. >>> >>> [1] http://lists.w3.org/Archives/Public/public-csv-wg/2014Sep/0006.html >>> >>> ---- >>> Ivan Herman, W3C >>> Digital Publishing Activity Lead >>> Home: http://www.w3.org/People/Ivan/ >>> mobile: +31-641044153 >>> GPG: 0x343F1A3D >>> WebID: http://www.ivan-herman.net/foaf#me > > > ---- > Ivan Herman, W3C > Digital Publishing Activity Lead > Home: http://www.w3.org/People/Ivan/ > mobile: +31-641044153 > GPG: 0x343F1A3D > WebID: http://www.ivan-herman.net/foaf#me > > > > >
Received on Wednesday, 17 September 2014 12:24:31 UTC