code: def _render(self):
          
          # hide the list in case that there is no `keyword` to be displayed
          if self.keywords:
              self.whole_el.style.display = "block"
              self.all_lists_el.style.display = "block"
          else:
              self.whole_el.style.display = "none"
              if "<li>" not in self.all_lists_el.html:
                  self.all_lists_el.style.display = "none"
  
          # construct the HTML code for each keyword
          html_lines = (
              "<li class='kw_enum'>{0} {1}</li>\n".format(
                  keyword,
                  (self._remover % cnt)
              )
              for cnt, keyword in enumerate(self.keywords)
          )
  
          # put the keywords into the HTML code of the page
          self.el.innerHTML = "<ol>\n%s\n</ol>\n" % "\n".join(html_lines)
  
          # this function is used to bind the ✖ to function for removing the
          # keyword
          def keyword_remover(keyword):
              def remover(ev):
                  self.remove_keyword(keyword)
  
              return remover
  
          # go thru all the keywords and bind them to keyword_remover()
          for cnt, keyword in enumerate(self.keywords):
              uid = "kw_remover_id_%d" % cnt
              el = document[uid]
              el.bind("click", keyword_remover(keyword))
docs: Render the HTML code for all the :attr:`keywords` stored in this class.
  
          This method is called after each change in :attr:`keywords`.