Module:Infobox song

local p = {}

function p._track_listing(song, album) local cargo = mw.ext.cargo local results = cargo.query(		'track_listings',		'track, song, song_page_title',		{			where = 'work = "' .. album .. '" AND main_listing = 1',			orderBy = 'track_listings._ID ASC'		}	)

local root = mw.html.create local olRoot = root:tag('ol') local has_match = false

for r = 1, #results do		local result = results[r] local page = mw.title.new(result['song_page_title'])

wikitext = result['song'] if page.exists then wikitext =  .. result['song'] ..  end

olRoot:tag('li') :attr('value', result['track']) :wikitext(wikitext)

if result['song'] == song then has_match = true end end if has_match then return tostring(root) end return ''

-- local tableRoot = root:tag('table')

-- for r = 1, #results do	-- 	local row = tableRoot:tag('tr') -- 	local result = results[r] -- 	row:tag('td') -- 		:css('padding-right', '5px') -- 		:wikitext(result['track'] .. '.') -- 	row:tag('td'):wikitext( .. result['song'] .. ) -- end end

function p.track_listing(frame) local song = frame.args[1] local album = frame.args[2] return p._track_listing(song, album) end

function p._studio_sessions(song) return '' -- local cargo = mw.ext.cargo -- local results = cargo.query(	-- 	'studio_sessions, recordings, songs',	-- 	'studio_sessions._pageName=page',	-- 	{	-- 		where = 'songs._pageName = "' .. song .. '"',	-- 		join = 'recordings.song=songs.name,studio_sessions._pageName=recordings._pageName',	-- 		groupBy = 'studio_sessions._pageName',	-- 		orderBy = 'studio_sessions.date_from ASC'	-- 	}	-- )

-- if 0 == #results then -- 	return '' -- elseif 1 == #results then -- 	return  .. results[1]['page'] ..  -- end

-- local root = mw.html.create -- local ulRoot = root:tag('ul') -- 	:addClass('studio-sessions')

-- local sessions = {} -- for r = 1, #results do	-- 	local page = results[r]['page']

-- 	if page ~= nil and page ~= '' then -- 		ulRoot:tag('li') -- 			:wikitext( .. page .. ) -- 	end -- end

-- return tostring(root) -- return table.concat(sessions, ' &bull; ') end

function p.studio_sessions(frame) local album = frame.args[1] return p._studio_sessions(album) end

return p