stringtranslate.com

Módulo: Convertir

-- Convertir un valor de una unidad de medida a otra.-- Ejemplo: {{convert|123|lb|kg}} --> 123 libras (56 kg)-- Consulte la [[:es:Guía de Template:Convert/Transwiki]] si va a copiar a otra wiki.MENOS local = '−' -- Unicode U+2212 SIGNO MENOS (UTF-8: e2 88 92)abs locales = matemáticas.abspiso local = math.floorformato local = cadena.formatolog10 local = matemáticas.log10ustring local = mw.ustringulen local = ustring.lenusub local = ustring.sub-- Opciones de configuración para mantener los valores mágicos en una ubicación.-- Los datos de conversión y el texto del mensaje se definen en módulos separados.configuración local, maxsigfignumdot local: debe ser '.' o ',' o un carácter que funcione en una expresión regularnumsep local, numsep_remove, numsep_remove2código de datos local, todas las unidadescódigo de texto localvarname local: puede ser un código para usar nombres de variables que dependen del valorlocal from_en_table -- para traducir una cadena de salida de dígitos en al idioma locallocal to_en_table -- para traducir una cadena de entrada de dígitos en el idioma local a en-- Utilice translation_table en convert/text para cambiar lo siguiente.local en_default -- true usa lang=en a menos que convert tenga lang=local o dígitos localesmétodo_grupo local = 3: código para la cantidad de dígitos que hay en un grupolocal per_word = 'per' -- para unidades como "litros por kilómetro"sufijo_plural_local = 's' - probablemente el único otro valor útil sea '' para deshabilitar los nombres de unidades en plurallocal omitsep - verdadero para omitir el separador antes del símbolo/nombre local-- Todas las unidades deben definirse en el módulo de datos. Sin embargo, para poder realizar cambios rápidos-- y experimentos, cualquier unidad desconocida se busca en un módulo de datos adicional, si existe.-- Ese módulo se incluiría solo en una pequeña cantidad de páginas, por lo que debería haber- poca sobrecarga del servidor al realizar cambios, y los cambios deberían propagarse rápidamente.módulo extra_local: nombre del módulo con unidades adicionalesunidades extra_locales -- nulas o tabla de unidades extra de módulo_extra-- Algunas opciones en la plantilla de invocación pueden establecer variables utilizadas más adelante en el módulo.local currency_text -- para un símbolo de moneda definido por el usuario: {{convert|12|$/ha|$=€}} (el euro reemplaza al dólar)función local from_en(texto)-- La entrada es una cadena que representa un número en dígitos con signo decimal '.'-- sin agrupación de dígitos (que se realiza justo después de llamar a esto).-- Devuelve la traducción de la cadena con numdot y dígitos en el idioma local.si numdot ~= '.' entoncestexto = texto:gsub('%.', numdot)finSi desde_en_table entoncestexto = texto:gsub('%d', from_en_table)fintexto de retornofinfunción local to_en(texto)-- La entrada es una cadena que representa un número en el idioma local con-- una marca decimal numdot opcional y agrupación de dígitos numsep.-- Devuelve la traducción de la cadena con el signo '.' y los dígitos en,-- y sin separadores (deben eliminarse aquí para manejar casos como este)-- numsep = '.' y numdot = ',' con entrada "1.234.567,8").Si to_en_table entoncestexto = ustring.gsub(texto, '%d', to_en_table)finSi numsep_remove entoncestexto = texto:gsub(numsep_remove, '')finsi numsep_remove2 entoncestexto = texto:gsub(numsep_remove2, '')finsi numdot ~= '.' entoncestexto = texto:gsub(numdot, '.')fintexto de retornofinfunción local decimal_mark(texto)-- Devuelve "," si el texto probablemente usa coma como signo decimal o no tiene signo decimal.-- Devuelve '.' si el texto probablemente esté usando un punto como marca decimal.-- De lo contrario, no devuelve nada (marca decimal desconocida).si no es texto:find('[.,]') entonces devuelve ',' fintexto = texto:gsub('^%-', ''):gsub('%+%d+/%d+$', ''):gsub('[Ee]%-?%d+$', '')decimal local =texto:match('^0?([.,])%d+$') otexto:match('%d([.,])%d?%d?$') otexto:coincidencia('%d([.,])%d%d%d%d+$')Si es decimal, entonces devuelve decimal fin.si texto:match('%.%d+%.') entonces devuelve ',' finsi texto:match('%,%d+,') entonces devuelve '.' finfinadd_warning local, with_separator -- declaraciones de reenvíofunción local to_en_with_check(texto, parámetros)-- Versión de to_en() para una wiki que usa numdot = ',' y numsep = '.' para comprobar-- texto (un número de entrada como una cadena) que podría haber sido copiado de enwiki.-- Por ejemplo, en '1.234' el '.' podría ser un signo decimal o un separador de grupo.-- De viwiki.Si to_en_table entoncestexto = ustring.gsub(texto, '%d', to_en_table)finsi decimal_mark(texto) == '.' entoncesoriginal local = textotexto = texto:gsub(',', '') -- por ejemplo, interpretar "1,234.5" como un valor enwikiSi parms entoncesadd_warning(parms, 0, 'cvt_enwiki_num', original, con_separador({}, texto))findemásSi numsep_remove entoncestexto = texto:gsub(numsep_remove, '')finsi numsep_remove2 entoncestexto = texto:gsub(numsep_remove2, '')finsi numdot ~= '.' entoncestexto = texto:gsub(numdot, '.')finfintexto de retornofinfunción local omit_separator(id)-- Devuelve verdadero si no debe haber ningún separador antes de id (un símbolo de unidad o nombre).-- Para zhwiki, no debe haber separador si id usa caracteres locales.--El siguiente truco debería ser una prueba suficiente.Si omite, entoncessi id:sub(1, 2) == '-{' entonces -- para la variante del idioma del contenido "-{...}-"devuelve verdaderofinsi id:byte() > 127 entonceslocal primero = usub(id, 1, 1)si primero ~= 'Å' y primero ~= '°' y primero ~= 'µ' entoncesdevuelve verdaderofinfinfindevuelve id:sub(1, 1) == '/' -- sin separador antes de las unidades como "/ha"finmódulo_ortográfico local: nombre del módulo que puede deletrear númeroscorrector ortográfico local: función de ese módulo para controlar la ortografía (configúrela si es necesario)wikidata_module local, wikidata_data_module - nombres de los módulos de Wikidatawikidata_code local, wikidata_data: tablas exportadas desde esos módulos (configúrelas si es necesario)función local set_config(args)-- Establecer las opciones de configuración desde la plantilla #invoke o valores predeterminados.configuración = argumentosmaxsigfig = config.maxsigfig o 14 – número máximo de cifras significativasmódulo de datos local, módulo de textosandbox local = config.sandbox y ('/' .. config.sandbox) o ''data_module = "Módulo:Convertir/datos" .. sandboxtext_module = "Módulo:Convertir/texto" .. sandboxextra_module = "Módulo:Convertir/extra" .. sandboxwikidata_module = "Módulo:Convertir/wikidata" .. zona protegidawikidata_data_module = "Módulo:Convertir/wikidata/datos" .. zona de pruebasspell_module = "Módulo:ConvertirNumeric"código_datos = mw.loadData(módulo_datos)código_texto = mw.loadData(módulo_texto)todas_unidades = código_de_datos.todas_unidadestraducción local = código_texto.tabla_traducciónSi la traducción entoncesnumdot = traducción.numdotnumsep = traducción.numsepsi numdot == ',' y numsep == '.' entoncessi text_code.all_messages.cvt_enwiki_num entoncesa_en = a_en_con_chequefinfinSi es traducción.grupo entoncesmétodo_grupo = traducción.grupofinSi traducción.por_palabra entoncespor_palabra = traducción.por_palabrafinSi traducción.plural_suffix entoncessufijo_plural = traducción.sufijo_pluralfinvarname = traducción.varnamefrom_en_table = traducción.from_enuso_solución_alternativa local = verdaderoSi se usa_workaround entonces-- 2013-07-05 Solución alternativa de error haciendo una copia de la tabla requerida.-- mw.ustring.gsub falla con una tabla (to_en_table) como reemplazo,-- si se accede a la tabla a través de mw.loadData.fuente local = traducción.to_enSi la fuente entoncespara_en_tabla = {}para k, v en pares(fuente) hacera_en_tabla[k] = vfinfindemásto_en_table = traducción.to_enfinsi traducción.lang == 'en default' entoncesen_default = true -- para hiwikifinomitsep = traducción.omitsep -- para zhwikifinnumdot = config.numdot o numdot o '.' -- marca decimal antes de dígitos fraccionariosnumsep = config.numsep o numsep o ',' -- separador de grupo para números-- numsep debe ser "," o "." o "" o " " o un carácter Unicode.-- numsep_remove debe funcionar en una expresión regular para identificar los separadores que se eliminarán.si numsep ~= '' entoncesnumsep_remove = (numsep == '.') y '%.' o numsepfinsi numsep ~= ',' y numdot ~= ',' entoncesnumsep_remove2 = ',' -- por lo que los números copiados de enwiki funcionaránfinfincolección de funciones locales()-- Devuelve una tabla para guardar elementos.devolver {n = 0,añadir = función (yo, elemento)yo mismo.n = yo mismo.n + 1self[self.n] = elementofin,}finfunción local dividir(numerador, denominador)-- Devuelve el cociente de números enteros, resto resultante de dividir los dos-- números dados, que deben ser enteros sin signo.cociente local, resto = suelo(numerador / denominador), numerador % denominadorsi no (0 <= resto y resto < denominador) entonces-- Los límites de punto flotante pueden necesitar esto, como en {{convert|160.02|Ym|ydftin}}.resto = 0findevolver cociente, restofinfunción local split(texto, delimitador)-- Devuelve una tabla numerada con campos de texto dividido.-- El delimitador se utiliza en una expresión regular sin escape (por ejemplo, '.' fallaría).-- A cada campo se le eliminan los espacios iniciales y finales.local t = {}texto = texto .. delimitador -- para obtener el último elementopara el elemento en el texto:gmatch('%s*(.-)%s*' .. delimitador) hacertabla.insert(t, elemento)finvolver tfintira de función local (texto)-- Si el texto es una cadena, devuelve su contenido sin caracteres iniciales ni finales.-- espacio en blanco. De lo contrario, devuelve nulo (un argumento nulo da como resultado nulo).si tipo(texto) == 'cadena' entoncesdevolver texto:match("^%s*(.-)%s*$")finfinfunción local table_len(t)-- Devuelve la longitud (<100) de una tabla numerada para reemplazar #t que es-- documentado para no funcionar si se accede a t mediante mw.loadData().para i = 1, 100 hacer