Sha256: 8af8c5b8a9bdae473b76fd5796282bb9bb0f42afa307264a5acb644af4f71eff

Contents?: true

Size: 1.84 KB

Versions: 8

Compression:

Stored size: 1.84 KB

Contents

require "date"

module MkSunmoon
  class Argument
    def initialize(*args)
      @date, @lat, @lon, @alt = args
    end

    #=========================================================================
    # 引数取得
    #
    # * コマンドライン引数を取得して日時の妥当性チェックを行う
    #   コマンドライン引数無指定なら、現在日とする。
    # *  -90.0 < 緯度 <    90.0
    # * -180.0 < 経度 <   180.0
    # *    0.0 < 標高 < 10000.0
    #
    # @return: [year, month, day, lat, lon, alt] (when error, [])
    #=========================================================================
    def get_args
      date = get_date;      return [] unless date
      lat  = get_latitude;  return [] unless lat
      lon  = get_longitude; return [] unless lon
      alt  = get_altitude;  return [] unless alt
      return [*date, lat, lon, alt]
    end

    private

    def get_date
      @date ||= Time.now.strftime("%Y%m%d")
      unless @date =~ /^\d{8}$/
        puts Const::MSG_ERR_1
        return nil
      end
      year, month, day = @date[0,4].to_i, @date[4,2].to_i, @date[6,2].to_i
      unless Date.valid_date?(year, month, day)
        puts Const::MSG_ERR_1
        return nil
      end
      return [year, month, day]
    end

    def get_latitude
      @lat ||= Const::LAT_MATSUE
      unless @lat.to_s =~ /^[+-]?[0-8]?\d?(\.\d*)?$/
        puts Const::MSG_ERR_2
        return nil
      end
      return @lat.to_f
    end

    def get_longitude
      @lon ||= Const::LON_MATSUE
      unless @lon.to_s =~ /^[+-]?(\d{,2}|1[0-7]\d?)(\.\d*)?$/
        puts Const::MSG_ERR_3
        return nil
      end
      return @lon.to_f
    end

    def get_altitude
      @alt ||= 0.0
      unless @alt.to_s =~ /^\d{,4}(\.\d*)?$/
        puts Const::MSG_ERR_4
        return nil
      end
      return @alt.to_f
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
mk_sunmoon-0.1.7 lib/mk_sunmoon/argument.rb
mk_sunmoon-0.1.6 lib/mk_sunmoon/argument.rb
mk_sunmoon-0.1.5 lib/mk_sunmoon/argument.rb
mk_sunmoon-0.1.4 lib/mk_sunmoon/argument.rb
mk_sunmoon-0.1.3 lib/mk_sunmoon/argument.rb
mk_sunmoon-0.1.2 lib/mk_sunmoon/argument.rb
mk_sunmoon-0.1.1 lib/mk_sunmoon/argument.rb
mk_sunmoon-0.1.0 lib/mk_sunmoon/argument.rb