rirera 0.1.3 → 0.1.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (9) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG +2 -0
  3. data/Gemfile +3 -0
  4. data/README.md +12 -1
  5. data/README.rdoc +11 -4
  6. data/bin/rirera +52 -10
  7. data/lib/rirera.rb +8 -33
  8. data/rirera.gemspec +15 -14
  9. metadata +4 -24
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: f7864353d497ead1533b9e403625700aa480d894
4
- data.tar.gz: 7169d644d6f4e1cc9ccd3b9981356da04ef2944d
3
+ metadata.gz: 2d02a077e1539aa7fa2fc09811675b3bb2a70812
4
+ data.tar.gz: 34b3e8dc64c67cb757e1c05a980b2378c10f3c75
5
5
  SHA512:
6
- metadata.gz: 31d521763cebfa87463d3fac829d9d9032fe5794d359c59ba55c30d3220124120af0c31b0242b71f71f445a4ff3fab099467f510d6a483c59cd20694c75cb78e
7
- data.tar.gz: 7abca528b85ffe87e200f266dcd37a6e4e53832b0c27db05a27439c0df3c760ca53b4328d40ac0a7461a06b4eac0bafd65b633f5de44989ab5ba7fc38268c8cc
6
+ metadata.gz: 2a40fe14a9fdf29772d94445a732f23166697ef4c5ca71af424bcad6a4164f8742d3ab86f05392914814badf23931716d479d2cb88a4915a996a1e190cf10e21
7
+ data.tar.gz: 23fc98e1d8989e4caba702a4045f738a28c3b541c94923c7b62ac054aee6a88bfc41891164bf624f52acb8fcf320ef04e1b6962d16f438d691102358fefa4f4c
data/CHANGELOG CHANGED
@@ -1,3 +1,5 @@
1
1
  Version 0.1.0: Initial version
2
2
  Version 0.1.1: added rdoc usage documentation
3
3
  Version 0.1.2: added screenshot to README.rdoc
4
+ Version 0.1.3: class refactoring/encapsulation
5
+ Version 0.1.4: adding proper cli
data/Gemfile CHANGED
@@ -1 +1,4 @@
1
+ source "https://rubygems.org"
2
+
1
3
  gem "colorize", "~> 0.7.3"
4
+ gem "trollop", "2.0"
data/README.md CHANGED
@@ -18,4 +18,15 @@ Add your broker, and its specific commision rates to `conf/rirera.yml`
18
18
 
19
19
  ## Run
20
20
 
21
- `rirera <broker_name>`
21
+ ```
22
+ $ rirera -h
23
+ Options:
24
+ --broker, -b <s>: choose your broker
25
+ --volume, -v <f>: volume (amount of money)
26
+ --target, -t <f>: target price
27
+ --actual, -a <f>: actual price
28
+ --stop, -s <f>: stop loss
29
+ --loop, -l: start rirera in loop input mode (other options will be
30
+ discarded)
31
+ --help, -h: Show this message
32
+ ```
data/README.rdoc CHANGED
@@ -1,13 +1,11 @@
1
1
  = rirera
2
2
 
3
- * http://github.com/MaximilianMeister/rirera
3
+ * https://github.com/MaximilianMeister/rirera
4
4
 
5
5
  == What is rirera?
6
6
 
7
7
  A small ruby command line tool to calculate a risk reward ratio.
8
8
 
