packageulli2rstimport("bufio""fmt""github.com/PuerkitoBio/goquery""os""strings")varliMark=[]string{"-","*"}funcStringToLines(sstring)[]string{varlines[]stringscanner:=bufio.NewScanner(strings.NewReader(s))forscanner.Scan(){lines=append(lines,scanner.Text())}iferr:=scanner.Err();err!=nil{fmt.Fprintln(os.Stderr,"reading standard input:",err)}returnlines}funcprocessUl(ul*goquery.Selection,depthint){ul.Find("li").Each(func(_int,li*goquery.Selection){li.Find("ul").Each(func(_int,childUl*goquery.Selection){processUl(childUl,depth+1)})lines:=StringToLines(li.Text())varindentedLines[]stringfori,line:=rangelines{ifi==0{liMarkIndex:=depth%2mark:=liMark[liMarkIndex]indentedLines=append(indentedLines,"\n"+mark+" "+line)}else{indentedLines=append(indentedLines," "+line)}}li.ReplaceWithHtml(strings.Join(indentedLines,"\n"))})ul.ReplaceWithHtml(ul.Text())}funcHtmlUlLiToRst(doc*goquery.Document)*goquery.Document{forul:=doc.Find("ul").First();ul.Length()!=0;ul=doc.Find("ul").First(){processUl(ul,0)}returndoc}