summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoe Robinson <joe@lc8n.com>2015-10-09 20:28:06 +0100
committerJoe Robinson <joe@lc8n.com>2015-10-09 20:28:06 +0100
commitd372de14d696fe66d9bc6f1ffb78b64211101374 (patch)
tree885eedc748eb863a39f5a09b16fbf42352a6855e
Initial commit. Basic conversion
-rwxr-xr-xblaunits.rb75
1 files changed, 75 insertions, 0 deletions
diff --git a/blaunits.rb b/blaunits.rb
new file mode 100755
index 0000000..460df9a
--- /dev/null
+++ b/blaunits.rb
@@ -0,0 +1,75 @@
+#!/usr/bin/ruby
+
+VERSION = "2.0"
+
+begin
+ args = ARGV.dup
+ if args.empty?
+ input = STDIN.gets
+ else
+ input = ""
+ args.each do |arg|
+ if input != ""
+ input = input + " " + arg.dup
+ else
+ input = arg.dup
+ end
+ end
+ end
+ input.strip!
+ if input == "-v" or input == "--version"
+ puts "blaconvert v"+VERSION
+ exit
+ end
+ mid = 0
+ from = ""
+ to = ""
+ num = 0
+ words = input.split(" ")
+ for i in 0..words.length-1
+ if words[i] == "in" or words[i] == "to"
+ mid = i
+ end
+ end
+ if words.length == 3 && mid == 0
+ num = Float(words[0])
+ from = words[1]
+ to = words[2]
+ elsif words.length == 2 && mid == 0
+ num = 1
+ from = words[0]
+ to = words[1]
+ elsif mid > 0
+ for i in 1..mid-1
+ from += words[i]
+ end
+ for i in mid+1..words.length-1
+ to += words[i]
+ end
+ num = Float(words[0])
+ else
+ puts "Invalid input! Try !convert [amount] [from-unit] to [to-unit] e.g !convert 2 cm to inches"
+ exit
+ end
+ out = %x(gunits -t1 #{from} #{to})
+ outs = out.split(" ")
+ if outs[0] == "Unknown"
+ from.upcase!
+ out = %x(gunits -t1 #{from} #{to})
+ outs = out.split(" ")
+ if outs[0] == "Unknown"
+ to.upcase!
+ out = %x(gunits -t1 #{from} #{to})
+ outs = out.split(" ")
+ if outs[0] == "Unknown"
+ puts out
+ exit
+ end
+ end
+ elsif outs[0] == "conformability"
+ puts "Incompatible units. Can't convert from #{from} to #{to}"
+ exit
+ end
+ puts "#{num} #{from} = #{num * Float(out)} #{to}"
+
+end \ No newline at end of file