9
- ![screenshot](http://ibin.co/1jv1nIeXZ8j9)
10
-
11
9
  == Configuration
12
10
 
13
11
  Add your broker, and its specific commision rates to `conf/rirera.yml`
@@ -18,4 +16,13 @@ Add your broker, and its specific commision rates to `conf/rirera.yml`
18
16
 
19
17
  == Run
20
18
 
21
- rirera <broker_name>
19
+ $ rirera -h
20
+ Options:
21
+ --broker, -b <s>: choose your broker
22
+ --volume, -v <f>: volume (amount of money)
23
+ --target, -t <f>: target price
24
+ --actual, -a <f>: actual price
25
+ --stop, -s <f>: stop loss
26
+ --loop, -l: start rirera in loop input mode (other options will be
27
+ discarded)
28
+ --help, -h: Show this message
data/bin/rirera CHANGED
@@ -1,17 +1,59 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
3
  require 'rirera'
4
+ require 'trollop'
4
5
 
5
- begin
6
- while true do
7
- system "clear"
8
- rrr = Rirera.new(ARGV[0])
6
+ def input
7
+ begin
8
+ while true do
9
+ system "clear"
10
+ rrr = Rirera.new
11
+ rrr.broker = rrr.get_broker(@opts[:broker])
12
+ print "volume: "
13
+ rrr.volume = rrr.sanity_check($stdin.gets)
14
+ print "target price: "
15
+ rrr.target = rrr.sanity_check($stdin.gets)
16
+ print "actual price: "
17
+ rrr.actual = rrr.sanity_check($stdin.gets)
18
+ loop do
19
+ print "stop loss: "
20
+ rrr.stop = rrr.stop_loss(rrr.actual, rrr.sanity_check($stdin.gets))
21
+ puts "stop loss has to be lower than actual price" if rrr.stop.nil?
22
+ break unless rrr.stop.nil?
23
+ end
24
+ rrr.print_result
25
+ puts ""
26
+ puts "Again? (y/n)"
27
+ exit if $stdin.gets.chomp == "n"
28
+ @opts.delete_if {|key,value| key != :broker }
29
+ end
30
+ rescue Interrupt => e
31
+ puts ""
32
+ abort "Exit..."
33
+ end
34
+ end
35
+
36
+ def main
37
+ @opts = Trollop::options do
38
+ opt :broker, "choose your broker", :short => 'b', :required => true, :type => String
39
+ opt :volume, "volume (amount of money)", :short => 'v', :type => Float
40
+ opt :target, "target price", :short => 't', :type => Float
41
+ opt :actual, "actual price", :short => 'a', :type => Float
42
+ opt :stop, "stop loss", :short => 's', :type => Float
43
+ opt :loop, "start rirera in loop input mode (other options will be discarded)", :short => 'l'
44
+ end
45
+
46
+ if @opts[:loop_given]
47
+ input
48
+ else
49
+ rrr = Rirera.new
50
+ rrr.broker = rrr.get_broker(@opts[:broker])
51
+ rrr.volume = @opts[:volume_given] ? @opts[:volume] : abort("missing volume")
52
+ rrr.target = @opts[:target_given] ? @opts[:target] : abort("missing target")
53
+ rrr.actual = @opts[:actual_given] ? @opts[:actual] : abort("missing actual")
54
+ rrr.stop = @opts[:stop_given] ? rrr.stop_loss(rrr.actual,@opts[:stop]) : abort("missing stop")
55
+ abort("stop loss has to be lower than actual price") if rrr.stop.nil?
9
56
  rrr.print_result
10
- puts ""
11
- puts "Again? (y/n)"
12
- exit if $stdin.gets.chomp == "n"
13
57
  end
14
- rescue Interrupt => e
15
- puts ""
16
- puts "Exit..."
17
58
  end
59
+ main
data/lib/rirera.rb CHANGED
@@ -2,25 +2,17 @@ require 'colorize'
2
2
  require 'yaml'
3
3
 
4
4
  class Rirera
5
- attr_accessor :volume, :target, :actual, :stop
5
+ attr_accessor :broker, :volume, :target, :actual, :stop
6
6
 
7
- def initialize(broker)
8
- print_title
7
+ def initialize
9
8
  @conf = load_config
10
- @broker = get_broker(broker)
11
- @volume, @target, @actual, @stop = input
12
- end
13
-
14
- def usage
15
- "Usage: ./rirera broker_name"
16
9
  end
17
10
 
18
11
  def get_broker(broker)
19
12
  unless @conf['broker'][broker].nil?
20
13
  broker
21
14
  else
22
- puts "Not a valid broker"
23
- abort usage
15
+ abort "Not a valid broker"
24
16
  end
25
17
  end
26
18
 
@@ -41,8 +33,6 @@ class Rirera
41
33
  puts "|_/ "
42
34
  puts "L___________________ "
43
35
  puts ""
44
- sleep 1
45
- system "clear"
46
36
  end
47
37
 
48
38
  def print_rrr
@@ -69,16 +59,16 @@ class Rirera
69
59
  YAML.load_file(File.join(File.expand_path("..", File.dirname(__FILE__)),"conf/rirera.yml"))
70
60
  end
71
61
 
72
- def test_input(actual_price, stop_loss)
73
- if stop_loss > actual_price
74
- puts "Stop Loss has to be lower than Price"
75
- false
62
+ def stop_loss(actual_price, stop_loss)
63
+ if stop_loss >= actual_price
64
+ nil
76
65
  else
77
- true
66
+ stop_loss
78
67
  end
79
68
  end
80
69
 
81
70
  def sanity_check(num)
71
+ num.chomp!.gsub!(",",".")
82
72
  # only allow int and float
83
73
  unless is_numeric?(num)
84
74
  puts "Wrong input"
@@ -136,19 +126,4 @@ class Rirera
136
126
  ((@volume + get_total_commission) / get_amount).round(2)
137
127
  end
138
128
 
139
- def input
140
- print "Volume: "
141
- volume = sanity_check($stdin.gets.chomp)
142
- print "Target price: "
143
- target = sanity_check($stdin.gets.chomp.gsub(",","."))
144
- print "Price: "
145
- actual = sanity_check($stdin.gets.chomp.gsub(",","."))
146
- stop = 0.0
147
- loop do
148
- print "Stop Loss: "
149
- stop = sanity_check($stdin.gets.chomp.gsub(",","."))
150
- break if test_input(actual.to_f, stop.to_f)
151
- end
152
- [volume, target, actual, stop]
153
- end
154
129
  end
data/rirera.gemspec CHANGED
@@ -1,16 +1,17 @@
1
1
  Gem::Specification.new do |s|
2
- s.name = 'rirera'
3
- s.version = '0.1.3'
4
- s.date = Time.now.strftime('%Y-%m-%d')
5
- s.summary = "Risk Reward Ratio"
6
- s.description = "A simple Risk Reward Ratio calculator"
7
- s.authors = ["Maximilian Meister"]
8
- s.email = 'mmeister@suse.de'
9
- s.rubyforge_project = 'rirera'
10
- s.files = `git ls-files`.split("\n")
11
- s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
12
- s.require_paths = ["lib"]
13
- s.homepage ='http://github.com/MaximilianMeister/rirera'
14
- s.license = 'MIT'
15
- s.add_dependency('colorize',['~> 0.7.3', '>= 0.7.3'])
2
+ s.name = 'rirera'
3
+ s.version = '0.1.4'
4
+ s.date = Time.now.strftime('%Y-%m-%d')
5
+ s.summary = "Risk Reward Ratio"
6
+ s.description = "A simple Risk Reward Ratio calculator"
7
+ s.authors = ["Maximilian Meister"]
8
+ s.email = 'mmeister@suse.de'
9
+ s.rubyforge_project = 'rirera'
10
+ s.files = `git ls-files`.split("\n")
11
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
12
+ s.bindir = 'bin'
13
+ s.require_paths = ["lib"]
14
+ s.homepage = 'http://github.com/MaximilianMeister/rirera'
15
+ s.license = 'MIT'
16
+ s.post_install_message = 'Happy trading!'
16
17
  end
metadata CHANGED
@@ -1,35 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rirera
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Maximilian Meister
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-12-10 00:00:00.000000000 Z
12
- dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: colorize
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - "~>"
18
- - !ruby/object:Gem::Version
19
- version: 0.7.3
20
- - - ">="
21
- - !ruby/object:Gem::Version
22
- version: 0.7.3
23
- type: :runtime
24
- prerelease: false
25
- version_requirements: !ruby/object:Gem::Requirement
26
- requirements:
27
- - - "~>"
28
- - !ruby/object:Gem::Version
29
- version: 0.7.3
30
- - - ">="
31
- - !ruby/object:Gem::Version
32
- version: 0.7.3
11
+ date: 2014-12-20 00:00:00.000000000 Z
12
+ dependencies: []
33
13
  description: A simple Risk Reward Ratio calculator
34
14
  email: mmeister@suse.de
35
15
  executables:
@@ -50,7 +30,7 @@ homepage: http://github.com/MaximilianMeister/rirera
50
30
  licenses:
51
31
  - MIT
52
32
  metadata: {}
53
- post_install_message:
33
+ post_install_message: Happy trading!
54
34
  rdoc_options: []
55
35
  require_paths:
56
36
  - lib