[ruby-trunk - Feature #5861][Assigned] String#version_compare

Issue #5861 has been reported by Yui NARUSE.


Feature #5861: String#version_compare

Author: Yui NARUSE
Status: Assigned
Priority: Normal
Assignee: Yukihiro M.
Category: core
Target version: 2.0.0

バージョン番号っぽい文字列を比較するメソッド、String#version_compare を追加しませんか。
“2.6.18”.version_compare(“2.6.3”) #=> 1
などと使います。

詳細な仕様は Gauche の gauche.version モジュールの version-compare
関数の仕様を丸パクリするのが良いと思います。
提案している名前も Gauche そのままです。
http://practical-scheme.net/gauche/man/gauche-refj_103.html

それなりにユースケースはある…というか今まさにテストを書いていて、
Linux カーネルのバージョン番号を欲しくなったのですが、いかがでしょうか。

$B%P!<%8%g%sHV9f$C$]$$J8;zNs$rHf3S$9$k%a%=%C%I!"(BString#version_compare
$B$rDI2C$7$^$;$s$+!#(B
“2.6.18”.version_compare(“2.6.3”) #=> 1
$B$J$I$H;H$$$^$9!#(B

$B>:Y$J;EMM$O(B Gauche $B$N(B gauche.version $B%b%8%e!<%k$N(B version-compare
$B4X?t$N;EMM$r4]%Q%/%j$9$k$N$,NI$$$H;W$$$^$9!#(B
$BDs0F$7$F$$$kL>A0$b(B Gauche $B$=$N$^$^$G$9!#(B
http://practical-scheme.net/gauche/man/gauche-refj_103.html

$B$=$l$J$j$K%f!<%9%1!<%9$O$“$k!D$H$$$&$+:#$^$5$K%F%9%H$r=q$$$F$$$F!”(B
Linux $B%+!<%M%k$N%P!<%8%g%sHV9f$rM_$7$/$J$C$?$N$G$9$,!"$$$+$,$G$7$g$&$+!#(B

$B$&!$s!#@5D$T$s$H$-$^$;$s!#$^$:$5$-$[$I$J$k$;$5$s$,%3%_%C%H$5$l$?(B
r34232$B$G$9$,!"%P!<%8%g%s$NHf3S=hM}$O#19T$G=q$1$F$$$^$9(B

  •        # Cent OS 5.6 (2.6.18-238.19.1.el5xen) doesn't correctly work
    
  •        # sendmsg with pktinfo for link-local ipv6 addresses
    
  •        next
    
  •      end
    

$B$=$l$K2C$($F!“!J$J$k$;$5$s<+?H$b;XE&$5$l$F$$$k$h$&$K!K%P!<%8%g%sHV9f$K5,B’@-$J$I$J$$$N$G(B
$B0U?^DL$jF0$+$J$$%1!<%9$,@dBP$G$F$-$F%P%0BP1~$,$a$s$I$/$5$=$&$G$9!#$^$?!”(Bruby$B$N(Bintree$B$G$O(B
$B%F%9%H%1!<%9$0$i$$$7$+%f!<%6$,$$$J$5$=$&$J$N$G!"$=$l$@$C$?$i@55,I=8=$GE,Ev$K8mKb2=$7$F$b(B
$B==J,$H$$$&5$$,$7$^$9!#(B

$B$^$?!“(BLinux$B8GM-$NOC$NOC$H$7$F!”(BRHEL6$B$N(B2.6.32$B$G$O%P%0$k$1$I!“(BUbuntu$B$N(B2.6.32$B$G$O%P%0$i$J$$$H$+(B
xen$B%+!<%M%k$G$N$_%H%i%V%k$,$*$-$k$H$$$C$?Nc30$O$$$/$i$G$b;W$$$D$-!“7k6I!”<gMW%f!<%9%1!<%9$,(B
$B%P%02sHr$N%o!<%/%”%i%&%s%I$N$h$&$JNc307O$G$"$k8B$j$KCV$$$F$J$s$G$b$G$-$k@55,I=8=:G6/$O$f$k$,$J$$$s$8$c$J$$$+$H$$$&46?($G$$$^$9!#(B

$B$J$K$+8+Mn$H$7$F$$$?$i$4;XE&$h$m$7$/$*4j$$$$$?$7$^$9(B

Issue #5861 has been updated by Nobuyoshi N…

Yui NARUSE wrote:

バージョン番号っぽい文字列を比較するメソッド、String#version_compare を追加しませんか。
“2.6.18”.version_compare(“2.6.3”) #=> 1
などと使います。

Gem::Version.new(“2.6.18”)<=>Gem::Version.new(“2.6.3”) でいいんじゃないでしょうか。


Feature #5861: String#version_compare

Author: Yui NARUSE
Status: Assigned
Priority: Normal
Assignee: Yukihiro M.
Category: core
Target version: 2.0.0

バージョン番号っぽい文字列を比較するメソッド、String#version_compare を追加しませんか。
“2.6.18”.version_compare(“2.6.3”) #=> 1
などと使います。

詳細な仕様は Gauche の gauche.version モジュールの version-compare
関数の仕様を丸パクリするのが良いと思います。
提案している名前も Gauche そのままです。
http://practical-scheme.net/gauche/man/gauche-refj_103.html

それなりにユースケースはある…というか今まさにテストを書いていて、
Linux カーネルのバージョン番号を欲しくなったのですが、いかがでしょうか。

(2012/01/08 10:30), KOSAKI Motohiro wrote:

$B$&!$s!#@5D$T$s$H$-$^$;$s!#$^$:$5$-$[$I$J$k$;$5$s$,%3%_%C%H$5$l$?(B
r34232$B$G$9$,!"%P!<%8%g%s$NHf3S=hM}$O#19T$G=q$1$F$$$^$9(B

  •        (`uname -r`[/[0-9.]+/].split('.').map(&:to_i) <=> [2,6,18]) <= 0
    

$B$3$NJ}K!$,%$%^%$%A$J$N$O0J2<$N(B 2 $BE@$G$9$M!#(B

  • split $B$G$?$/$5$s(B String $B$,$G$-$k(B
  • $B%P!<%8%g%sHf3S$H$$$&0U?^$,$o$+$j$E$i$$(B

$B$=$l$K2C$($F!"!J$J$k$;$5$s<+?H$b;XE&$5$l$F$$$k$h$&$K!K%P!<%8%g%sHV9f$K5,B’@-$J$I$J$$$N$G(B

$B0U?^DL$jF0$+$J$$%1!<%9$,@dBP$G$F$-$F%P%0BP1~$,$a$s$I$/$5$=$&$G$9!#$^$?!"(Bruby$B$N(Bintree$B$G$O(B

$B%F%9%H%1!<%9$0$i$$$7$+%f!<%6$,$$$J$5$=$&$J$N$G!"$=$l$@$C$?$i@55,I=8=$GE,Ev$K8mKb2=$7$F$b(B

$B==J,$H$$$&5$$,$7$^$9!#(B

$B;XE&$7$F$$$k$N$O$o$?$7$G$O$J$/!"(Bgauche
$B$N;EMM$r7h$a$??M$+%^%K%e%"%k$r=q$$$??M$G$9$M!"(B
$B$?$V$s(B shiro $B$5$s!)(B
gauche
$BB&$K$H$C$F$O;EMM$+$I$&$+$N7hDj$OFq$7$$LdBj$G$9$,!"$o$?$7$NDs0F$G$O(B
$B!V(Bgauche
$B;EMM$N4]%Q%/%j!W$H$7$F$$$k$N$G!"%P%0$+$I$&$+$NH=CG$OL@2w$G$9!#(B

$B@55,I=8=$@$H(B “2.6.13” <=> “2.6.4” $B$N;~$KLLE]$K$J$j$^$9!#(B
$B!J$h$&$9$k$K(B Ruby $B$H0c$C$F2DJQD9$N>l9g!K(B
$B$^$?!"(BOpenSSL $B$N$h$&$K%"%k%U%!%Y%C%H$r;H$&N.57$bG:$^$7$$!#(B

$B$^$?!"(BLinux$B8GM-$NOC$NOC$H$7$F!"(BRHEL6$B$N(B2.6.32$B$G$O%P%0$k$1$I!"(BUbuntu$B$N(B2.6.32$B$G$O%P%0$i$J$$$H$+(B

xen$B%+!<%M%k$G$N$_%H%i%V%k$,$*$-$k$H$$$C$?Nc30$O$$$/$i$G$b;W$$$D$-!“7k6I!”<gMW%f!<%9%1!<%9$,(B

$B%P%02sHr$N%o!<%/%"%i%&%s%I$N$h$&$JNc307O$G$"$k8B$j$KCV$$$F$J$s$G$b$G$-$k@55,I=8=:G6/$O$f$k$,$J$$$s$8$c$J$$$+$H$$$&46?($G$$$^$9!#(B

$B@55,I=8=$@$H7e$^$?$$$@=V4V0l5$$KJ#;(2=$7$^$9$+$i$M$’!#(B

Issue #5861 has been updated by Yukihiro M…

Status changed from Assigned to Rejected

Stringクラスのメソッドにする必然性はないように思います。バージョン的比較というのはそこまで一般的ではないような。
不満があれば、理由を添えて再オープンしてください。

Matz.

Feature #5861: String#version_compare

Author: Yui NARUSE
Status: Rejected
Priority: Normal
Assignee: Yukihiro M.
Category: core
Target version: 2.0.0

バージョン番号っぽい文字列を比較するメソッド、String#version_compare を追加しませんか。
“2.6.18”.version_compare(“2.6.3”) #=> 1
などと使います。

詳細な仕様は Gauche の gauche.version モジュールの version-compare
関数の仕様を丸パクリするのが良いと思います。
提案している名前も Gauche そのままです。
http://practical-scheme.net/gauche/man/gauche-refj_103.html

それなりにユースケースはある…というか今まさにテストを書いていて、
Linux カーネルのバージョン番号を欲しくなったのですが、いかがでしょうか。