92 lines
2.0 KiB
Go
92 lines
2.0 KiB
Go
package luaplugin
|
|
|
|
import lua "github.com/yuin/gopher-lua"
|
|
|
|
// registerTrackAPI adds the read-only cliamp.track.* table.
|
|
func registerTrackAPI(L *lua.LState, cliamp *lua.LTable, state *StateProvider) {
|
|
tbl := L.NewTable()
|
|
|
|
L.SetField(tbl, "title", L.NewFunction(func(L *lua.LState) int {
|
|
if state.TrackTitle != nil {
|
|
L.Push(lua.LString(state.TrackTitle()))
|
|
} else {
|
|
L.Push(lua.LString(""))
|
|
}
|
|
return 1
|
|
}))
|
|
|
|
L.SetField(tbl, "artist", L.NewFunction(func(L *lua.LState) int {
|
|
if state.TrackArtist != nil {
|
|
L.Push(lua.LString(state.TrackArtist()))
|
|
} else {
|
|
L.Push(lua.LString(""))
|
|
}
|
|
return 1
|
|
}))
|
|
|
|
L.SetField(tbl, "album", L.NewFunction(func(L *lua.LState) int {
|
|
if state.TrackAlbum != nil {
|
|
L.Push(lua.LString(state.TrackAlbum()))
|
|
} else {
|
|
L.Push(lua.LString(""))
|
|
}
|
|
return 1
|
|
}))
|
|
|
|
L.SetField(tbl, "genre", L.NewFunction(func(L *lua.LState) int {
|
|
if state.TrackGenre != nil {
|
|
L.Push(lua.LString(state.TrackGenre()))
|
|
} else {
|
|
L.Push(lua.LString(""))
|
|
}
|
|
return 1
|
|
}))
|
|
|
|
L.SetField(tbl, "year", L.NewFunction(func(L *lua.LState) int {
|
|
if state.TrackYear != nil {
|
|
L.Push(lua.LNumber(state.TrackYear()))
|
|
} else {
|
|
L.Push(lua.LNumber(0))
|
|
}
|
|
return 1
|
|
}))
|
|
|
|
L.SetField(tbl, "track_number", L.NewFunction(func(L *lua.LState) int {
|
|
if state.TrackNumber != nil {
|
|
L.Push(lua.LNumber(state.TrackNumber()))
|
|
} else {
|
|
L.Push(lua.LNumber(0))
|
|
}
|
|
return 1
|
|
}))
|
|
|
|
L.SetField(tbl, "path", L.NewFunction(func(L *lua.LState) int {
|
|
if state.TrackPath != nil {
|
|
L.Push(lua.LString(state.TrackPath()))
|
|
} else {
|
|
L.Push(lua.LString(""))
|
|
}
|
|
return 1
|
|
}))
|
|
|
|
L.SetField(tbl, "is_stream", L.NewFunction(func(L *lua.LState) int {
|
|
if state.TrackIsStream != nil {
|
|
L.Push(lua.LBool(state.TrackIsStream()))
|
|
} else {
|
|
L.Push(lua.LFalse)
|
|
}
|
|
return 1
|
|
}))
|
|
|
|
L.SetField(tbl, "duration_secs", L.NewFunction(func(L *lua.LState) int {
|
|
if state.TrackDuration != nil {
|
|
L.Push(lua.LNumber(state.TrackDuration()))
|
|
} else {
|
|
L.Push(lua.LNumber(0))
|
|
}
|
|
return 1
|
|
}))
|
|
|
|
L.SetField(cliamp, "track", tbl)
|
|
}
|