cinch-convert 1.0.0 → 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README.md +1 -1
- data/cinch-convert.gemspec +6 -5
- data/lib/cinch-convert.rb +2 -1
- data/lib/cinch/plugins/convert.rb +55 -0
- data/lib/cinch/plugins/convert/version.rb +3 -1
- data/spec/cinch-convert_spec.rb +6 -6
- data/spec/spec_helper.rb +8 -1
- metadata +6 -5
- data/lib/cinch/plugins/convert/convert.rb +0 -49
data/README.md
CHANGED
@@ -39,7 +39,7 @@ alternate location.
|
|
39
39
|
|
40
40
|
c.plugins.options[Cinch::Plugins::Convert][:units_path] = '/usr/bin/gunits'
|
41
41
|
|
42
|
-
Once that's all done, just use
|
42
|
+
Once that's all done, just use `!convert x unit1 to unit2` in the channel.
|
43
43
|
|
44
44
|
## Contributing
|
45
45
|
|
data/cinch-convert.gemspec
CHANGED
@@ -4,18 +4,19 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
4
4
|
require 'cinch/plugins/convert/version'
|
5
5
|
|
6
6
|
Gem::Specification.new do |gem|
|
7
|
-
gem.name =
|
7
|
+
gem.name = 'cinch-convert'
|
8
8
|
gem.version = Cinch::Plugins::Convert::VERSION
|
9
|
-
gem.authors = [
|
10
|
-
gem.email = [
|
9
|
+
gem.authors = ['Brian Haberer', 'Paul Visscher']
|
10
|
+
gem.email = ['bhaberer@gmail.com']
|
11
11
|
gem.description = %q{Cinch Plugin for Coverting Units via the units binary}
|
12
12
|
gem.summary = %q{Cinch Plugin for converting units}
|
13
|
-
gem.homepage =
|
13
|
+
gem.homepage = 'https://github.com/canonical-hackers/cinch-convert'
|
14
|
+
gem.license = 'MIT'
|
14
15
|
|
15
16
|
gem.files = `git ls-files`.split($/)
|
16
17
|
gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
|
17
18
|
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
18
|
-
gem.require_paths = [
|
19
|
+
gem.require_paths = ['lib']
|
19
20
|
|
20
21
|
gem.add_development_dependency 'rake'
|
21
22
|
gem.add_development_dependency 'rspec'
|
data/lib/cinch-convert.rb
CHANGED
@@ -0,0 +1,55 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
require 'cinch'
|
3
|
+
|
4
|
+
module Cinch::Plugins
|
5
|
+
# Cinch Plugin to convert units
|
6
|
+
class Convert
|
7
|
+
include Cinch::Plugin
|
8
|
+
|
9
|
+
self.help = 'Use .convert <thing 1> to <thing 2> to do a unit ' +
|
10
|
+
'conversion. (e.g. .convert 5 feet to meters)'
|
11
|
+
|
12
|
+
match /convert (.+) to (.+)/
|
13
|
+
|
14
|
+
def initialize(*args)
|
15
|
+
super
|
16
|
+
@units_path = config[:units_path] || '/usr/bin/units'
|
17
|
+
end
|
18
|
+
|
19
|
+
def execute(m, from, to)
|
20
|
+
m.reply convert(from, to), true
|
21
|
+
end
|
22
|
+
|
23
|
+
private
|
24
|
+
|
25
|
+
def convert(from, to)
|
26
|
+
return "Sorry, there's a configuration issue." unless units_bin_exists?
|
27
|
+
return if from.nil? || to.nil?
|
28
|
+
|
29
|
+
units_line = get_units_output(from, to)
|
30
|
+
|
31
|
+
if units_line.match(/Unknown unit/)
|
32
|
+
"Sorry, #{units_line.downcase}."
|
33
|
+
elsif units_line.match(/conformability error/)
|
34
|
+
'Sorry, there was an error when making that conversion.'
|
35
|
+
else
|
36
|
+
"#{from} is #{units_line} #{to}."
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
def get_units_output(from, to)
|
41
|
+
units_output = IO.popen([@units_path, '-t', from, to])
|
42
|
+
|
43
|
+
# we only take one line here because the first line of output is
|
44
|
+
# either an error message or the part of the conversion output we
|
45
|
+
# want.
|
46
|
+
units_output.readline.chomp!
|
47
|
+
end
|
48
|
+
|
49
|
+
def units_bin_exists?
|
50
|
+
return true if File.exist? @units_path
|
51
|
+
debug 'Cinch can not find the unit conversion binary.'
|
52
|
+
false
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
data/spec/cinch-convert_spec.rb
CHANGED
@@ -12,7 +12,7 @@ describe Cinch::Plugins::Convert do
|
|
12
12
|
it 'should handle the units binary\'s absence with grace' do
|
13
13
|
@bot = make_bot(Cinch::Plugins::Convert, { :units_path => '/usr/baddir/units' })
|
14
14
|
msg = make_message(@bot, '!convert 3 foo to bar')
|
15
|
-
get_replies(msg).last.
|
15
|
+
get_replies(msg).last.text.
|
16
16
|
should == 'test: Sorry, there\'s a configuration issue.'
|
17
17
|
end
|
18
18
|
end
|
@@ -20,25 +20,25 @@ describe Cinch::Plugins::Convert do
|
|
20
20
|
describe 'conversions' do
|
21
21
|
it 'should alow users to convert units' do
|
22
22
|
msg = make_message(@bot, '!convert 2 inches to feet')
|
23
|
-
get_replies(msg).last.
|
23
|
+
get_replies(msg).last.text.
|
24
24
|
should == 'test: 2 inches is 0.16666667 feet.'
|
25
25
|
end
|
26
26
|
|
27
27
|
it 'should allow users to convert temps' do
|
28
28
|
msg = make_message(@bot, '!convert tempF(32) to tempC')
|
29
|
-
get_replies(msg).last.
|
29
|
+
get_replies(msg).last.text.
|
30
30
|
should == 'test: tempF(32) is 0 tempC.'
|
31
31
|
end
|
32
32
|
|
33
33
|
it 'should return an error on conformability issues' do
|
34
34
|
msg = make_message(@bot, '!convert 15 minutes to gallons')
|
35
|
-
get_replies(msg).last.
|
36
|
-
should == 'test: Sorry, there was
|
35
|
+
get_replies(msg).last.text.
|
36
|
+
should == 'test: Sorry, there was an error when making that conversion.'
|
37
37
|
end
|
38
38
|
|
39
39
|
it 'should return an error on invalid units' do
|
40
40
|
msg = make_message(@bot, '!convert 15 foo to bar')
|
41
|
-
get_replies(msg).last.
|
41
|
+
get_replies(msg).last.text.
|
42
42
|
should == 'test: Sorry, unknown unit \'foo\'.'
|
43
43
|
end
|
44
44
|
|
data/spec/spec_helper.rb
CHANGED
@@ -1,5 +1,12 @@
|
|
1
1
|
require 'coveralls'
|
2
|
-
|
2
|
+
require 'simplecov'
|
3
|
+
|
4
|
+
SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter[
|
5
|
+
SimpleCov::Formatter::HTMLFormatter,
|
6
|
+
Coveralls::SimpleCov::Formatter
|
7
|
+
]
|
8
|
+
SimpleCov.start
|
9
|
+
|
3
10
|
require 'cinch-convert'
|
4
11
|
require 'cinch/test'
|
5
12
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cinch-convert
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date:
|
13
|
+
date: 2014-02-17 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: rake
|
@@ -107,12 +107,13 @@ files:
|
|
107
107
|
- Rakefile
|
108
108
|
- cinch-convert.gemspec
|
109
109
|
- lib/cinch-convert.rb
|
110
|
-
- lib/cinch/plugins/convert
|
110
|
+
- lib/cinch/plugins/convert.rb
|
111
111
|
- lib/cinch/plugins/convert/version.rb
|
112
112
|
- spec/cinch-convert_spec.rb
|
113
113
|
- spec/spec_helper.rb
|
114
114
|
homepage: https://github.com/canonical-hackers/cinch-convert
|
115
|
-
licenses:
|
115
|
+
licenses:
|
116
|
+
- MIT
|
116
117
|
post_install_message:
|
117
118
|
rdoc_options: []
|
118
119
|
require_paths:
|
@@ -131,7 +132,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
131
132
|
version: '0'
|
132
133
|
requirements: []
|
133
134
|
rubyforge_project:
|
134
|
-
rubygems_version: 1.8.
|
135
|
+
rubygems_version: 1.8.25
|
135
136
|
signing_key:
|
136
137
|
specification_version: 3
|
137
138
|
summary: Cinch Plugin for converting units
|
@@ -1,49 +0,0 @@
|
|
1
|
-
require 'cinch'
|
2
|
-
|
3
|
-
module Cinch::Plugins
|
4
|
-
class Convert
|
5
|
-
include Cinch::Plugin
|
6
|
-
|
7
|
-
self.help = "Use .convert <thing 1> to <thing 2> to do a unit conversion. (e.g. .convert 5 feet to meters)"
|
8
|
-
|
9
|
-
match /convert (.+) to (.+)/
|
10
|
-
|
11
|
-
def initialize(*args)
|
12
|
-
super
|
13
|
-
@units_path = config[:units_path] || '/usr/bin/units'
|
14
|
-
end
|
15
|
-
|
16
|
-
def execute(m, from, to)
|
17
|
-
m.reply convert(from, to), true
|
18
|
-
end
|
19
|
-
|
20
|
-
private
|
21
|
-
|
22
|
-
def convert(from, to)
|
23
|
-
return "Sorry, there's a configuration issue." unless units_binary_exists?
|
24
|
-
|
25
|
-
unless from.nil? || to.nil?
|
26
|
-
units_output = IO.popen([@units_path, "-t", from, to])
|
27
|
-
|
28
|
-
# we only take one line here because the first line of output is
|
29
|
-
# either an error message or the part of the conversion output we
|
30
|
-
# want.
|
31
|
-
units_line = units_output.readline.chomp!
|
32
|
-
|
33
|
-
if units_line.match(/Unknown unit/)
|
34
|
-
"Sorry, #{units_line.downcase}."
|
35
|
-
elsif units_line.match(/conformability error/)
|
36
|
-
"Sorry, there was a conformability error when making that conversion."
|
37
|
-
else
|
38
|
-
"#{from} is #{units_line} #{to}."
|
39
|
-
end
|
40
|
-
end
|
41
|
-
end
|
42
|
-
|
43
|
-
def units_binary_exists?
|
44
|
-
return true if File.exist? @units_path
|
45
|
-
debug "Cinch can't find the unit conversion binary."
|
46
|
-
false
|
47
|
-
end
|
48
|
-
end
|
49
|
-
end
|