947
edits
(update from sandbox per Template talk:Convert#Module version 18) |
m (1 revision imported) |
||
(7 intermediate revisions by 3 users not shown) | |||
Line 590:
-- This is never called to determine a unit name or link because per units
-- are handled as a special case.
-- Similarly, the default output is handled elsewhere
-- this is only called from get_default() for default_exceptions.
__index = function (self, key)
local value
Line 1,612 ⟶ 1,613:
-- p2 is text to insert before the output unit
-- p1 or p2 may be nil to mean "no preunit"
-- Using '+
local function withspace(text,
--
-- However, no space is
--
-- There is also no space if text starts with '&'
-- (e.g. '°' would display a degree symbol with no preceding space).
if current == ' ' or current == '-' then▼
return text -- an html entity can be used to specify the exact display
end
if
else▼
end
if
if not (char == ' ' or char == '-' or text:sub(-6, -1) == ' ') then
end▼
end
return ' ' .. text▼
end
return text
end
local PLUS = '+ '
preunit1 = preunit1 or ''
local trim1 = strip(preunit1)
Line 1,640 ⟶ 1,642:
return nil
end
if trim1 == '+' then
return withspace(withspace(preunit1, 1), -1)▼
▲ end
end
preunit2 = preunit2 or ''
local trim2 = strip(preunit2)
if trim1 == '
return nil, nil▼
return PLUS, PLUS
preunit1 = PLUS
end
if
if trim1 == '' then
▲ preunit1 = withspace(preunit1, 1)
▲ return nil, nil
▲ end
end
if trim2 == ' ' then -- trick to make preunit2 empty▼
preunit2 = nil▼
▲ elseif trim2 == '' then
preunit2 = preunit1
elseif trim2
preunit2 =
▲ preunit2 = nil
preunit2 = withspace(preunit2)
end
return preunit1, preunit2
Line 1,758 ⟶ 1,769:
-- Return true if successful or return false, t where t is an error message table.
currency_text = nil -- local testing can hold module in memory; must clear globals
local accept_any_text = {
input = true,
qid = true,
qual = true,
stylein = true,
styleout = true,
tracking = true,
}
if kv_pairs.adj and kv_pairs.sing then
-- For enwiki (before translation), warn if attempt to use adj and sing
Line 1,794 ⟶ 1,813:
end
end
elseif accept_any_text[en_name] then
en_value = loc_value ~= '' and loc_value or nil -- accept non-empty user text with no validation
if en_name == 'input' then
Line 2,232 ⟶ 2,251:
else
parms.precision = precision
end
for j = i, i + 3 do
local parm = parms[j] -- warn if find a non-empty extraneous parameter
if parm and parm:match('%S') then
add_warning(parms, 1, 'cvt_unknown_option', parm)
break
end
end
return true, in_unit_table
Line 2,907 ⟶ 2,933:
local per = unit_table.per
if per then
local paren1, paren2 = '', '' -- possible parentheses around bottom unit
local unit1 = per[1] -- top unit_table, or nil
local unit2 = per[2] -- bottom unit_table
Line 2,918 ⟶ 2,945:
return symbol -- for exceptions that have the symbol built-in
end
end
if (unit2.symbol):find('⋅', 1, true) then
paren1, paren2 = '(', ')'
end
end
Line 2,957 ⟶ 2,987:
unit_table.sep = ''
end
return result .. paren1 .. linked_id(parms, unit2, key_id2, want_link, '1') .. paren2
end
if multiplier then
Line 3,184 ⟶ 3,214:
return preunit .. id1
end
if parms.opt_also_symbol and not composite and not parms.opt_flip then
local join1 = parms.joins[1]
if join1 == ' (' or join1 == ' [' then
Line 3,651 ⟶ 3,681:
-- An unknown input unit would display the input and an error message
-- with success == true at this point.
-- Also, can have success == false with a message
if
if
return
end
local cat
▲ return result
if parms.tracking then
-- Add a tracking category using the given text as the category sort key.
-- There is currently only one type of tracking, but in principle multiple
-- items could be tracked, using different sort keys for convenience.
cat = wanted_category('tracking', parms.tracking)
end
return parms.input_text .. (cat or '')
end
return
end
|