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

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

Loading…
Cancel
Save