Skip to content

Instantly share code, notes, and snippets.

View psparrow's full-sized avatar

Patrick J. Sparrow psparrow

View GitHub Profile
@psparrow
psparrow / stats.html
Last active February 27, 2024 02:48
My Phish Stats
1/3/03<br>
1/4/03<br>
7/30/03<br>
8/2/03<br>
8/3/03<br>
11/28/03<br>
11/29/03<br>
8/14/04<br>
8/15/04<br>
3/8/09<br>
module Funk
def self.[](key)
klass = key.to_s.split(/_/).map(&:capitalize).join
Module.new do
define_singleton_method(:included) do |base|
base.define_singleton_method(key) do
Object.const_get(klass)
end
end
@psparrow
psparrow / candlestick.rb
Created February 2, 2021 21:08
Stock Market OOP - Candlestick Class
class Candlestick
attr_reader :open, :close, :high, :low
def initialize(open, close, high, low)
@open = open
@close = close
@high = high
@low = low
end
end
@psparrow
psparrow / trade.rb
Created February 2, 2021 20:28
Stock Market OOP - Buying and Selling
account = Account.new
account.portfolio # => {}
account.buy(:SNDL, 100)
account.portfolio # => { SNDL: 100 }
account.sell(:SNDL, 25)
account.portfolio # => { SNDL: 75 }
account.buy(:AMC, 10)
@psparrow
psparrow / account.rb
Created February 2, 2021 20:24
Stock Market OOP - Behavior
class Account
attr_reader :portfolio
def initialize
@portfolio = Hash.new(0)
end
def buy(ticker, number_of_shares)
@portfolio[ticker] += number_of_shares
end
@psparrow
psparrow / candlestick.rb
Last active February 2, 2021 20:11
Stock Market OOP - Methods
class Candlestick
# ...
def upper_wick?
high > [open, close].max
end
def lower_wick?
low < [open , close].min
end
@psparrow
psparrow / candlesticks.rb
Created February 2, 2021 19:56
Stock Market OOP - Candlestick Objects
candlestick = Candlestick.new(1.05, 1.2, 1.23, 1.0)
candlestick.open # => 1.05
candlestick.close # => 1.2
candlestick.high # => 1.23
candlestick.low # => 1.0
@psparrow
psparrow / objects.rb
Last active February 2, 2021 19:44
Stock Market OOP - Objects
ticker = 'AMC'
trading_is_fun = true
favorite_tickers = ['AMC', 'GME', 'SNDL']
target_price = 2.50
@psparrow
psparrow / 13_implement_comparison.rb
Last active January 22, 2020 19:57
Effective Ruby - 13: Implement comparison via <=>
# 13: Implement Comparison Via "<=>" and Comparable module
#
# Worthington's Law: A person who makes more money than you is
# better than you, and is therefore beyond criticism.
#
# - Mr. Show w/ Bob and David (https://www.youtube.com/watch?v=y6WEo9Ix_7Q)
class Person
attr_reader :name, :net_worth
@psparrow
psparrow / roll_your_own_ruby_framework__controller.rb
Created December 23, 2019 17:16
Roll Your Own Ruby Framework - Controller
post '/products' do
if CreateProduct.call(params['product'])
session[:message] = 'Success!'
redirect '/products'
else
render_new_product_form
end
end
class CreateProduct