rirera 0.1.3 → 0.1.4

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.
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