parameters: (value, slices, fill_with=None)
docstring: Slice an iterator and return a list of lists containing
      those items. Useful if you want to create a div containing
      three ul tags that represent columns:
  
      .. sourcecode:: html+jinja
  
          <div class="columwrapper">
            {%- for column in items|slice(3) %}
              <ul class="column-{{ loop.index }}">
              {%- for item in column %}
                <li>{{ item }}</li>
              {%- endfor %}
              </ul>
            {%- endfor %}
          </div>
  
      If you pass it a second argument it's used to fill missing
      values on the last iteration.
docstring_summary: Slice an iterator and return a list of lists containing
      those items. Useful if you want to create a div containing
      three ul tags that represent columns:
docstring_tokens: Slice an iterator and return a list of lists containing those items . Useful if you want to create a div containing three ul tags that represent columns :
function: def do_slice(value, slices, fill_with=None):
      """Slice an iterator and return a list of lists containing
      those items. Useful if you want to create a div containing
      three ul tags that represent columns:
  
      .. sourcecode:: html+jinja
  
          <div class="columwrapper">
            {%- for column in items|slice(3) %}
              <ul class="column-{{ loop.index }}">
              {%- for item in column %}
                <li>{{ item }}</li>
              {%- endfor %}
              </ul>
            {%- endfor %}
          </div>
  
      If you pass it a second argument it's used to fill missing
      values on the last iteration.
      """
      seq = list(value)
      length = len(seq)
      items_per_slice = length // slices
      slices_with_extra = length % slices
      offset = 0
      for slice_number in range(slices):
          start = offset + slice_number * items_per_slice
          if slice_number < slices_with_extra:
              offset += 1
          end = offset + (slice_number + 1) * items_per_slice
          tmp = seq[start:end]
          if fill_with is not None and slice_number >= slices_with_extra:
              tmp.append(fill_with)
          yield tmp
function_tokens: def do_slice ( value , slices , fill_with = None ) : seq = list ( value ) length = len ( seq ) items_per_slice = length // slices slices_with_extra = length % slices offset = 0 for slice_number in range ( slices ) : start = offset + slice_number * items_per_slice if slice_number < slices_with_extra : offset += 1 end = offset + ( slice_number + 1 ) * items_per_slice tmp = seq [ start : end ] if fill_with is not None and slice_number >= slices_with_extra : tmp . append ( fill_with ) yield tmp