Refactored profile

master
Michael Dvorkin 11 years ago
parent a26b37bb46
commit 2c40c7f8bd
  1. 44
      lib/profile.go
  2. 16
      mop.go

@ -9,49 +9,53 @@ import (
"strings" "strings"
) )
const rcfile = "/.moprc" const moprc = "/.moprc"
type Profile struct { type Profile struct {
MarketRefreshRate int MarketRefresh int
QuotesRefreshRate int QuotesRefresh int
Tickers []string Tickers []string
SortBy string SortBy string
SortOrder string SortOrder string
} }
var profile Profile
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
func LoadProfile() string { func (self *Profile) Initialize() *Profile {
data, err := ioutil.ReadFile(defaultProfile()) data, err := ioutil.ReadFile(self.default_file_name())
if err != nil { if err != nil {
// Set default values. // Set default values.
profile.MarketRefreshRate = 12 self.MarketRefresh = 12
profile.QuotesRefreshRate = 5 self.QuotesRefresh = 5
profile.Tickers = []string{"AAPL", "C", "GOOG", "IBM", "KO", "ORCL", "V"} self.Tickers = []string{"AAPL", "C", "GOOG", "IBM", "KO", "ORCL", "V"}
profile.SortBy = "Ticker" self.SortBy = "Ticker"
profile.SortOrder = "Desc" self.SortOrder = "Desc"
profile.Save() self.Save()
} else { } else {
json.Unmarshal(data, &profile) json.Unmarshal(data, self)
} }
return strings.Join(profile.Tickers, "+") return self
} }
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
func (profile *Profile) Save() error { func (self *Profile) Save() error {
if data, err := json.Marshal(profile); err != nil { if data, err := json.Marshal(self); err != nil {
return err return err
} else { } else {
return ioutil.WriteFile(defaultProfile(), data, 0644) return ioutil.WriteFile(self.default_file_name(), data, 0644)
}
} }
//-----------------------------------------------------------------------------
func (self *Profile) Quotes() string {
return strings.Join(self.Tickers, "+")
} }
// private
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
func defaultProfile() string { func (self *Profile) default_file_name() string {
usr, err := user.Current() usr, err := user.Current()
if err != nil { if err != nil {
panic(err) panic(err)
} }
return usr.HomeDir + rcfile return usr.HomeDir + moprc
} }

@ -3,9 +3,9 @@
package main package main
import ( import (
"github.com/michaeldv/mop/lib" `github.com/michaeldv/mop/lib`
"github.com/nsf/termbox-go" `github.com/nsf/termbox-go`
"time" `time`
) )
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
@ -17,7 +17,7 @@ func initTermbox() {
} }
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
func mainLoop(profile string) { func mainLoop(profile *mop.Profile) {
var line_editor *mop.LineEditor var line_editor *mop.LineEditor
keyboard_queue := make(chan termbox.Event) keyboard_queue := make(chan termbox.Event)
timestamp_queue := time.NewTicker(1 * time.Second) timestamp_queue := time.NewTicker(1 * time.Second)
@ -32,7 +32,7 @@ func mainLoop(profile string) {
termbox.Clear(termbox.ColorDefault, termbox.ColorDefault) termbox.Clear(termbox.ColorDefault, termbox.ColorDefault)
mop.DrawMarket() mop.DrawMarket()
mop.DrawQuotes(profile) mop.DrawQuotes(profile.Quotes())
loop: loop:
for { for {
select { select {
@ -55,14 +55,14 @@ loop:
case termbox.EventResize: case termbox.EventResize:
termbox.Clear(termbox.ColorDefault, termbox.ColorDefault) termbox.Clear(termbox.ColorDefault, termbox.ColorDefault)
mop.DrawMarket() mop.DrawMarket()
mop.DrawQuotes(profile) mop.DrawQuotes(profile.Quotes())
} }
case <-timestamp_queue.C: case <-timestamp_queue.C:
mop.DrawTime() mop.DrawTime()
case <-quotes_queue.C: case <-quotes_queue.C:
mop.DrawQuotes(profile) mop.DrawQuotes(profile.Quotes())
case <-market_queue.C: case <-market_queue.C:
mop.DrawMarket() mop.DrawMarket()
@ -76,6 +76,6 @@ func main() {
initTermbox() initTermbox()
defer termbox.Close() defer termbox.Close()
profile := mop.LoadProfile() profile := new(mop.Profile).Initialize()
mainLoop(profile) mainLoop(profile)
} }

Loading…
Cancel
Save