[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[dennou-ruby:003674] gpview に DCL のコマンドラインオプション
- To: dennou-ruby@xxxxxxxxxxx
- Subject: [dennou-ruby:003674] gpview に DCL のコマンドラインオプション
- From: Yoko NAITO <naito@xxxxxxxxxxxxxxxxxx>
- Date: Wed, 19 Feb 2014 18:25:28 +0900
竹広様、皆様:
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>
*** 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(
*** 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