Documentation for this module may be created at Module:έλεγχος/δοκιμές/τεκμηρίωση

export = {}
local Lf = {}
local Ld = {}
Ld['γλώσσες'] = mw.loadData("Module:Languages")
--Ld['μέρη του λόγου'] = mw.loadData("Module:μέρη του λόγου")

--αντιγραφή από το w:Module:Redirect
-- Gets a mw.title object, using pcall to avoid generating script errors if we
-- are over the expensive function count limit (among other possible causes).
Lf[''] = function (...)
    local lc = {}
    lc['οκ'], lc['αντικείμενο'] = pcall(mw.title.new, ...)
    if lc['οκ'] then
        return lc['αντικείμενο']
    else
        return nil
    end
end

--Προϋπόθεση να μην υπάρχουν \n σε nowiki (ή σε παρόμοια) που ΔΕΝ οδηγούν σε αλλαγή γραμμής
Lf['χωρισμός σε ενότητες'] = function(wikitext)
    --splittedlines = wikitext.splitlines(False)
    a = 1

end

--από en Module:User:Wikitiki89/split
Lf['χωρισμός σε γραμμές'] = function(theUtext)
    local lc = {}
    lc['γραμμές'] = {}
    lc['μήκος'] = mw.ustring.len(theUtext)
    lc['αρχή'] = 1
    while true do
        lc['από'], lc['μέχρι'] = mw.ustring.find(theUtext, '\n', lc['αρχή'])
        if lc['από'] == nil then
            lc['γραμμές'][#lc['γραμμές'] + 1] = mw.ustring.sub(theUtext, lc['αρχή'])
            break
        end
        if lc['μέχρι'] < lc['αρχή'] then
            error("Infinite split (position: " .. lc['αρχή'] .. ")")
        end
        lc['γραμμές'][#lc['γραμμές'] + 1] = mw.ustring.sub(theUtext, lc['αρχή'], lc['από'])
        lc['αρχή'] = lc['μέχρι'] + 1
    end
    return lc['γραμμές']
end

get_sections = function(pagetitle, wikitext)
    local lc = {}
    local sectionsre = "(=+)%s-([^=]+)%s-%1(.-)"
    lc['τίτλος'] = pagetitle
    lc['το κείμενο'] = wikitext
    lc['γραμμές'] = Lf['χωρισμός σε γραμμές'](lc['το κείμενο'])
    mw.log('logging:' .. type(lc['γραμμές']))
    if lc['γραμμές'] == nil then
        return {}
    end
    lc['ενότητες'] = {}
    lc['ενότητες'][-1] = {}
    lc['ενότητες'][-1]['βάθος'] = 0
    lc['ενότητες'][-1]['τίτλος'] = ''
    lc['ενότητες'][-1]['σκουπίδια'] = ''
    lc['ενότητες'][-1]['προβλήματα'] = ''
    lc['ενότητες'][-1]['χωρίς γλώσσα'] = false
    lc['ενότητες'][-1]['χωρίς γλωσσική ταξινόμηση'] = false
    lc['ενότητες'][-1]['χωρίς υποενότητες'] = ''
    lc['ενότητες'][0] = {}
    lc['ενότητες'][0]['βάθος'] = 1
    lc['ενότητες'][0]['τίτλος'] = ''
    lc['ενότητες'][0]['αρχικό κείμενο τίτλου'] = ''
    lc['ενότητες'][0]['iso'] = ''
    lc['ενότητες'][0]['πρότυπο'] = ''
    lc['ενότητες'][0]['είναι μέρος του λόγου'] = false
    lc['ενότητες'][0]['περιεχομενο'] = ''
    local langcounter = 0

    for k, myline in pairs(lc['γραμμές']) do
    	local thesigns,theinside,therest = mw.ustring.match(myline, sectionsre)
    	if thesigns == '==' then --γλώσσα ή άλλο;
    		if mw.ustring.len(theinside) > 7 then
    			
	    		--mw.log('thematch1:' .. theinside)
	    		if mw.ustring.sub(theinside, -3) == "-}}" and mw.ustring.sub(theinside,1,3) == "{{-" then
	    			theiso = mw.ustring.sub(theinside,4,-4)
	    			--mw.log('iso:' .. theiso)
	    			if Ld['γλώσσες'][theiso] ~= nil then
	    				langcounter = langcounter + 1
	    				lc['ενότητες'][langcounter] = {}
	    				lc['ενότητες'][langcounter]['κλείδα γλώσσας'] = ''
	    				lc['ενότητες'][langcounter]['στοιχεία ενότητας'] = {}
	    				lc['ενότητες'][langcounter]['στοιχεία ενότητας']['υποενότητες'] = {}
	    				lc['ενότητες'][langcounter]['στοιχεία ενότητας']['βάθος'] = 2
	    				lc['ενότητες'][langcounter]['στοιχεία ενότητας']['τίτλος'] = theinside
	    				lc['ενότητες'][langcounter]['στοιχεία ενότητας']['αρχικό κείμενο τίτλου'] = myline
	    				lc['ενότητες'][langcounter]['στοιχεία ενότητας']['iso'] = theiso
	    				lc['ενότητες'][langcounter]['στοιχεία ενότητας']['πρότυπο'] = '' --??
	    				lc['ενότητες'][langcounter]['στοιχεία ενότητας']['περιεχομενο'] = ''
	    				--mw.log('lang:' .. Ld['γλώσσες'][theiso]['name'])
	    				
	    			end
	    		end
	    	end
		end
        --lc['αποτέλεσμα'] = lc['αποτέλεσμα'] .. ' -------' .. k .. '\n' .. myline
    end
    return lc['ενότητες']
end

export['test'] = function(lemmatitle) --check with: print(p['test']('go')) or print(p['test']('καλός'))
    local lc = {}
    lc['το λήμμα'] = mw.title.new(lemmatitle)
    lc['το κείμενο'] =lc['το λήμμα']:getContent()

    lc['ενότητες'] =  get_sections(lemmatitle,lc['το κείμενο'])
    lc['αποτέλεσμα'] = ''
    for k, atable in pairs(lc['ενότητες']) do
    	if atable['βάθος'] == nil then
    		lc['αποτέλεσμα'] = lc['αποτέλεσμα'] .. '\n##' .. tostring(k) .. ":".. atable['στοιχεία ενότητας']['iso']
    	else
    		lc['αποτέλεσμα'] = lc['αποτέλεσμα'] .. '\n**' .. tostring(k) .. " -βάθος:" .. tostring(atable['βάθος'])
    	end
    end
    lc['αποτέλεσμα'] = lc['αποτέλεσμα'] .. '\n num?' .. tostring(#lc['ενότητες'])
    return lc['αποτέλεσμα']
end

return export