Este módulo realiza funções de administração de conteúdos do curso Introdução ao Jornalismo Científico.


local p = {}

function glg(content, level)
	local content = content
	local level = level or "==="
	local learning_goals = ""
	local idx = string.find(content, '*learningGoals=', 1, true)
	if idx then
		content = string.sub(content, idx+15)
		table_content = mw.text.split(content,"*learningGoals=")
		learning_goals = gp(gp(table_content[1],'*numThreads'))
		return string.char(10)..string.char(10)..level.."Objetivos de aprendizado"..level..string.char(10)..learning_goals
	else
		return learning_goals
	end
end

function gp(content, sep)
	local sep = sep or '='
	local eoc = mw.ustring.find(content, sep , 1, true)
	
	return string.sub(mw.ustring.sub(content,1,eoc),1,-2)
end

function gu(content)
	local content = content
	local unit = {}
	local idx = string.find(content, '==unit|', 1, true)
	if idx then
		content = string.sub(content, idx+7)
		table_content = mw.text.split(content,"==unit|")
		for k, v in ipairs(table_content) do
			unit[#unit+1] = '==='..gp(v)..'==='..glg(v,"====")--string.sub(mw.ustring.sub(v,1,mw.ustring.find(v, '=' , 1, true)),1,-2)
		end
		return string.char(10)..string.char(10)..table.concat(unit,string.char(10)..string.char(10))
	else
		return ''
	end
end

function p.gs(frame)
	local title = 'Introdução ao Jornalismo Científico/MoocIndex'
	local content = mw.title.new(title):getContent()
	local lesson = {}
	local idx = string.find(content, '=lesson|' , 1, true)
	
	content = string.sub(content, idx+8)
	table_content = mw.text.split(content,"=lesson|")

	for k, v in ipairs(table_content) do
		lesson[#lesson+1] = '=='..gp(v)..'=='..gu(v)..glg(v)..string.char(10)..string.char(10)--string.sub(mw.ustring.sub(v,1,mw.ustring.find(v, '=' , 1, true)),1,-2)
	end
	
	return table.concat(lesson)
end

-------------------------------------------------------------------------------
-- gc (acrônimo para get content) pega o texto de uma linha da tabela de
-- conteúdos dinâmicos do curso de Introdução ao Jornalismo Científico.
-- "id" é um identificador único de uma linha da tabela
-------------------------------------------------------------------------------

function p.gc(frame)
	local id = frame.args.id or frame.args[1] or '1'
	local title = 'Introdução ao Jornalismo Científico/Conteúdos dinâmicos'
	local content = mw.title.new(title):getContent()
	local sub_content, phrase, ref = "", "", ""
	local refs = {}
	
	local index_ini, index_end = string.find(content, 'id=' .. '"' .. id .. '"', 1, true)
	
	if index_ini and index_end then
		sub_content = string.sub(content, index_ini+9)
		local eoc_aux, eoc = string.find(sub_content,'id="botao_' .. id .. '"',1,true)
		
		if eoc_aux and eoc then
			sub_content = string.sub(sub_content,1,eoc)
			local phrase_ini, phrase_end = string.find(sub_content,'id="texto_' .. id .. '"',1,true)
			local ref_ini, ref_end = string.find(sub_content,'id="ref_' .. id .. '"',1,true)
			local aula_ini, aula_end = string.find(sub_content,'id="aula_' .. id .. '"',1,true)
			
			if phrase_ini and phrase_end then
				phrase = string.sub(sub_content, phrase_end+4, ref_ini-3)
			end
			if ref_ini and ref_end then
				ref = string.sub(sub_content, ref_end+4, aula_ini-3)
				for ref_match in ref:gmatch("<ref>(.-)<\/ref>") do
					table.insert(refs, frame:extensionTag{ name = 'ref', content = ref_match}..'<sup>[[File:Blue_pencil.svg|10px|link='..title..'#'..id..']]</sup>')
				end
				for ref_match in ref:gmatch("<ref name=.->(.-)<\/ref>") do
					table.insert(refs, frame:extensionTag{ name = 'ref', content = ref_match}..'<sup>[[File:Blue_pencil.svg|10px|link='..title..'#'..id..']]</sup>')
				end
			end
		end
	end
	return phrase..table.concat(refs)
end

return p