<commit_before><div class="help">
  <h2>Query syntax reference</h2>
  <div class="row">
    <div class="col-sm-4 col-md-2 col-lg-2 topics">
      <ul>
        <li *ngFor="let section of sections" [ngClass]="{selected: isSelected(section)}">
          <a (click)="select(section)">{{ getTitle(section) }}</a></li>
      </ul>
    </div>
    <div class="col-sm-8 col-md-10 col-lg-10 row">
      <ng-container *ngIf="isSelected('logic')">
        <h3>Querying logic</h3>
<caption>Query consists of a number of criteria, separated by comma. Criterion consists of a parameter name and condition, separated by matching combination. Matching combinations are listed below:</caption>

        <ul class="col-sm-6 no-click">
          <li><dfn>=</dfn> - strict equality. All strict criteria are combined as AND</li>
          <li><dfn>~</dfn> - strict match regular expression</li>
          <li><dfn>~=</dfn> - soft equality (OR condition)</li>
          <li><dfn>~+</dfn> - soft equality to regular expression</li>
          <li><dfn>,</dfn> - conditions separator</li>
        </ul>

        <ul class="col-sm-6">
          <h4>Examples:</h4>

          <li><b>A=1,B=2</b> - matches A=1 AND B=2</li>
          <li><b>A=1,A=2</b> - matches A=1 OR A=2</li>
          <li><b>A~ab</b> - macthes regular expression A=/ab/i</li>
          <li><b>A=1,B+=2</b> - matches A=1 OR B=2</li>
          <li><b>A=1,B=2,C+=3</b> - matches (A=1 AND B=2) OR C=3</li>
        </ul>
      </ng-container>
      <ng-container *ngIf="isSelected('functions')">
        <h3>Functions</h3>
<caption>Below are several simple expressions that can be used with/instead of criteria conditions.</caption>

        <ul class="col-sm-6 no-click">
          <li><dfn>empty()</dfn> - value is null, empty string or does not exist</li>
          <li><dfn>emptySet()</dfn> - empty array</li>
          <li><dfn>exists()</dfn> - value is not empty</li>
          <li><dfn>in(days)</dfn> - date in range</li>
          <li><dfn>after(days)</dfn> - date shift from the current date in days</li>
          <li><dfn>among(list|of|values)</dfn> - value is present among the listed set</li>
        </ul>

        <ul class="col-sm-6">
          <h4>Examples:</h4>
          <li><b>status=empty()</b> - uesers with empty status</li>
          <li><b>nextPr=in(30)</b> - date of next PR is in 30 days</li>
          <li><b>activeUsVisa.till=after(100)</b> - active US visa will be valid for at least next 100 days</li>
          <li><b>grade=among(T2|T3)</b> - date of next PR is in 30 days</li>
        </ul>
      </ng-container>
      <ng-container *ngIf="isSelected('persons')">
        <h3>People</h3>
        <caption>Query by a person's attributes</caption>

        <ul (click)="click($event)" class="col-sm-6">
          <li><dfn>name</dfn> - full name</li>
          <li><dfn>login</dfn> - login (e.g. aivanov)</li><commit_msg>Fixes typos in help popover<commit_after><div class="help">
  <h2>Query syntax reference</h2>
  <div class="row">
    <div class="col-sm-4 col-md-2 col-lg-2 topics">
      <ul>
        <li *ngFor="let section of sections" [ngClass]="{selected: isSelected(section)}">
          <a (click)="select(section)">{{ getTitle(section) }}</a></li>
      </ul>
    </div>
    <div class="col-sm-8 col-md-10 col-lg-10 row">
      <ng-container *ngIf="isSelected('logic')">
        <h3>Querying logic</h3>
<caption>Query consists of a number of criteria, separated by comma. Criterion consists of a parameter name and condition, separated by matching combination. Matching combinations are listed below:</caption>

        <ul class="col-sm-6 no-click">
          <li><dfn>=</dfn> - strict equality. All strict criteria are combined as AND</li>
          <li><dfn>~</dfn> - strict match regular expression</li>
          <li><dfn>+=</dfn> - soft equality (OR condition)</li>
          <li><dfn>+~</dfn> - soft equality to regular expression</li>
          <li><dfn>!=</dfn>, <dfn>!~</dfn>, <dfn>!+=</dfn>, <dfn>!+~</dfn> - negation expression (does not work in combination with <a (click)="select('functions')">Functions</a>)</li>
          <li><dfn>,</dfn> - conditions separator</li>
        </ul>

        <ul class="col-sm-6">
          <h4>Examples:</h4>

          <li><b>A=1,B=2</b> - matches A=1 AND B=2</li>
          <li><b>A=1,A=2</b> - matches A=1 OR A=2</li>
          <li><b>A~ab</b> - macthes regular expression A=/ab/i</li>
          <li><b>A=1,B+=2</b> - matches A=1 OR B=2</li>
          <li><b>A=1,B=2,C+=3</b> - matches (A=1 AND B=2) OR C=3</li>
          <li><b>A~[1-3],A!=2</b> - matches A=1 AND A=3</li>
          <li><b>A!~text</b> - matches strings that do not contain "text"</li>
        </ul>
      </ng-container>
      <ng-container *ngIf="isSelected('functions')">
        <h3>Functions</h3>
<caption>Below are several simple expressions that can be used with/instead of criteria conditions.</caption>

        <ul class="col-sm-6 no-click">
          <li><dfn>empty()</dfn> - value is null, empty string or does not exist</li>
          <li><dfn>emptySet()</dfn> - empty array</li>
          <li><dfn>exists()</dfn> - value is not empty</li>
          <li><dfn>in(days)</dfn> - date in range</li>
          <li><dfn>after(days)</dfn> - date shift from the current date in days</li>
          <li><dfn>among(list|of|values)</dfn> - value is present among the listed set</li>
        </ul>

        <ul class="col-sm-6">
          <h4>Examples:</h4>
          <li><b>status=empty()</b> - uesers with empty status</li>
          <li><b>nextPr=in(30)</b> - date of next PR is in 30 days</li>
          <li><b>activeUsVisa.till=after(100)</b> - active US visa will be valid for at least next 100 days</li>
          <li><b>grade=among(T2|T3)</b> - grade matches T2 or T3</li>
        </ul>
      </ng-container>
      <ng-container *ngIf="isSelected('persons')">
        <h3>People</h3>
        <caption>Query by a person's attributes</caption>

        <ul (click)="click($event)" class="col-sm-6">
          <li><dfn>name</dfn> - full name</li>
          <li><dfn>login</dfn> - login (e.g. aivanov)</li>
{'fraction_non_alphanumeric': 0.19456272518833934, 'fraction_numerical': 0.019489027186374058, 'mean_word_length': 2.5755269320843093, 'pattern_counts': {'":': 0, '<': 285, '<?xml version=': 0, '>': 285, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '4538070', 'n_tokens_mistral': 2225, 'n_tokens_neox': 2154, 'n_words': 517}