pugjs/pug

Alternative syntax for `&attributes`

Open

#1,744 opened on Nov 20, 2014

View on GitHub
 (7 comments) (0 reactions) (0 assignees)JavaScript (1,955 forks)batch import
Good First Issue

Repository metrics

Stars
 (21,509 stars)
PR merge metrics
 (No merged PRs in 30d)

Description

I tend to use the &attributes syntax quite often, and think it is kind of verbose. The & token does not seem to be used for anything else right now, so would not it be possible to use an alternative syntax such as

h1.foo(data-a="b")&({'data-b': 'c'})

A small change to the lexer should be sufficient. Modifying attributesBlock as follow works and passes all the tests.

  attributesBlock: function () {
    var captures;
    if (captures = (/^&attributes/.exec(this.input) || /^&/.exec(this.input))) {
      this.consume(captures[0].length);
      var args = this.bracketExpression();
      this.consume(args.end + 1);
      return this.tok('&attributes', args.src);
    }
  }

If you have any interest in this proposition, I'm up for testing this feature and sending a PR.

Thanks.

Contributor guide