Jump to content

Nueva Funcion: write_or_read


PACI

Recommended Posts

Hola.

Bueno, ultimamente anduve trabajando mucho con la edición de archivos por quest, y decidi hacer una función que vamos, me reduce muchísimo el trabajo.

 

La función es: write_or_read(path, file, act, text, line)

 

Que sirve para escribir, reescribir y leer un archivo, o leer una línea especifica de un archivo.

 

Notas:

Ruta del archivo;

Nombre del archivo;

Acción;

Texto;

Línea.

 

Las acciónes:

Como os dije, esta función puede leer o escribir en un archivo, para eso en act se pone lo que se quiere que haga:

 

- Para leer se puede usar:

leer, read, l (L minusculo) u r.

 

La Acción que queréis tomar hace influenciar a lo que tengáis que poner en text, si queréis leer el contenido de un archivo, obviamente no vais a colocar ahí ningun texto.

Así que, la función de leer se divide en otras 3 funciones:

 

-> Leer la primera línea; (line, linea, o l)

-> Leer el archivo entero; (all, todo, o entero)

-> Leer una línea específica*. (sline, lineas, o ls) -> sline = specific line; lineas = linea especifica.

 

*Para leer una línea específica hay que colocar, como último argumento de la función el número de la línea que hay que leer.

 

- Para escribir se puede usar 2 tipos:

1. sobreescribir, rewrite, s u re.

2. escribir, write, e, a+

 

Lo que hace cada uno es muy simple, el 1. hace que borre el contenido del archivo y escriba de nuevo el texto que habéis puesto. El 2. apenas lo adiciona.

 

Nota: No se necesita el último argumento, line, para escribir.

 

Otros:

Para tener menos trabajo aún, hice que, si el directório o el archivo seleccionados no existan, se creen solos.

Las tabulaciones en el texto se hacen donde siempre, en el botóncito que está encima del caps lock. Pero para hacer un cambio de línea, hay que escribir __enter__.

 

Ejemplos:

 

--> Escribiendo:

 

 

quest ejemplo_escribiendo_1 begin	state start begin		when login begin			write_or_read("/usr/home/game/share", "logins", "escribir", "Hola")			-- Escribirá "Hola" en el archivo logins localizado en /usr/home/game/share		end	endend------------------------------------------------------------------------------------------------quest ejemplo_escribiendo_2 begin	state start begin		when login begin			write_or_read("/usr/home/game/share", "logins", "sobreescribir", "Adiós")			-- Borrará el contenido del archivo logins localizado en /usr/home/game/share y escribirá "Adiós"		end	endend------------------------------------------------------------------------------------------------quest ejemplo_escribiendo_3 begin	state start begin		when login begin			write_or_read("/usr/home/game/share", "logins", "escribir", "Hola	Adiós")			-- Escribirá "Hola	Adiós" en el archivo logins localizado en /usr/home/game/share		end	endend------------------------------------------------------------------------------------------------quest ejemplo_escribiendo_4 begin	state start begin		when login begin			write_or_read("/usr/home/game/share", "logins", "sobreescribir", "Hola	Adiós")			-- Borrará el contenido del archivo logins situado en /usr/home/game/share y escribirá "Hola	Adiós"		end	endend------------------------------------------------------------------------------------------------quest ejemplo_escribiendo_5 begin	state start begin		when login begin			write_or_read("/usr/home/game/share", "logins", "sobreescribir", "Hola__enter__Adiós")			-- Escribirá:			-- "Hola			-- Adiós"			-- En el archivo logins localizado en /usr/home/game/share		end	endend

 

 

--> Leyendo:

 

 

quest ejemplo_leyendo_1 begin	state start begin		when login begin			chat(write_or_read("/usr/home/game/share", "logins", "leer", "todo"))			-- Leerá el archivo logins entero localizado /usr/home/game/share		end	endend------------------------------------------------------------------------------------------------quest ejemplo_leyendo_2 begin	state start begin		when login begin			chat(write_or_read("/usr/home/game/share", "logins", "leer", "linea"))			-- Leerá la primera línea del archivo logins localizado en /usr/home/game/share		end	endend------------------------------------------------------------------------------------------------quest ejemplo_leyendo_3 begin	state start begin		when login begin			chat(write_or_read("/usr/home/game/share", "logins", "leer", "lineas", 4))			-- Leerá la línea 4 del archivo logins localizado en /usr/home/game/share		end	endend

 

 

Y por fin, la función, que hay que colocarla en el questlib.lua:

function write_or_read(path, file, act, text, line)	local type_	if os.execute('cd '..path) ~= 0 then os.execute('mkdir '..path)	elseif os.execute('[ -f '..path..'/'..file..' ] && echo "s" || echo "n"') == 'n' then 		os.execute('cd '..path..' && touch '..file)	end	if act == 'leer' or act == 'read' or act == 'l' or act == 'r' then type_ = 'r'	elseif act == 'sobreescribir' or act == 'rewrite' or act == 's' or act == 're' then type_ = 'w'	elseif act == 'escribir' or act == 'write' or act == 'e' or act == 'a+' then type_ = 'a+' end	local f = io.open(path..'/'..file, type_)	if type_ == 'r' then		if text == 'all' or text == 'todo' or text == 'entero' then return f:read('*all')		elseif text == 'line' or text == 'linea' or text == 'l' then return f:read('*l')		elseif text == 'sline' or text == 'lineas' or text == 'ls' then			local ltable = {}			for i in f:lines() do table.insert(ltable, i) end			f:close()			return ltable[line]		end	elseif type_ == 'a+' or type_ == 'w' then		if string.find(text, '__enter__') ~= 0 then			f:write(string.gsub(text, '__enter__', 'n', string.find(text,'__enter__'))..'n')		else 			f:write(text..'n')		end		f:close()	endend
Saludos ^^
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...