<div dir="ltr"><div dir="ltr">Sounds like a job for decorators.</div><div dir="ltr">`lit-element` provides something very close to at least part of what you seem to want (the getters and setters that is, not the indexing or "distinct" functionality).</div><div dir="ltr"><br></div><div dir="ltr">Bob</div><div dir="ltr"><br></div><div dir="ltr"> ---------- Forwarded message ----------</div><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">From: Randy Buchholz <<a href="mailto:work@randybuchholz.com" target="_blank">work@randybuchholz.com</a>><br>To: "<a href="mailto:es-discuss@mozilla.org" target="_blank">es-discuss@mozilla.org</a>" <<a href="mailto:es-discuss@mozilla.org" target="_blank">es-discuss@mozilla.org</a>><br>Cc: <br>Bcc: <br>Date: Wed, 22 May 2019 17:07:01 +0000<br>Subject: Indexing HTML Attributes and Unique Indexes<br>





<div lang="EN-US">
<div class="gmail-m_-2733188311719049700WordSection1">
<p class="MsoNormal">I’ve been working with `Custom Elements` and I’m writing a lot of code against tag attributes. In some cases, I want the attribute values to be unique on a page (like `id`).  It got me wondering about how the engines handle attribute based
 searches, and if indexing (with unique/distinct options) would provide value. I also find myself writing a lot of boilerplate getters/setters for attributes in the elements. Attribute handling could be improved by adding some additional support with something
 like an `attrib` feature. This would be similar to `get` or `set` in use.<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">```<u></u><u></u></p>
<p class="MsoNormal">class MyElement extends HTMLElement{<u></u><u></u></p>
<p class="MsoNormal">    attrib myAttrib(‘my-attribute’) index distinct;<u></u><u></u></p>
<p class="MsoNormal">}<u></u><u></u></p>
<p class="MsoNormal">```<u></u><u></u></p>
<p class="MsoNormal">This would create the attribute `my-attribute` on the tag and element, and also generate a getter and setter<u></u><u></u></p>
<p class="MsoNormal">```<u></u><u></u></p>
<p class="MsoNormal">    get myAttrib() { return this.getAttribute(‘my-attribute’); }<u></u><u></u></p>
<p class="MsoNormal">    set myAttrib(v) { this.setAttribute(‘my-attribute’, v); }<u></u><u></u></p>
<p class="MsoNormal">```<u></u><u></u></p>
<p class="MsoNormal">The `index` flag it would tell the engine it should create a map/hash to improve search optimization for heavily searched attributes.<u></u><u></u></p>
<p class="MsoNormal">The `distinct` flag would indicate that all values for that attribute within context (e.g., document) should be unique. This might be used primarily by IDE’s to generate warnings.
<u></u><u></u></p>
</div>
</div>

<br>
</blockquote></div></div>