sillevl_temperature_library 0.0.1 → 0.0.2

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 5e49ccd6d3536e8e0ed412b310a8184014ab7865
4
- data.tar.gz: 4d8b867eb62e1d751182b1404c5c8383c540885d
3
+ metadata.gz: 548398ba702dff996c40dc3153311d2f00f88879
4
+ data.tar.gz: ca35496cf4e2a83bd362c0a75295f2422d7b744c
5
5
  SHA512:
6
- metadata.gz: 73c0e897d93ca38eadcf91c0cb57f199e978d0983f314f3cacd12635570e2f69b0539247e98e7675ead9b1cd56d0f7e678ea57df9369ccd07d5ac095358f06a2
7
- data.tar.gz: 2a6ed7532892cb1f0bd2003258015f12e78069b73cb6541b89ca31c298119da8bddf584b810a030a75b4d157e4669983c8cbff224bcdb5a9611babd573e66d7c
6
+ metadata.gz: 110e4dcd1d683a408c13a7939f3f6a360fe1de9b98850429c260ad5d43d1bbb316b51190b6002574fbac78db5b18f1a03121bf4b8bcaf2e6b690d4182f569331
7
+ data.tar.gz: e3dfcd965f141d691f9f87046f285237a1402189c026b33b7d742ac9f007286de7b0b0d6ad0557839aaeeb3eb0c04354f92d0bfb3c3a44eafe9e54097ec51bed
@@ -1,85 +1,85 @@
1
- #!/usr/bin/env ruby
2
-
3
- require 'sillevl_temperature_library'
4
- require 'highline'
5
- require 'optparse'
6
-
7
-
8
- options = {}
9
- OptionParser.new do |opts|
10
- opts.banner = "Usage: example.rb [options]"
11
-
12
- opts.on("-i", "--interactive", "Run interactive") do |i|
13
-
14
- cli = HighLine.new
15
- cli.choose do |menu|
16
- menu.prompt = "Please choose your method of input? "
17
-
18
- menu.choice("CommandLine Interface") do
19
- temperature = cli.ask "What is the temperature?"
20
- temperature = Temperature.new temperature
21
- converter.commandline_temperature temperature
22
- cli.say(converter.to_text)
23
- end
24
-
25
- menu.choices("From file") do
26
- filename = cli.ask "What is the filename?"
27
- reader = FileReader.new filename
28
- temperature = Temperature.new reader.temperature
29
- converter.file_temperature filename
30
- cli.say(converter.to_text)
31
- end
32
-
33
- menu.choices("From url") do
34
- url = cli.ask "What is the url?"
35
- reader = UrlReader.new url
36
- temperature = Temperature.new reader.temperature
37
- converter.url_temperature url
38
- cli.say("Not from around here, are you?")
39
- end
40
-
41
- menu.choices("Using MQTT") do
42
- cli.say("Not from around here, are you?")
43
- end
44
-
45
- menu.default = "CommandLine Interface"
46
- end
47
-
48
- end
49
-
50
- temperature = Temperature.new 0
51
-
52
- opts.on("-t T", "--temperature T", Float, "Temperature") do |t|
53
- temperature = Temperature.new t
54
- end
55
-
56
- opts.on("-f FILE", "--file FILE", String, "Temperature") do |file|
57
- reader = FileReader.new file
58
- temperature = Temperature.new reader.temperature
59
- end
60
-
61
- opts.on("-u URL", "--url URL", String, "Temperature") do |url|
62
- reader = UrlReader.new url
63
- temperature = Temperature.new reader.temperature
64
- end
65
-
66
- opts.on("--text", "Output temperature as text") do
67
- printer = TextPrinter.new temperature
68
- puts printer.print
69
- end
70
-
71
- opts.on("--json", "Output temperature as json") do
72
- printer = JsonPrinter.new temperature
73
- puts printer.print
74
- end
75
-
76
- opts.on("--html", "Output temperature as html") do
77
- printer = HtmlPrinter.new temperature
78
- puts printer.print
79
- end
80
-
81
- opts.on_tail("-h", "--help", "Show this message") do
82
- puts opts
83
- exit
84
- end
85
- end.parse!
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'sillevl_temperature_library'
4
+ require 'highline'
5
+ require 'optparse'
6
+
7
+
8
+ options = {}
9
+ OptionParser.new do |opts|
10
+ opts.banner = "Usage: example.rb [options]"
11
+
12
+ opts.on("-i", "--interactive", "Run interactive") do |i|
13
+
14
+ cli = HighLine.new
15
+ cli.choose do |menu|
16
+ menu.prompt = "Please choose your method of input? "
17
+
18
+ menu.choice("CommandLine Interface") do
19
+ temperature = cli.ask "What is the temperature?"
20
+ temperature = Temperature.new temperature
21
+ converter.commandline_temperature temperature
22
+ cli.say(converter.to_text)
23
+ end
24
+
25
+ menu.choices("From file") do
26
+ filename = cli.ask "What is the filename?"
27
+ reader = FileReader.new filename
28
+ temperature = Temperature.new reader.temperature
29
+ converter.file_temperature filename
30
+ cli.say(converter.to_text)
31
+ end
32
+
33
+ menu.choices("From url") do
34
+ url = cli.ask "What is the url?"
35
+ reader = UrlReader.new url
36
+ temperature = Temperature.new reader.temperature
37
+ converter.url_temperature url
38
+ cli.say("Not from around here, are you?")
39
+ end
40
+
41
+ menu.choices("Using MQTT") do
42
+ cli.say("Not from around here, are you?")
43
+ end
44
+
45
+ menu.default = "CommandLine Interface"
46
+ end
47
+
48
+ end
49
+
50
+ temperature = Temperature.new 0
51
+
52
+ opts.on("-t T", "--temperature T", Float, "Temperature") do |t|
53
+ temperature = Temperature.new t
54
+ end
55
+
56
+ opts.on("-f FILE", "--file FILE", String, "Temperature") do |file|
57
+ reader = FileReader.new file
58
+ temperature = Temperature.new reader.temperature
59
+ end
60
+
61
+ opts.on("-u URL", "--url URL", String, "Temperature") do |url|
62
+ reader = UrlReader.new url
63
+ temperature = Temperature.new reader.temperature
64
+ end
65
+
66
+ opts.on("--text", "Output temperature as text") do
67
+ printer = TextPrinter.new temperature
68
+ puts printer.print
69
+ end
70
+
71
+ opts.on("--json", "Output temperature as json") do
72
+ printer = JsonPrinter.new temperature
73
+ puts printer.print
74
+ end
75
+
76
+ opts.on("--html", "Output temperature as html") do
77
+ printer = HtmlPrinter.new temperature
78
+ puts printer.print
79
+ end
80
+
81
+ opts.on_tail("-h", "--help", "Show this message") do
82
+ puts opts
83
+ exit
84
+ end
85
+ end.parse!
@@ -0,0 +1,15 @@
1
+ class HtmlPrinter
2
+
3
+ def initialize(temperature)
4
+ @temperature = temperature
5
+ end
6
+
7
+ def print
8
+ "<div>\r\n"\
9
+ " <div>#{@temperature.to_celsius} °C</div>\r\n"\
10
+ " <div>#{@temperature.to_fahrenheit} °F</div>\r\n"\
11
+ " <div>#{@temperature.to_kelvin} K</div>\r\n"\
12
+ "</div> "
13
+ end
14
+
15
+ end
@@ -0,0 +1,15 @@
1
+ class JsonPrinter
2
+
3
+ def initialize(temperature)
4
+ @temperature = temperature
5
+ end
6
+
7
+ def print
8
+ "{"\
9
+ "celsius: #{@temperature.to_celsius}, "\
10
+ "fahrenheit: #{@temperature.to_fahrenheit}, "\
11
+ "kelvin: #{@temperature.to_kelvin}"\
12
+ "}"
13
+ end
14
+
15
+ end
@@ -0,0 +1,15 @@
1
+
2
+ class TextPrinter
3
+
4
+ def initialize(temperature)
5
+ @temperature = temperature
6
+ end
7
+
8
+ def print
9
+ "Temperature:\r\n"\
10
+ " #{@temperature.to_celsius} °C\r\n"\
11
+ " #{@temperature.to_fahrenheit} °F\r\n"\
12
+ " #{@temperature.to_kelvin} K"
13
+ end
14
+
15
+ end
@@ -0,0 +1,10 @@
1
+
2
+ class CommandlineReader
3
+
4
+ attr_reader :temperature
5
+
6
+ def initialize(commands)
7
+ @temperature = commands.to_f
8
+ end
9
+
10
+ end
@@ -0,0 +1,10 @@
1
+ class FileReader
2
+
3
+ attr_reader :temperature
4
+
5
+ def initialize(filename)
6
+ contents = File.open(filename, 'rb') { |f| f.read }
7
+ @temperature = contents.to_f
8
+ end
9
+
10
+ end
@@ -0,0 +1,12 @@
1
+ require 'net/http'
2
+ require 'uri'
3
+
4
+ class UrlReader
5
+
6
+ attr_reader :temperature
7
+
8
+ def initialize(url)
9
+ @temperature = Net::HTTP.get(URI.parse(url)).to_f
10
+ end
11
+
12
+ end
@@ -1,3 +1,3 @@
1
- require './lib/temperature_reader'
2
- require './lib/temperature_printer'
3
- require './lib/temperature'
1
+ require 'temperature_reader'
2
+ require 'temperature_printer'
3
+ require 'temperature'
@@ -0,0 +1,36 @@
1
+ # Temperature type with unit convertion methods
2
+ #
3
+ # The Temperature class accepts any temperature value in degrees celsius
4
+ # and can convert it to any other unit with helper methods
5
+ # @author Sille Van Landschoot <info@sillevl.be>
6
+
7
+ class Temperature
8
+
9
+ attr_reader :temperature
10
+
11
+ KELVIN_SHIFT = 273.15
12
+ FAHRENHEIT_OFFSET = 32
13
+ FAHRENHEIT_SLOPE = Rational(9,5)
14
+
15
+ # @param temperature [Number] temperature value in degrees celsius
16
+ def initialize temperature
17
+ @temperature = temperature
18
+ end
19
+
20
+ # Return the temperature value in degrees celsius
21
+ # @return [Number] temperature in degrees celsius
22
+ # @example
23
+ # temperature = Temperature.new 12.3
24
+ # puts temperature.to_celsius
25
+ def to_celsius
26
+ temperature
27
+ end
28
+
29
+ def to_fahrenheit
30
+ (to_celsius * FAHRENHEIT_SLOPE) + FAHRENHEIT_OFFSET
31
+ end
32
+
33
+ def to_kelvin
34
+ to_celsius + KELVIN_SHIFT
35
+ end
36
+ end
@@ -0,0 +1,3 @@
1
+ require 'printer/text_printer'
2
+ require 'printer/json_printer'
3
+ require 'printer/html_printer'
@@ -0,0 +1,3 @@
1
+ require 'reader/commandline_reader'
2
+ require 'reader/file_reader'
3
+ require 'reader/url_reader'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sillevl_temperature_library
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sille Van Landschoot
@@ -18,7 +18,16 @@ extensions: []
18
18
  extra_rdoc_files: []
19
19
  files:
20
20
  - bin/temp-conv
21
+ - lib/printer/html_printer.rb
22
+ - lib/printer/json_printer.rb
23
+ - lib/printer/text_printer.rb
24
+ - lib/reader/commandline_reader.rb
25
+ - lib/reader/file_reader.rb
26
+ - lib/reader/url_reader.rb
21
27
  - lib/sillevl_temperature_library.rb
28
+ - lib/temperature.rb
29
+ - lib/temperature_printer.rb
30
+ - lib/temperature_reader.rb
22
31
  homepage: http://rubygems.org/gems/sillevl_temperature_library
23
32
  licenses:
24
33
  - MIT
@@ -39,7 +48,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
39
48
  version: '0'
40
49
  requirements: []
41
50
  rubyforge_project:
42
- rubygems_version: 2.5.1
51
+ rubygems_version: 2.4.5.1
43
52
  signing_key:
44
53
  specification_version: 4
45
54
  summary: Temperature converter library