diff options
author | Eric Wong <e@80x24.org> | 2015-07-18 08:25:59 +0000 |
---|---|---|
committer | Eric Wong <e@80x24.org> | 2015-07-18 08:25:59 +0000 |
commit | c3bb7810709a99a9886c7f96aed6fa62690a12cb (patch) | |
tree | 3bb4bc39af7ab665168efd8385b4c1b8eb10ec8e | |
parent | 2f3c9d105ab13c730c497da7d8c63f6ed11cf91f (diff) | |
download | dtas-c3bb7810709a99a9886c7f96aed6fa62690a12cb.tar.gz |
Seems a bit stupid, but oh well.
-rw-r--r-- | lib/dtas/parse_freq.rb | 29 | ||||
-rw-r--r-- | test/test_parse_freq.rb | 18 |
2 files changed, 47 insertions, 0 deletions
diff --git a/lib/dtas/parse_freq.rb b/lib/dtas/parse_freq.rb new file mode 100644 index 0000000..2fd418e --- /dev/null +++ b/lib/dtas/parse_freq.rb @@ -0,0 +1,29 @@ +# Copyright (C) 2015 all contributors <dtas-all@nongnu.org> +# License: GPLv3 or later (https://www.gnu.org/licenses/gpl-3.0.txt) + +require_relative '../dtas' +module DTAS::ParseFreq + + # may return a negative frequency meaning lowpass + def parse_freq(val, round = true) + case val + when String + val = val.dup + mult = val.sub!(/k\z/, '') ? 1000 : 1 + val = (val.to_f * mult) + when Numeric + val + else + raise ArgumentError, "non-numeric value given" + end + + case round + when true, :int + val.round + when :float + val.to_f + else + raise ArgumentError, "usage: parse_freq(val, (true|:round))" + end + end +end diff --git a/test/test_parse_freq.rb b/test/test_parse_freq.rb new file mode 100644 index 0000000..1dcd8d6 --- /dev/null +++ b/test/test_parse_freq.rb @@ -0,0 +1,18 @@ +# Copyright (C) 2015 all contributors <dtas-all@nongnu.org> +# License: GPLv3 or later (https://www.gnu.org/licenses/gpl-3.0.txt) +require './test/helper' + +require 'dtas/parse_freq' + +class TestParseFreq < Testcase + include DTAS::ParseFreq + + def test_parse_freq + assert_equal(4000, parse_freq('4k')) + assert_equal(-4000, parse_freq('-4k')) + assert_equal(-4900, parse_freq('-4.9k')) + assert_equal(-4900, parse_freq('-4.9k', :int)) + + assert_equal(4900.5, parse_freq('4.9005k', :float)) + end +end |