[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[dennou-ruby:003683] Re: gpview に DCL のコマンドラインオプション
- To: dennou-ruby@xxxxxxxxxxx
- Subject: [dennou-ruby:003683] Re: gpview に DCL のコマンドラインオプション
- From: Shin-ichi Takehiro <takepiro@xxxxxxxxxxxxxx>
- Date: Sun, 23 Feb 2014 14:20:13 +0900
竹広です.
納多さん, 内藤さん, パッチを送ってくださりどうもありがとうございました.
gpview, gpvect にDCL のコマンドラインオプションを解釈する機能を取り込み
ました. 納多さんの標準偏差も取り込みましたが, モニター機能はちょっと
複雑そうなので申しわけありませんがパスしました.
あわせてトーンルーチンのオプションをより一般的にし, DCL.uetone,
DCL.uetonf, DCL.uetonb, DCL.uetonc を切替えられるようにしました.
詳しくは --help をご覧ください.
Takepiro(竹広真一)@数理解析研究所. 京都大学
E-mail:takepiro@xxxxxxxxxxxxxx
takepiro@xxxxxxxxxxxxxxxxxxxx
> [1 <text/plain; ISO-2022-JP (7bit)>]
> 竹広様、皆様:
>
> gpview のオプションが飽和状態のところ失礼します。
> DCL のコマンドラインオプションを解釈するようにしてみたので、
> パッチをお送りします。 [gpview_dclopts.patch]
> たとえばこのように使えます。
>
> % gpview hogehoge.nc@anything -sg:iws=2
>
> 1文字目が「-」、4文字目が「:」、その後に「=」を含む引数は
> DCL 用のオプションと解され、パラメータ設定されます。
> (従来の gpview オプションやその引数を誤って解釈しないよう、
> このような定義にしました。副作用ありませんように。。。)
> これで、個々のパラメータごとに gpview オプションを増やさずに、
> DCL の多くのパラメータを指定することができます。
>
> ただ、DCL でコマンドラインオプションになっていないけれど
> 指定したいものもあるんですよね。。。
> コンターのラベルの書式を指定するオプション udfmt も実装しました。
> 飽和状態のところ申し訳ないけれど追加パッチをお送りします。
> [gpview_udfmt.patch]
>
> % gpview hogehoge.nc@anything --udfmt B
>
> のように指定すれば単に DCL.udsfmt('B') されます。
>
> 要るものだけ取り込んでいただければ幸いです。
>
> ------------------------------------------------------------
> 京都大学 大学院理学研究科 地球惑星科学専攻 地球物理学教室
> 内藤 陽子 <naito@xxxxxxxxxxxxxxxxxx>
>
> [2 gpview_dclopts.patch <text/plain; Shift_JIS (base64)>]
> *** gpview.org 2014-02-19 17:37:27.058039734 +0900
> --- gpview 2014-02-19 17:52:38.000995761 +0900
> ***************
> *** 584,593 ****
> --- 584,644 ----
> return min, max
> end
>
> + def check_dclopts
> +
> + indices = []
> + ARGV.each_index{|i|
> + if /^-(.)(.):(.*)=(.*)/ =~ ARGV[i]
> + indices << i
> + end
> + }
> +
> + dclopts = []
> + indices.reverse_each{|i|
> + dclopts << ARGV[i]
> + ARGV.slice!(i)
> + }
> +
> + dclopts.each{|opt|
> + pkg = opt[1..2]
> + name = opt[4..-1].split('=')[0]
> + value = opt[4..-1].split('=')[1]
> + dcl_set_params(pkg,name,value)
> + }
> +
> + end
> +
> + def dcl_set_params(pkg,name,value)
> +
> + set = 'stx'
> + case name
> + when /^c/i
> + eval( "DCL.#{pkg}c#{set}(name,value.to_s)" )
> + when /^l/i
> + if /(.*)(T|t)(.*)/ =~ value
> + eval( "DCL.#{pkg}l#{set}(name,true)" )
> + else
> + if /(.*)(F|f)(.*)/ =~ value
> + eval( "DCL.#{pkg}l#{set}(name,false)" )
> + else
> + raise "value of logical parameter must include 't' or 'f'"
> + end
> + end
> + when /^[i-n]/i
> + eval( "DCL.#{pkg}i#{set}(name,value.to_i)" )
> + else
> + eval( "DCL.#{pkg}r#{set}(name,value.to_f)" )
> + end
> +
> + end
> +
>
> #####################################################
> ###++++++ Main Routine ++++++###
>
> + ## options for DCL
> + check_dclopts
> +
> ## parse options
> parser = GetoptLong.new
> parser.set_options(
> [3 gpview_udfmt.patch <text/plain; Shift_JIS (base64)>]
> *** gpview 2014-02-19 17:52:38.000995761 +0900
> --- gpview_udfmt 2014-02-19 17:52:40.173031023 +0900
> ***************
> *** 692,697 ****
> --- 692,698 ----
> ['--tonf', GetoptLong::NO_ARGUMENT],
> ['--nocolorbar', GetoptLong::NO_ARGUMENT],
> ['--nozero', GetoptLong::NO_ARGUMENT],
> + ['--udfmt', GetoptLong::REQUIRED_ARGUMENT],
> ['--help', GetoptLong::NO_ARGUMENT]
> # ['--version', GetoptLong::NO_ARGUMENT] # to be defined
> )
> ***************
> *** 735,740 ****
> --- 736,745 ----
> ## tune the size of axis parameters.
> DCL.uzfact(0.7)
>
> + ## set the format of contour labels.
> + udfmt = ($OPT_udfmt||DCL.udqfmt())
> + DCL.udsfmt(udfmt)
> +
> ## draw figure
> loopdim = ( $OPT_animate || $OPT_anim )
> loopdim = loopdim.to_i if loopdim.to_i.to_s == loopdim