code: function processListItems(list_str) {
  
          listLevel++;
  
          list_str = list_str.replace(/\n{2,}$/,"\n");
          list_str += "~0";
  
          list_str = list_str.replace(/(\n)?(^[ \t]*)([*+-]|\d+[.])[ \t]+([^\r]+?(\n{1,2}))(?=\n*(~0|\2([*+-]|\d+[.])[ \t]+))/gm, function(wholeMatch,m1,m2,m3,m4){
  
              var item = m4;
              var leading_line = m1;
              var leading_space = m2;
  
              if (leading_line || (item.search(/\n{2,}/)>-1)) {
                  item = runBlockGamut(outdent(item));
              }
              else {
                  item = doLists(outdent(item));
                  item = item.replace(/\n$/,"");
                  item = runSpanGamut(item);
              }
  
              return  "<li>" + item + "</li>\n";
          });
  
          list_str = list_str.replace(/~0/g,"");
          listLevel--;
  
          return list_str;
      }
docs: }}} {{{ processListItems