jbe/bsw@0: --[[-- jbe/bsw@0: string = -- part of string to be used as __format information jbe/bsw@0: encode.format_options( jbe/bsw@0: params -- arguments for format function jbe/bsw@0: ) jbe/bsw@0: jbe/bsw@0: This function is used by encode.format_info(...). jbe/bsw@0: jbe/bsw@0: --]]-- jbe/bsw@0: jbe/bsw@0: function encode.format_options(params) jbe/bsw@0: local params = params or {} jbe/bsw@0: local result_parts = {} jbe/bsw@0: for key, value in pairs(params) do jbe/bsw@0: if type(key) == "string" then jbe/bsw@0: if string.find(key, "^[A-Za-z][A-Za-z0-9_]*$") then jbe/bsw@0: table.insert(result_parts, "-") jbe/bsw@0: table.insert(result_parts, key) jbe/bsw@0: table.insert(result_parts, "-") jbe/bsw@0: local t = type(value) jbe/bsw@0: if t == "string" then jbe/bsw@0: value = string.gsub(value, "\\", "\\\\") jbe/bsw@0: value = string.gsub(value, "'", "\\'") jbe/bsw@0: table.insert(result_parts, "'") jbe/bsw@0: table.insert(result_parts, value) jbe/bsw@0: table.insert(result_parts, "'") jbe/bsw@0: elseif t == "number" then jbe/bsw@0: table.insert(result_parts, tostring(value)) jbe/bsw@0: elseif t == "boolean" then jbe/bsw@0: table.insert(result_parts, value and "true" or "false") jbe/bsw@0: else jbe/bsw@0: error("Format parameter table contained value of unsupported type " .. t .. ".") jbe/bsw@0: end jbe/bsw@0: else jbe/bsw@0: error('Format parameter table contained invalid key "' .. key .. '".') jbe/bsw@0: end jbe/bsw@0: end jbe/bsw@0: end jbe/bsw@0: return table.concat(result_parts) jbe/bsw@0: end