qticker 1.0.5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 494c931926f1f8c3f6192e66db4a075a35a56198
4
+ data.tar.gz: b2f124d4e050d554f5681108b28e0f62ce82424f
5
+ SHA512:
6
+ metadata.gz: 67182ffe4f96c7427ac6822a603e2884786859dcd8c27074d35d2a2b0acbe13a78647cce4d052a48f1ad8458a795aae55dc06ab864ce336601b01831c783ba93
7
+ data.tar.gz: 2e0286a1c602d99806552cad09ead288e5d4387fc9f0c1722b4d94de2f2f677e514fea9532d4a3cf84425344f0679b553603071f9b0edffafc9cbfd2e9d930aa
data/bin/qticker ADDED
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require_relative '../config/environment.rb'
4
+
5
+ cli = MainCli.new
6
+
7
+ cli.welcome("Quick Ticker", -> {cli.ticker_symbol_prompt})
@@ -0,0 +1,15 @@
1
+ require 'nokogiri'
2
+ require 'require_all'
3
+ require 'word_wrap'
4
+ require 'open-uri'
5
+ require 'word_wrap/core_ext'
6
+
7
+ require_relative '../lib/cli.rb'
8
+ require_relative '../lib/table.rb'
9
+ require_relative '../lib/stock_attr.rb'
10
+ require_relative '../lib/desc.rb'
11
+ require_relative '../lib/dev_cli.rb'
12
+ require_relative '../lib/main_cli.rb'
13
+ require_relative '../lib/quote.rb'
14
+ require_relative '../lib/scraper.rb'
15
+ require_relative '../lib/stock.rb'
data/lib/cli.rb ADDED
@@ -0,0 +1,51 @@
1
+ class Cli
2
+
3
+ attr_accessor :stock, :scraper
4
+
5
+ def initialize(cli = nil)
6
+ self.scraper = Scraper.new(self)
7
+ end
8
+
9
+ def welcome(mode_name, mode_lambda)
10
+ print "\nWelcome to " + mode_name + "!\n"
11
+ mode_lambda.()
12
+ end
13
+
14
+ def display_quote
15
+ self.stock.display
16
+ self.stock.quote.display
17
+ self.stock_option_menu("Display a company description", -> { self.display_desc })
18
+ end
19
+
20
+ def display_desc
21
+ self.stock.display
22
+ self.stock.desc.display
23
+ self.stock_option_menu("Redisplay your quote", -> { self.display_quote })
24
+ end
25
+
26
+ def stock_option_menu(opt_1_string, opt_1_lambda = nil)
27
+ gets
28
+ puts "1. #{opt_1_string} for #{self.stock.symbol}."
29
+ puts "2. Enter another ticker symbol."
30
+ puts "Enter any other key to exit."
31
+ gets.strip.gsub('.', '')
32
+ end
33
+
34
+ def symbol_validation(symbol, valid, fixture_url = nil)
35
+ # stock_array[0] is a stock if one was succesfully created and nil otherwise.
36
+ # stock_array[1] indicates whether the symbol cooresponds to a mutual fund.
37
+ stock_array = self.scraper.load_gfs(symbol, fixture_url)
38
+ self.stock = stock_array[0]
39
+ valid = self.stock.nil? ? false : true
40
+ puts "Invalid ticker symbol." if !valid
41
+ puts "Mutual funds are not currently not supported." if stock_array[1]
42
+ self.display_quote if valid
43
+ # returns an array.
44
+ # array[0] - whether the entered symbol was valid
45
+ # array[1] = stock_array[1] - whether the entered
46
+ # symbol was a mutal fund.
47
+ [valid, stock_array[1]]
48
+ end
49
+
50
+
51
+ end
data/lib/desc.rb ADDED
@@ -0,0 +1,8 @@
1
+ class Desc < StockAttr
2
+
3
+ def display
4
+ print "#{sector} : #{industry}\n\n"
5
+ puts "#{summary}".fit
6
+ end
7
+
8
+ end
data/lib/dev_cli.rb ADDED
@@ -0,0 +1,58 @@
1
+ class DevCli < Cli
2
+
3
+ attr_accessor :main
4
+
5
+ def initialize(main_cli)
6
+ super(main_cli)
7
+ self.main = main_cli
8
+ end
9
+
10
+ def option_menu
11
+ puts "\nPlease select a fixture to load:"
12
+ puts "1. Load MSFT.html"
13
+ puts "2. Load IBM.html"
14
+ puts "3. Load QQQ.html"
15
+ puts "4. Load FBIOX.html"
16
+ puts "Or enter any other key to return to"
17
+ puts "your regularly scheduled program."
18
+ input = gets.strip.gsub('.', '')
19
+ path = File.expand_path(File.dirname(__FILE__)).chomp('bin') + '/fixtures/'
20
+ if input == "1"
21
+ valid = self.symbol_validation("MSFT", false, path + "MSFT.html")
22
+ elsif input == "2"
23
+ valid = self.symbol_validation("IBM", false, path + "IBM.html")
24
+ elsif input == "3"
25
+ valid = self.symbol_validation("QQQ", false, path + "QQQ.html")
26
+ elsif input == "4"
27
+ valid = self.symbol_validation("FBIOX", false, path + "FBIOX.html")
28
+ else
29
+ puts "Leaving Developer Mode and resuming program."
30
+ end
31
+ return nil
32
+ end
33
+
34
+ def stock_option_menu(opt_1_string, opt_1_lambda)
35
+ input = super(opt_1_string, opt_1_lambda)
36
+ if input == "1"
37
+ opt_1_lambda.()
38
+ elsif input == "2"
39
+ self.option_menu
40
+ else
41
+ puts "Leaving Developer Mode and resuming program."
42
+ return nil
43
+ end
44
+ end
45
+
46
+ def symbol_validation(symbol, valid, fixture_url = nil)
47
+ valid_array = super(symbol, valid, fixture_url)
48
+ if valid_array[1] # whether entered symbol was a mutual fund
49
+ puts ""
50
+ option_menu
51
+ end
52
+ valid_array[0] # returns whether entered symbol was valid
53
+ end
54
+
55
+
56
+
57
+
58
+ end