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と同じ意味になります。