cnb_rates 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. checksums.yaml +7 -0
  2. data/lib/cnb_rates.rb +77 -0
  3. metadata +44 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 29b58386440357103d5cc9bd78b6da3615af6550
4
+ data.tar.gz: 8747b30c4b2709d3ed2c01215de2b60b3233d4d5
5
+ SHA512:
6
+ metadata.gz: 65b42fac2eb3168947dbc17edccc11e262db2502e08ce11683a6ac1f9ed6a6d1494b301e88162255862edefd300e6a562466067ea84abc2ab5be87116edc96d1
7
+ data.tar.gz: 2614511883d75d12749b783b08c90ae399e763decd46f1701f68ffc102eb32e6950373ac7f30f7c5fbc79159c9bbf00b94243f682532678dad1781c627ae598a
data/lib/cnb_rates.rb ADDED
@@ -0,0 +1,77 @@
1
+ # Jaromír Červenka
2
+ # jaromir@virt.io
3
+ # https://virt.io/
4
+ # License: http://creativecommons.org/licenses/by/4.0/
5
+
6
+ require 'open-uri'
7
+
8
+ class CNBRates
9
+ SOURCE_URL = 'http://www.cnb.cz/cs/financni_trhy/devizovy_trh/kurzy_devizoveho_trhu/denni_kurz.txt?date='
10
+
11
+ attr_reader :currency_list
12
+
13
+ def initialize(options = {})
14
+ @date = options[:date]|| Date.today
15
+ @filename = options[:filename] || ''
16
+ @date = @date.strftime('%d.%m.%Y')
17
+ @currency_list = []
18
+
19
+ parse_list
20
+ end
21
+
22
+ def rate(currency, amount=1)
23
+ method_name = currency.downcase.to_sym
24
+ rate = respond_to?(method_name) ? send(method_name) : 1.0
25
+ rate * amount
26
+ end
27
+
28
+ private
29
+
30
+ def parse_list
31
+ lines = @filename.empty? ? list_from_web : list_from_file
32
+
33
+ lines.each_line do |line|
34
+ split_line = line.split('|')
35
+ volume = split_line[2].to_f
36
+ currency_code = split_line[3].downcase
37
+ currency_rate = split_line[4].gsub(',', '.').to_f
38
+ currency_rate = volume == 1 ? currency_rate : currency_rate / volume
39
+
40
+ self.class.send(:define_method, "#{currency_code}") do
41
+ currency_rate
42
+ end
43
+
44
+ @currency_list.push(currency_code.to_sym)
45
+ end
46
+ end
47
+
48
+ def list_from_file
49
+ lines = ''
50
+
51
+ File.open @filename, 'r' do |file|
52
+ file.each_with_index do |line, index|
53
+ next if index == 0 || index == 0
54
+ lines += line
55
+ end
56
+ end
57
+
58
+ return lines
59
+ end
60
+
61
+ def list_from_web
62
+ lines = ''
63
+
64
+ open(source_url) do |doc|
65
+ doc.each_with_index do |line, index|
66
+ next if index == 0 || index == 1
67
+ lines += line
68
+ end
69
+ end
70
+
71
+ return lines
72
+ end
73
+
74
+ def source_url
75
+ "#{SOURCE_URL}#{@date}"
76
+ end
77
+ end
metadata ADDED
@@ -0,0 +1,44 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: cnb_rates
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.4
5
+ platform: ruby
6
+ authors:
7
+ - Jaromír Červenka
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2013-12-15 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: Simple ruby parser for the Czech National Bank exchange rates
14
+ email: jaromir@virt.io
15
+ executables: []
16
+ extensions: []
17
+ extra_rdoc_files: []
18
+ files:
19
+ - lib/cnb_rates.rb
20
+ homepage: https://github.com/virtio/cnb_rates
21
+ licenses:
22
+ - CC BY
23
+ metadata: {}
24
+ post_install_message:
25
+ rdoc_options: []
26
+ require_paths:
27
+ - lib
28
+ required_ruby_version: !ruby/object:Gem::Requirement
29
+ requirements:
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
33
+ required_rubygems_version: !ruby/object:Gem::Requirement
34
+ requirements:
35
+ - - ">="
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ requirements: []
39
+ rubyforge_project:
40
+ rubygems_version: 2.1.11
41
+ signing_key:
42
+ specification_version: 4
43
+ summary: Simple ruby parser for the Czech National Bank exchange rates
44
+ test_files: []