sxml.css-sxpathで :nth-child(an+b) をサポート

これまでsxml.css-sxpathの:nth-child()では:nth-child(2)のように単純なインデックス指定のみ有効でしたが、:nth-child(2n+1)とか:nth-child(even)のような記法もサポートするようにしてみました。バージョン0.2としてリリースします。

インストール

gauche-packageコマンドでインストールできます。
githubはこちら GitHub - teppey/Gauche-sxml-css-sxpath: CSS3 Selector to SXPath Converter

$ gauche-package install [-S root] https://github.com/downloads/teppey/Gauche-sxml-css-sxpath/Gauche-sxml-css-sxpath-0.2.tgz

使い方

(define html
  '(*TOP*
    (html
      (body
        (ul
          (li "1")
          (li "2")
          (li "3")
          (li "4")
          (li "5")
          (li "6"))))))

 ((css-sxpath "li:nth-child(2n)") html)     ;=> ((li "2") (li "4") (li "6"))
 ((css-sxpath "li:nth-child(even)") html)   ;=> ((li "2") (li "4") (li "6"))
 ((css-sxpath "li:nth-child(2n+1)") html)   ;=> ((li "1") (li "3") (li "5"))
 ((css-sxpath "li:nth-child(odd)") html)    ;=> ((li "1") (li "3") (li "5"))
 ((css-sxpath "li:nth-child(3n+2)") html)   ;=> ((li "2") (li "5"))

evenは2n、oddは2n+1と同じ意味になります。