forked from minetest-mods/mesecons
		
	Add print command print(string in quotes or condition, can be concatenated using comma)
This commit is contained in:
		| @@ -141,8 +141,12 @@ end | ||||
|  | ||||
| --Code Parsing | ||||
| function yc_code_remove_commentary(code) | ||||
| 	is_string = false | ||||
| 	for i = 1, #code do | ||||
| 		if code:sub(i, i) == ":" then | ||||
| 		if code:sub(i, i) == '"' then | ||||
| 			is_string = (is_string==false) --toggle is_string | ||||
| 		end | ||||
| 		if code:sub(i, i) == ":" and is_string==false then | ||||
| 			return code:sub(1, i-1) | ||||
| 		end | ||||
| 	end | ||||
| @@ -181,6 +185,9 @@ function parse_yccode(code, pos) | ||||
| 			L = yc_command_on (params, Lvirtual) | ||||
| 		elseif command == "off" then | ||||
| 			L = yc_command_off(params, Lvirtual) | ||||
| 		elseif command == "print" then | ||||
| 			su = yc_command_print(params, eeprom, yc_merge_portstates(Lreal, Lvirtual)) | ||||
| 			if su ~= true then return nil end | ||||
| 		elseif command == "sbi" then | ||||
| 			new_eeprom, Lvirtual = yc_command_sbi (params, eeprom, yc_merge_portstates(Lreal, Lvirtual), Lvirtual) | ||||
| 			if new_eeprom == nil then return nil | ||||
| @@ -227,13 +234,17 @@ function parse_get_params(code, starti) | ||||
| 	i = starti | ||||
| 	s = nil | ||||
| 	local params = {} | ||||
| 	local is_string = false | ||||
| 	while s ~= "" do | ||||
| 		s = string.sub(code, i, i) | ||||
| 		if s == ")" then | ||||
| 		if code:sub(i, i) == '"' then | ||||
| 			is_string = (is_string==false) --toggle is_string | ||||
| 		end | ||||
| 		if s == ")" and is_string == false then | ||||
| 			table.insert(params, string.sub(code, starti, i-1)) -- i: ) i+1 after ) | ||||
| 			return params, i + 1 | ||||
| 		end | ||||
| 		if s == "," then | ||||
| 		if s == "," and is_string == false then | ||||
| 			table.insert(params, string.sub(code, starti, i-1)) -- i: ) i+1 after ) | ||||
| 			starti = i + 1 | ||||
| 		end | ||||
| @@ -315,6 +326,22 @@ function yc_command_off(params, L) | ||||
| 	return L | ||||
| end | ||||
|  | ||||
| function yc_command_print(params, eeprom, L) | ||||
| 	local s = "" | ||||
| 	for i, param in ipairs(params) do | ||||
| 		if param:sub(1,1) == '"' and param:sub(#param, #param) == '"' then | ||||
| 			s = s..param:sub(2, #param-1) | ||||
| 		else | ||||
| 			r = yc_command_parsecondition(param, L, eeprom) | ||||
| 			if r == "1" or r == "0" then | ||||
| 				s = s..r | ||||
| 			else return nil end | ||||
| 		end | ||||
| 	end | ||||
| 	print(s) --don't remove | ||||
| 	return true | ||||
| end | ||||
|  | ||||
| function yc_command_sbi(params, eeprom, L, Lv) | ||||
| 	if params[1]==nil or params[2]==nil or params[3] ~=nil then return nil end | ||||
| 	local status = yc_command_parsecondition(params[2], L, eeprom) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user