Módulo:IJC

Fonte: Wikiversidade

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


local p = {}

local gp = function(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

local gu = function(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)..'==='--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

local glg = function(content)
	local content = content
	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).."===Objetivos de aprendizado==="..string.char(10)..learning_goals
	else
		return learning_goals
	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 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,'</ref>',1,true)
		
		if eoc_aux and eoc then
			sub_content = string.sub(sub_content,1,eoc-6)
			local eop_aux, eop = string.find(sub_content,' || ',1,true)
	
			if eop_aux and eop then
				phrase = string.sub(sub_content, 1, eop_aux-1)
				ref = string.sub(sub_content, eop+6)
			end
		end
	end
	return phrase..frame:extensionTag{ name = 'ref', content = ref}..'<sup>[[File:Blue_pencil.svg|10px|link='..title..'#'..id..']]</sup>'
end

return p