Wikipedia
gpewiki
https://gpe.wikipedia.org/wiki/Main_Page
MediaWiki 1.47.0-wmf.23
first-letter
Media
Special
Talk
User
User talk
Wikipedia
Wikipedia talk
File
File talk
MediaWiki
MediaWiki talk
Template
Template talk
Help
Help talk
Category
Category talk
TimedText
TimedText talk
Module
Module talk
Event
Event talk
Module:Params
828
20247
114540
114340
2026-10-11T04:30:41Z
Grufo
3655
Update from [[d:Special:GoToLinkedPage/mediawikiwiki/Q122696746|master]] using [[mw:Synchronizer| #Synchronizer]]
114540
Scribunto
text/plain
require[[strict]]
--- ---
--- PRIVATE ENVIRONMENT ---
--- ________________________________ ---
--- ---
--[[ Abstract utilities ]]--
----------------------------
-- Helper function for `string.gsub()` (for managing zero-padded numbers)
local function zero_padded (str)
return ('%03d%s'):format(#str, str)
end
-- Helper function for `table.sort()` (for natural sorting)
local function natural_sort (var1, var2)
return var1:gsub('%d+', zero_padded) < var2:gsub('%d+', zero_padded)
end
-- Return a copy or a reference to a table
local function copy_or_ref_table (src, refonly)
if refonly then return src end
local newtab = {}
for key, val in pairs(src) do newtab[key] = val end
return newtab
end
-- Copy at most N items (of all kinds) from `src` to `dest` and return `dest`
local function copy_table_maxn (dest, src, len)
local idx = 1
for key, val in pairs(src) do
dest[key], idx = val, idx + 1
if idx > len then break end
end
return dest
end
-- Remove some numeric elements from a table, shifting everything to the left
local function remove_numeric_keys (tbl, idx, len)
local cache, tmp = {}, idx + len - 1
for key, val in pairs(tbl) do
if type(key) == 'number' and key >= idx then
if key > tmp then cache[key - len] = val end
tbl[key] = nil
end
end
for key, val in pairs(cache) do tbl[key] = val end
end
-- Make a reduced copy of a table (shifting in both directions if necessary)
local function copy_table_reduced (tbl, idx, len)
local ret, tmp = {}, idx + len - 1
if idx > 0 then
for key, val in pairs(tbl) do
if type(key) ~= 'number' or key < idx then
ret[key] = val
elseif key > tmp then ret[key - len] = val end
end
elseif tmp > 0 then
local nshift = 1 - idx
for key, val in pairs(tbl) do
if type(key) ~= 'number' then ret[key] = val
elseif key > tmp then ret[key - tmp] = val
elseif key < idx then ret[key + nshift] = val end
end
else
for key, val in pairs(tbl) do
if type(key) ~= 'number' or key > tmp then
ret[key] = val
elseif key < idx then ret[key + len] = val end
end
end
return ret
end
-- Make an expanded copy of a table (shifting in both directions if necessary)
local function copy_table_expanded (tbl, idx, len)
local ret, tmp = {}, idx + len - 1
if idx > 0 then
for key, val in pairs(tbl) do
if type(key) ~= 'number' or key < idx then
ret[key] = val
else ret[key + len] = val end
end
elseif tmp > 0 then
local nshift = idx - 1
for key, val in pairs(tbl) do
if type(key) ~= 'number' then ret[key] = val
elseif key > 0 then ret[key + tmp] = val
elseif key < 1 then ret[key + nshift] = val end
end
else
for key, val in pairs(tbl) do
if type(key) ~= 'number' or key > tmp then
ret[key] = val
else ret[key - len] = val end
end
end
return ret
end
-- Given a table, create two new tables containing the sorted list of keys
local function get_sorted_key_list (tbl, sort_fn)
local nums, words, nn, nw = {}, {}, 1, 1
for key, val in pairs(tbl) do
if type(key) == 'number' then nums[nn], nn = key, nn + 1
else words[nw], nw = key, nw + 1 end
end
table.sort(nums)
table.sort(words, sort_fn)
return nums, words, nn - 1, nw - 1
end
-- Parse a parameter name string and return it as a string or a number
local function get_param_name (par_str)
local ret = par_str:match'^%s*(.-)%s*$'
if ret ~= '0' and ret:find'^%-?[1-9]%d*$' == nil then return ret end
return tonumber(ret)
end
-- Move a key from a table to another, but only if under a different name and
-- always parsing numeric strings as numbers
local function steal_if_renamed (val, src, skey, dest, dkey)
local realkey = get_param_name(dkey)
if skey ~= realkey then dest[realkey], src[skey] = val, nil end
end
--[[ Public strings ]]--
------------------------
-- Special match keywords (functions and modifiers MUST avoid these names)
local mkeywords = {
['or'] = 0,
pattern = 1,
plain = 2,
strict = 3
}
-- Sort functions (functions and modifiers MUST avoid these names)
local sortfunctions = {
alphabetically = false,
naturally = natural_sort
}
-- Callback styles for the `mapping_*` and `renaming_*` class of modifiers
-- (functions and modifiers MUST avoid these names)
--[[
Meanings of the columns:
col[1] = Loop type (0-3)
col[2] = Number of module arguments that the style requires (1-3)
col[3] = Minimum number of sequential parameters passed to the callback
col[4] = Name of the callback parameter where to place each parameter name
col[5] = Name of the callback parameter where to place each parameter value
col[6] = Argument in the modifier's invocation that will override `col[4]`
col[7] = Argument in the modifier's invocation that will override `col[5]`
A value of `-1` indicates that no meaningful value is stored (i.e. `nil`)
]]--
local mapping_styles = {
names_and_values = { 3, 2, 2, 1, 2, -1, -1 },
values_and_names = { 3, 2, 2, 2, 1, -1, -1 },
values_only = { 1, 2, 1, -1, 1, -1, -1 },
names_only = { 2, 2, 1, 1, -1, -1, -1 },
names_and_values_as = { 3, 4, 0, -1, -1, 2, 3 },
names_only_as = { 2, 3, 0, -1, -1, 2, -1 },
values_only_as = { 1, 3, 0, -1, -1, -1, 2 },
blindly = { 0, 2, 0, -1, -1, -1, -1 }
}
-- Memory slots (functions and modifiers MUST avoid these names)
local memoryslots = {
h = 'header',
f = 'footer',
i = 'itersep',
l = 'lastsep',
n = 'ifngiven',
p = 'pairsep',
s = 'oxfordsep'
}
-- Possible trimming modes for the `parsing` modifier
local trim_parse_opts = {
trim_none = { false, false },
trim_positional = { false, true },
trim_named = { true, false },
trim_all = { true, true }
}
-- Possible string modes for the iteration separator in the `parsing` and
-- `reinterpreting` modifiers
local isep_parse_opts = {
splitter_pattern = false,
splitter_string = true
}
-- Possible string modes for the key-value separator in the `parsing` and
-- `reinterpreting` modifiers
local psep_parse_opts = {
setter_pattern = false,
setter_string = true
}
-- Possible position references for the `splicing` modifier
local position_references = {
add_nothing = 0,
add_smallest_number = 1,
add_last_of_sequence = 2,
add_largest_number = 3
}
-- Possible modes for the `reassigning` modifier
local a_modes = {
transfer = 0,
clone = 1,
rename = 2,
copy = 3,
sacrifice = 4,
provide = 5,
spare = 7
}
-- Functions and modifiers MUST avoid these names too: `here`, `in_substack`,
-- `let`, `expose`, `use`, `with_flushed_glue`, `without_flushed_glue`
-- `without_sorting`
--[[ Private constants ]]--
---------------------------
-- Hard-coded name of the module (to avoid going through `frame:getTitle()`)
local modulename = 'Module:Params'
-- The functions listed here declare that they don't need the
-- `frame:getParent().args` metatable to be copied into a regular table; if
-- they are modifiers they also guarantee that they will make their own
-- (modified) copy available
local refparams = {
call_for_each_group = true,
combining = true,
combining_by_calling = true,
combining_values = true,
concat_and_call = true,
concat_and_invoke = true,
concat_and_magic = true,
count = true,
grouping_by_calling = true,
mixing_names_and_values = true,
keeping_at_most = true,
renaming_by_mixing = true,
renaming_to_sequence = true,
renaming_to_uppercase = true,
renaming_to_lowercase = true,
shifting = true,
splicing = true,
value_of = true,
with_name_matching = true
}
-- Maximum number of numeric parameters that can be filled, if missing (we
-- chose an arbitrary number for this constant; you can discuss about its
-- optimal value at Module talk:Params)
local maxfill = 1024
-- The private table of functions
local library = {}
-- Functions and modifiers that can only be invoked in first position
local static_iface = {}
--[[ Private functions ]]--
---------------------------
-- Create a new context
local function context_new (child_frame, first_fn_name)
local main_frame, tpipe = child_frame:getParent(), { first_fn_name }
for key, val in pairs(child_frame.args) do
if type(key) == 'number' and key > 0 then tpipe[key + 1] = val
else tpipe[key] = val end
end
return {
frame = main_frame,
pipe = tpipe,
oparams = main_frame.args,
firstposonly = static_iface,
iterfunc = pairs,
fnpos = 1,
sorttype = 0,
n_parents = 0,
n_children = 0,
n_available = maxfill
}
end
-- Move to the next action within the user-given list
local function context_iterate (ctx, next_fn_pos)
local nextfn
if ctx.pipe[next_fn_pos] ~= nil then
nextfn = ctx.pipe[next_fn_pos]:match'^%s*(.*%S)'
end
if nextfn == nil then error(modulename ..
': You must specify a function to call', 0) end
if library[nextfn] == nil then
if ctx.firstposonly[nextfn] == nil then error(modulename ..
': The function ‘' .. nextfn .. '’ does not exist', 0)
else error(modulename .. ': The ‘' .. nextfn ..
'’ directive can only appear in first position', 0)
end
end
ctx.fnpos = next_fn_pos
return library[nextfn]
end
-- Main loop
local function main_loop (ctx, start_with)
local fn = start_with
repeat fn = fn(ctx) until not fn
if ctx.n_parents > 0 then error(modulename ..
': One or more ‘merging_substack’ directives are missing', 0) end
if ctx.n_children > 0 then error(modulename ..
', For some of the snapshots either the ‘flushing’ directive is missing or a group has not been properly closed with ‘merging_substack’', 0) end
end
-- Load a `setting`-like directive string into the `dest` table
local function set_strings_from_opts (dest, opts, offs)
local cmd
if opts[offs] == nil then return offs - 1 end
cmd = opts[offs]:gsub('%s+', ''):gsub('/+', '/'):match'^/*(.*[^/])'
if cmd == nil then return offs end
local vname, chr
local amap, sep, argc = {}, string.byte('/'), offs + 1
for idx = 1, #cmd do
chr = cmd:byte(idx)
if chr == sep then
for key, val in ipairs(amap) do
dest[val], amap[key] = opts[argc], nil
end
argc = argc + 1
else
vname = memoryslots[string.char(chr)]
if vname == nil then error(modulename ..
', ‘setting’: Unknown slot ‘' .. string.char(chr) .. '’', 0) end
table.insert(amap, vname)
end
end
for key, val in ipairs(amap) do dest[val] = opts[argc] end
return argc
end
-- Add a new stack of parameters to `ctx.children`
local function new_substack (ctx)
local currsnap, newparams = ctx.n_children + 1, {}
if ctx.children == nil then ctx.children = { newparams }
else ctx.children[currsnap] = newparams end
ctx.n_children = currsnap
return newparams
end
-- Parse a raw argument containing a `sortfunctions` directive, or
-- `'without_sorting'`, or `nil`
local function load_sort_opt (raw_arg)
if raw_arg == nil then return nil, 1, false end
local trarg = raw_arg:match'^%s*(.-)%s*$'
if trarg == 'without_sorting' then return nil, 2, false, trarg end
local tmp = sortfunctions[trarg]
if tmp == nil then return nil, 1, false, trarg end
return tmp or nil, 2, true, trarg
end
-- Parse optional user arguments of type `...|[let/use]|[...]|[let/use]|[...]|
-- [number of additional parameters]|[parameter 1]|[parameter 2]|[...]`
local function load_child_opts (src, start_from, append_after, params)
local tnamed, tmp1, tmp2
local pin, tbl, mem = start_from, {}, {}
while src[pin] ~= nil and src[pin + 1] ~= nil do
tmp1 = src[pin]:match'^%s*(.*%S)'
if tmp1 == 'let' and src[pin + 2] ~= nil then
tmp1 = get_param_name(src[pin + 1])
mem[tmp1], tbl[tmp1], pin = nil, src[pin + 2], pin + 3
--[[
elseif tmp1 == 'expose' then
tmp1 = get_param_name(src[pin + 1])
tmp2 = params[tmp1]
mem[tmp1], tbl[tmp1], pin = tmp2, tmp2, pin + 2
]]--
elseif tmp1 == 'use' and src[pin + 2] ~= nil then
tmp1 = get_param_name(src[pin + 2])
tmp2 = params[tmp1]
mem[tmp1], tbl[get_param_name(src[pin + 1])], pin =
tmp2, tmp2, pin + 3
else break end
end
local tnew = copy_or_ref_table(params, next(mem) == nil)
for key in pairs(mem) do tnew[key] = nil end
if pin ~= start_from then tnamed, tbl = tbl, {} end
tmp1 = tonumber(src[pin])
if tmp1 ~= nil and math.floor(tmp1) == tmp1 then
if tmp1 < 0 then tmp1 = -1 end
tmp2 = append_after - pin
for idx = pin + 1, pin + tmp1 do tbl[idx + tmp2] = src[idx] end
pin = pin + tmp1 + 1
end
if tnamed ~= nil then
for key, val in pairs(tnamed) do tbl[key] = val end
end
return tbl, pin, tnew, mem
end
-- Load the optional arguments of some of the `mapping_*` and `renaming_*`
-- class of modifiers
local function load_callback_opts (src, start_from, default_style, params)
local style, shf
local tmp = src[start_from + 1]
if tmp ~= nil then style = mapping_styles[tmp:match'^%s*(.-)%s*$'] end
if style == nil then style, shf = default_style, start_from - 1
else shf = start_from end
local n_exist, karg, varg = style[3], style[4], style[5]
tmp = style[6]
if tmp > -1 then
karg = src[tmp + shf]:match'^%s*(.-)%s*$'
if karg == '0' or karg:find'^%-?[1-9]%d*$' ~= nil then
karg = tonumber(karg)
n_exist = math.max(n_exist, karg)
end
end
tmp = style[7]
if tmp > -1 then
varg = src[tmp + shf]:match'^%s*(.-)%s*$'
if varg == '0' or varg:find'^%-?[1-9]%d*$' ~= nil then
varg = tonumber(varg)
n_exist = math.max(n_exist, varg)
end
end
tmp = style[1]
local dest, argc, tnew, mem = load_child_opts(src, style[2] + shf,
n_exist, params)
if (tmp == 3 or tmp == 2) and dest[karg] ~= nil then
tmp = tmp - 2 end
if (tmp == 3 or tmp == 1) and dest[varg] ~= nil then
tmp = tmp - 1 end
return dest, argc, tmp, karg, varg, tnew, mem
end
-- Parse the arguments of some of the `mapping_*` and `renaming_*` class of
-- modifiers
local function load_replace_args (opts, offs, whoami)
if opts[offs + 1] == nil then error(modulename ..
', ‘' .. whoami .. '’: No pattern string was given', 0) end
if opts[offs + 2] == nil then error(modulename ..
', ‘' .. whoami .. '’: No replacement string was given', 0) end
local ptn, repl, nmax, argc =
opts[offs + 1], opts[offs + 2], tonumber(opts[offs + 3]), 3
if nmax ~= nil or (opts[offs + 3] or ''):match'^%s*$' ~= nil then
argc = 4
end
local flg = opts[offs + argc]
if flg ~= nil then flg = mkeywords[flg:match'^%s*(.-)%s*$'] end
if flg == 0 then flg = nil elseif flg ~= nil then argc = argc + 1 end
return ptn, repl, nmax, flg, offs + argc, (nmax ~= nil and nmax < 1) or
(flg == 3 and ptn == repl)
end
-- Parse the arguments of the `with_*_matching` class of modifiers
local function load_pattern_args (opts, offs, whoami)
local keyw
local ptns, arg, state, nptns, idx = {}, opts[offs + 1], 0, 0, offs + 2
while arg ~= nil do
if state == 0 then
nptns, state = nptns + 1, -1
ptns[nptns] = { arg, false, false }
else
keyw = arg:match'^%s*(.*%S)'
if keyw == nil or mkeywords[keyw] == nil or (
state > 0 and mkeywords[keyw] > 0
) then break
else
state = mkeywords[keyw]
if state > 1 then ptns[nptns][2] = true end
if state == 3 then ptns[nptns][3] = true end
end
end
arg, idx = opts[idx], idx + 1
end
if state == 0 then error(modulename ..
', ‘' .. whoami .. '’: No pattern was given', 0) end
return ptns, nptns, idx - 1
end
-- Load the optional arguments of the `parsing`, `reinterpreting` and
-- `evaluating` modifiers
local function load_parse_opts (opts, offs, isp, psp)
local tmp
local optslots, noptslots, argc, trimn, trimu, iplain, pplain =
{ true, true, true }, 3, offs, true, false, true, true
repeat
noptslots, tmp = noptslots - 1, opts[argc]
if tmp == nil then break end
tmp = tmp:match'^%s*(.-)%s*$'
if optslots[1] ~= nil and trim_parse_opts[tmp] ~= nil then
tmp = trim_parse_opts[tmp]
trimn, trimu, optslots[1] = tmp[1], tmp[2], nil
elseif optslots[2] ~= nil and isep_parse_opts[tmp] ~= nil then
argc = argc + 1
iplain, isp, optslots[2] = isep_parse_opts[tmp],
opts[argc], nil
elseif optslots[3] ~= nil and psep_parse_opts[tmp] ~= nil then
argc = argc + 1
pplain, psp, optslots[3] = psep_parse_opts[tmp],
opts[argc], nil
else break end
argc = argc + 1
until noptslots < 1
return isp, iplain, psp, pplain, trimn, trimu, argc
end
-- Map parameters' values using a custom callback and a referenced table
local value_maps = {
[0] = function (tbl, margs, karg, varg, fn)
for key in pairs(tbl) do tbl[key] = fn() end
end,
[1] = function (tbl, margs, karg, varg, fn)
for key, val in pairs(tbl) do
margs[varg] = val
tbl[key] = fn()
end
end,
[2] = function (tbl, margs, karg, varg, fn)
for key in pairs(tbl) do
margs[karg] = key
tbl[key] = fn()
end
end,
[3] = function (tbl, margs, karg, varg, fn)
for key, val in pairs(tbl) do
margs[karg], margs[varg] = key, val
tbl[key] = fn()
end
end
}
-- Private table for `map_names()`
local name_thieves = {
[0] = function (cache, tbl, rargs, karg, varg, fn)
for key, val in pairs(tbl) do
steal_if_renamed(val, tbl, key, cache, fn())
end
end,
[1] = function (cache, tbl, rargs, karg, varg, fn)
for key, val in pairs(tbl) do
rargs[varg] = val
steal_if_renamed(val, tbl, key, cache, fn())
end
end,
[2] = function (cache, tbl, rargs, karg, varg, fn)
for key, val in pairs(tbl) do
rargs[karg] = key
steal_if_renamed(val, tbl, key, cache, fn())
end
end,
[3] = function (cache, tbl, rargs, karg, varg, fn)
for key, val in pairs(tbl) do
rargs[karg], rargs[varg] = key, val
steal_if_renamed(val, tbl, key, cache, fn())
end
end
}
-- Map parameters' names using a custom callback and a referenced table
local function map_names (tbl, rargs, karg, varg, looptype, fn)
local cache = {}
name_thieves[looptype](cache, tbl, rargs, karg, varg, fn)
for key, val in pairs(cache) do tbl[key] = val end
end
-- Return a new table that contains `src` regrouped according to the numeric
-- suffixes in its keys
local function make_groups (src)
-- NOTE: `src` might be the original metatable!
local prefix, gid
local groups = {}
for key, val in pairs(src) do
-- `key` must only be a string or a number...
if type(key) == 'string' then
prefix, gid = key:match'^%s*(.-)%s*(%-?%d*)%s*$'
gid = tonumber(gid) or ''
else prefix, gid = '', key end
if groups[gid] == nil then groups[gid] = {} end
if prefix == '0' or prefix:find'^%-?[1-9]%d*$' ~= nil then
prefix = tonumber(prefix)
if prefix < 1 then prefix = prefix - 1 end
end
groups[gid][prefix] = val
end
return groups
end
-- Split into parts a string containing the `$#` and `$@` placeholders and
-- return the information as a skeleton table, a canvas table and a length
local function parse_placeholder_string (target)
local skel, canvas, idx, s_pos, e_pos =
{}, {}, 1, 1, string.find(target, '%$[@#]', 1, false)
while e_pos ~= nil do
canvas[idx], skel[idx + 1] =
target:sub(s_pos, e_pos - 1),
target:sub(e_pos, e_pos + 1) == '$@'
idx, s_pos = idx + 2, e_pos + 2
e_pos = string.find(target, '%$[@#]', s_pos, false)
end
if (s_pos > target:len()) then idx = idx - 1
else canvas[idx] = target:sub(s_pos) end
return skel, canvas, idx
end
-- Populate a table by parsing a parameter string (heavy lifting for `parsing`,
-- `reinterpreting` and `evaluating`)
local function parse_parameter_string (tbl, str, isp, ipl, psp, ppl, trn, tru)
local key, val, spos1, spos2, pos1, pos2
local pos3, idx, lenplone = 0, 1, #str + 1
if isp == nil or isp == '' then
if psp == nil or psp == '' then
if tru then tbl[idx] = str:match'^%s*(.-)%s*$'
else tbl[idx] = str end
return
end
spos1, spos2 = str:find(psp, 1, ppl)
if spos1 == nil then
key = idx
if tru then val = str:match'^%s*(.-)%s*$'
else val = str end
else
key = get_param_name(str:sub(1, spos1 - 1))
val = str:sub(spos2 + 1)
if trn then val = val:match'^%s*(.-)%s*$' end
end
tbl[key] = val
return
end
if psp == nil or psp == '' then
repeat
pos1 = pos3 + 1
pos2, pos3 = str:find(isp, pos1, ipl)
val = str:sub(pos1, (pos2 or lenplone) - 1)
if tru then val = val:match'^%s*(.-)%s*$' end
tbl[idx], idx = val, idx + 1
until pos2 == nil
return
end
repeat
pos1 = pos3 + 1
pos2, pos3 = str:find(isp, pos1, ipl)
val = str:sub(pos1, (pos2 or lenplone) - 1)
spos1, spos2 = val:find(psp, 1, ppl)
if spos1 == nil then
key = idx
if tru then val = val:match'^%s*(.-)%s*$' end
idx = idx + 1
else
key = get_param_name(val:sub(1, spos1 - 1))
val = val:sub(spos2 + 1)
if trn then val = val:match'^%s*(.-)%s*$' end
end
tbl[key] = val
until pos2 == nil
return
end
-- Heavy lifting for `snapshotting` and `remembering`
local function make_child (ctx, src, whoami)
local len = tonumber(ctx.pipe[ctx.fnpos + 1])
if len == nil or len == 0 then
local stack = new_substack(ctx)
for key, val in pairs(src) do stack[key] = val end
return len == nil and 1 or 2
end
if len < 0 or math.floor(len) ~= len then error(modulename .. ', ‘' ..
whoami .. '’: The number of parameters to copy must be an integer greater than zero', 0) end
copy_table_maxn(new_substack(ctx), src, len)
return 2
end
-- Heavy lifting for `setting_by_flushing`, `combining` and `combining_values`
local function set_strings_from_substack (ctx, dest, whoami)
if ctx.n_children < 1 then error(modulename ..
', ‘' .. whoami .. '’: There are no substacks to flush', 0) end
local currsnap = ctx.n_children
local stack = ctx.children[currsnap]
for key, val in pairs(memoryslots) do
if stack[key] ~= nil then dest[val] = stack[key] end
end
ctx.children[currsnap], ctx.n_children = nil, currsnap - 1
end
-- Heavy lifting for `combining` and `combining_values`
local function combine_parameters (ctx, keyval_fn, whoami)
-- NOTE: `ctx.params` might be the original metatable! This function
-- MUST create a copy of it before returning
local opts, offs = ctx.pipe, ctx.fnpos
if opts[offs + 1] == nil then error(modulename ..
', ‘' .. whoami .. '’: No parameter name was provided', 0) end
local argc
local tbl, vars = ctx.params, {}
local sortfn, ivar0, do_sort, tmp = load_sort_opt(opts[offs + 2])
if ivar0 == 2 then
tmp = opts[offs + 3] and opts[offs + 3]:match'^%s*(.-)%s*$'
end
ivar0 = ivar0 + offs
if tmp == 'with_flushed_glue' then
ivar0 = ivar0 + 1
argc = set_strings_from_opts(vars, opts, ivar0 + 1)
set_strings_from_substack(ctx, vars, whoami)
else
if tmp == 'without_flushed_glue' then ivar0 = ivar0 + 1 end
argc = set_strings_from_opts(vars, opts, ivar0 + 1)
end
if argc < ivar0 then error(modulename ..
', ‘' .. whoami .. '’: No setting directive was given', 0) end
if next(tbl) == nil then
if vars.ifngiven ~= nil then ctx.params =
{ [get_param_name(opts[offs + 1])] = vars.ifngiven }
elseif tbl == ctx.oparams then ctx.params = {} end
return argc
end
local cache, len
if do_sort then
local words
cache, words, len, tmp = get_sorted_key_list(tbl, sortfn)
for idx = 1, tmp do cache[len + idx] = words[idx] end
len = len + tmp
else
cache, len = {}, 1
for key in pairs(tbl) do cache[len], len = key, len + 1 end
len = len - 1
end
local pmap, nss, kvs, pps =
{}, 0, vars.pairsep or '', vars.itersep or ''
for idx = 1, len do
tmp, pmap[nss + 1] = cache[idx], pps
pmap[nss + 2] = keyval_fn(tmp, tbl[tmp], kvs)
nss = nss + 2
end
tmp = vars.oxfordsep or vars.lastsep
if tmp ~= nil and nss > 4 then pmap[nss - 1] = tmp
elseif nss > 2 and vars.lastsep ~= nil then
pmap[nss - 1] = vars.lastsep
end
pmap[1] = vars.header or ''
if vars.footer ~= nil then pmap[nss + 1] = vars.footer end
ctx.params = { [get_param_name(opts[offs + 1])] = table.concat(pmap) }
return argc
end
-- Concatenate the numeric keys from the table of parameters to the numeric
-- keys from the table of options; non-numeric keys from the table of options
-- will prevail over colliding non-numeric keys from the table of parameters
local function concat_params (ctx, offs)
local tbl, retval, cache, nmax = ctx.params, {}, {}, 0
for key, val in pairs(ctx.pipe) do
if type(key) == 'number' then
if key < 1 then cache[key] = val
elseif key > offs then cache[key - offs] = val end
if key > nmax then nmax = key end
else cache[key] = val end
end
nmax = nmax - offs
if ctx.subset == 1 then
-- We need only the sequence
for key, val in ipairs(tbl) do retval[key + nmax] = val end
else
if ctx.subset == -1 then
for key in ipairs(tbl) do tbl[key] = nil end
end
for key, val in pairs(tbl) do
if type(key) == 'number' and key > 0 then
retval[key + nmax] = val
else retval[key] = val end
end
end
for key, val in pairs(cache) do retval[key] = val end
return retval
end
-- Flush the parameters by calling a custom function for each value (after this
-- function has been invoked `ctx.params` will be no longer usable)
local function flush_params (ctx, fn)
local tmp
local tbl = ctx.params
if ctx.subset == -1 then
for key, val in ipairs(tbl) do tbl[key] = nil end
elseif ctx.subset == 1 then
if ctx.pins == nil then
for key, val in ipairs(tbl) do fn(key, val) end
return
end
tmp = {}
for key, val in ipairs(tbl) do tmp[key] = val end
tbl = tmp
end
if ctx.pins ~= nil then
local marker = ctx.sorttype < 1 and ctx.subset ~= -1 or nil
for idx = 1, #ctx.pins do
tmp = ctx.pins[idx]
if tbl[tmp] ~= nil then
fn(tmp, tbl[tmp])
tbl[tmp] = marker
end
end
if ctx.subset == 1 then
for key, val in ipairs(tbl) do
if val ~= true then fn(key, val) end
end
return
end
end
if ctx.sorttype > 0 then
local nums, words, nn, nw =
get_sorted_key_list(tbl, natural_sort)
if ctx.sorttype == 2 then
for idx = 1, nw do fn(words[idx], tbl[words[idx]]) end
for idx = 1, nn do fn(nums[idx], tbl[nums[idx]]) end
return
end
for idx = 1, nn do fn(nums[idx], tbl[nums[idx]]) end
for idx = 1, nw do fn(words[idx], tbl[words[idx]]) end
return
end
if ctx.subset == -1 or ctx.pins == nil then
for key, val in ipairs(tbl) do
fn(key, val)
tbl[key] = nil
end
for key, val in pairs(tbl) do fn(key, val) end
return
end
for key, val in ipairs(tbl) do
if val ~= true then fn(key, val) end
tbl[key] = nil
end
for key, val in pairs(tbl) do
if val ~= true then fn(key, val) end
end
end
-- Flush the parameters by calling one of two custom functions for each value
-- (after this function has been invoked `ctx.params` will be no longer usable)
local function mixed_flush_params (ctx, fn_seq, fn_oth)
if ctx.subset == 1 then
flush_params(ctx, fn_seq)
return
end
if ctx.subset == -1 then
flush_params(ctx, fn_oth)
return
end
local tbl = ctx.params
if ctx.pins == nil and ctx.sorttype < 1 then
for key, val in ipairs(tbl) do
fn_seq(key, val)
tbl[key] = nil
end
for key, val in pairs(tbl) do fn_oth(key, val) end
return
end
local tseq = {}
for key, val in ipairs(tbl) do tseq[key] = val end
if ctx.pins ~= nil then
local tmp
local marker = ctx.sorttype < 1 or nil
for idx = 1, #ctx.pins do
tmp = ctx.pins[idx]
if tseq[tmp] ~= nil then
fn_seq(tmp, tbl[tmp])
tbl[tmp], tseq[tmp] = nil, marker
elseif tbl[tmp] ~= nil then
fn_oth(tmp, tbl[tmp])
tbl[tmp] = nil
end
end
end
if ctx.sorttype > 0 then
local nums, words, nn, nw =
get_sorted_key_list(tbl, natural_sort)
if ctx.sorttype == 2 then
for idx = 1, nw do
fn_oth(words[idx], tbl[words[idx]])
end
end
for idx = 1, nn do
if tseq[nums[idx]] ~= nil then
fn_seq(nums[idx], tseq[nums[idx]])
else fn_oth(nums[idx], tbl[nums[idx]]) end
end
if ctx.sorttype ~= 2 then
for idx = 1, nw do
fn_oth(words[idx], tbl[words[idx]])
end
end
return
end
for key, val in ipairs(tseq) do
if val ~= true then
fn_seq(key, val)
tbl[key] = nil
end
end
for key, val in pairs(tbl) do fn_oth(key, val) end
end
-- Finalize and return a concatenated list
local function finalize_and_return_concatenated_list (ctx, lst, len, modsize)
if len > 0 then
local tmp = ctx.oxfordsep or ctx.lastsep
if tmp ~= nil and len > modsize * 2 then
lst[len - modsize + 1] = tmp
elseif len > modsize and ctx.lastsep ~= nil then
lst[len - modsize + 1] = ctx.lastsep
end
lst[1] = ctx.header or ''
if ctx.footer ~= nil then lst[len + 1] = ctx.footer end
ctx.text = table.concat(lst)
else ctx.text = ctx.ifngiven or '' end
end
--- ---
--- PUBLIC ENVIRONMENT ---
--- ________________________________ ---
--- ---
--[[ Modifiers ]]--
-------------------
-- Syntax: #invoke:params|sequential|pipe to
library.sequential = function (ctx)
if ctx.subset == 1 then error(modulename ..
': The ‘sequential’ directive has been provided more than once', 0) end
if ctx.subset == -1 then error(modulename ..
': The two directives ‘non-sequential’ and ‘sequential’ are in contradiction with each other', 0) end
if ctx.sorttype > 0 then error(modulename ..
': The ‘all_sorted’ and ‘reassorted’ directives are redundant when followed by ‘sequential’', 0) end
ctx.iterfunc, ctx.subset = ipairs, 1
return context_iterate(ctx, ctx.fnpos + 1)
end
-- Syntax: #invoke:params|non-sequential|pipe to
library['non-sequential'] = function (ctx)
if ctx.subset == -1 then error(modulename ..
': The ‘non-sequential’ directive has been provided more than once', 0) end
if ctx.subset == 1 then error(modulename ..
': The two directives ‘sequential’ and ‘non-sequential’ are in contradiction with each other', 0) end
ctx.iterfunc, ctx.subset = pairs, -1
return context_iterate(ctx, ctx.fnpos + 1)
end
-- Syntax: #invoke:params|all_sorted|pipe to
library.all_sorted = function (ctx)
if ctx.sorttype == 1 then error(modulename ..
': The ‘all_sorted’ directive has been provided more than once', 0) end
if ctx.subset == 1 then error(modulename ..
': The ‘all_sorted’ directive is redundant after ‘sequential’', 0) end
if ctx.sorttype == 2 then error(modulename ..
': The two directives ‘reassorted’ and ‘sequential’ are in contradiction with each other', 0) end
ctx.sorttype = 1
return context_iterate(ctx, ctx.fnpos + 1)
end
-- Syntax: #invoke:params|reassorted|pipe to
library.reassorted = function (ctx)
if ctx.sorttype == 2 then error(modulename ..
': The ‘reassorted’ directive has been provided more than once', 0) end
if ctx.subset == 1 then error(modulename ..
': The ‘reassorted’ directive is redundant after ‘sequential’', 0) end
if ctx.sorttype == 1 then error(modulename ..
': The two directives ‘sequential’ and ‘reassorted’ are in contradiction with each other', 0) end
ctx.sorttype = 2
return context_iterate(ctx, ctx.fnpos + 1)
end
-- Syntax: #invoke:params|pinned_until|sentinel|[parameter name 1]|[parameter
-- name 2]|...|parameter name N|sentinel|pipe to
library.pinned_until = function (ctx)
local opts, offs = ctx.pipe, ctx.fnpos
if opts[offs + 1] == nil then error(modulename ..
', ‘pinned_until’: No sentinel was provided', 0) end
local tmp, bucket, curr, ncurr
local sntl, idx = opts[offs + 1]:match'^%s*(.-)%s*$', 2
if ctx.pin_bucket == nil then
bucket, curr, ncurr = {}, {}, 0
ctx.pin_bucket, ctx.pins = bucket, curr
else bucket, curr, ncurr = ctx.pin_bucket, ctx.pins, ctx.npins end
while opts[offs + idx] ~= nil do
tmp = opts[offs + idx]:match'^%s*(.-)%s*$'
if tmp == sntl then
if idx == 2 then error(modulename ..
', ‘pinned_until’: No parameters to pin were provided', 0) end
ctx.npins = ncurr + idx - 2
return context_iterate(ctx, offs + idx + 1)
end
if tmp == '0' or tmp:find'^%-?[1-9]%d*$' ~= nil then
tmp = tonumber(tmp)
end
if bucket[tmp] then error(modulename ..
', ‘pinned_until’: Duplicate pinned parameter ‘' .. tostring(tmp) .. '’', 0) end
curr[ncurr + idx - 1], bucket[tmp], idx = tmp, true, idx + 1
end
error(modulename .. ', ‘pinned_until’: Missing sentinel in position #' .. tostring(idx), 0)
end
-- Syntax: #invoke:params|setting|directives|...|pipe to
library.setting = function (ctx)
local new_offs = set_strings_from_opts(ctx, ctx.pipe, ctx.fnpos + 1)
if new_offs - ctx.fnpos < 2 then error(modulename ..
', ‘setting’: No directive was given', 0) end
return context_iterate(ctx, new_offs + 1)
end
-- Syntax: #invoke:params|scoring|new parameter name|[container]|pipe to
library.scoring = function (ctx)
local opts, offs, retval = ctx.pipe, ctx.fnpos, 0
if opts[offs + 1] == nil then error(modulename ..
', ‘scoring’: No parameter name was provided', 0) end
local tmp
for _ in pairs(ctx.params) do retval = retval + 1 end
if opts[offs + 2] ~= nil then tmp = opts[offs + 2]:match'^%s*(.*%S)' end
if tmp == 'in_substack' then
new_substack(ctx)[get_param_name(opts[offs + 1])] =
tostring(retval)
return context_iterate(ctx, offs + 3)
end
ctx.params[get_param_name(opts[offs + 1])] = tostring(retval)
return context_iterate(ctx, tmp == 'here' and offs + 3 or offs + 2)
end
-- Syntax: #invoke:params|squeezing|pipe to
library.squeezing = function (ctx)
local store, indices, tbl, newlen = {}, {}, ctx.params, 0
for key, val in pairs(tbl) do
if type(key) == 'number' then
newlen = newlen + 1
indices[newlen], store[key], tbl[key] = key, val, nil
end
end
table.sort(indices)
for idx = 1, newlen do tbl[idx] = store[indices[idx]] end
return context_iterate(ctx, ctx.fnpos + 1)
end
-- Syntax: #invoke:params|filling_the_gaps|pipe to
library.filling_the_gaps = function (ctx)
local newval, tbl, tmp, nmin, nmax, nnums =
ctx.pipe[ctx.fnpos + 1], ctx.params, {}, 1, nil, -1
if newval == nil then error(modulename ..
', ‘filling_the_gaps’: No value was provided', 0) end
for key, val in pairs(tbl) do
if type(key) == 'number' then
if nmax == nil then
if key < nmin then nmin = key end
nmax = key
elseif key > nmax then nmax = key
elseif key < nmin then nmin = key end
tmp[key], nnums = val, nnums + 1
end
end
if nmax ~= nil and nmax - nmin > nnums then
ctx.n_available = ctx.n_available + nmin + nnums - nmax
if ctx.n_available < 0 then error(modulename ..
', ‘filling_the_gaps’: It is possible to fill at most ' .. tostring(maxfill) .. ' parameters', 0) end
for idx = nmin, nmax do tbl[idx] = newval end
for key, val in pairs(tmp) do tbl[key] = val end
end
return context_iterate(ctx, ctx.fnpos + 2)
end
-- Syntax: #invoke:params|clearing|pipe to
library.clearing = function (ctx)
local tbl, numerics = ctx.params, {}
for key, val in pairs(tbl) do
if type(key) == 'number' then
numerics[key], tbl[key] = val, nil
end
end
for key, val in ipairs(numerics) do tbl[key] = val end
return context_iterate(ctx, ctx.fnpos + 1)
end
-- Syntax: #invoke:params|cutting|left cut|right cut|pipe to
library.cutting = function (ctx)
local opts, offs = ctx.pipe, ctx.fnpos
local lcut = tonumber(opts[offs + 1])
if lcut == nil or math.floor(lcut) ~= lcut then error(modulename ..
', ‘cutting’: Left cut must be an integer number', 0) end
local rcut = tonumber(opts[offs + 2])
if rcut == nil or math.floor(rcut) ~= rcut then error(modulename ..
', ‘cutting’: Right cut must be an integer number', 0) end
local tbl = ctx.params
local len = #tbl
if lcut < 0 then lcut = len + lcut end
if rcut < 0 then rcut = len + rcut end
local tot = lcut + rcut
if tot > 0 then
local cache = {}
if tot >= len then
for key in ipairs(tbl) do tbl[key] = nil end
tot = len
else
for idx = len - rcut + 1, len do tbl[idx] = nil end
for idx = 1, lcut do tbl[idx] = nil end
end
for key, val in pairs(tbl) do
if type(key) == 'number' and key > 0 then
if key > len then cache[key - tot] = val
else cache[key - lcut] = val end
tbl[key] = nil
end
end
for key, val in pairs(cache) do tbl[key] = val end
end
return context_iterate(ctx, offs + 3)
end
-- Syntax: #invoke:params|cropping|left crop|right crop|pipe to
library.cropping = function (ctx)
local opts, offs = ctx.pipe, ctx.fnpos
local lcut = tonumber(opts[offs + 1])
if lcut == nil or math.floor(lcut) ~= lcut then error(modulename ..
', ‘cropping’: Left crop must be an integer number', 0) end
local rcut = tonumber(opts[offs + 2])
if rcut == nil or math.floor(rcut) ~= rcut then error(modulename ..
', ‘cropping’: Right crop must be an integer number', 0) end
local tbl = ctx.params
local nmin, nmax
for key in pairs(tbl) do
if type(key) == 'number' then
if nmin == nil then nmin, nmax = key, key
elseif key > nmax then nmax = key
elseif key < nmin then nmin = key end
end
end
if nmin ~= nil then
local len = nmax - nmin + 1
if lcut < 0 then lcut = len + lcut end
if rcut < 0 then rcut = len + rcut end
if lcut + rcut - len > -1 then
for key in pairs(tbl) do
if type(key) == 'number' then tbl[key] = nil end
end
elseif lcut + rcut > 0 then
for idx = nmax - rcut + 1, nmax do tbl[idx] = nil end
for idx = nmin, nmin + lcut - 1 do tbl[idx] = nil end
local lshift = nmin + lcut - 1
if lshift > 0 then
for idx = lshift + 1, nmax do
tbl[idx - lshift], tbl[idx] =
tbl[idx], nil
end
end
end
end
return context_iterate(ctx, offs + 3)
end
-- Syntax: #invoke:params|purging|start offset|length|pipe to
library.purging = function (ctx)
local opts, offs = ctx.pipe, ctx.fnpos
local idx = tonumber(opts[offs + 1])
if idx == nil or math.floor(idx) ~= idx then error(modulename ..
', ‘purging’: Start offset must be an integer number', 0) end
local len = tonumber(opts[offs + 2])
if len == nil or math.floor(len) ~= len then error(modulename ..
', ‘purging’: Length must be an integer number', 0) end
local tbl = ctx.params
if len < 1 then
len = len + table.maxn(tbl)
if idx > len then return context_iterate(ctx, offs + 3) end
len = len - idx + 1
end
ctx.params = copy_table_reduced(tbl, idx, len)
return context_iterate(ctx, offs + 3)
end
-- Syntax: #invoke:params|backpurging|start offset|length|pipe to
library.backpurging = function (ctx)
local opts, offs = ctx.pipe, ctx.fnpos
local last = tonumber(opts[offs + 1])
if last == nil or math.floor(last) ~= last then error(modulename ..
', ‘backpurging’: Start offset must be an integer number', 0) end
local len = tonumber(opts[offs + 2])
if len == nil or math.floor(len) ~= len then error(modulename ..
', ‘backpurging’: Length must be an integer number', 0) end
local idx
local tbl = ctx.params
if len > 0 then idx = last - len + 1
else
for key in pairs(tbl) do
if type(key) == 'number' and (idx == nil or
key < idx) then idx = key end
end
if idx == nil then return context_iterate(ctx, offs + 3) end
idx = idx - len
if last < idx then return context_iterate(ctx, offs + 3) end
len = last - idx + 1
end
ctx.params = copy_table_reduced(ctx.params, idx, len)
return context_iterate(ctx, offs + 3)
end
-- Syntax: #invoke:params|shifting|addend|pipe to
library.shifting = function (ctx)
-- NOTE: `ctx.params` might be the original metatable! As a modifier,
-- this function MUST create a copy of it before returning
local nshift = tonumber(ctx.pipe[ctx.fnpos + 1])
if nshift == nil or nshift == 0 or math.floor(nshift) ~= nshift then
error(modulename .. ', ‘shifting’: A non-zero integer number must be provided', 0) end
local tbl = {}
for key, val in pairs(ctx.params) do
if type(key) == 'number' then tbl[key + nshift] = val
else tbl[key] = val end
end
ctx.params = tbl
return context_iterate(ctx, ctx.fnpos + 2)
end
-- Syntax: #invoke:params|reversing_numeric_names|pipe to
library.reversing_numeric_names = function (ctx)
local tbl, numerics, nmax = ctx.params, {}, 0
for key, val in pairs(tbl) do
if type(key) == 'number' then
numerics[key], tbl[key] = val, nil
if key > nmax then nmax = key end
end
end
for key, val in pairs(numerics) do tbl[nmax - key + 1] = val end
return context_iterate(ctx, ctx.fnpos + 1)
end
-- Syntax: #invoke:params|pivoting_numeric_names|pipe to
--[[
library.pivoting_numeric_names = function (ctx)
local tbl = ctx.params
local shift = #tbl + 1
if shift < 2 then return library.reversing_numeric_names(ctx) end
local tmp = {}
for key, val in pairs(tbl) do
if type(key) == 'number' then tmp[key], tbl[key] = val, nil end
end
for key, val in pairs(tmp) do tbl[shift - key] = val end
return context_iterate(ctx, ctx.fnpos + 1)
end
]]--
-- Syntax: #invoke:params|mirroring_numeric_names|pipe to
--[[
library.mirroring_numeric_names = function (ctx)
local nmax, nmin
local tbl, tmp = ctx.params, {}
for key, val in pairs(tbl) do
if type(key) == 'number' then
tmp[key], tbl[key] = val, nil
if nmax == nil then nmin, nmax = key, key
elseif key > nmax then nmax = key
elseif key < nmin then nmin = key end
end
end
for key, val in pairs(tmp) do tbl[nmax + nmin - key] = val end
return context_iterate(ctx, ctx.fnpos + 1)
end
]]--
-- Syntax: #invoke:params|swapping_numeric_names|pipe to
--[[
library.swapping_numeric_names = function (ctx)
local tmp
local tbl, cache, nsize = ctx.params, {}, 1
for key in pairs(tbl) do
if type(key) == 'number' then
cache[nsize], nsize = key, nsize + 1
end
end
table.sort(cache)
for idx = math.floor((nsize - 1) / 2), 1, -1 do
tmp = tbl[cache[idx] ]
tbl[cache[idx] ] = tbl[cache[nsize - idx] ]
tbl[cache[nsize - idx] ] = tmp
end
return context_iterate(ctx, ctx.fnpos + 1)
end
]]--
-- Syntax: #invoke:params|sorting_sequential_values|[criterion]|pipe to
library.sorting_sequential_values = function (ctx)
local sortfn
local opts, offs = ctx.pipe, ctx.fnpos
if opts[offs + 1] ~= nil then
sortfn = sortfunctions[opts[offs + 1]:match'^%s*(.-)%s*$']
end
if sortfn then table.sort(ctx.params, sortfn)
else table.sort(ctx.params) end -- i.e. either `false` or `nil`
if sortfn == nil then return context_iterate(ctx, offs + 1) end
return context_iterate(ctx, offs + 2)
end
-- Syntax: #invoke:params|splicing|[add to position]|position|increment|
-- [number of elements to write]|...|pipe to
library.splicing = function (ctx)
-- NOTE: `ctx.params` might be the original metatable! As a modifier,
-- this function MUST create a copy of it before returning
local tmp2, argc, pos, refp
local tbl, opts, offs = ctx.params, ctx.pipe, ctx.fnpos
local tmp1 = opts[offs + 1]
if tmp1 ~= nil then
tmp2 = tonumber(tmp1)
if tmp2 == nil or math.floor(tmp2) ~= tmp2 then
pos, argc, tmp2 = tonumber(opts[offs + 2]), offs + 4,
tmp1:match'^%s*(.*%S)'
if tmp2 ~= nil then
refp = position_references[tmp2]
if refp == nil then error(modulename ..
', ‘splicing’: ‘' .. tostring(tmp2) .. '’ is not a valid first argument', 0) end
else refp = 0 end
else pos, argc, refp = tmp2, offs + 3, 0 end
else pos, argc, refp = tonumber(opts[offs + 2]), offs + 4, 0 end
if pos == nil or math.floor(pos) ~= pos then error(modulename ..
', ‘splicing’: The position must be an integer number', 0) end
local len = tonumber(opts[argc - 1])
if len == nil or math.floor(len) ~= len then error(modulename ..
', ‘splicing’: The increment must be an integer number', 0) end
local insn = tonumber(opts[argc])
if len == 0 and (insn == nil or insn < 1) then error(modulename ..
', ‘splicing’: When the increment is zero the number of elements to write cannot be zero', 0) end
if refp == 2 then
for _ in ipairs(tbl) do pos = pos + 1 end
refp = 0
end
tmp1, tmp2 = nil, nil
if refp ~= 0 or len ~= 0 then
for key, val in pairs(tbl) do
if type(key) == 'number' then
if tmp1 == nil then tmp1, tmp2 = key, key
elseif key < tmp1 then tmp1 = key
elseif key > tmp2 then tmp2 = key end
end
end
end
if tmp2 == nil then len = 0
elseif refp == 3 then pos = pos + tmp2
elseif refp == 1 then pos = pos + tmp1 end
if len > 0 and pos + len > tmp1 and pos <= tmp2 then
tbl = copy_table_expanded(tbl, pos, len)
elseif len < 0 and pos - len > tmp1 and pos <= tmp2 then
tbl = copy_table_reduced(tbl, pos, -len)
else tbl = copy_or_ref_table(tbl, tbl ~= ctx.oparams) end
ctx.params = tbl
if insn == nil or insn < 0 or math.floor(insn) ~= insn then
return context_iterate(ctx, argc)
end
tmp1 = argc - offs - pos + 1
for key = pos, pos + insn - 1 do tbl[key] = opts[offs + key + tmp1] end
return context_iterate(ctx, argc + insn + 1)
end
-- Syntax: #invoke:params|imposing|name|value|pipe to
library.imposing = function (ctx)
local opts, offs = ctx.pipe, ctx.fnpos
if opts[offs + 1] == nil then error(modulename ..
', ‘imposing’: Missing parameter name to impose', 0) end
ctx.params[get_param_name(opts[offs + 1])] = opts[offs + 2]
return context_iterate(ctx, offs + 3)
end
-- Syntax: #invoke:params|providing|name|value|pipe to
library.providing = function (ctx)
local opts, offs = ctx.pipe, ctx.fnpos
if opts[offs + 1] == nil then error(modulename ..
', ‘providing’: Missing parameter name to provide', 0) end
local key = get_param_name(opts[offs + 1])
if ctx.params[key] == nil then ctx.params[key] = opts[offs + 2] end
return context_iterate(ctx, offs + 3)
end
-- Syntax: #invoke:params|reassigning|source|destination|[mode]|pipe to
library.reassigning = function (ctx)
local tbl, opts, offs = ctx.params, ctx.pipe, ctx.fnpos
if opts[offs + 1] == nil then error(modulename ..
', ‘reassigning’: Missing source parameter', 0) end
if opts[offs + 2] == nil then error(modulename ..
', ‘reassigning’: Missing destination parameter', 0) end
local mode, argc
local src = get_param_name(opts[offs + 1])
local val = tbl[src]
if opts[offs + 3] ~= nil then
mode = a_modes[opts[offs + 3]:match'^%s*(.-)%s*$']
end
if mode == nil then mode, argc = 0, offs + 3 else argc = offs + 4 end
if val == nil and mode > 1 then return context_iterate(ctx, argc) end
local dest = get_param_name(opts[offs + 2])
local tmp = tbl[dest] == nil
if mode % 2 == 0 or (mode == 7 and tmp) then tbl[src] = nil end
if tmp or mode < 4 then tbl[dest] = val end
return context_iterate(ctx, argc)
end
-- Syntax: #invoke:params|discarding|name|[how many]|pipe to
library.discarding = function (ctx)
local opts, offs = ctx.pipe, ctx.fnpos
if opts[offs + 1] == nil then error(modulename ..
', ‘discarding’: Missing parameter name to discard', 0) end
local len = tonumber(opts[offs + 2])
if len == nil then
ctx.params[get_param_name(opts[offs + 1])] = nil
return context_iterate(ctx, offs + 2)
end
local key = tonumber(opts[offs + 1])
if key == nil or math.floor(key) ~= key then error(modulename ..
', ‘discarding’: A range was provided, but the initial parameter name is not an integer number', 0) end
if len < 1 or math.floor(len) ~= len then error(modulename ..
', ‘discarding’: A range can only be an integer number greater than zero', 0) end
for idx = key, key + len - 1 do ctx.params[idx] = nil end
return context_iterate(ctx, offs + 3)
end
-- Syntax: #invoke:params|excluding_non-numeric_names|pipe to
library['excluding_non-numeric_names'] = function (ctx)
local tmp = ctx.params
for key, val in pairs(tmp) do
if type(key) ~= 'number' then tmp[key] = nil end
end
return context_iterate(ctx, ctx.fnpos + 1)
end
-- Syntax: #invoke:params|excluding_numeric_names|pipe to
library.excluding_numeric_names = function (ctx)
local tmp = ctx.params
for key, val in pairs(tmp) do
if type(key) == 'number' then tmp[key] = nil end
end
return context_iterate(ctx, ctx.fnpos + 1)
end
-- Syntax: #invoke:params|with_name_matching|target 1|[plain flag 1]|[or]|
-- [target 2]|[plain flag 2]|[or]|[...]|[target N]|[plain flag
-- N]|pipe to
library.with_name_matching = function (ctx)
-- NOTE: `ctx.params` might be the original metatable! As a modifier,
-- this function MUST create a copy of it before returning
local tmp, ptn
local tbl, newparams, opts, offs = ctx.params, {}, ctx.pipe, ctx.fnpos
local targets, nptns, argc = load_pattern_args(opts, offs,
'with_name_matching')
for idx = 1, nptns do
ptn = targets[idx]
if ptn[3] then
tmp = ptn[1]
if tmp == '0' or tmp:find'^%-?[1-9]%d*$' ~= nil then
tmp = tonumber(tmp)
end
newparams[tmp] = tbl[tmp]
else
for key, val in pairs(tbl) do
if tostring(key):find(ptn[1], 1, ptn[2]) then
newparams[key] = val
end
end
end
end
ctx.params = newparams
return context_iterate(ctx, argc)
end
-- Syntax: #invoke:params|with_name_not_matching|target 1|[plain flag 1]|
-- [and]|[target 2]|[plain flag 2]|[and]|[...]|[target N]|[plain
-- flag N]|pipe to
library.with_name_not_matching = function (ctx)
local tbl, opts, offs = ctx.params, ctx.pipe, ctx.fnpos
local targets, nptns, argc = load_pattern_args(opts, offs,
'with_name_not_matching')
if nptns == 1 and targets[1][3] then
local tmp = targets[1][1]
if tmp == '0' or tmp:find'^%-?[1-9]%d*$' ~= nil then
tbl[tonumber(tmp)] = nil
else tbl[tmp] = nil end
return context_iterate(ctx, argc)
end
local yesmatch, ptn
for key in pairs(tbl) do
yesmatch = true
for idx = 1, nptns do
ptn = targets[idx]
if ptn[3] then
if tostring(key) ~= ptn[1] then
yesmatch = false
break
end
elseif not tostring(key):find(ptn[1], 1, ptn[2]) then
yesmatch = false
break
end
end
if yesmatch then tbl[key] = nil end
end
return context_iterate(ctx, argc)
end
-- Syntax: #invoke:params|with_value_matching|target 1|[plain flag 1]|[or]|
-- [target 2]|[plain flag 2]|[or]|[...]|[target N]|[plain flag
-- N]|pipe to
library.with_value_matching = function (ctx)
local nomatch, ptn
local tbl, opts, offs = ctx.params, ctx.pipe, ctx.fnpos
local targets, nptns, argc = load_pattern_args(opts, offs,
'with_value_matching')
for key, val in pairs(tbl) do
nomatch = true
for idx = 1, nptns do
ptn = targets[idx]
if ptn[3] then
if val == ptn[1] then
nomatch = false
break
end
elseif val:find(ptn[1], 1, ptn[2]) then
nomatch = false
break
end
end
if nomatch then tbl[key] = nil end
end
return context_iterate(ctx, argc)
end
-- Syntax: #invoke:params|with_value_not_matching|target 1|[plain flag 1]|
-- [and]|[target 2]|[plain flag 2]|[and]|[...]|[target N]|[plain
-- flag N]|pipe to
library.with_value_not_matching = function (ctx)
local yesmatch, ptn
local tbl, opts, offs = ctx.params, ctx.pipe, ctx.fnpos
local targets, nptns, argc = load_pattern_args(opts, offs,
'with_value_not_matching')
for key, val in pairs(tbl) do
yesmatch = true
for idx = 1, nptns do
ptn = targets[idx]
if ptn[3] then
if val ~= ptn[1] then
yesmatch = false
break
end
elseif not val:find(ptn[1], 1, ptn[2]) then
yesmatch = false
break
end
end
if yesmatch then tbl[key] = nil end
end
return context_iterate(ctx, argc)
end
-- Syntax: #invoke:params|keeping_at_most|number of parameters to pick|pipe to
library.keeping_at_most = function (ctx)
-- NOTE: `ctx.params` might be the original metatable! As a modifier,
-- this function MUST create a copy of it before returning
local len = tonumber(ctx.pipe[ctx.fnpos + 1])
if len == nil or len < 1 or math.floor(len) ~= len then error(modulename ..
', ‘keeping_at_most’: The number of parameters to keep must be an integer greater than zero', 0) end
ctx.params = copy_table_maxn({}, ctx.params, len)
return context_iterate(ctx, ctx.fnpos + 2)
end
-- Syntax: #invoke:params|trimming_values|pipe to
library.trimming_values = function (ctx)
local tbl = ctx.params
for key, val in pairs(tbl) do tbl[key] = val:match'^%s*(.-)%s*$' end
return context_iterate(ctx, ctx.fnpos + 1)
end
-- Syntax: #invoke:params|mapping_to_lowercase|pipe to
library.mapping_to_lowercase = function (ctx)
local tbl = ctx.params
for key, val in pairs(tbl) do tbl[key] = val:lower() end
return context_iterate(ctx, ctx.fnpos + 1)
end
-- Syntax: #invoke:params|mapping_to_uppercase|pipe to
library.mapping_to_uppercase = function (ctx)
local tbl = ctx.params
for key, val in pairs(tbl) do tbl[key] = val:upper() end
return context_iterate(ctx, ctx.fnpos + 1)
end
-- Syntax: #invoke:params|mapping_by_calling|template name|[call
-- style]|[let/use]|[...]|[let/use]|[...]|[number of additional
-- parameters]|[parameter 1]|[parameter 2]|[...]|[parameter N]|pipe to
library.mapping_by_calling = function (ctx)
local tname
local opts, offs = ctx.pipe, ctx.fnpos
if opts[offs + 1] ~= nil then
tname = opts[offs + 1]:match'^%s*(.*%S)'
end
if tname == nil then error(modulename ..
', ‘mapping_by_calling’: No template name was provided', 0) end
local margs, argc, looptype, karg, varg, tbl, mem =
load_callback_opts(opts, offs + 1, mapping_styles.values_only,
ctx.params)
local model = { title = tname, args = margs }
value_maps[looptype](tbl, margs, karg, varg, function ()
return ctx.frame:expandTemplate(model)
end)
for key, val in pairs(mem) do tbl[key] = val end
ctx.params = tbl
return context_iterate(ctx, argc)
end
-- Syntax: #invoke:params|mapping_by_invoking|module name|function name|[call
-- style]|[let/use]|[...]|[let/use]|[...]|[number of additional
-- arguments]|[argument 1]|[argument 2]|[...]|[argument N]|pipe to
library.mapping_by_invoking = function (ctx)
local mname, fname
local opts, offs = ctx.pipe, ctx.fnpos
if opts[offs + 1] ~= nil then
mname = opts[offs + 1]:match'^%s*(.*%S)'
end
if mname == nil then error(modulename ..
', ‘mapping_by_invoking’: No module name was provided', 0) end
if opts[offs + 2] ~= nil then
fname = opts[offs + 2]:match'^%s*(.*%S)'
end
if fname == nil then error(modulename ..
', ‘mapping_by_invoking’: No function name was provided', 0) end
local margs, argc, looptype, karg, varg, tbl, mem =
load_callback_opts(opts, offs + 2, mapping_styles.values_only,
ctx.params)
local model = { title = 'Module:' .. mname, args = margs }
local mfunc = require(model.title)[fname]
if mfunc == nil then error(modulename ..
', ‘mapping_by_invoking’: The function ‘' .. fname .. '’ does not exist', 0) end
value_maps[looptype](tbl, margs, karg, varg, function ()
return tostring(mfunc(ctx.frame:newChild(model)))
end)
for key, val in pairs(mem) do tbl[key] = val end
ctx.params = tbl
return context_iterate(ctx, argc)
end
-- Syntax: #invoke:params|mapping_by_magic|parser function|[call
-- style]|[let/use]|[...]|[let/use]|[...]|[number of additional
-- arguments]|[argument 1]|[argument 2]|[...]|[argument N]|pipe to
library.mapping_by_magic = function (ctx)
local magic
local opts, offs = ctx.pipe, ctx.fnpos
if opts[offs + 1] ~= nil then magic = opts[offs + 1]:match'^%s*(.*%S)' end
if magic == nil then error(modulename ..
', ‘mapping_by_magic’: No parser function was provided', 0) end
local margs, argc, looptype, karg, varg, tbl, mem =
load_callback_opts(opts, offs + 1, mapping_styles.values_only,
ctx.params)
value_maps[looptype](tbl, margs, karg, varg, function ()
return ctx.frame:callParserFunction(magic, margs)
end)
for key, val in pairs(mem) do tbl[key] = val end
ctx.params = tbl
return context_iterate(ctx, argc)
end
-- Syntax: #invoke:params|mapping_by_replacing|target|replace|[count]|[plain
-- flag]|pipe to
library.mapping_by_replacing = function (ctx)
local ptn, repl, nmax, flg, argc, die =
load_replace_args(ctx.pipe, ctx.fnpos, 'mapping_by_replacing')
if die then return context_iterate(ctx, argc) end
local tbl = ctx.params
if flg == 3 then
for key, val in pairs(tbl) do
if val == ptn then tbl[key] = repl end
end
else
if flg == 2 then
-- Copied from Module:String's `str._escapePattern()`
ptn = ptn:gsub('[%(%)%.%%%+%-%*%?%[%^%$%]]', '%%%0')
end
for key, val in pairs(tbl) do
tbl[key] = val:gsub(ptn, repl, nmax)
end
end
return context_iterate(ctx, argc)
end
-- Syntax: #invoke:params|mapping_by_mixing|mixing string|pipe to
library.mapping_by_mixing = function (ctx)
local opts, offs = ctx.pipe, ctx.fnpos
if opts[offs + 1] == nil then error(modulename ..
', ‘mapping_by_mixing’: No mixing string was provided', 0) end
local tbl, mix = ctx.params, opts[offs + 1]
if mix == '$#' then
for key in pairs(tbl) do tbl[key] = tostring(key) end
return context_iterate(ctx, offs + 2)
end
local skel, cnv, n_parts = parse_placeholder_string(mix)
for key, val in pairs(tbl) do
for idx = 2, n_parts, 2 do
if skel[idx] then cnv[idx] = val
else cnv[idx] = tostring(key) end
end
tbl[key] = table.concat(cnv)
end
return context_iterate(ctx, offs + 2)
end
-- Syntax: #invoke:params|renaming_to_lowercase|pipe to
library.renaming_to_lowercase = function (ctx)
-- NOTE: `ctx.params` might be the original metatable! As a modifier,
-- this function MUST create a copy of it before returning
local cache = {}
for key, val in pairs(ctx.params) do
if type(key) == 'string' then cache[key:lower()] = val else
cache[key] = val end
end
ctx.params = cache
return context_iterate(ctx, ctx.fnpos + 1)
end
-- Syntax: #invoke:params|renaming_to_uppercase|pipe to
library.renaming_to_uppercase = function (ctx)
-- NOTE: `ctx.params` might be the original metatable! As a modifier,
-- this function MUST create a copy of it before returning
local cache = {}
for key, val in pairs(ctx.params) do
if type(key) == 'string' then cache[key:upper()] = val else
cache[key] = val end
end
ctx.params = cache
return context_iterate(ctx, ctx.fnpos + 1)
end
-- Syntax: #invoke:params|renaming_to_sequence|[sort order]|pipe to
library.renaming_to_sequence = function (ctx)
-- NOTE: `ctx.params` might be the original metatable! As a modifier,
-- this function MUST create a copy of it before returning
local cache, len
local tbl = ctx.params
local sortfn, argc, do_sort = load_sort_opt(ctx.pipe[ctx.fnpos + 1])
if do_sort then
local words, wl
cache, words, len, wl = get_sorted_key_list(tbl, sortfn)
for idx = 1, len do cache[idx] = tbl[cache[idx]] end
for idx = 1, wl do cache[len + idx] = tbl[words[idx]] end
else
cache, len = {}, 1
for _, val in pairs(tbl) do cache[len], len = val, len + 1 end
end
ctx.params = cache
return context_iterate(ctx, ctx.fnpos + argc)
end
-- Syntax: #invoke:params|renaming_by_calling|template name|[call
-- style]|[let/use]|[...]|[let/use]|[...]|[number of additional
-- parameters]|[parameter 1]|[parameter 2]|[...]|[parameter N]|pipe to
library.renaming_by_calling = function (ctx)
local tname
local opts, offs = ctx.pipe, ctx.fnpos
if opts[offs + 1] ~= nil then
tname = opts[offs + 1]:match'^%s*(.*%S)'
end
if tname == nil then error(modulename ..
', ‘renaming_by_calling’: No template name was provided', 0) end
local rargs, argc, looptype, karg, varg, tbl, mem =
load_callback_opts(opts, offs + 1, mapping_styles.names_only,
ctx.params)
local model = { title = tname, args = rargs }
map_names(tbl, rargs, karg, varg, looptype, function ()
return ctx.frame:expandTemplate(model)
end)
for key, val in pairs(mem) do tbl[key] = val end
ctx.params = tbl
return context_iterate(ctx, argc)
end
-- Syntax: #invoke:params|renaming_by_invoking|module name|function
-- name|[call style]|[let/use]|[...]|[let/use]|[...]|[number of
-- additional arguments]|[argument 1]|[argument 2]|[...]|[argument
-- N]|pipe to
library.renaming_by_invoking = function (ctx)
local mname, fname
local opts, offs = ctx.pipe, ctx.fnpos
if opts[offs + 1] ~= nil then
mname = opts[offs + 1]:match'^%s*(.*%S)'
end
if mname == nil then error(modulename ..
', ‘renaming_by_invoking’: No module name was provided', 0) end
if opts[offs + 2] ~= nil then
fname = opts[offs + 2]:match'^%s*(.*%S)'
end
if fname == nil then error(modulename ..
', ‘renaming_by_invoking’: No function name was provided', 0) end
local rargs, argc, looptype, karg, varg, tbl, mem =
load_callback_opts(opts, offs + 2, mapping_styles.names_only,
ctx.params)
local model = { title = 'Module:' .. mname, args = rargs }
local mfunc = require(model.title)[fname]
if mfunc == nil then error(modulename ..
', ‘renaming_by_invoking’: The function ‘' .. fname .. '’ does not exist', 0) end
map_names(tbl, rargs, karg, varg, looptype, function ()
return tostring(mfunc(ctx.frame:newChild(model)))
end)
for key, val in pairs(mem) do tbl[key] = val end
ctx.params = tbl
return context_iterate(ctx, argc)
end
-- Syntax: #invoke:params|renaming_by_magic|parser function|[call
-- style]|[let/use]|[...]|[let/use]|[...]|[number of additional
-- arguments]|[argument 1]|[argument 2]|[...]|[argument N]|pipe to
library.renaming_by_magic = function (ctx)
local opts, offs = ctx.pipe, ctx.fnpos
local magic
if opts[offs + 1] ~= nil then
magic = opts[offs + 1]:match'^%s*(.*%S)'
end
if magic == nil then error(modulename ..
', ‘renaming_by_magic’: No parser function was provided', 0) end
local rargs, argc, looptype, karg, varg, tbl, mem =
load_callback_opts(opts, offs + 1, mapping_styles.names_only,
ctx.params)
map_names(tbl, rargs, karg, varg, looptype, function ()
return ctx.frame:callParserFunction(magic, rargs)
end)
for key, val in pairs(mem) do tbl[key] = val end
ctx.params = tbl
return context_iterate(ctx, argc)
end
-- Syntax: #invoke:params|renaming_by_replacing|target|replace|[count]|[plain
-- flag]|pipe to
library.renaming_by_replacing = function (ctx)
local ptn, repl, nmax, flg, argc, die =
load_replace_args(ctx.pipe, ctx.fnpos, 'renaming_by_replacing')
if die then return context_iterate(ctx, argc) end
local tbl = ctx.params
if flg == 3 then
ptn = get_param_name(ptn)
local val = tbl[ptn]
if val ~= nil then
tbl[ptn], tbl[get_param_name(repl)] = nil, val
end
else
if flg == 2 then
-- Copied from Module:String's `str._escapePattern()`
ptn = ptn:gsub('[%(%)%.%%%+%-%*%?%[%^%$%]]', '%%%0')
end
local cache = {}
for key, val in pairs(tbl) do
steal_if_renamed(val, tbl, key, cache,
tostring(key):gsub(ptn, repl, nmax))
end
for key, val in pairs(cache) do tbl[key] = val end
end
return context_iterate(ctx, argc)
end
-- Syntax: #invoke:params|renaming_by_mixing|mixing string|pipe to
library.renaming_by_mixing = function (ctx)
-- NOTE: `ctx.params` might be the original metatable! As a modifier,
-- this function MUST create a copy of it before returning
local mix = ctx.pipe[ctx.fnpos + 1]
if mix == nil then error(modulename ..
', ‘renaming_by_mixing’: No mixing string was provided', 0) end
local cache = {}
mix = mix:match'^%s*(.-)%s*$'
if mix == '$@' then
for _, val in pairs(ctx.params) do
cache[get_param_name(val)] = val
end
else
local skel, canvas, n_parts = parse_placeholder_string(mix)
for key, val in pairs(ctx.params) do
for idx = 2, n_parts, 2 do
if skel[idx] then canvas[idx] = val
else canvas[idx] = tostring(key) end
end
cache[get_param_name(table.concat(canvas))] = val
end
end
ctx.params = cache
return context_iterate(ctx, ctx.fnpos + 2)
end
-- Syntax: #invoke:params|grouping_by_calling|template
-- name|[let/use]|[...]|[let/use]|[...]|[number of additional
-- arguments]|[argument 1]|[argument 2]|[...]|[argument N]|pipe to
library.grouping_by_calling = function (ctx)
-- NOTE: `ctx.params` might be the original metatable! As a modifier,
-- this function MUST create a copy of it before returning
local opts, offs = ctx.pipe, ctx.fnpos
local tmp, argc, tbl, mem =
load_child_opts(opts, offs + 2, 0, ctx.params)
local gargs = {}
for key, val in pairs(tmp) do
if type(key) == 'number' and key < 1 then gargs[key - 1] = val
else gargs[key] = val end
end
tmp = opts[offs + 1]
if tmp ~= nil then tmp = tmp:match'^%s*(.*%S)' end
if tmp == nil then error(modulename ..
', ‘grouping_by_calling’: No template name was provided', 0) end
local model = { title = tmp }
local groups = make_groups(tbl)
for gid, group in pairs(groups) do
for key, val in pairs(gargs) do group[key] = val end
group[0], model.args = gid, group
groups[gid] = ctx.frame:expandTemplate(model)
end
for key, val in pairs(mem) do groups[key] = val end
ctx.params = groups
return context_iterate(ctx, argc)
end
-- Syntax: #invoke:params|parsing|string to parse|[trim flag]|[iteration
-- delimiter setter]|[...]|[key-value delimiter setter]|[...]|pipe to
library.parsing = function (ctx)
local opts, offs = ctx.pipe, ctx.fnpos
if opts[offs + 1] == nil then error(modulename ..
', ‘parsing’: No string to parse was provided', 0) end
local isep, iplain, psep, pplain, trimnamed, trimunnamed, argc =
load_parse_opts(opts, offs + 2, '|', '=')
parse_parameter_string(ctx.params, opts[offs + 1], isep, iplain, psep,
pplain, trimnamed, trimunnamed)
return context_iterate(ctx, argc)
end
-- Syntax: #invoke:params|reinterpreting|parameter to reinterpret|[trim
-- flag]|[iteration delimiter setter]|[...]|[key-value delimiter
-- setter]|[...]|pipe to
library.reinterpreting = function (ctx)
local opts, offs = ctx.pipe, ctx.fnpos
if opts[offs + 1] == nil then error(modulename ..
', ‘reinterpreting’: No parameter to reinterpret was provided', 0) end
local isep, iplain, psep, pplain, trimnamed, trimunnamed, argc =
load_parse_opts(opts, offs + 2, '|', '=')
local tbl, tmp = ctx.params, get_param_name(opts[offs + 1])
local str = tbl[tmp]
if str ~= nil then
tbl[tmp] = nil
parse_parameter_string(tbl, str, isep, iplain, psep, pplain,
trimnamed, trimunnamed)
end
return context_iterate(ctx, argc)
end
-- Syntax: #invoke:params|evaluating|string to parse|[trim flag]|[iteration
-- delimiter setter]|[...]|[key-value delimiter setter]|[...]|pipe to
library.evaluating = function (ctx)
local opts, offs = ctx.pipe, ctx.fnpos
if opts[offs + 1] == nil then error(modulename ..
', ‘evaluating’: No string to parse was provided', 0) end
local isep, iplain, psep, pplain, trimnamed, trimunnamed, repos =
load_parse_opts(opts, offs + 2, '!', ':')
if opts[offs + 1]:match'^%s*(.*%S)' == nil then
remove_numeric_keys(opts, offs, repos - offs)
return context_iterate(ctx, offs)
end
local new_opts, cache = {}, {}
parse_parameter_string(cache, opts[offs + 1], isep, iplain, psep,
pplain, trimnamed, trimunnamed)
local shift = #cache + offs - repos + 1
for key, val in pairs(opts) do
if type(key) ~= 'number' or key < offs then new_opts[key] = val
elseif key >= repos then new_opts[key + shift] = val end
end
for key, val in pairs(cache) do
if type(key) ~= 'number' or key < 1 then new_opts[key] = val
else new_opts[key + offs] = val end
end
ctx.pipe = new_opts
return context_iterate(ctx, offs + 1)
end
-- Syntax: #invoke:params|mixing_names_and_values|mixing string|pipe to
library.mixing_names_and_values = function (ctx)
-- NOTE: `ctx.params` might be the original metatable! As a modifier,
-- this function MUST create a copy of it before returning
local opts, offs = ctx.pipe, ctx.fnpos
if opts[offs + 1] == nil then error(modulename ..
', ‘mixing_names_and_values’: No mixing string was provided for parameter names', 0) end
if opts[offs + 2] == nil then error(modulename ..
', ‘mixing_names_and_values’: No mixing string was provided for parameter values', 0) end
local tmp
local cache, mix_k, mix_v =
{}, opts[offs + 1]:match'^%s*(.-)%s*$', opts[offs + 2]
if mix_k == '$@' and mix_v == '$@' then
for _, val in pairs(ctx.params) do
cache[get_param_name(val)] = val
end
elseif mix_k == '$@' and mix_v == '$#' then
for key, val in pairs(ctx.params) do
cache[get_param_name(val)] = tostring(key)
end
elseif mix_k == '$#' and mix_v == '$#' then
for key in pairs(ctx.params) do cache[key] = tostring(key) end
else
local skel_k, cnv_k, n_parts_k = parse_placeholder_string(mix_k)
local skel_v, cnv_v, n_parts_v = parse_placeholder_string(mix_v)
for key, val in pairs(ctx.params) do
tmp = tostring(key)
for idx = 2, n_parts_k, 2 do
if skel_k[idx] then cnv_k[idx] = val
else cnv_k[idx] = tmp end
end
for idx = 2, n_parts_v, 2 do
if skel_v[idx] then cnv_v[idx] = val
else cnv_v[idx] = tmp end
end
cache[get_param_name(table.concat(cnv_k))] =
table.concat(cnv_v)
end
end
ctx.params = cache
return context_iterate(ctx, offs + 3)
end
-- Syntax: #invoke:params|combining|new parameter name|[sort
-- order]|[with/without flushed glue]|setting directives|...|pipe to
library.combining = function (ctx)
-- NOTE: `ctx.params` might be the original metatable! As a modifier,
-- this function MUST create a copy of it before returning
return context_iterate(ctx, combine_parameters(
ctx,
function (key, val, kvs) return key .. kvs .. val end,
'combining'
) + 1)
end
-- Syntax: #invoke:params|combining_values|new parameter name|[sort
-- order]|[with/without flushed glue]|setting directives|...|pipe to
library.combining_values = function (ctx)
-- NOTE: `ctx.params` might be the original metatable! As a modifier,
-- this function MUST create a copy of it before returning
return context_iterate(ctx, combine_parameters(
ctx,
function (key, val, kvs) return val end,
'combining_values'
) + 1)
end
-- Syntax: #invoke:params|combining_by_calling|template name|new parameter
-- name|pipe to
library.combining_by_calling = function (ctx)
-- NOTE: `ctx.params` might be the original metatable! As a modifier,
-- this function MUST create a copy of it before returning
local opts, offs = ctx.pipe, ctx.fnpos
local tname = opts[offs + 1]
if tname ~= nil then tname = tname:match'^%s*(.*%S)'
else error(modulename ..
', ‘combining_by_calling’: No template name was provided', 0) end
if opts[offs + 2] == nil then error(modulename ..
', ‘combining_by_calling’: No parameter name was provided', 0) end
ctx.params = {
[get_param_name(opts[offs + 2])] = ctx.frame:expandTemplate{
title = tname,
args = ctx.params
}
}
return context_iterate(ctx, offs + 3)
end
-- Syntax: #invoke:params|combining_by_invoking|module name|function name|new
-- parameter name|pipe to
library.combining_by_invoking = function (ctx)
-- NOTE: `ctx.params` might be the original metatable! As a modifier,
-- this function MUST create a copy of it before returning
local opts, offs = ctx.pipe, ctx.fnpos
local mname = opts[offs + 1]
if mname ~= nil then mname = mname:match'^%s*(.*%S)'
else error(modulename ..
', ‘combining_by_invoking’: No module name was provided', 0) end
local fname = opts[offs + 2]
if fname ~= nil then fname = fname:match'^%s*(.*%S)'
else error(modulename ..
', ‘combining_by_invoking’: No function name was provided', 0) end
if opts[offs + 3] == nil then error(modulename ..
', ‘combining_by_invoking’: No parameter name was provided', 0) end
local model = { title = 'Module:' .. mname, args = ctx.params }
local mfunc = require(model.title)[fname]
if mfunc == nil then error(modulename ..
', ‘mapping_by_invoking’: The function ‘' .. fname .. '’ does not exist', 0) end
ctx.params = {
[get_param_name(opts[offs + 3])] =
tostring(mfunc(ctx.frame:newChild(model)))
}
return context_iterate(ctx, offs + 4)
end
-- Syntax: #invoke:params|combining_by_magic|parser function|new parameter
-- name|pipe to
library.combining_by_magic = function (ctx)
-- NOTE: `ctx.params` might be the original metatable! As a modifier,
-- this function MUST create a copy of it before returning
local opts, offs = ctx.pipe, ctx.fnpos
local magic = opts[offs + 1]
if magic ~= nil then magic = magic:match'^%s*(.*%S)'
else error(modulename ..
', ‘combining_by_magic’: No parser function was provided', 0) end
if opts[offs + 2] == nil then error(modulename ..
', ‘combining_by_magic’: No parameter name was provided', 0) end
ctx.params = {
[get_param_name(opts[offs + 2])] =
ctx.frame:callParserFunction(magic, ctx.params)
}
return context_iterate(ctx, offs + 3)
end
-- Syntax: #invoke:params|snapshotting|[maximum number]|pipe to
library.snapshotting = function (ctx)
return context_iterate(ctx, ctx.fnpos + make_child(ctx, ctx.params, 'snapshotting'))
end
-- Syntax: #invoke:params|remembering|[maximum number]|pipe to
library.remembering = function (ctx)
return context_iterate(ctx, ctx.fnpos + make_child(ctx, ctx.oparams, 'remembering'))
end
-- Syntax: #invoke:params|entering_substack|[new]|pipe to
library.entering_substack = function (ctx)
local tbl, opts, offs, ncurrparent =
ctx.params, ctx.pipe, ctx.fnpos, ctx.n_parents + 1
if ctx.parents == nil then ctx.parents = { tbl }
else ctx.parents[ncurrparent] = tbl end
ctx.n_parents = ncurrparent
if opts[offs + 1] ~= nil and opts[offs + 1]:match'^%s*new%s*$' then
ctx.params = {}
return context_iterate(ctx, offs + 2)
end
local currsnap = ctx.n_children
if currsnap > 0 then
ctx.params, ctx.children[currsnap], ctx.n_children =
ctx.children[currsnap], nil, currsnap - 1
else
local newparams = {}
for key, val in pairs(tbl) do newparams[key] = val end
ctx.params = newparams
end
return context_iterate(ctx, offs + 1)
end
-- Syntax: #invoke:params|pulling|parameter name|pipe to
library.pulling = function (ctx)
local opts, offs = ctx.pipe, ctx.fnpos
if opts[offs + 1] == nil then error(modulename ..
', ‘pulling’: No parameter to pull was provided', 0) end
local tmp = ctx.n_parents
local parent = tmp < 1 and ctx.oparams or ctx.parents[tmp]
tmp = get_param_name(opts[offs + 1])
if parent[tmp] ~= nil then ctx.params[tmp] = parent[tmp] end
return context_iterate(ctx, ctx.fnpos + 2)
end
-- Syntax: #invoke:params|recalling|parameter name|pipe to
library.recalling = function (ctx)
local opts, offs = ctx.pipe, ctx.fnpos
if opts[offs + 1] == nil then error(modulename ..
', ‘recalling’: No parameter to recall was provided', 0) end
local arg = get_param_name(opts[offs + 1])
if ctx.oparams[arg] ~= nil then ctx.params[arg] = ctx.oparams[arg] end
return context_iterate(ctx, ctx.fnpos + 2)
end
-- Syntax: #invoke:params|finding|parameter name|pipe to
--[[
library.finding = function (ctx)
local opts, offs = ctx.pipe, ctx.fnpos
if opts[offs + 1] == nil then error(modulename ..
', ‘finding’: No parameter to find was provided', 0) end
local arg = get_param_name(opts[offs + 1])
local parent
for idx = ctx.n_parents, 1, -1 do
parent = ctx.parents[idx]
if parent[arg] ~= nil then
ctx.params[arg] = parent[arg]
return context_iterate(ctx, offs + 2)
end
end
if ctx.oparams[arg] ~= nil then ctx.params[arg] = ctx.oparams[arg] end
return context_iterate(ctx, offs + 2)
end
]]--
-- Syntax: #invoke:params|picking|number of parameters to pick|pipe to
--[[
library.picking = function (ctx)
local len = tonumber(ctx.pipe[ctx.fnpos + 1])
if len == nil or len < 1 or math.floor(len) ~= len then error(modulename ..
', ‘picking’: The number of parameters to pick must be an integer greater than zero', 0) end
if ctx.n_parents < 1 then copy_table_maxn(ctx.params, ctx.oparams, len)
else copy_table_maxn(ctx.params, ctx.parents[ctx.n_parents], len) end
return context_iterate(ctx, ctx.fnpos + 2)
end
]]--
-- Syntax: #invoke:params|detaching_substack|pipe to
library.detaching_substack = function (ctx)
local ncurrparent = ctx.n_parents
if ncurrparent < 1 then error(modulename ..
', ‘detaching_substack’: No substack has been created', 0) end
local parent = ctx.parents[ncurrparent]
for key in pairs(ctx.params) do parent[key] = nil end
return context_iterate(ctx, ctx.fnpos + 1)
end
-- Syntax: #invoke:params|dropping_substack|pipe to
library.dropping_substack = function (ctx)
local ncurrparent = ctx.n_parents
if ncurrparent < 1 then error(modulename ..
', ‘dropping_substack’: No substack has been created', 0) end
ctx.params, ctx.parents[ncurrparent], ctx.n_parents =
ctx.parents[ncurrparent], nil, ncurrparent - 1
return context_iterate(ctx, ctx.fnpos + 1)
end
-- Syntax: #invoke:params|leaving_substack|pipe to
library.leaving_substack = function (ctx)
local ncurrparent = ctx.n_parents
if ncurrparent < 1 then error(modulename ..
', ‘leaving_substack’: No substack has been created', 0) end
local currsnap = ctx.n_children + 1
if ctx.children == nil then ctx.children = { ctx.params }
else ctx.children[currsnap] = ctx.params end
ctx.params, ctx.parents[ncurrparent], ctx.n_parents, ctx.n_children =
ctx.parents[ncurrparent], nil, ncurrparent - 1, currsnap
return context_iterate(ctx, ctx.fnpos + 1)
end
-- Syntax: #invoke:params|merging_substack|pipe to
library.merging_substack = function (ctx)
local ncurrparent = ctx.n_parents
if ncurrparent < 1 then error(modulename ..
', ‘merging_substack’: No substack has been created', 0) end
local parent, child = ctx.parents[ncurrparent], ctx.params
ctx.params, ctx.parents[ncurrparent], ctx.n_parents = parent, nil,
ncurrparent - 1
for key, val in pairs(child) do parent[key] = val end
return context_iterate(ctx, ctx.fnpos + 1)
end
-- Syntax: #invoke:params|flushing|pipe to
library.flushing = function (ctx)
if ctx.n_children < 1 then error(modulename ..
', ‘flushing’: There are no substacks to flush', 0) end
local parent, currsnap = ctx.params, ctx.n_children
for key, val in pairs(ctx.children[currsnap]) do parent[key] = val end
ctx.children[currsnap], ctx.n_children = nil, currsnap - 1
return context_iterate(ctx, ctx.fnpos + 1)
end
-- Syntax: #invoke:params|setting_by_flushing|pipe to
library.setting_by_flushing = function (ctx)
set_strings_from_substack(ctx, ctx, 'setting_by_flushing')
return context_iterate(ctx, ctx.fnpos + 1)
end
--[[ Functions ]]--
-----------------------------
-- Syntax: #invoke:params|count
library.count = function (ctx)
-- NOTE: `ctx.params` might be the original metatable!
local retval = 0
for _ in ctx.iterfunc(ctx.params) do retval = retval + 1 end
if ctx.subset == -1 then retval = retval - #ctx.params end
ctx.text = retval
return false
end
-- Syntax: #invoke:args|concat_and_call|template name|[prepend 1]|[prepend 2]|
-- [...]|[item n]|[named item 1=value 1]|[...]|[named item n=value
-- n]|[...]
library.concat_and_call = function (ctx)
-- NOTE: `ctx.params` might be the original metatable!
local tname
local opts, offs = ctx.pipe, ctx.fnpos
if opts[offs + 1] ~= nil then
tname = opts[offs + 1]:match'^%s*(.*%S)'
end
if tname == nil then error(modulename ..
', ‘concat_and_call’: No template name was provided', 0) end
ctx.text = ctx.frame:expandTemplate{
title = tname,
args = concat_params(ctx, offs + 1)
}
return false
end
-- Syntax: #invoke:args|concat_and_invoke|module name|function name|[prepend
-- 1]|[prepend 2]|[...]|[item n]|[named item 1=value 1]|[...]|[named
-- item n=value n]|[...]
library.concat_and_invoke = function (ctx)
-- NOTE: `ctx.params` might be the original metatable!
local mname, fname
local opts, offs = ctx.pipe, ctx.fnpos
if opts[offs + 1] ~= nil then
mname = opts[offs + 1]:match'^%s*(.*%S)'
end
if mname == nil then error(modulename ..
', ‘concat_and_invoke’: No module name was provided', 0) end
if opts[offs + 2] ~= nil then
fname = opts[offs + 2]:match'^%s*(.*%S)'
end
if fname == nil then error(modulename ..
', ‘concat_and_invoke’: No function name was provided', 0) end
local mfunc = require('Module:' .. mname)[fname]
if mfunc == nil then error(modulename ..
', ‘concat_and_invoke’: The function ‘' .. fname .. '’ does not exist', 0) end
ctx.text = mfunc(ctx.frame:newChild{
title = 'Module:' .. mname,
args = concat_params(ctx, offs + 2)
})
return false
end
-- Syntax: #invoke:args|concat_and_magic|parser function|[prepend 1]|[prepend
-- 2]|[...]|[item n]|[named item 1=value 1]|[...]|[named item n=
-- value n]|[...]
library.concat_and_magic = function (ctx)
-- NOTE: `ctx.params` might be the original metatable!
local magic
local opts, offs = ctx.pipe, ctx.fnpos
if opts[offs + 1] ~= nil then
magic = opts[offs + 1]:match'^%s*(.*%S)'
end
if magic == nil then error(modulename ..
', ‘concat_and_magic’: No parser function was provided', 0) end
ctx.text = ctx.frame:callParserFunction(magic,
concat_params(ctx, offs + 1))
return false
end
-- Syntax: #invoke:params|value_of|parameter name
library.value_of = function (ctx)
-- NOTE: `ctx.params` might be the original metatable!
local opts, offs = ctx.pipe, ctx.fnpos
if opts[offs + 1] == nil then error(modulename ..
', ‘value_of’: No parameter name was provided', 0) end
local val
local key = opts[offs + 1]:match'^%s*(.-)%s*$'
if key == '0' or key:find'^%-?[1-9]%d*$' ~= nil then
key = tonumber(key)
val = ctx.params[key]
-- No worries: #ctx.params is unused when the modifier is in
-- first position (and therefore `ctx.params` is a metatable)
if val ~= nil and (
ctx.subset ~= -1 or key > #ctx.params or key < 1
) and (
ctx.subset ~= 1 or (key <= #ctx.params and key > 0)
) then
ctx.text = (ctx.header or '') .. val ..
(ctx.footer or '')
else ctx.text = ctx.ifngiven or '' end
else
val = ctx.params[key]
if ctx.subset ~= 1 and val ~= nil then ctx.text = (ctx.header
or '') .. val .. (ctx.footer or '')
else ctx.text = ctx.ifngiven or '' end
end
return false
end
-- Syntax: #invoke:params|list
library.list = function (ctx)
local ret, nss, kvs, pps = {}, 0, ctx.pairsep or '', ctx.itersep or ''
flush_params(ctx, function (key, val)
ret[nss + 1], ret[nss + 2], ret[nss + 3], ret[nss + 4], nss =
pps, key, kvs, val, nss + 4
end)
finalize_and_return_concatenated_list(ctx, ret, nss, 4)
return false
end
-- Syntax: #invoke:params|list_values
library.list_values = function (ctx)
-- NOTE: `library.coins()` and `library.unique_coins()` rely on us
local ret, nss, pps = {}, 0, ctx.itersep or ''
flush_params(ctx, function (key, val)
ret[nss + 1], ret[nss + 2], nss = pps, val, nss + 2
end)
finalize_and_return_concatenated_list(ctx, ret, nss, 2)
return false
end
-- Syntax: #invoke:params|list_maybe_with_names
library.list_maybe_with_names = function (ctx)
local ret, nss, kvs, pps = {}, 0, ctx.pairsep or '', ctx.itersep or ''
mixed_flush_params(
ctx,
function (key, val)
ret[nss + 1], ret[nss + 2], ret[nss + 3],
ret[nss + 4], nss = pps, '', '', val, nss + 4
end,
function (key, val)
ret[nss + 1], ret[nss + 2], ret[nss + 3],
ret[nss + 4], nss = pps, key, kvs, val, nss + 4
end
)
finalize_and_return_concatenated_list(ctx, ret, nss, 4)
return false
end
-- Syntax: #invoke:params|for_each|wikitext
library.for_each = function (ctx)
local ret, nss, pps, txt =
{}, 0, ctx.itersep or '', ctx.pipe[ctx.fnpos + 1] or ''
local skel, cnv, n_parts = parse_placeholder_string(txt)
flush_params(ctx, function (key, val)
for idx = 2, n_parts, 2 do
if skel[idx] then cnv[idx] = val
else cnv[idx] = tostring(key) end
end
ret[nss + 1], nss = pps, nss + 2
ret[nss] = table.concat(cnv)
end)
finalize_and_return_concatenated_list(ctx, ret, nss, 2)
return false
end
-- Syntax: #invoke:params|call_for_each|template name|[append 1]|[append 2]|
-- [...]|[append n]|[named param 1=value 1]|[...]|[named param
-- n=value n]|[...]
library.call_for_each = function (ctx)
local tname
local opts, offs = ctx.pipe, ctx.fnpos
if opts[offs + 1] ~= nil then
tname = opts[offs + 1]:match'^%s*(.*%S)'
end
if tname == nil then error(modulename ..
', ‘call_for_each’: No template name was provided', 0) end
local cargs = copy_table_reduced(opts, 1, offs - 1)
local model, ret, nss, ccs =
{ title = tname, args = cargs }, {}, 0, ctx.itersep or ''
flush_params(ctx, function (key, val)
cargs[1], cargs[2], ret[nss + 1], nss = key, val, ccs, nss + 2
ret[nss] = ctx.frame:expandTemplate(model)
end)
finalize_and_return_concatenated_list(ctx, ret, nss, 2)
return false
end
-- Syntax: #invoke:params|invoke_for_each|module name|module function|[append
-- 1]|[append 2]|[...]|[append n]|[named param 1=value 1]|[...]|
-- [named param n=value n]|[...]
library.invoke_for_each = function (ctx)
local mname, fname
local opts, offs = ctx.pipe, ctx.fnpos
if opts[offs + 1] ~= nil then
mname = opts[offs + 1]:match'^%s*(.*%S)'
end
if mname == nil then error(modulename ..
', ‘invoke_for_each’: No module name was provided', 0) end
if opts[offs + 2] ~= nil then
fname = opts[offs + 2]:match'^%s*(.*%S)'
end
if fname == nil then error(modulename ..
', ‘invoke_for_each’: No function name was provided', 0) end
local iargs = copy_table_reduced(ctx.pipe, 1, offs)
local model = { title = 'Module:' .. mname, args = iargs }
local mfunc, ret, nss, ccs =
require(model.title)[fname], {}, 0, ctx.itersep or ''
if mfunc == nil then error(modulename ..
', ‘invoke_for_each’: The function ‘' .. fname .. '’ does not exist', 0) end
flush_params(ctx, function (key, val)
iargs[1], iargs[2], ret[nss + 1], nss = key, val, ccs, nss + 2
ret[nss] = mfunc(ctx.frame:newChild(model))
end)
finalize_and_return_concatenated_list(ctx, ret, nss, 2)
return false
end
-- Syntax: #invoke:params|magic_for_each|parser function|[append 1]|[append
-- 2]|[...]|[append n]|[named param 1=value 1]|[...]|[named param
-- n=value n]|[...]
library.magic_for_each = function (ctx)
local magic
local opts, offs = ctx.pipe, ctx.fnpos
if opts[offs + 1] ~= nil then
magic = opts[offs + 1]:match'^%s*(.*%S)'
end
if magic == nil then error(modulename ..
', ‘magic_for_each’: No parser function was provided', 0) end
local ret, nss, ccs, cargs = {}, 0, ctx.itersep or '',
copy_table_reduced(opts, 1, offs - 1)
flush_params(ctx, function (key, val)
cargs[1], cargs[2], ret[nss + 1], nss = key, val, ccs, nss + 2
ret[nss] = ctx.frame:callParserFunction(magic, cargs)
end)
finalize_and_return_concatenated_list(ctx, ret, nss, 2)
return false
end
-- Syntax: #invoke:params|call_for_each_value|template name|[append 1]|[append
-- 2]|[...]|[append n]|[named param 1=value 1]|[...]|[named param
-- n=value n]|[...]
library.call_for_each_value = function (ctx)
local tname
local opts, offs = ctx.pipe, ctx.fnpos
if opts[offs + 1] ~= nil then
tname = opts[offs + 1]:match'^%s*(.*%S)'
end
if tname == nil then error(modulename ..
', ‘call_for_each_value’: No template name was provided', 0) end
local cargs = copy_table_reduced(ctx.pipe, 1, offs)
local model = { title = tname, args = cargs }
local ret, nss, ccs = {}, 0, ctx.itersep or ''
flush_params(ctx, function (key, val)
cargs[1], ret[nss + 1], nss = val, ccs, nss + 2
ret[nss] = ctx.frame:expandTemplate(model)
end)
finalize_and_return_concatenated_list(ctx, ret, nss, 2)
return false
end
-- Syntax: #invoke:params|invoke_for_each_value|module name|[append 1]|[append
-- 2]|[...]|[append n]|[named param 1=value 1]|[...]|[named param
-- n=value n]|[...]
library.invoke_for_each_value = function (ctx)
local mname, fname
local opts, offs = ctx.pipe, ctx.fnpos
if opts[offs + 1] ~= nil then
mname = opts[offs + 1]:match'^%s*(.*%S)'
end
if mname == nil then error(modulename ..
', ‘invoke_for_each_value’: No module name was provided', 0) end
if opts[offs + 2] ~= nil then
fname = opts[offs + 2]:match'^%s*(.*%S)'
end
if fname == nil then error(modulename ..
', ‘invoke_for_each_value’: No function name was provided', 0) end
local iargs = copy_table_reduced(ctx.pipe, 1, offs + 1)
local model = { title = 'Module:' .. mname, args = iargs }
local mfunc, ret, nss, ccs =
require(model.title)[fname], {}, 0, ctx.itersep or ''
if mfunc == nil then error(modulename ..
', ‘invoke_for_each_value’: The function ‘' .. fname .. '’ does not exist', 0) end
flush_params(ctx, function (key, val)
iargs[1], ret[nss + 1], nss = val, ccs, nss + 2
ret[nss] = mfunc(ctx.frame:newChild(model))
end)
finalize_and_return_concatenated_list(ctx, ret, nss, 2)
return false
end
-- Syntax: #invoke:params|magic_for_each_value|parser function|[append 1]|
-- [append 2]|[...]|[append n]|[named param 1=value 1]|[...]|[named
-- param n=value n]|[...]
library.magic_for_each_value = function (ctx)
local magic
local opts, offs = ctx.pipe, ctx.fnpos
if opts[offs + 1] ~= nil then
magic = opts[offs + 1]:match'^%s*(.*%S)'
end
if magic == nil then error(modulename ..
', ‘magic_for_each_value’: No parser function was provided', 0) end
local cargs, ret, nss, ccs =
copy_table_reduced(opts, 1, offs), {}, 0, ctx.itersep or ''
flush_params(ctx, function (key, val)
cargs[1], ret[nss + 1], nss = val, ccs, nss + 2
ret[nss] = ctx.frame:callParserFunction(magic, cargs)
end)
finalize_and_return_concatenated_list(ctx, ret, nss, 2)
return false
end
-- Syntax: #invoke:params|call_for_each_group|template name|[append 1]|[append
-- 2]|[...]|[append n]|[named param 1=value 1]|[...]|[named param
-- n=value n]|[...]
library.call_for_each_group = function (ctx)
-- NOTE: `ctx.params` might be the original metatable!
local tmp
local opts, offs = ctx.pipe, ctx.fnpos
if opts[offs + 1] ~= nil then
tmp = opts[offs + 1]:match'^%s*(.*%S)'
end
if tmp == nil then error(modulename ..
', ‘call_for_each_group’: No template name was provided', 0) end
local model = { title = tmp }
local bargs, ret, nss, ccs = {}, {}, 0, ctx.itersep or ''
for key, val in pairs(opts) do
if type(key) ~= 'number' then bargs[key] = val
elseif key > offs then bargs[key - offs - 1] = val
elseif key < 1 then bargs[key - 1] = val end
end
ctx.params = make_groups(ctx.params)
flush_params(ctx, function (gid, group)
for key, val in pairs(bargs) do group[key] = val end
group[0], model.args, ret[nss + 1], nss = gid, group, ccs,
nss + 2
ret[nss] = ctx.frame:expandTemplate(model)
end)
finalize_and_return_concatenated_list(ctx, ret, nss, 2)
return false
end
--[[ First-position-only modifiers ]]--
---------------------------------------
-- Syntax: #invoke:params|new|pipe to
static_iface.new = function (child_frame)
local ctx = context_new(child_frame, 'new')
ctx.params = {}
main_loop(ctx, context_iterate(ctx, 2))
return ctx.text
end
--[[ First-position-only functions ]]--
---------------------------------------
-- Syntax: #invoke:params|self
static_iface.self = function (child_frame)
return child_frame:getParent():getTitle()
end
--[[ Public metatable of functions ]]--
---------------------------------------
return setmetatable({}, {
__index = function (_, query)
local fname = query:match'^%s*(.*%S)'
if fname == nil then error(modulename ..
': You must specify a function to call', 0) end
local func = static_iface[fname]
if func ~= nil then return func end
func = library[fname]
if func == nil then error(modulename ..
': The function ‘' .. fname .. '’ does not exist', 0) end
return function (child_frame)
local ctx = context_new(child_frame, fname)
ctx.params = copy_or_ref_table(ctx.oparams,
refparams[fname])
main_loop(ctx, func)
return ctx.text
end
end
})
jnrp2hde108asrud4ch6fuc8nkppvn4
Refeeding syndrome
0
30772
114502
2026-10-10T13:05:11Z
DaSupremo
9
Created by translating the page [[:mdwiki:Special:Redirect/revision/1457346|Refeeding syndrome]] to:gpe #mdwikicx
114502
wikitext
text/x-wiki
[[Category:Translated from MDWiki]]
r0gf7axtnvt68k0p85plnlehx64o08u
114503
114502
2026-10-10T13:09:27Z
DaSupremo
9
Improve article
114503
wikitext
text/x-wiki
{{Databox}}
'''Refeeding syndrome''' be a condition wey fi occur following reintroduction of [[nutrition]] after a prolonged period of [[starvation]].<ref name=Stat2021>{{cite journal |last1=Persaud-Sharma |first1=D |last2=Saha |first2=S |last3=Trippensee |first3=AW |title=Refeeding Syndrome |date=January 2021 |pmid=33232094|journal=StatPearls}}</ref> E sanso fi occur plus nutrition insyd de form of [[total parenteral nutrition]].<ref name=Stat2021/> E fi result in [[low phosphate]], [[low magnesium]], [[low potassium]], den [[low thiamine]].<ref name=Stat2021/> Dis fi result in weakness, decreased breathing, [[ataxia|poor coordination]], confusion, [[seizures]], den [[heart arrythmia]]s.<ref name=Stat2021/>
== References ==
[[Category:Translated from MDWiki]]
<references />
== External links ==
n2xh92dj6prc00pwjbf4yonrhcjfm43
114504
114503
2026-10-10T13:13:21Z
DaSupremo
9
Improve article
114504
wikitext
text/x-wiki
{{Databox}}
'''Refeeding syndrome''' be a condition wey fi occur following reintroduction of [[nutrition]] after a prolonged period of [[starvation]].<ref name=Stat2021>{{cite journal |last1=Persaud-Sharma |first1=D |last2=Saha |first2=S |last3=Trippensee |first3=AW |title=Refeeding Syndrome |date=January 2021 |pmid=33232094|journal=StatPearls}}</ref> E sanso fi occur plus nutrition insyd de form of [[total parenteral nutrition]].<ref name=Stat2021/> E fi result in [[low phosphate]], [[low magnesium]], [[low potassium]], den [[low thiamine]].<ref name=Stat2021/> Dis fi result in weakness, decreased breathing, [[ataxia|poor coordination]], confusion, [[seizures]], den [[heart arrythmia]]s.<ref name=Stat2021/>
Treatment be by de gradual reintroduction of calories.<ref name=Stat2021/> Insyd de first 24 hours, 10 to 20 kcal/kg anaa no more dan half de person energy requirement, be recommended.<ref name=Meh2008>{{cite journal |vauthors=Mehanna HM, Moledina J, Travis J |title=Refeeding syndrome: what it is, and how to prevent and treat it |journal=BMJ |volume=336 |issue=7659 |pages=1495–8 |date=June 2008 |pmid=18583681 |pmc=2440847 |doi=10.1136/bmj.a301 |url=http://bmj.com/cgi/pmidlookup?view=long&pmid=18583681 |access-date=2009-02-24 |archive-date=2021-08-29 |archive-url=https://web.archive.org/web/20210829031106/https://www.bmj.com/content/336/7659/1495.long |url-status=live }} {{Webarchive|url=https://web.archive.org/web/20210829031106/https://www.bmj.com/content/336/7659/1495.long |date=2021-08-29 }}</ref><ref name=Stat2021/> [[Thiamine supplements]] for be given early.<ref name=Stat2021/> Potassium, phosphate, calcium, den magnesium supplements sanso fi often be recommended.<ref name=Meh2008/> Electrolytes for be measured every 12 hours initially.<ref name=Stat2021/>
== References ==
<references />
== External links ==
[[Category:Translated from MDWiki]]
srh1eyrhfjx96pe8aeg45io2tdslsw1
114505
114504
2026-10-10T13:15:28Z
DaSupremo
9
Improve article
114505
wikitext
text/x-wiki
{{Databox}}
'''Refeeding syndrome''' be a condition wey fi occur following reintroduction of [[nutrition]] after a prolonged period of [[starvation]].<ref name=Stat2021>{{cite journal |last1=Persaud-Sharma |first1=D |last2=Saha |first2=S |last3=Trippensee |first3=AW |title=Refeeding Syndrome |date=January 2021 |pmid=33232094|journal=StatPearls}}</ref> E sanso fi occur plus nutrition insyd de form of [[total parenteral nutrition]].<ref name=Stat2021/> E fi result in [[low phosphate]], [[low magnesium]], [[low potassium]], den [[low thiamine]].<ref name=Stat2021/> Dis fi result in weakness, decreased breathing, [[ataxia|poor coordination]], confusion, [[seizures]], den [[heart arrythmia]]s.<ref name=Stat2021/>
Treatment be by de gradual reintroduction of calories.<ref name=Stat2021/> Insyd de first 24 hours, 10 to 20 kcal/kg anaa no more dan half de person energy requirement, be recommended.<ref name=Meh2008>{{cite journal |vauthors=Mehanna HM, Moledina J, Travis J |title=Refeeding syndrome: what it is, and how to prevent and treat it |journal=BMJ |volume=336 |issue=7659 |pages=1495–8 |date=June 2008 |pmid=18583681 |pmc=2440847 |doi=10.1136/bmj.a301 |url=http://bmj.com/cgi/pmidlookup?view=long&pmid=18583681 |access-date=2009-02-24 |archive-date=2021-08-29 |archive-url=https://web.archive.org/web/20210829031106/https://www.bmj.com/content/336/7659/1495.long |url-status=live }} {{Webarchive|url=https://web.archive.org/web/20210829031106/https://www.bmj.com/content/336/7659/1495.long |date=2021-08-29 }}</ref><ref name=Stat2021/> [[Thiamine supplements]] for be given early.<ref name=Stat2021/> Potassium, phosphate, calcium, den magnesium supplements sanso fi often be recommended.<ref name=Meh2008/> Electrolytes for be measured every 12 hours initially.<ref name=Stat2021/>
Refeeding syndrome ein frequency be unclear.<ref name=Stat2021/> Na one study find rates of 0.5% to 18% among people wey be hospitalized.<ref name=Stat2021/> Modern descriptions of de condition dey date from [[World War II]].<ref name=Stat2021/> Though, a number of prior descriptions of people wey dey die following eating after a [[famine]] occur thru out history.<ref>{{cite journal |title=Refeeding Syndrome in Historical Perspective: Its First Description by Rodulfus Glaber (1033) |journal=AJBSR |date=January 7 2021 |doi=10.34297/AJBSR.2021.11.001644 |url=https://biomedgrid.com/pdf/AJBSR.MS.ID.001643.pdf |access-date=7 March 2021 |archive-date=16 January 2021 |archive-url=https://web.archive.org/web/20210116060949/https://biomedgrid.com/pdf/AJBSR.MS.ID.001643.pdf |url-status=live }} {{Webarchive|url=https://web.archive.org/web/20210116060949/https://biomedgrid.com/pdf/AJBSR.MS.ID.001643.pdf |date=16 January 2021 }}</ref><ref>{{cite journal |last1=De Santo |first1=Natale G |last2=Bisaccia |first2=Carmela |last3=Phillips |first3=Malcolm E |last4=De Santo |first4=Luca S |title=Refeeding syndrome as described in 1507 by Antonio Benivieni in Florence |journal=Nephrology Dialysis Transplantation |date=11 December 2020 |doi=10.1093/ndt/gfaa295 |pmid=33313827}}</ref>
== References ==
<references />
== External links ==
[[Category:Translated from MDWiki]]
dapptcl6dzwdh95nxvrgjk0i2m0pdpo
114506
114505
2026-10-10T13:20:42Z
DaSupremo
9
Improve article
114506
wikitext
text/x-wiki
{{Databox}}
'''Refeeding syndrome''' be a condition wey fi occur following reintroduction of [[nutrition]] after a prolonged period of [[starvation]].<ref name=Stat2021>{{cite journal |last1=Persaud-Sharma |first1=D |last2=Saha |first2=S |last3=Trippensee |first3=AW |title=Refeeding Syndrome |date=January 2021 |pmid=33232094|journal=StatPearls}}</ref> E sanso fi occur plus nutrition insyd de form of [[total parenteral nutrition]].<ref name=Stat2021/> E fi result in [[low phosphate]], [[low magnesium]], [[low potassium]], den [[low thiamine]].<ref name=Stat2021/> Dis fi result in weakness, decreased breathing, [[ataxia|poor coordination]], confusion, [[seizures]], den [[heart arrythmia]]s.<ref name=Stat2021/>
Treatment be by de gradual reintroduction of calories.<ref name=Stat2021/> Insyd de first 24 hours, 10 to 20 kcal/kg anaa no more dan half de person energy requirement, be recommended.<ref name=Meh2008>{{cite journal |vauthors=Mehanna HM, Moledina J, Travis J |title=Refeeding syndrome: what it is, and how to prevent and treat it |journal=BMJ |volume=336 |issue=7659 |pages=1495–8 |date=June 2008 |pmid=18583681 |pmc=2440847 |doi=10.1136/bmj.a301 |url=http://bmj.com/cgi/pmidlookup?view=long&pmid=18583681 |access-date=2009-02-24 |archive-date=2021-08-29 |archive-url=https://web.archive.org/web/20210829031106/https://www.bmj.com/content/336/7659/1495.long |url-status=live }} {{Webarchive|url=https://web.archive.org/web/20210829031106/https://www.bmj.com/content/336/7659/1495.long |date=2021-08-29 }}</ref><ref name=Stat2021/> [[Thiamine supplements]] for be given early.<ref name=Stat2021/> Potassium, phosphate, calcium, den magnesium supplements sanso fi often be recommended.<ref name=Meh2008/> Electrolytes for be measured every 12 hours initially.<ref name=Stat2021/>
Refeeding syndrome ein frequency be unclear.<ref name=Stat2021/> Na one study find rates of 0.5% to 18% among people wey be hospitalized.<ref name=Stat2021/> Modern descriptions of de condition dey date from [[World War II]].<ref name=Stat2021/> Though, a number of prior descriptions of people wey dey die following eating after a [[famine]] occur thru out history.<ref>{{cite journal |title=Refeeding Syndrome in Historical Perspective: Its First Description by Rodulfus Glaber (1033) |journal=AJBSR |date=7 January 2021 |doi=10.34297/AJBSR.2021.11.001644 |url=https://biomedgrid.com/pdf/AJBSR.MS.ID.001643.pdf |access-date=7 March 2021 |archive-date=16 January 2021 |archive-url=https://web.archive.org/web/20210116060949/https://biomedgrid.com/pdf/AJBSR.MS.ID.001643.pdf |url-status=live }} {{Webarchive|url=https://web.archive.org/web/20210116060949/https://biomedgrid.com/pdf/AJBSR.MS.ID.001643.pdf |date=16 January 2021 }}</ref><ref>{{cite journal |last1=De Santo |first1=Natale G |last2=Bisaccia |first2=Carmela |last3=Phillips |first3=Malcolm E |last4=De Santo |first4=Luca S |title=Refeeding syndrome as described in 1507 by Antonio Benivieni in Florence |journal=Nephrology Dialysis Transplantation |date=11 December 2020 |doi=10.1093/ndt/gfaa295 |pmid=33313827}}</ref>
== References ==
<references />
== External links ==
{{Commons}}
* Shils, M.E., Shike, M., Ross, A.C., Caballero, B. & Cousins, R.J. (2006). Modern nutrition in health and disease, 10th ed. Lippincott, Williams & Wilkins. Baltimore, Maryland.
* Mahan, L.K. & Escott-Stump, S.E. (2004) Krause's Food, Nutrition, & Diet Therapy, 11th ed. Saunders, Philadelphia, Pennsylvania.
[[Category:Translated from MDWiki]]
n53gf0ohprnir62bhxnxve8md131r58
114507
114506
2026-10-10T13:23:39Z
DaSupremo
9
Improve article
114507
wikitext
text/x-wiki
{{Databox}}
'''Refeeding syndrome''' be a condition wey fi occur following reintroduction of [[nutrition]] after a prolonged period of [[starvation]].<ref name=Stat2021>{{cite journal |last1=Persaud-Sharma |first1=D |last2=Saha |first2=S |last3=Trippensee |first3=AW |title=Refeeding Syndrome |date=January 2021 |pmid=33232094|journal=StatPearls}}</ref> E sanso fi occur plus nutrition insyd de form of [[total parenteral nutrition]].<ref name=Stat2021/> E fi result in [[low phosphate]], [[low magnesium]], [[low potassium]], den [[low thiamine]].<ref name=Stat2021/> Dis fi result in weakness, decreased breathing, [[ataxia|poor coordination]], confusion, [[seizures]], den [[heart arrythmia]]s.<ref name=Stat2021/>
Treatment be by de gradual reintroduction of calories.<ref name=Stat2021/> Insyd de first 24 hours, 10 to 20 kcal/kg anaa no more dan half de person energy requirement, be recommended.<ref name=Meh2008>{{cite journal |vauthors=Mehanna HM, Moledina J, Travis J |title=Refeeding syndrome: what it is, and how to prevent and treat it |journal=BMJ |volume=336 |issue=7659 |pages=1495–8 |date=June 2008 |pmid=18583681 |pmc=2440847 |doi=10.1136/bmj.a301 |url=http://bmj.com/cgi/pmidlookup?view=long&pmid=18583681 |access-date=2009-02-24 |archive-date=2021-08-29 |archive-url=https://web.archive.org/web/20210829031106/https://www.bmj.com/content/336/7659/1495.long |url-status=live }} {{Webarchive|url=https://web.archive.org/web/20210829031106/https://www.bmj.com/content/336/7659/1495.long |date=2021-08-29 }}</ref><ref name=Stat2021/> [[Thiamine supplements]] for be given early.<ref name=Stat2021/> Potassium, phosphate, calcium, den magnesium supplements sanso fi often be recommended.<ref name=Meh2008/> Electrolytes for be measured every 12 hours initially.<ref name=Stat2021/>
Refeeding syndrome ein frequency be unclear.<ref name=Stat2021/> Na one study find rates of 0.5% to 18% among people wey be hospitalized.<ref name=Stat2021/> Modern descriptions of de condition dey date from [[World War II]].<ref name=Stat2021/> Though, a number of prior descriptions of people wey dey die following eating after a [[famine]] occur thru out history.<ref>{{cite journal |title=Refeeding Syndrome in Historical Perspective: Its First Description by Rodulfus Glaber (1033) |journal=AJBSR |date=7 January 2021 |doi=10.34297/AJBSR.2021.11.001644 |url=https://biomedgrid.com/pdf/AJBSR.MS.ID.001643.pdf |access-date=7 March 2021 |archive-date=16 January 2021 |archive-url=https://web.archive.org/web/20210116060949/https://biomedgrid.com/pdf/AJBSR.MS.ID.001643.pdf |url-status=live }} {{Webarchive|url=https://web.archive.org/web/20210116060949/https://biomedgrid.com/pdf/AJBSR.MS.ID.001643.pdf |date=16 January 2021 }}</ref><ref>{{cite journal |last1=De Santo |first1=Natale G |last2=Bisaccia |first2=Carmela |last3=Phillips |first3=Malcolm E |last4=De Santo |first4=Luca S |title=Refeeding syndrome as described in 1507 by Antonio Benivieni in Florence |journal=Nephrology Dialysis Transplantation |date=11 December 2020 |doi=10.1093/ndt/gfaa295 |pmid=33313827}}</ref>
== References ==
<references />
==Bibliography==
* Shils, M.E., Shike, M., Ross, A.C., Caballero, B. & Cousins, R.J. (2006). Modern nutrition in health and disease, 10th ed. Lippincott, Williams & Wilkins. Baltimore, Maryland.
* Mahan, L.K. & Escott-Stump, S.E. (2004) Krause's Food, Nutrition, & Diet Therapy, 11th ed. Saunders, Philadelphia, Pennsylvania.
* {{cite journal | author = Hearing S | title = Refeeding syndrome: Is underdiagnosed and undertreated, but treatable | journal = BMJ | volume = 328 | issue = 7445 | pages = 908–9 | year = 2004 | pmid = 15087326 | doi = 10.1136/bmj.328.7445.908 | pmc = 390152}}
* {{cite journal |vauthors=Crook M, Hally V, Panteli J | title = The importance of the refeeding syndrome | journal = Nutrition | volume = 17 | issue = 7–8 | pages = 632–7 | year = 2001| pmid = 11448586 | doi = 10.1016/S0899-9007(01)00542-1}}
* {{cite journal | author = Lauts N | title = Management of the patient with refeeding syndrome | journal = J Infus Nurs | volume = 28 | issue = 5 | pages = 337–42 | year = 2005| pmid = 16205500 | doi = 10.1097/00129804-200509000-00007| s2cid = 39877542 }}
* {{cite journal |vauthors=Kraft M, Btaiche I, Sacks G | title = Review of the refeeding syndrome | journal = Nutr Clin Pract | volume = 20 | issue = 6 | pages = 625–33 | year = 2005 | pmid = 16306300 | doi = 10.1177/0115426505020006625| url = https://deepblue.lib.umich.edu/bitstream/2027.42/142310/1/ncp0625.pdf | hdl = 2027.42/142310 | hdl-access = free }}
* {{cite web | title=Evidence — Nutrition support for adults: oral nutrition support, enteral tube feeding and parenteral nutrition — Guidance | publisher=[[National Institute for Health and Care Excellence]] (NICE) |orig-date=Updated 4 August 2017|date=22 February 2006 | url=https://www.nice.org.uk/guidance/cg32/evidence}} Web page with link to full guideline CG32.
* Mehanna, H. M., Moledina, J., & Travis, J. (2008). Refeeding syndrome: what it is, and how to prevent and treat it. BMJ (Clinical research ed.), 336(7659), 1495–1498. https://doi.org/10.1136/bmj.a301
{{DEFAULTSORT:Refeeding Syndrome}}
[[Category:Metabolic disorders]]
[[Category:Nutrition]]
[[Category:Syndromes]]
[[Category:Translated from MDWiki]]
b130lna54nwujl3uit4wosn4t3yhd3k
Thiamine
0
30773
114508
2026-10-10T13:24:35Z
DaSupremo
9
Created by translating the page [[:mdwiki:Special:Redirect/revision/1456913|Thiamine]] to:gpe #mdwikicx
114508
wikitext
text/x-wiki
[[Category:Translated from MDWiki]]
r0gf7axtnvt68k0p85plnlehx64o08u
114509
114508
2026-10-10T13:30:39Z
DaSupremo
9
Improve article
114509
wikitext
text/x-wiki
{{Databox}}
'''Thiamine''', dem sanso know as '''thiamin''' den '''vitamin B<sub>1</sub>''', be a [[vitamin]] – an [[Nutrient#Micronutrients|essential micronutrient]] for humans den animals.<ref name="ods">{{cite web|title=Thiamin: Fact Sheet for Health Professionals |url=https://ods.od.nih.gov/factsheets/Thiamin-HealthProfessional/|publisher=Office of Dietary Supplements, US National Institutes of Health |access-date=21 January 2025|date=9 February 2023}}</ref><ref name="lpi">{{cite web | year = 2025 | title = Thiamin | website = Linus Pauling Institute | publisher = Micronutrient Information Center, Linus Pauling Institute, Oregon State University | url = http://lpi.oregonstate.edu/mic/vitamins/thiamin | access-date = 21 January 2025 }}</ref><ref name="medline">{{cite web|title=Thiamine |url=https://medlineplus.gov/druginfo/meds/a682586.html|publisher=MedlinePlus, US National Library of Medicine|access-date=21 January 2025}}</ref> E be found insyd chow den commercially synthesized to be a [[dietary supplement]] anaa [[medication]].<ref name=ods/> [[Phosphorylated]] forms of thiamine be required for sam [[Metabolism|metabolic reactions]], wey dey include de breakdown of [[Carbohydrate metabolism|glucose]] den [[amino acid]]s.<ref name=ods/><ref name=lpi/><ref name="whitfield">{{cite journal |vauthors=Whitfield KC, Bourassa MW, Adamolekun B, Bergeron G, Bettendorff L, Brown KH, Cox L, Fattal-Valevski A, Fischer PR, Frank EL, Hiffler L, Hlaing LM, Jefferds ME, Kapner H, Kounnavong S, Mousavi MP, Roth DE, Tsaloglou MN, Wieringa F, Combs GF |title=Thiamine deficiency disorders: diagnosis, prevalence, and a roadmap for global control programs |journal=Annals of the New York Academy of Sciences |volume=1430 |issue=1 |pages=3–43 |date=October 2018 |pmid=30151974 |pmc=6392124 |doi=10.1111/nyas.13919 |bibcode=2018NYASA1430....3W }}</ref>
== References ==
[[Category:Translated from MDWiki]]
<references />
== External links ==
nzr3sw9qhu05oiwg2pkfqapel752uhi
114510
114509
2026-10-10T13:34:35Z
DaSupremo
9
Improve article
114510
wikitext
text/x-wiki
{{Databox}}
'''Thiamine''', dem sanso know as '''thiamin''' den '''vitamin B<sub>1</sub>''', be a [[vitamin]] – an [[Nutrient#Micronutrients|essential micronutrient]] for humans den animals.<ref name="ods">{{cite web|title=Thiamin: Fact Sheet for Health Professionals |url=https://ods.od.nih.gov/factsheets/Thiamin-HealthProfessional/|publisher=Office of Dietary Supplements, US National Institutes of Health |access-date=21 January 2025|date=9 February 2023}}</ref><ref name="lpi">{{cite web | year = 2025 | title = Thiamin | website = Linus Pauling Institute | publisher = Micronutrient Information Center, Linus Pauling Institute, Oregon State University | url = http://lpi.oregonstate.edu/mic/vitamins/thiamin | access-date = 21 January 2025 }}</ref><ref name="medline">{{cite web|title=Thiamine |url=https://medlineplus.gov/druginfo/meds/a682586.html|publisher=MedlinePlus, US National Library of Medicine|access-date=21 January 2025}}</ref> E be found insyd chow den commercially synthesized to be a [[dietary supplement]] anaa [[medication]].<ref name=ods/> [[Phosphorylated]] forms of thiamine be required for sam [[Metabolism|metabolic reactions]], wey dey include de breakdown of [[Carbohydrate metabolism|glucose]] den [[amino acid]]s.<ref name=ods/><ref name=lpi/><ref name="whitfield">{{cite journal |vauthors=Whitfield KC, Bourassa MW, Adamolekun B, Bergeron G, Bettendorff L, Brown KH, Cox L, Fattal-Valevski A, Fischer PR, Frank EL, Hiffler L, Hlaing LM, Jefferds ME, Kapner H, Kounnavong S, Mousavi MP, Roth DE, Tsaloglou MN, Wieringa F, Combs GF |title=Thiamine deficiency disorders: diagnosis, prevalence, and a roadmap for global control programs |journal=Annals of the New York Academy of Sciences |volume=1430 |issue=1 |pages=3–43 |date=October 2018 |pmid=30151974 |pmc=6392124 |doi=10.1111/nyas.13919 |bibcode=2018NYASA1430....3W }}</ref>
Food sources of thiamine dey include [[whole grain]]s, [[legumes]], den sam meats den fish.<ref name=ods/> [[Refined grain|Grain processing]] dey remove much of de vitamin content, so insyd chaw countries [[cereals]] den [[flour]]s be [[food fortification|enriched]] plus thiamine.<ref name=ods/><ref name=whitfield/> Supplements den medications be available to treat den prevent [[thiamine deficiency]] den de disorders wey result from am such as [[Thiamine deficiency#Dry beriberi|beriberi]] den [[Wernicke encephalopathy]].<ref name=ods/><ref name=lpi/><ref name=whitfield/> Dem sanso be used to treat [[maple syrup urine disease]] den [[Leigh syndrome]].<ref name=drugs/> Supplements den medications typically be taken [[Route of administration#Oral|by mouth]], buh sanso fi be given by [[intravenous therapy|intravenous]] anaa [[intramuscular injection]].<ref name="drugs">{{cite web | author = American Society of Health-System Pharmacists | date = 12 January 2025 | title = Thiamine Hydrochloride | publisher = Drugs.com | url = https://www.drugs.com/monograph/thiamine-hydrochloride.html | access-date = 21 January 2025 }}</ref>
== References ==
<references />
== External links ==
[[Category:Translated from MDWiki]]
r3z7am9qs1k7q2m3inoa9zqnprubyw9
114511
114510
2026-10-10T13:36:58Z
DaSupremo
9
Improve article
114511
wikitext
text/x-wiki
{{Databox}}
'''Thiamine''', dem sanso know as '''thiamin''' den '''vitamin B<sub>1</sub>''', be a [[vitamin]] – an [[Nutrient#Micronutrients|essential micronutrient]] for humans den animals.<ref name="ods">{{cite web|title=Thiamin: Fact Sheet for Health Professionals |url=https://ods.od.nih.gov/factsheets/Thiamin-HealthProfessional/|publisher=Office of Dietary Supplements, US National Institutes of Health |access-date=21 January 2025|date=9 February 2023}}</ref><ref name="lpi">{{cite web | year = 2025 | title = Thiamin | website = Linus Pauling Institute | publisher = Micronutrient Information Center, Linus Pauling Institute, Oregon State University | url = http://lpi.oregonstate.edu/mic/vitamins/thiamin | access-date = 21 January 2025 }}</ref><ref name="medline">{{cite web|title=Thiamine |url=https://medlineplus.gov/druginfo/meds/a682586.html|publisher=MedlinePlus, US National Library of Medicine|access-date=21 January 2025}}</ref> E be found insyd chow den commercially synthesized to be a [[dietary supplement]] anaa [[medication]].<ref name=ods/> [[Phosphorylated]] forms of thiamine be required for sam [[Metabolism|metabolic reactions]], wey dey include de breakdown of [[Carbohydrate metabolism|glucose]] den [[amino acid]]s.<ref name=ods/><ref name=lpi/><ref name="whitfield">{{cite journal |vauthors=Whitfield KC, Bourassa MW, Adamolekun B, Bergeron G, Bettendorff L, Brown KH, Cox L, Fattal-Valevski A, Fischer PR, Frank EL, Hiffler L, Hlaing LM, Jefferds ME, Kapner H, Kounnavong S, Mousavi MP, Roth DE, Tsaloglou MN, Wieringa F, Combs GF |title=Thiamine deficiency disorders: diagnosis, prevalence, and a roadmap for global control programs |journal=Annals of the New York Academy of Sciences |volume=1430 |issue=1 |pages=3–43 |date=October 2018 |pmid=30151974 |pmc=6392124 |doi=10.1111/nyas.13919 |bibcode=2018NYASA1430....3W }}</ref>
Food sources of thiamine dey include [[whole grain]]s, [[legumes]], den sam meats den fish.<ref name=ods/> [[Refined grain|Grain processing]] dey remove much of de vitamin content, so insyd chaw countries [[cereals]] den [[flour]]s be [[food fortification|enriched]] plus thiamine.<ref name=ods/><ref name=whitfield/> Supplements den medications be available to treat den prevent [[thiamine deficiency]] den de disorders wey result from am such as [[Thiamine deficiency#Dry beriberi|beriberi]] den [[Wernicke encephalopathy]].<ref name=ods/><ref name=lpi/><ref name=whitfield/> Dem sanso be used to treat [[maple syrup urine disease]] den [[Leigh syndrome]].<ref name=drugs/> Supplements den medications typically be taken [[Route of administration#Oral|by mouth]], buh sanso fi be given by [[intravenous therapy|intravenous]] anaa [[intramuscular injection]].<ref name="drugs">{{cite web | author = American Society of Health-System Pharmacists | date = 12 January 2025 | title = Thiamine Hydrochloride | publisher = Drugs.com | url = https://www.drugs.com/monograph/thiamine-hydrochloride.html | access-date = 21 January 2025 }}</ref>
Thiamine supplements generally be well tolerated. [[Allergic reactions]], wey dey include [[anaphylaxis]], fi occur wen repeated doses be given by injection.<ref name=medline/><ref name=drugs/><ref name=Peds2016>{{cite book | vauthors = Kliegman RM, Stanton B | date = 2016 | title = Nelson Textbook of Pediatrics | publisher = Elsevier Health Sciences | page = 322 | isbn = 978-1-4557-7566-8 | url = https://books.google.com/books?id=mseNCgAAQBAJ&pg=PA322 | quote = There are no cases of adverse effects of excess thiamine... A few isolated cases of puritis... }}</ref> Thiamine dey on de [[WHO Model List of Essential Medicines|World Health Organization's List of Essential Medicines]].<ref name="WHO21st">{{cite book | year = 2019 | title = World Health Organization model list of essential medicines: 21st list 2019 | publisher = [[World Health Organization]] | hdl = 10665/325771 | location = Geneva | id = WHO/MVP/EMP/IAU/2019.06 | hdl-access = free }}</ref> E be available as a [[generic medication]], den insyd sam countries as a non-prescription dietary supplement.<ref name=ods/><ref name=drugs/> Insyd 2023, na e be de 305th most commonly prescribed medication insyd de United States, plus more dan 300,000 prescriptions.<ref>{{cite web | vauthors = Kane SP | title = Thiamine Drug Usage Statistics, United States, 2014 - 2023 | website = ClinCalc | url = https://clincalc.com/DrugStats/Drugs/Thiamine | access-date = 21 August 2025 }}</ref>
== References ==
<references />
== External links ==
[[Category:Translated from MDWiki]]
jcw17cesn1z805lwmevmuzjghxlihtn
114512
114511
2026-10-10T13:39:40Z
DaSupremo
9
/* History */ Improve article
114512
wikitext
text/x-wiki
{{Databox}}
'''Thiamine''', dem sanso know as '''thiamin''' den '''vitamin B<sub>1</sub>''', be a [[vitamin]] – an [[Nutrient#Micronutrients|essential micronutrient]] for humans den animals.<ref name="ods">{{cite web|title=Thiamin: Fact Sheet for Health Professionals |url=https://ods.od.nih.gov/factsheets/Thiamin-HealthProfessional/|publisher=Office of Dietary Supplements, US National Institutes of Health |access-date=21 January 2025|date=9 February 2023}}</ref><ref name="lpi">{{cite web | year = 2025 | title = Thiamin | website = Linus Pauling Institute | publisher = Micronutrient Information Center, Linus Pauling Institute, Oregon State University | url = http://lpi.oregonstate.edu/mic/vitamins/thiamin | access-date = 21 January 2025 }}</ref><ref name="medline">{{cite web|title=Thiamine |url=https://medlineplus.gov/druginfo/meds/a682586.html|publisher=MedlinePlus, US National Library of Medicine|access-date=21 January 2025}}</ref> E be found insyd chow den commercially synthesized to be a [[dietary supplement]] anaa [[medication]].<ref name=ods/> [[Phosphorylated]] forms of thiamine be required for sam [[Metabolism|metabolic reactions]], wey dey include de breakdown of [[Carbohydrate metabolism|glucose]] den [[amino acid]]s.<ref name=ods/><ref name=lpi/><ref name="whitfield">{{cite journal |vauthors=Whitfield KC, Bourassa MW, Adamolekun B, Bergeron G, Bettendorff L, Brown KH, Cox L, Fattal-Valevski A, Fischer PR, Frank EL, Hiffler L, Hlaing LM, Jefferds ME, Kapner H, Kounnavong S, Mousavi MP, Roth DE, Tsaloglou MN, Wieringa F, Combs GF |title=Thiamine deficiency disorders: diagnosis, prevalence, and a roadmap for global control programs |journal=Annals of the New York Academy of Sciences |volume=1430 |issue=1 |pages=3–43 |date=October 2018 |pmid=30151974 |pmc=6392124 |doi=10.1111/nyas.13919 |bibcode=2018NYASA1430....3W }}</ref>
Food sources of thiamine dey include [[whole grain]]s, [[legumes]], den sam meats den fish.<ref name=ods/> [[Refined grain|Grain processing]] dey remove much of de vitamin content, so insyd chaw countries [[cereals]] den [[flour]]s be [[food fortification|enriched]] plus thiamine.<ref name=ods/><ref name=whitfield/> Supplements den medications be available to treat den prevent [[thiamine deficiency]] den de disorders wey result from am such as [[Thiamine deficiency#Dry beriberi|beriberi]] den [[Wernicke encephalopathy]].<ref name=ods/><ref name=lpi/><ref name=whitfield/> Dem sanso be used to treat [[maple syrup urine disease]] den [[Leigh syndrome]].<ref name=drugs/> Supplements den medications typically be taken [[Route of administration#Oral|by mouth]], buh sanso fi be given by [[intravenous therapy|intravenous]] anaa [[intramuscular injection]].<ref name="drugs">{{cite web | author = American Society of Health-System Pharmacists | date = 12 January 2025 | title = Thiamine Hydrochloride | publisher = Drugs.com | url = https://www.drugs.com/monograph/thiamine-hydrochloride.html | access-date = 21 January 2025 }}</ref>
Thiamine supplements generally be well tolerated. [[Allergic reactions]], wey dey include [[anaphylaxis]], fi occur wen repeated doses be given by injection.<ref name=medline/><ref name=drugs/><ref name=Peds2016>{{cite book | vauthors = Kliegman RM, Stanton B | date = 2016 | title = Nelson Textbook of Pediatrics | publisher = Elsevier Health Sciences | page = 322 | isbn = 978-1-4557-7566-8 | url = https://books.google.com/books?id=mseNCgAAQBAJ&pg=PA322 | quote = There are no cases of adverse effects of excess thiamine... A few isolated cases of puritis... }}</ref> Thiamine dey on de [[WHO Model List of Essential Medicines|World Health Organization's List of Essential Medicines]].<ref name="WHO21st">{{cite book | year = 2019 | title = World Health Organization model list of essential medicines: 21st list 2019 | publisher = [[World Health Organization]] | hdl = 10665/325771 | location = Geneva | id = WHO/MVP/EMP/IAU/2019.06 | hdl-access = free }}</ref> E be available as a [[generic medication]], den insyd sam countries as a non-prescription dietary supplement.<ref name=ods/><ref name=drugs/> Insyd 2023, na e be de 305th most commonly prescribed medication insyd de United States, plus more dan 300,000 prescriptions.<ref>{{cite web | vauthors = Kane SP | title = Thiamine Drug Usage Statistics, United States, 2014 - 2023 | website = ClinCalc | url = https://clincalc.com/DrugStats/Drugs/Thiamine | access-date = 21 August 2025 }}</ref>
==History==
<gallery caption="Sam contributors to de discovery of thiamine" mode="nolines">
File:Takaki Kanehiro.jpg|[[Takaki Kanehiro]]
File:Eijkman.jpg|[[Christiaan Eijkman]]
File:Portrait_of_Gerrit_Grijns_Wellcome_M0010254.jpg|[[Gerrit Grijns]]
File:Umetarosuzuki-pre1943.jpg|[[Umetaro Suzuki]]
File:Casimir_Funk_01.jpg|[[Casimir Funk]]
File:Rudolph Albert Peters.jpg|[[Rudolph Peters]]
</gallery>
== References ==
<references />
== External links ==
[[Category:Translated from MDWiki]]
ehkoj80en84h4rxty6lglk3pmvmbjd0
114513
114512
2026-10-10T13:41:36Z
DaSupremo
9
Improve article
114513
wikitext
text/x-wiki
{{Databox}}
'''Thiamine''', dem sanso know as '''thiamin''' den '''vitamin B<sub>1</sub>''', be a [[vitamin]] – an [[Nutrient#Micronutrients|essential micronutrient]] for humans den animals.<ref name="ods">{{cite web|title=Thiamin: Fact Sheet for Health Professionals |url=https://ods.od.nih.gov/factsheets/Thiamin-HealthProfessional/|publisher=Office of Dietary Supplements, US National Institutes of Health |access-date=21 January 2025|date=9 February 2023}}</ref><ref name="lpi">{{cite web | year = 2025 | title = Thiamin | website = Linus Pauling Institute | publisher = Micronutrient Information Center, Linus Pauling Institute, Oregon State University | url = http://lpi.oregonstate.edu/mic/vitamins/thiamin | access-date = 21 January 2025 }}</ref><ref name="medline">{{cite web|title=Thiamine |url=https://medlineplus.gov/druginfo/meds/a682586.html|publisher=MedlinePlus, US National Library of Medicine|access-date=21 January 2025}}</ref> E be found insyd chow den commercially synthesized to be a [[dietary supplement]] anaa [[medication]].<ref name=ods/> [[Phosphorylated]] forms of thiamine be required for sam [[Metabolism|metabolic reactions]], wey dey include de breakdown of [[Carbohydrate metabolism|glucose]] den [[amino acid]]s.<ref name=ods/><ref name=lpi/><ref name="whitfield">{{cite journal |vauthors=Whitfield KC, Bourassa MW, Adamolekun B, Bergeron G, Bettendorff L, Brown KH, Cox L, Fattal-Valevski A, Fischer PR, Frank EL, Hiffler L, Hlaing LM, Jefferds ME, Kapner H, Kounnavong S, Mousavi MP, Roth DE, Tsaloglou MN, Wieringa F, Combs GF |title=Thiamine deficiency disorders: diagnosis, prevalence, and a roadmap for global control programs |journal=Annals of the New York Academy of Sciences |volume=1430 |issue=1 |pages=3–43 |date=October 2018 |pmid=30151974 |pmc=6392124 |doi=10.1111/nyas.13919 |bibcode=2018NYASA1430....3W }}</ref>
Food sources of thiamine dey include [[whole grain]]s, [[legumes]], den sam meats den fish.<ref name=ods/> [[Refined grain|Grain processing]] dey remove much of de vitamin content, so insyd chaw countries [[cereals]] den [[flour]]s be [[food fortification|enriched]] plus thiamine.<ref name=ods/><ref name=whitfield/> Supplements den medications be available to treat den prevent [[thiamine deficiency]] den de disorders wey result from am such as [[Thiamine deficiency#Dry beriberi|beriberi]] den [[Wernicke encephalopathy]].<ref name=ods/><ref name=lpi/><ref name=whitfield/> Dem sanso be used to treat [[maple syrup urine disease]] den [[Leigh syndrome]].<ref name=drugs/> Supplements den medications typically be taken [[Route of administration#Oral|by mouth]], buh sanso fi be given by [[intravenous therapy|intravenous]] anaa [[intramuscular injection]].<ref name="drugs">{{cite web | author = American Society of Health-System Pharmacists | date = 12 January 2025 | title = Thiamine Hydrochloride | publisher = Drugs.com | url = https://www.drugs.com/monograph/thiamine-hydrochloride.html | access-date = 21 January 2025 }}</ref>
Thiamine supplements generally be well tolerated. [[Allergic reactions]], wey dey include [[anaphylaxis]], fi occur wen repeated doses be given by injection.<ref name=medline/><ref name=drugs/><ref name=Peds2016>{{cite book | vauthors = Kliegman RM, Stanton B | date = 2016 | title = Nelson Textbook of Pediatrics | publisher = Elsevier Health Sciences | page = 322 | isbn = 978-1-4557-7566-8 | url = https://books.google.com/books?id=mseNCgAAQBAJ&pg=PA322 | quote = There are no cases of adverse effects of excess thiamine... A few isolated cases of puritis... }}</ref> Thiamine dey on de [[WHO Model List of Essential Medicines|World Health Organization's List of Essential Medicines]].<ref name="WHO21st">{{cite book | year = 2019 | title = World Health Organization model list of essential medicines: 21st list 2019 | publisher = [[World Health Organization]] | hdl = 10665/325771 | location = Geneva | id = WHO/MVP/EMP/IAU/2019.06 | hdl-access = free }}</ref> E be available as a [[generic medication]], den insyd sam countries as a non-prescription dietary supplement.<ref name=ods/><ref name=drugs/> Insyd 2023, na e be de 305th most commonly prescribed medication insyd de United States, plus more dan 300,000 prescriptions.<ref>{{cite web | vauthors = Kane SP | title = Thiamine Drug Usage Statistics, United States, 2014 - 2023 | website = ClinCalc | url = https://clincalc.com/DrugStats/Drugs/Thiamine | access-date = 21 August 2025 }}</ref>
==History==
<gallery caption="Sam contributors to de discovery of thiamine" mode="nolines">
File:Takaki Kanehiro.jpg|[[Takaki Kanehiro]]
File:Eijkman.jpg|[[Christiaan Eijkman]]
File:Portrait_of_Gerrit_Grijns_Wellcome_M0010254.jpg|[[Gerrit Grijns]]
File:Umetarosuzuki-pre1943.jpg|[[Umetaro Suzuki]]
File:Casimir_Funk_01.jpg|[[Casimir Funk]]
File:Rudolph Albert Peters.jpg|[[Rudolph Peters]]
</gallery>
== References ==
<references />
== External links ==
{{Commons}}
{{Authority control}}
[[Category:Thiamine| ]]
[[Category:Aminopyrimidines]]
[[Category:B vitamins]]
[[Category:Coenzymes]]
[[Category:Primary alcohols]]
[[Category:Thiazoles]]
[[Category:World Health Organization essential medicines]]
[[Category:Quaternary ammonium compounds]]
[[Category:Cations]]
[[Category:Translated from MDWiki]]
fi01v6xenslvilc3e0v0hidkhbnpayp
Category:Cations
14
30774
114514
2026-10-10T13:42:06Z
DaSupremo
9
Fresh category
114514
wikitext
text/x-wiki
phoiac9h4m842xq45sp7s6u21eteeq1
Category:B vitamins
14
30775
114515
2026-10-10T13:42:16Z
DaSupremo
9
Fresh category
114515
wikitext
text/x-wiki
phoiac9h4m842xq45sp7s6u21eteeq1
Category:Quaternary ammonium compounds
14
30776
114516
2026-10-10T13:42:28Z
DaSupremo
9
Fresh category
114516
wikitext
text/x-wiki
phoiac9h4m842xq45sp7s6u21eteeq1
Fatty liver disease
0
30777
114517
2026-10-10T20:10:21Z
DaSupremo
9
Created by translating the page [[:mdwiki:Special:Redirect/revision/1501996|Fatty liver disease]] to:gpe #mdwikicx
114517
wikitext
text/x-wiki
[[Category:Translated from MDWiki]]
r0gf7axtnvt68k0p85plnlehx64o08u
114518
114517
2026-10-10T20:17:52Z
DaSupremo
9
Improve article
114518
wikitext
text/x-wiki
{{Databox}}
'''Fatty liver disease''' ('''FLD'''), dem sanso know as '''hepatic steatosis''' den '''steatotic liver disease''' ('''SLD'''), be a condition wer excess [[fat]] dey build up insyd de [[liver]].<ref name="NIH2016">{{Cite web |date=November 2016 |title=Nonalcoholic Fatty Liver Disease & NASH |url=https://www.niddk.nih.gov/health-information/liver-disease/nafld-nash/all-content |access-date=7 November 2018 |website=National Institute of Diabetes and Digestive and Kidney Diseases}}</ref> Often der be no anaa few symptoms.<ref name=NIH2016/><ref name="Sin20172">{{Cite journal |last1=Singh |first1=S |last2=Osna |first2=NA |last3=Kharbanda |first3=KK |date=28 September 2017 |title=Treatment options for alcoholic and non-alcoholic fatty liver disease: A review. |journal=World Journal of Gastroenterology |volume=23 |issue=36 |pages=6549–6570 |doi=10.3748/wjg.v23.i36.6549 |pmc=5643281 |pmid=29085205 |doi-access=free}}</ref> Occasionally der fi be tiredness anaa pain insyd de upper right side of de [[abdomen]].<ref name=NIH2016/> Complications fi include [[cirrhosis]], [[liver cancer]], den [[esophageal varices]].<ref name=NIH2016/><ref name="Ant2019">{{Cite journal |last1=Antunes |first1=Catiele |last2=Azadfard |first2=Mohammadreza |last3=Hoilat |first3=Gilles J. |last4=Gupta |first4=Mohit |date=2022 |title=Fatty Liver |journal=StatPearls |publisher=StatPearls Publishing |pmid=28723021}}</ref>
== References ==
[[Category:Translated from MDWiki]]
<references />
== External links ==
ndi905mf309gdghznpfqipu66bl740x
114519
114518
2026-10-10T20:20:31Z
DaSupremo
9
Improve article
114519
wikitext
text/x-wiki
{{Databox}}
'''Fatty liver disease''' ('''FLD'''), dem sanso know as '''hepatic steatosis''' den '''steatotic liver disease''' ('''SLD'''), be a condition wer excess [[fat]] dey build up insyd de [[liver]].<ref name="NIH2016">{{Cite web |date=November 2016 |title=Nonalcoholic Fatty Liver Disease & NASH |url=https://www.niddk.nih.gov/health-information/liver-disease/nafld-nash/all-content |access-date=7 November 2018 |website=National Institute of Diabetes and Digestive and Kidney Diseases}}</ref> Often der be no anaa few symptoms.<ref name=NIH2016/><ref name="Sin20172">{{Cite journal |last1=Singh |first1=S |last2=Osna |first2=NA |last3=Kharbanda |first3=KK |date=28 September 2017 |title=Treatment options for alcoholic and non-alcoholic fatty liver disease: A review. |journal=World Journal of Gastroenterology |volume=23 |issue=36 |pages=6549–6570 |doi=10.3748/wjg.v23.i36.6549 |pmc=5643281 |pmid=29085205 |doi-access=free}}</ref> Occasionally der fi be tiredness anaa pain insyd de upper right side of de [[abdomen]].<ref name=NIH2016/> Complications fi include [[cirrhosis]], [[liver cancer]], den [[esophageal varices]].<ref name=NIH2016/><ref name="Ant2019">{{Cite journal |last1=Antunes |first1=Catiele |last2=Azadfard |first2=Mohammadreza |last3=Hoilat |first3=Gilles J. |last4=Gupta |first4=Mohit |date=2022 |title=Fatty Liver |journal=StatPearls |publisher=StatPearls Publishing |pmid=28723021}}</ref>
De main subtypes of fatty liver disease be [[metabolic dysfunction–associated steatotic liver disease]] (MASLD) den [[alcoholic liver disease]] (ALD), plus de category "metabolic and alcohol associated liver disease" (metALD) wey dey describe an overlap of de two.<ref name=":0">{{Cite journal |last1=Rinella |first1=Mary E. |last2=Lazarus |first2=Jeffrey V. |last3=Ratziu |first3=Vlad |last4=Francque |first4=Sven M. |last5=Sanyal |first5=Arun J. |last6=Kanwal |first6=Fasiha |last7=Romero |first7=Diana |last8=Abdelmalek |first8=Manal F. |last9=Anstee |first9=Quentin M. |last10=Arab |first10=Juan Pablo |last11=Arrese |first11=Marco |last12=Bataller |first12=Ramon |last13=Beuers |first13=Ulrich |last14=Boursier |first14=Jerome |last15=Bugianesi |first15=Elisabetta |date=2023 |title=A multi-society Delphi consensus statement on new fatty liver disease nomenclature |journal=Hepatology |language=en-US |volume=78 |issue=6 |pages=1966–1986 |doi=10.1097/HEP.0000000000000520 |issn=0270-9139 |pmc=10653297 |pmid=37363821 |s2cid=259260747 |doi-access=free |hdl-access=free |hdl=10807/245116}}</ref>
== References ==
<references />
== External links ==
[[Category:Translated from MDWiki]]
3rh1ikyhoh8hb7yadca45krtig2xqff
114520
114519
2026-10-10T20:23:07Z
DaSupremo
9
Improve article
114520
wikitext
text/x-wiki
{{Databox}}
'''Fatty liver disease''' ('''FLD'''), dem sanso know as '''hepatic steatosis''' den '''steatotic liver disease''' ('''SLD'''), be a condition wer excess [[fat]] dey build up insyd de [[liver]].<ref name="NIH2016">{{Cite web |date=November 2016 |title=Nonalcoholic Fatty Liver Disease & NASH |url=https://www.niddk.nih.gov/health-information/liver-disease/nafld-nash/all-content |access-date=7 November 2018 |website=National Institute of Diabetes and Digestive and Kidney Diseases}}</ref> Often der be no anaa few symptoms.<ref name=NIH2016/><ref name="Sin20172">{{Cite journal |last1=Singh |first1=S |last2=Osna |first2=NA |last3=Kharbanda |first3=KK |date=28 September 2017 |title=Treatment options for alcoholic and non-alcoholic fatty liver disease: A review. |journal=World Journal of Gastroenterology |volume=23 |issue=36 |pages=6549–6570 |doi=10.3748/wjg.v23.i36.6549 |pmc=5643281 |pmid=29085205 |doi-access=free}}</ref> Occasionally der fi be tiredness anaa pain insyd de upper right side of de [[abdomen]].<ref name=NIH2016/> Complications fi include [[cirrhosis]], [[liver cancer]], den [[esophageal varices]].<ref name=NIH2016/><ref name="Ant2019">{{Cite journal |last1=Antunes |first1=Catiele |last2=Azadfard |first2=Mohammadreza |last3=Hoilat |first3=Gilles J. |last4=Gupta |first4=Mohit |date=2022 |title=Fatty Liver |journal=StatPearls |publisher=StatPearls Publishing |pmid=28723021}}</ref>
De main subtypes of fatty liver disease be [[metabolic dysfunction–associated steatotic liver disease]] (MASLD) den [[alcoholic liver disease]] (ALD), plus de category "metabolic and alcohol associated liver disease" (metALD) wey dey describe an overlap of de two.<ref name=":0">{{Cite journal |last1=Rinella |first1=Mary E. |last2=Lazarus |first2=Jeffrey V. |last3=Ratziu |first3=Vlad |last4=Francque |first4=Sven M. |last5=Sanyal |first5=Arun J. |last6=Kanwal |first6=Fasiha |last7=Romero |first7=Diana |last8=Abdelmalek |first8=Manal F. |last9=Anstee |first9=Quentin M. |last10=Arab |first10=Juan Pablo |last11=Arrese |first11=Marco |last12=Bataller |first12=Ramon |last13=Beuers |first13=Ulrich |last14=Boursier |first14=Jerome |last15=Bugianesi |first15=Elisabetta |date=2023 |title=A multi-society Delphi consensus statement on new fatty liver disease nomenclature |journal=Hepatology |language=en-US |volume=78 |issue=6 |pages=1966–1986 |doi=10.1097/HEP.0000000000000520 |issn=0270-9139 |pmc=10653297 |pmid=37363821 |s2cid=259260747 |doi-access=free |hdl-access=free |hdl=10807/245116}}</ref>
Til June 2023, na MASLD den ein more advanced form, metabolic dysfunction associated steatohepatitis (MASH), be referred to as non-alcoholic fatty liver disease (NAFLD) den non-alcoholic steatohepatitis (NASH), respectively.<ref>{{cite web |last1=DHANJAL |first1=Adonia |title=Multinational liver societies announce new "Fatty" liver disease nomenclature that is affirmative and non-stigmatising |url=https://easl.eu/news/new_fatty_liver_disease_nomenclature-2/ |website=EASL-The Home of Hepatology. |access-date=14 December 2025 |date=24 June 2023}}</ref> Na de change insyd terminology be decided insyd a modified [[Delphi method|Delphi process]] wey three large pan-national liver associations lead (de [[American Association for the Study of Liver Diseases]], de [[European Association for the Study of the Liver]] den de Latin American Association for the Study of the Liver).<ref name=":0" />
== References ==
<references />
== External links ==
[[Category:Translated from MDWiki]]
05i50g8xncxb3l9q5ivtl78w2u8rmp7
114521
114520
2026-10-10T20:28:20Z
DaSupremo
9
Improve article
114521
wikitext
text/x-wiki
{{Databox}}
'''Fatty liver disease''' ('''FLD'''), dem sanso know as '''hepatic steatosis''' den '''steatotic liver disease''' ('''SLD'''), be a condition wer excess [[fat]] dey build up insyd de [[liver]].<ref name="NIH2016">{{Cite web |date=November 2016 |title=Nonalcoholic Fatty Liver Disease & NASH |url=https://www.niddk.nih.gov/health-information/liver-disease/nafld-nash/all-content |access-date=7 November 2018 |website=National Institute of Diabetes and Digestive and Kidney Diseases}}</ref> Often der be no anaa few symptoms.<ref name=NIH2016/><ref name="Sin20172">{{Cite journal |last1=Singh |first1=S |last2=Osna |first2=NA |last3=Kharbanda |first3=KK |date=28 September 2017 |title=Treatment options for alcoholic and non-alcoholic fatty liver disease: A review. |journal=World Journal of Gastroenterology |volume=23 |issue=36 |pages=6549–6570 |doi=10.3748/wjg.v23.i36.6549 |pmc=5643281 |pmid=29085205 |doi-access=free}}</ref> Occasionally der fi be tiredness anaa pain insyd de upper right side of de [[abdomen]].<ref name=NIH2016/> Complications fi include [[cirrhosis]], [[liver cancer]], den [[esophageal varices]].<ref name=NIH2016/><ref name="Ant2019">{{Cite journal |last1=Antunes |first1=Catiele |last2=Azadfard |first2=Mohammadreza |last3=Hoilat |first3=Gilles J. |last4=Gupta |first4=Mohit |date=2022 |title=Fatty Liver |journal=StatPearls |publisher=StatPearls Publishing |pmid=28723021}}</ref>
De main subtypes of fatty liver disease be [[metabolic dysfunction–associated steatotic liver disease]] (MASLD) den [[alcoholic liver disease]] (ALD), plus de category "metabolic and alcohol associated liver disease" (metALD) wey dey describe an overlap of de two.<ref name=":0">{{Cite journal |last1=Rinella |first1=Mary E. |last2=Lazarus |first2=Jeffrey V. |last3=Ratziu |first3=Vlad |last4=Francque |first4=Sven M. |last5=Sanyal |first5=Arun J. |last6=Kanwal |first6=Fasiha |last7=Romero |first7=Diana |last8=Abdelmalek |first8=Manal F. |last9=Anstee |first9=Quentin M. |last10=Arab |first10=Juan Pablo |last11=Arrese |first11=Marco |last12=Bataller |first12=Ramon |last13=Beuers |first13=Ulrich |last14=Boursier |first14=Jerome |last15=Bugianesi |first15=Elisabetta |date=2023 |title=A multi-society Delphi consensus statement on new fatty liver disease nomenclature |journal=Hepatology |language=en-US |volume=78 |issue=6 |pages=1966–1986 |doi=10.1097/HEP.0000000000000520 |issn=0270-9139 |pmc=10653297 |pmid=37363821 |s2cid=259260747 |doi-access=free |hdl-access=free |hdl=10807/245116}}</ref>
Til June 2023, na MASLD den ein more advanced form, metabolic dysfunction associated steatohepatitis (MASH), be referred to as non-alcoholic fatty liver disease (NAFLD) den non-alcoholic steatohepatitis (NASH), respectively.<ref>{{cite web |last1=DHANJAL |first1=Adonia |title=Multinational liver societies announce new "Fatty" liver disease nomenclature that is affirmative and non-stigmatising |url=https://easl.eu/news/new_fatty_liver_disease_nomenclature-2/ |website=EASL-The Home of Hepatology. |access-date=14 December 2025 |date=24 June 2023}}</ref> Na de change insyd terminology be decided insyd a modified [[Delphi method|Delphi process]] wey three large pan-national liver associations lead (de [[American Association for the Study of Liver Diseases]], de [[European Association for the Study of the Liver]] den de Latin American Association for the Study of the Liver).<ref name=":0" />
De primary risks dey include [[ethanol|alcohol]], [[type 2 diabetes]], den [[obesity]].<ref name="NIH2016" /><ref name="Ant2019" /> Oda risk factors dey include certain medications such as [[glucocorticoid]]s, den [[hepatitis C]].<ref name="NIH2016" /> E be unclear why sam people plus MASLD develop simple fatty liver den odas develop metabolic dysfunction associated steatohepatitis (MASH), wich be associated plus poorer outcomes.<ref name="NIH2016" /> Diagnosis be based on de [[medical history]] wey blood tests support, [[medical imaging]], den occasionally [[liver biopsy]].<ref name="NIH2016" />
== References ==
<references />
== External links ==
[[Category:Translated from MDWiki]]
i55twhdl59j9pq7n1zpczt1lhgvmk5a
114522
114521
2026-10-10T20:30:59Z
DaSupremo
9
Improve article
114522
wikitext
text/x-wiki
{{Databox}}
'''Fatty liver disease''' ('''FLD'''), dem sanso know as '''hepatic steatosis''' den '''steatotic liver disease''' ('''SLD'''), be a condition wer excess [[fat]] dey build up insyd de [[liver]].<ref name="NIH2016">{{Cite web |date=November 2016 |title=Nonalcoholic Fatty Liver Disease & NASH |url=https://www.niddk.nih.gov/health-information/liver-disease/nafld-nash/all-content |access-date=7 November 2018 |website=National Institute of Diabetes and Digestive and Kidney Diseases}}</ref> Often der be no anaa few symptoms.<ref name=NIH2016/><ref name="Sin20172">{{Cite journal |last1=Singh |first1=S |last2=Osna |first2=NA |last3=Kharbanda |first3=KK |date=28 September 2017 |title=Treatment options for alcoholic and non-alcoholic fatty liver disease: A review. |journal=World Journal of Gastroenterology |volume=23 |issue=36 |pages=6549–6570 |doi=10.3748/wjg.v23.i36.6549 |pmc=5643281 |pmid=29085205 |doi-access=free}}</ref> Occasionally der fi be tiredness anaa pain insyd de upper right side of de [[abdomen]].<ref name=NIH2016/> Complications fi include [[cirrhosis]], [[liver cancer]], den [[esophageal varices]].<ref name=NIH2016/><ref name="Ant2019">{{Cite journal |last1=Antunes |first1=Catiele |last2=Azadfard |first2=Mohammadreza |last3=Hoilat |first3=Gilles J. |last4=Gupta |first4=Mohit |date=2022 |title=Fatty Liver |journal=StatPearls |publisher=StatPearls Publishing |pmid=28723021}}</ref>
De main subtypes of fatty liver disease be [[metabolic dysfunction–associated steatotic liver disease]] (MASLD) den [[alcoholic liver disease]] (ALD), plus de category "metabolic and alcohol associated liver disease" (metALD) wey dey describe an overlap of de two.<ref name=":0">{{Cite journal |last1=Rinella |first1=Mary E. |last2=Lazarus |first2=Jeffrey V. |last3=Ratziu |first3=Vlad |last4=Francque |first4=Sven M. |last5=Sanyal |first5=Arun J. |last6=Kanwal |first6=Fasiha |last7=Romero |first7=Diana |last8=Abdelmalek |first8=Manal F. |last9=Anstee |first9=Quentin M. |last10=Arab |first10=Juan Pablo |last11=Arrese |first11=Marco |last12=Bataller |first12=Ramon |last13=Beuers |first13=Ulrich |last14=Boursier |first14=Jerome |last15=Bugianesi |first15=Elisabetta |date=2023 |title=A multi-society Delphi consensus statement on new fatty liver disease nomenclature |journal=Hepatology |language=en-US |volume=78 |issue=6 |pages=1966–1986 |doi=10.1097/HEP.0000000000000520 |issn=0270-9139 |pmc=10653297 |pmid=37363821 |s2cid=259260747 |doi-access=free |hdl-access=free |hdl=10807/245116}}</ref>
Til June 2023, na MASLD den ein more advanced form, metabolic dysfunction associated steatohepatitis (MASH), be referred to as non-alcoholic fatty liver disease (NAFLD) den non-alcoholic steatohepatitis (NASH), respectively.<ref>{{cite web |last1=DHANJAL |first1=Adonia |title=Multinational liver societies announce new "Fatty" liver disease nomenclature that is affirmative and non-stigmatising |url=https://easl.eu/news/new_fatty_liver_disease_nomenclature-2/ |website=EASL-The Home of Hepatology. |access-date=14 December 2025 |date=24 June 2023}}</ref> Na de change insyd terminology be decided insyd a modified [[Delphi method|Delphi process]] wey three large pan-national liver associations lead (de [[American Association for the Study of Liver Diseases]], de [[European Association for the Study of the Liver]] den de Latin American Association for the Study of the Liver).<ref name=":0" />
De primary risks dey include [[ethanol|alcohol]], [[type 2 diabetes]], den [[obesity]].<ref name="NIH2016" /><ref name="Ant2019" /> Oda risk factors dey include certain medications such as [[glucocorticoid]]s, den [[hepatitis C]].<ref name="NIH2016" /> E be unclear why sam people plus MASLD develop simple fatty liver den odas develop metabolic dysfunction associated steatohepatitis (MASH), wich be associated plus poorer outcomes.<ref name="NIH2016" /> Diagnosis be based on de [[medical history]] wey blood tests support, [[medical imaging]], den occasionally [[liver biopsy]].<ref name="NIH2016" />
Treatment of MASLD generally be by dietary changes den exercise to bring about [[weight loss]].<ref name=NIH2016/> Insyd those wey severely be affected, [[liver transplantation]] fi be an option.<ref name=NIH2016/> More dan 90% of heavy drinkers dey develop fatty liver while about 25% develop de more severe [[alcoholic hepatitis]].<ref name="Bas2011">{{Cite journal |last=Basra |first=Sarpreet |date=2011 |title=Definition, epidemiology and magnitude of alcoholic hepatitis |journal=World Journal of Hepatology |volume=3 |issue=5 |pages=108–113 |doi=10.4254/wjh.v3.i5.108 |pmc=3124876 |pmid=21731902 |doi-access=free}}</ref> MASLD dey affect about 30% of people insyd Western countries den 10% of people insyd Asia.<ref name="Sin2017">{{Cite journal |last1=Singh |first1=S |last2=Osna |first2=NA |last3=Kharbanda |first3=KK |date=28 September 2017 |title=Treatment options for alcoholic and non-alcoholic fatty liver disease: A review. |journal=World Journal of Gastroenterology |volume=23 |issue=36 |pages=6549–6570 |doi=10.3748/wjg.v23.i36.6549 |pmc=5643281 |pmid=29085205 |doi-access=free}}</ref> MASLD dey affect about 10% of kiddies insyd de United States.<ref name=NIH2016/> E dey occur more often insyd older people den males.<ref name=Ant2019/><ref name="AFP2013">{{Cite journal |last1=Iser |first1=D |last2=Ryan |first2=M |date=July 2013 |title=Fatty liver disease—a practical guide for GPs. |journal=Australian Family Physician |volume=42 |issue=7 |pages=444–7 |pmid=23826593}}</ref>
== References ==
<references />
== External links ==
[[Category:Translated from MDWiki]]
09db2q1wmo7mp98z9c725k444rc34m8
114529
114522
2026-10-10T22:08:19Z
DaSupremo
9
/* Diagnosis */ Improve article
114529
wikitext
text/x-wiki
{{Databox}}
'''Fatty liver disease''' ('''FLD'''), dem sanso know as '''hepatic steatosis''' den '''steatotic liver disease''' ('''SLD'''), be a condition wer excess [[fat]] dey build up insyd de [[liver]].<ref name="NIH2016">{{Cite web |date=November 2016 |title=Nonalcoholic Fatty Liver Disease & NASH |url=https://www.niddk.nih.gov/health-information/liver-disease/nafld-nash/all-content |access-date=7 November 2018 |website=National Institute of Diabetes and Digestive and Kidney Diseases}}</ref> Often der be no anaa few symptoms.<ref name=NIH2016/><ref name="Sin20172">{{Cite journal |last1=Singh |first1=S |last2=Osna |first2=NA |last3=Kharbanda |first3=KK |date=28 September 2017 |title=Treatment options for alcoholic and non-alcoholic fatty liver disease: A review. |journal=World Journal of Gastroenterology |volume=23 |issue=36 |pages=6549–6570 |doi=10.3748/wjg.v23.i36.6549 |pmc=5643281 |pmid=29085205 |doi-access=free}}</ref> Occasionally der fi be tiredness anaa pain insyd de upper right side of de [[abdomen]].<ref name=NIH2016/> Complications fi include [[cirrhosis]], [[liver cancer]], den [[esophageal varices]].<ref name=NIH2016/><ref name="Ant2019">{{Cite journal |last1=Antunes |first1=Catiele |last2=Azadfard |first2=Mohammadreza |last3=Hoilat |first3=Gilles J. |last4=Gupta |first4=Mohit |date=2022 |title=Fatty Liver |journal=StatPearls |publisher=StatPearls Publishing |pmid=28723021}}</ref>
De main subtypes of fatty liver disease be [[metabolic dysfunction–associated steatotic liver disease]] (MASLD) den [[alcoholic liver disease]] (ALD), plus de category "metabolic and alcohol associated liver disease" (metALD) wey dey describe an overlap of de two.<ref name=":0">{{Cite journal |last1=Rinella |first1=Mary E. |last2=Lazarus |first2=Jeffrey V. |last3=Ratziu |first3=Vlad |last4=Francque |first4=Sven M. |last5=Sanyal |first5=Arun J. |last6=Kanwal |first6=Fasiha |last7=Romero |first7=Diana |last8=Abdelmalek |first8=Manal F. |last9=Anstee |first9=Quentin M. |last10=Arab |first10=Juan Pablo |last11=Arrese |first11=Marco |last12=Bataller |first12=Ramon |last13=Beuers |first13=Ulrich |last14=Boursier |first14=Jerome |last15=Bugianesi |first15=Elisabetta |date=2023 |title=A multi-society Delphi consensus statement on new fatty liver disease nomenclature |journal=Hepatology |language=en-US |volume=78 |issue=6 |pages=1966–1986 |doi=10.1097/HEP.0000000000000520 |issn=0270-9139 |pmc=10653297 |pmid=37363821 |s2cid=259260747 |doi-access=free |hdl-access=free |hdl=10807/245116}}</ref>
Til June 2023, na MASLD den ein more advanced form, metabolic dysfunction associated steatohepatitis (MASH), be referred to as non-alcoholic fatty liver disease (NAFLD) den non-alcoholic steatohepatitis (NASH), respectively.<ref>{{cite web |last1=DHANJAL |first1=Adonia |title=Multinational liver societies announce new "Fatty" liver disease nomenclature that is affirmative and non-stigmatising |url=https://easl.eu/news/new_fatty_liver_disease_nomenclature-2/ |website=EASL-The Home of Hepatology. |access-date=14 December 2025 |date=24 June 2023}}</ref> Na de change insyd terminology be decided insyd a modified [[Delphi method|Delphi process]] wey three large pan-national liver associations lead (de [[American Association for the Study of Liver Diseases]], de [[European Association for the Study of the Liver]] den de Latin American Association for the Study of the Liver).<ref name=":0" />
De primary risks dey include [[ethanol|alcohol]], [[type 2 diabetes]], den [[obesity]].<ref name="NIH2016" /><ref name="Ant2019" /> Oda risk factors dey include certain medications such as [[glucocorticoid]]s, den [[hepatitis C]].<ref name="NIH2016" /> E be unclear why sam people plus MASLD develop simple fatty liver den odas develop metabolic dysfunction associated steatohepatitis (MASH), wich be associated plus poorer outcomes.<ref name="NIH2016" /> Diagnosis be based on de [[medical history]] wey blood tests support, [[medical imaging]], den occasionally [[liver biopsy]].<ref name="NIH2016" />
Treatment of MASLD generally be by dietary changes den exercise to bring about [[weight loss]].<ref name=NIH2016/> Insyd those wey severely be affected, [[liver transplantation]] fi be an option.<ref name=NIH2016/> More dan 90% of heavy drinkers dey develop fatty liver while about 25% develop de more severe [[alcoholic hepatitis]].<ref name="Bas2011">{{Cite journal |last=Basra |first=Sarpreet |date=2011 |title=Definition, epidemiology and magnitude of alcoholic hepatitis |journal=World Journal of Hepatology |volume=3 |issue=5 |pages=108–113 |doi=10.4254/wjh.v3.i5.108 |pmc=3124876 |pmid=21731902 |doi-access=free}}</ref> MASLD dey affect about 30% of people insyd Western countries den 10% of people insyd Asia.<ref name="Sin2017">{{Cite journal |last1=Singh |first1=S |last2=Osna |first2=NA |last3=Kharbanda |first3=KK |date=28 September 2017 |title=Treatment options for alcoholic and non-alcoholic fatty liver disease: A review. |journal=World Journal of Gastroenterology |volume=23 |issue=36 |pages=6549–6570 |doi=10.3748/wjg.v23.i36.6549 |pmc=5643281 |pmid=29085205 |doi-access=free}}</ref> MASLD dey affect about 10% of kiddies insyd de United States.<ref name=NIH2016/> E dey occur more often insyd older people den males.<ref name=Ant2019/><ref name="AFP2013">{{Cite journal |last1=Iser |first1=D |last2=Ryan |first2=M |date=July 2013 |title=Fatty liver disease—a practical guide for GPs. |journal=Australian Family Physician |volume=42 |issue=7 |pages=444–7 |pmid=23826593}}</ref>
==Diagnosis==
[[File:Liversteatosis.png|thumb|Liver [[steatosis]] (fatty liver disease) as seen on CT]]
[[File:Steatosis hepatis - Sonographie 001.jpg|thumb|Ultrasound wey dey show diffuse increased echogenicity of de liver]]
{|align="centre"
|-Elevated liver enzyme
!align="center"|Flow chart for diagnosis<ref name="Bayard_2006">{{Cite journal |vauthors=Bayard M, Holt J, Boroughs E |date=June 2006 |title=Nonalcoholic fatty liver disease |journal=American Family Physician |volume=73 |issue=11 |pages=1961–8 |pmid=16770927}}</ref>
|-
|{{tree chart/start}}
{{tree chart|border=1|boxstyle=background:#dfd; | | | | A01| | | |A01=Elevated liver enzyme}}
{{tree chart|border=1|boxstyle=background:#dfd; | | | | |!| | | | |}}
{{tree chart|border=1|boxstyle=background:#dfd; | | | | B01| | | |B01=Serology to exclude viral hepatitis}}
{{tree chart|border=1|boxstyle=background:#dfd; | | | | |!| | | | |}}
{{tree chart|border=1|boxstyle=background:#dfd; | | | | C01| | | |C01=Imaging study showing<br />fatty infiltrate}}
{{tree chart|border=1|boxstyle=background:#dfd; | | | | |!| | | | |}}
{{tree chart|border=1|boxstyle=background:#dfd; | | | | D01| | | |D01=Alcohol intake}}
{{tree chart|border=1|boxstyle=background:#dfd; | | |,|-|^|-|.| | |}}
{{tree chart|border=1|boxstyle=background:#dfd; | |E01| |E02| | |E01=Less than two drinks per day‡|E02=More than two drinks per day‡}}
{{tree chart|border=1|boxstyle=background:#dfd; | | |!| | | |!| | |}}
{{tree chart|border=1|boxstyle=background:#dfd; | |F01| |F02| | |F01=Nonalcoholic fatty liver disease likely|F02=Alcoholic liver disease likely}}
{{tree chart/end}}
|-
|align="center"|‡ <small>Criteria for nonalcoholic fatty liver disease:<br /> consumption of ethanol less than 20 g/day for women and 30 g/day for men<ref name="Adams _2005">{{Cite journal |last1=Adams |first1=L. A. |last2=Angulo |first2=P |last3=Lindor |first3=KD |date=29 March 2005 |title=Nonalcoholic fatty liver disease |journal=Canadian Medical Association Journal |volume=172 |issue=7 |pages=899–905 |doi=10.1503/cmaj.045232 |pmc=554876 |pmid=15795412}}</ref></small>
|}
== References ==
<references />
== External links ==
[[Category:Translated from MDWiki]]
7ku4as20q8o1xyeh50ytlwb1kgp1h4h
114530
114529
2026-10-10T22:17:27Z
DaSupremo
9
Improve article
114530
wikitext
text/x-wiki
{{Databox}}
'''Fatty liver disease''' ('''FLD'''), dem sanso know as '''hepatic steatosis''' den '''steatotic liver disease''' ('''SLD'''), be a condition wer excess [[fat]] dey build up insyd de [[liver]].<ref name="NIH2016">{{Cite web |date=November 2016 |title=Nonalcoholic Fatty Liver Disease & NASH |url=https://www.niddk.nih.gov/health-information/liver-disease/nafld-nash/all-content |access-date=7 November 2018 |website=National Institute of Diabetes and Digestive and Kidney Diseases}}</ref> Often der be no anaa few symptoms.<ref name=NIH2016/><ref name="Sin20172">{{Cite journal |last1=Singh |first1=S |last2=Osna |first2=NA |last3=Kharbanda |first3=KK |date=28 September 2017 |title=Treatment options for alcoholic and non-alcoholic fatty liver disease: A review. |journal=World Journal of Gastroenterology |volume=23 |issue=36 |pages=6549–6570 |doi=10.3748/wjg.v23.i36.6549 |pmc=5643281 |pmid=29085205 |doi-access=free}}</ref> Occasionally der fi be tiredness anaa pain insyd de upper right side of de [[abdomen]].<ref name=NIH2016/> Complications fi include [[cirrhosis]], [[liver cancer]], den [[esophageal varices]].<ref name=NIH2016/><ref name="Ant2019">{{Cite journal |last1=Antunes |first1=Catiele |last2=Azadfard |first2=Mohammadreza |last3=Hoilat |first3=Gilles J. |last4=Gupta |first4=Mohit |date=2022 |title=Fatty Liver |journal=StatPearls |publisher=StatPearls Publishing |pmid=28723021}}</ref>
De main subtypes of fatty liver disease be [[metabolic dysfunction–associated steatotic liver disease]] (MASLD) den [[alcoholic liver disease]] (ALD), plus de category "metabolic and alcohol associated liver disease" (metALD) wey dey describe an overlap of de two.<ref name=":0">{{Cite journal |last1=Rinella |first1=Mary E. |last2=Lazarus |first2=Jeffrey V. |last3=Ratziu |first3=Vlad |last4=Francque |first4=Sven M. |last5=Sanyal |first5=Arun J. |last6=Kanwal |first6=Fasiha |last7=Romero |first7=Diana |last8=Abdelmalek |first8=Manal F. |last9=Anstee |first9=Quentin M. |last10=Arab |first10=Juan Pablo |last11=Arrese |first11=Marco |last12=Bataller |first12=Ramon |last13=Beuers |first13=Ulrich |last14=Boursier |first14=Jerome |last15=Bugianesi |first15=Elisabetta |date=2023 |title=A multi-society Delphi consensus statement on new fatty liver disease nomenclature |journal=Hepatology |language=en-US |volume=78 |issue=6 |pages=1966–1986 |doi=10.1097/HEP.0000000000000520 |issn=0270-9139 |pmc=10653297 |pmid=37363821 |s2cid=259260747 |doi-access=free |hdl-access=free |hdl=10807/245116}}</ref>
Til June 2023, na MASLD den ein more advanced form, metabolic dysfunction associated steatohepatitis (MASH), be referred to as non-alcoholic fatty liver disease (NAFLD) den non-alcoholic steatohepatitis (NASH), respectively.<ref>{{cite web |last1=DHANJAL |first1=Adonia |title=Multinational liver societies announce new "Fatty" liver disease nomenclature that is affirmative and non-stigmatising |url=https://easl.eu/news/new_fatty_liver_disease_nomenclature-2/ |website=EASL-The Home of Hepatology. |access-date=14 December 2025 |date=24 June 2023}}</ref> Na de change insyd terminology be decided insyd a modified [[Delphi method|Delphi process]] wey three large pan-national liver associations lead (de [[American Association for the Study of Liver Diseases]], de [[European Association for the Study of the Liver]] den de Latin American Association for the Study of the Liver).<ref name=":0" />
De primary risks dey include [[ethanol|alcohol]], [[type 2 diabetes]], den [[obesity]].<ref name="NIH2016" /><ref name="Ant2019" /> Oda risk factors dey include certain medications such as [[glucocorticoid]]s, den [[hepatitis C]].<ref name="NIH2016" /> E be unclear why sam people plus MASLD develop simple fatty liver den odas develop metabolic dysfunction associated steatohepatitis (MASH), wich be associated plus poorer outcomes.<ref name="NIH2016" /> Diagnosis be based on de [[medical history]] wey blood tests support, [[medical imaging]], den occasionally [[liver biopsy]].<ref name="NIH2016" />
Treatment of MASLD generally be by dietary changes den exercise to bring about [[weight loss]].<ref name=NIH2016/> Insyd those wey severely be affected, [[liver transplantation]] fi be an option.<ref name=NIH2016/> More dan 90% of heavy drinkers dey develop fatty liver while about 25% develop de more severe [[alcoholic hepatitis]].<ref name="Bas2011">{{Cite journal |last=Basra |first=Sarpreet |date=2011 |title=Definition, epidemiology and magnitude of alcoholic hepatitis |journal=World Journal of Hepatology |volume=3 |issue=5 |pages=108–113 |doi=10.4254/wjh.v3.i5.108 |pmc=3124876 |pmid=21731902 |doi-access=free}}</ref> MASLD dey affect about 30% of people insyd Western countries den 10% of people insyd Asia.<ref name="Sin2017">{{Cite journal |last1=Singh |first1=S |last2=Osna |first2=NA |last3=Kharbanda |first3=KK |date=28 September 2017 |title=Treatment options for alcoholic and non-alcoholic fatty liver disease: A review. |journal=World Journal of Gastroenterology |volume=23 |issue=36 |pages=6549–6570 |doi=10.3748/wjg.v23.i36.6549 |pmc=5643281 |pmid=29085205 |doi-access=free}}</ref> MASLD dey affect about 10% of kiddies insyd de United States.<ref name=NIH2016/> E dey occur more often insyd older people den males.<ref name=Ant2019/><ref name="AFP2013">{{Cite journal |last1=Iser |first1=D |last2=Ryan |first2=M |date=July 2013 |title=Fatty liver disease—a practical guide for GPs. |journal=Australian Family Physician |volume=42 |issue=7 |pages=444–7 |pmid=23826593}}</ref>
==Diagnosis==
[[File:Liversteatosis.png|thumb|Liver [[steatosis]] (fatty liver disease) as seen on CT]]
[[File:Steatosis hepatis - Sonographie 001.jpg|thumb|Ultrasound wey dey show diffuse increased echogenicity of de liver]]
{|align="centre"
|-Elevated liver enzyme
!align="center"|Flow chart for diagnosis<ref name="Bayard_2006">{{Cite journal |vauthors=Bayard M, Holt J, Boroughs E |date=June 2006 |title=Nonalcoholic fatty liver disease |journal=American Family Physician |volume=73 |issue=11 |pages=1961–8 |pmid=16770927}}</ref>
|-
|{{tree chart/start}}
{{tree chart|border=1|boxstyle=background:#dfd; | | | | A01| | | |A01=Elevated liver enzyme}}
{{tree chart|border=1|boxstyle=background:#dfd; | | | | |!| | | | |}}
{{tree chart|border=1|boxstyle=background:#dfd; | | | | B01| | | |B01=Serology to exclude viral hepatitis}}
{{tree chart|border=1|boxstyle=background:#dfd; | | | | |!| | | | |}}
{{tree chart|border=1|boxstyle=background:#dfd; | | | | C01| | | |C01=Imaging study showing<br />fatty infiltrate}}
{{tree chart|border=1|boxstyle=background:#dfd; | | | | |!| | | | |}}
{{tree chart|border=1|boxstyle=background:#dfd; | | | | D01| | | |D01=Alcohol intake}}
{{tree chart|border=1|boxstyle=background:#dfd; | | |,|-|^|-|.| | |}}
{{tree chart|border=1|boxstyle=background:#dfd; | |E01| |E02| | |E01=Less than two drinks per day‡|E02=More than two drinks per day‡}}
{{tree chart|border=1|boxstyle=background:#dfd; | | |!| | | |!| | |}}
{{tree chart|border=1|boxstyle=background:#dfd; | |F01| |F02| | |F01=Nonalcoholic fatty liver disease likely|F02=Alcoholic liver disease likely}}
{{tree chart/end}}
|-
|align="center"|‡ <small>Criteria for nonalcoholic fatty liver disease:<br /> consumption of ethanol less than 20 g/day for women and 30 g/day for men<ref name="Adams _2005">{{Cite journal |last1=Adams |first1=L. A. |last2=Angulo |first2=P |last3=Lindor |first3=KD |date=29 March 2005 |title=Nonalcoholic fatty liver disease |journal=Canadian Medical Association Journal |volume=172 |issue=7 |pages=899–905 |doi=10.1503/cmaj.045232 |pmc=554876 |pmid=15795412}}</ref></small>
|}
== References ==
<references />
== External links ==
{{Commons}}
* Photo at [http://www.pathologyatlas.ro/fatty-change-liver-steatosis-pathology.php Atlas of Pathology]
{{Authority control}}
{{DEFAULTSORT:Fatty Liver}}
[[Category:Diseases of liver]]
[[Category:Medical conditions wey relate to obesity]]
[[Category:Histopathology]]
[[no:Steatose]]
[[pl:Alkoholowe stłuszczenie wątroby]]
[[Category:Translated from MDWiki]]
gy3j31zi4avxdkvi1wldg7dsipiakat
Template:Tree chart/start
10
30778
114523
2026-10-10T21:43:02Z
DaSupremo
9
Fresh template
114523
wikitext
text/x-wiki
<table class="tree-chart" style="border-spacing: 0px; border-collapse: separate; {{#switch: {{{align|}}}
|left = float: left;
|right = float: right;
|center = margin: 0 auto;
|#default =
}} {{{style|}}}"><noinclude>
{{Tree chart/end}}
{{documentation}}
</noinclude>
khxmk3q51k86fasxt0qzrcuiiyil8hc
Template:Tree chart/end
10
30779
114524
2026-10-10T21:45:25Z
DaSupremo
9
Fresh template
114524
wikitext
text/x-wiki
<noinclude><table></noinclude></table><noinclude>{{Documentation}}</noinclude>
fezta2a3qmow3rikttoybl5b9mte5xz
Template:Tree chart
10
30780
114525
2026-10-10T21:48:46Z
DaSupremo
9
Fresh template
114525
wikitext
text/x-wiki
<includeonly>{{#invoke:Tree chart|main}}</includeonly><noinclude>{{documentation}} </noinclude>
8jvqnlsqqguidcdc39mdm875lsgeaz2
Module:Tree chart
828
30781
114526
2026-10-10T21:55:50Z
DaSupremo
9
Fresh module
114526
Scribunto
text/plain
require('strict')
local p = {}
local cells = mw.loadData('Module:Tree chart/data')
function p._main(cell_args)
local ret = mw.html.create()
local top = ret:tag('tr')
:css{ height = '1px',
['text-align'] = 'center' }
local bottom = ret:tag('tr')
:css{ height = '1px',
['text-align'] = 'center' }
for _, v in ipairs(cell_args) do
if type(v) == 'string' then
top:wikitext(cells[v].t)
bottom:wikitext(cells[v].b)
else
top:tag('td')
:attr{ colspan = v.colspan or cell_args.colspan or 6,
rowspan = v.rowspan or cell_args.rowspan or 2 }
:css{ padding = '0.2em',
border = (v.border or cell_args.border or '2') .. 'px solid' }
:cssText(v.boxstyle or cell_args.boxstyle)
:wikitext(v.text)
end
end
return tostring(ret)
end
function p.main(frame)
local args = require('Module:Arguments').getArgs(frame, {wrappers = 'Template:Tree chart', trim = false, removeBlanks = false})
local cell_args = {
colspan = args.colspan,
rowspan = args.rowspan,
border = args.border,
boxstyle = args.boxstyle
}
for _, val in ipairs(args) do
local trimmedVal = val:match('^%s*(.-)%s*$')
if trimmedVal == '' then
trimmedVal = '$'
end
if cells[trimmedVal] then
table.insert(cell_args, trimmedVal)
else
-- Unnamed params behave weirdly
-- white space at the front counts for param_{{{1}}}, but not whitespace at the end, so remove it
local rightTrimmedVal = val:gsub('%s+$','')
table.insert(cell_args, {
text = args[trimmedVal] or ('{{{'..trimmedVal..'}}}'),
colspan = args['colspan_'..rightTrimmedVal],
rowspan = args['rowspan_'..rightTrimmedVal],
border = args['border_'..rightTrimmedVal],
boxstyle = args['boxstyle_'..rightTrimmedVal]
})
end
end
return p._main(cell_args)
end
return p
e73icedqvymkhbbzm4rrh23qebo72u6
Module:Tree chart/doc
828
30782
114527
2026-10-10T22:01:52Z
DaSupremo
9
Fresh module
114527
wikitext
text/x-wiki
{{High-use}}
== Usage ==
Implements [[Template:Tree chart]]; Full documentation on chart syntax exists at [[Template:Tree chart/doc]]
This module uses the mw.html library to create rows of table cells whose borders draw lines to show relationships between elements. When an unnamed parameter matches a key in [[Module:Tree chart/data]], the module will create a block with stylings as defined in the table. Each key in the table has a subtable with 0, 1, or 2 keys of its own: <code>t</code> for the "top" row and <code>b</code> for the "bottom row". Any unnamed parameter whose value does not exist in the table will be used to create elements on the chart, and additional named parameters for that value will be looked for.
<includeonly>{{#ifeq:{{SUBPAGENAME}}|sandbox | |
<!-- Categories below this line, please; interwikis at Wikidata -->
[[Category:Chart formatting templates| ]]
[[Category:Genealogy formatting templates]]
}}</includeonly>
ilv7w332hzic9bwz31m34cob0v4d494
Module:Tree chart/data
828
30783
114528
2026-10-10T22:04:50Z
DaSupremo
9
Fresh module
114528
Scribunto
text/plain
local SLD = '1px solid'
local DSH = '1px dashed'
local DOT = '1px dotted'
local data = {
['!'] = {
t = { { attr = { rowspan = '2' }, style = { ['border-right'] = SLD, width = '1em', height = '2em' } },
{ attr = { rowspan = '2' }, style = { width = '1em', height = '2em' } } }
},
['%'] = {
b = { { style = { ['border-right'] = DSH, width = '1em', height = '1em' } },
{ style = { width = '1em', height = '1em' } } },
t = { { style = { ['border-right'] = DSH, ['border-bottom'] = DSH, width = '1em', height = '1em' } },
{ style = { ['border-bottom'] = DSH, width = '1em', height = '1em' } } }
},
["'"] = {
b = { { style = { width = '1em', height = '1em' } } },
t = { { style = { ['border-right'] = SLD, ['border-bottom'] = SLD, width = '1em', height = '1em' } },
{ attr = { rowspan = '2' }, style = { width = '1em', height = '2em' } } }
},
['('] = {
b = { { style = { ['border-right'] = SLD, width = '1em', height = '1em' } } },
t = { { style = { ['border-right'] = SLD, ['border-bottom'] = SLD, width = '1em', height = '1em' } },
{ attr = { rowspan = '2' }, style = { width = '1em', height = '2em' } } }
},
[')'] = {
b = { { style = { width = '1em', height = '1em' } } },
t = { { attr = { rowspan = '2' }, style = { ['border-right'] = SLD, width = '1em', height = '2em' } },
{ style = { ['border-bottom'] = SLD, width = '1em', height = '1em' } } }
},
['*'] = {
b = { { style = { ['border-right'] = DSH, width = '1em', height = '1em' } },
{ style = { width = '1em', height = '1em' } } },
t = { { style = { ['border-right'] = DSH, ['border-bottom'] = SLD, width = '1em', height = '1em' } },
{ style = { ['border-bottom'] = SLD, width = '1em', height = '1em' } } }
},
['+'] = {
b = { { style = { ['border-right'] = SLD, width = '1em', height = '1em' } },
{ style = { width = '1em', height = '1em' } } },
t = { { style = { ['border-right'] = SLD, ['border-bottom'] = SLD, width = '1em', height = '1em' } },
{ style = { ['border-bottom'] = SLD, width = '1em', height = '1em' } } }
},
[','] = {
b = { { style = { ['border-right'] = SLD, width = '1em', height = '1em' } },
{ style = { width = '1em', height = '1em' } } },
t = { { style = { width = '1em', height = '1em' } },
{ style = { ['border-bottom'] = SLD, width = '1em', height = '1em' } } }
},
['-'] = {
b = { { attr = { colspan = '2' }, style = { width = '2em', height = '1em' } } },
t = { { attr = { colspan = '2' }, style = { ['border-bottom'] = SLD, width = '2em', height = '1em' } } }
},
['.'] = {
b = { { style = { ['border-right'] = SLD, width = '1em', height = '1em' } } },
t = { { style = { ['border-bottom'] = SLD, width = '1em', height = '1em' } },
{ attr = { rowspan = '2' }, style = { width = '1em', height = '2em' } } }
},
['7'] = {
b = { { style = { ['border-right'] = DSH, width = '1em', height = '1em' } } },
t = { { style = { ['border-bottom'] = DSH, width = '1em', height = '1em' } },
{ attr = { rowspan = '2' }, style = { width = '1em', height = '2em' } } }
},
[':'] = {
t = { { attr = { rowspan = '2' }, style = { ['border-right'] = DSH, width = '1em', height = '2em' } },
{ attr = { rowspan = '2' }, style = { width = '1em', height = '2em' } } }
},
['A'] = {
b = { { attr = { colspan = '2' }, style = { width = '2em', height = '1em' } } },
t = { { style = { ['border-right'] = DSH, ['border-bottom'] = DSH, width = '1em', height = '1em' } },
{ style = { ['border-bottom'] = DSH, width = '1em', height = '1em' } } }
},
['C'] = {
b = { { style = { ['border-right'] = DSH, width = '1em', height = '1em' } } },
t = { { style = { ['border-right'] = DSH, ['border-bottom'] = DSH, width = '1em', height = '1em' } },
{ attr = { rowspan = '2' }, style = { width = '1em', height = '2em' } } }
},
['D'] = {
b = { { style = { width = '1em', height = '1em' } } },
t = { { attr = { rowspan = '2' }, style = { ['border-right'] = DSH, width = '1em', height = '2em' } },
{ style = { ['border-bottom'] = DSH, width = '1em', height = '1em' } } }
},
['E'] = {
b = { { style = { ['border-right'] = SLD, width = '1em', height = '1em' } },
{ style = { width = '1em', height = '1em' } } },
t = { { style = { ['border-right'] = DSH, width = '1em', height = '1em' } },
{ style = { ['border-bottom'] = DSH, width = '1em', height = '1em' } } }
},
['F'] = {
b = { { style = { ['border-right'] = DSH, width = '1em', height = '1em' } },
{ style = { width = '1em', height = '1em' } } },
t = { { style = { width = '1em', height = '1em' } },
{ style = { ['border-bottom'] = DSH, width = '1em', height = '1em' } } }
},
['G'] = {
b = { { style = { ['border-right'] = DOT, width = '1em', height = '1em' } } },
t = { { style = { ['border-right'] = DOT, ['border-bottom'] = DOT, width = '1em', height = '1em' } },
{ attr = { rowspan = '2' }, style = { width = '1em', height = '2em' } } }
},
['G2'] = {
b = { { style = { ['border-right'] = SLD, width = '1em', height = '1em' } },
{ style = { width = '1em', height = '1em' } } },
t = { { style = { ['border-right'] = DSH, width = '1em', height = '1em' } },
{ style = { ['border-bottom'] = DSH, width = '1em', height = '1em' } } }
},
['H'] = {
b = { { style = { width = '1em', height = '1em' } } },
t = { { attr = { rowspan = '2' }, style = { ['border-right'] = DOT, width = '1em', height = '2em' } },
{ style = { ['border-bottom'] = DOT, width = '1em', height = '1em' } } }
},
['J'] = {
b = { { style = { width = '1em', height = '1em' } } },
t = { { style = { ['border-right'] = DSH, ['border-bottom'] = DSH, width = '1em', height = '1em' } },
{ attr = { rowspan = '2' }, style = { width = '1em', height = '2em' } } }
},
['K'] = {
b = { { style = { ['border-right'] = SLD, width = '1em', height = '1em' } } },
t = { { style = { ['border-right'] = DSH, ['border-bottom'] = DSH, width = '1em', height = '1em' } },
{ attr = { rowspan = '2' }, style = { width = '1em', height = '2em' } } }
},
['L'] = {
b = { { attr = { colspan = '2' }, style = { width = '2em', height = '1em' } } },
t = { { style = { ['border-right'] = DSH, width = '1em', height = '1em' } },
{ style = { ['border-bottom'] = DSH, width = '1em', height = '1em' } } }
},
['M'] = {
b = { { style = { ['border-right'] = DOT, width = '1em', height = '1em' } },
{ style = { width = '1em', height = '1em' } } },
t = { { attr = { colspan = '2' }, style = { ['border-bottom'] = DOT, width = '2em', height = '1em' } } }
},
['P'] = {
b = { { attr = { colspan = '2' }, style = { width = '2em', height = '1em' } } },
t = { { attr = { colspan = '2' }, style = { ['border-bottom'] = DOT, width = '2em', height = '1em' } } }
},
['Q'] = {
t = { { attr = { rowspan = '2' }, style = { ['border-right'] = DOT, width = '1em', height = '2em' } },
{ attr = { rowspan = '2' }, style = { width = '1em', height = '2em' } } }
},
['R'] = {
b = { { style = { ['border-right'] = DOT, width = '1em', height = '1em' } },
{ style = { width = '1em', height = '1em' } } },
t = { { style = { ['border-right'] = DOT, ['border-bottom'] = DOT, width = '1em', height = '1em' } },
{ style = { ['border-bottom'] = DOT, width = '1em', height = '1em' } } }
},
['S'] = {
b = { { style = { ['border-right'] = DOT, width = '1em', height = '1em' } },
{ style = { width = '1em', height = '1em' } } },
t = { { style = { width = '1em', height = '1em' } },
{ style = { ['border-bottom'] = DOT, width = '1em', height = '1em' } } }
},
['T3'] = {
b = { { style = { ['border-right'] = SLD, width = '1em', height = '1em' } } },
t = { { style = { ['border-bottom'] = DOT, width = '1em', height = '1em' } },
{ attr = { rowspan = '2' }, style = { width = '1em', height = '2em' } } }
},
['T2'] = {
b = { { style ={ ['border-right'] = DSH, width = '1em', height = '1em' } },
{ style = { width = '1em', height = '1em' } } },
t = { { style = { ['border-bottom'] = DSH, width = '1em', height = '1em' } },
{ style = { ['border-bottom'] = SLD, width = '1em', height = '1em' } } }
},
['T'] = {
b = { { style = { ['border-right'] = DOT, width = '1em', height = '1em' } } },
t = { { style = { ['border-bottom'] = DOT, width = '1em', height = '1em' } },
{ attr = { rowspan = '2' }, style = { width = '1em', height = '2em' } } }
},
['U'] = {
b = { { attr = { colspan = '2' }, style = { width = '2em', height = '1em' } } },
t = { { style = { ['border-right'] = DSH, ['border-bottom'] = DSH, width = '1em', height = '1em' } },
{ style = { ['border-bottom'] = SLD, width = '1em', height = '1em' } } }
},
['V'] = {
b = { { style = { ['border-right'] = DSH, width = '1em', height = '1em' } },
{ style = { width = '1em', height = '1em' } } },
t = { { attr = { colspan = '2' }, style = { ['border-bottom'] = DSH, width = '2em', height = '1em' } } }
},
['W'] = {
b = { { attr = { colspan = '2' }, style = { width = '2em', height = '1em' } } },
t = { { style = { ['border-right'] = DOT, ['border-bottom'] = DOT, width = '1em', height = '1em' } },
{ style = { ['border-bottom'] = DOT, width = '1em', height = '1em' } } }
},
['X'] = {
b = { { style = { ['border-right'] = DSH, width = '1em', height = '1em' } },
{ style = { width = '1em', height = '1em' } } },
t = { { style = { ['border-right'] = DSH, ['border-bottom'] = DSH, width = '1em', height = '1em' } },
{ style = { ['border-bottom'] = SLD, width = '1em', height = '1em' } } }
},
['X2'] = {
b = { { style = { ['border-right'] = SLD, width = '1em', height = '1em' } },
{ style = { width = '1em', height = '1em' } } },
t = { { style = { ['border-right'] = DSH, ['border-bottom'] = DSH, width = '1em', height = '1em' } },
{ style = { ['border-bottom'] = DSH, width = '1em', height = '1em' } } }
},
['Y'] = {
b = { { attr = { colspan = '2' }, style = { width = '2em', height = '1em' } } },
t = { { style = { ['border-right'] = DOT, width = '1em', height = '1em' } },
{ style = { ['border-bottom'] = DOT, width = '1em', height = '1em' } } }
},
['Z'] = {
b = { { style = { width = '1em', height = '1em' } } },
t = { { style = { ['border-right'] = DOT, ['border-bottom'] = DOT, width = '1em', height = '1em' } },
{ attr = { rowspan = '2' }, style = { width = '1em', height = '2em' } } }
},
['^'] = {
b = { { attr = { colspan = '2' }, style = { width = '2em', height = '1em' } } },
t = { { style = { ['border-right'] = SLD, ['border-bottom'] = SLD, width = '1em', height = '1em' } },
{ style = { ['border-bottom'] = SLD, width = '1em', height = '1em' } } }
},
['$'] = {
t = { { attr = { colspan = '2', rowspan = '2'}, style = { width = '2em', height = '2em' } } }
},
['`'] = {
b = { { attr = { colspan = '2' }, style = { width = '2em', height = '1em' } } },
t = { { style = { ['border-right'] = SLD, width = '1em', height = '1em' } },
{ style = { ['border-bottom'] = SLD, width = '1em', height = '1em' } } }
},
['a2'] = {
b = { { style = { ['border-right'] = DOT, width = '1em', height = '1em' } },
{ style = { width = '1em', height = '1em' } } },
t = { { style = { ['border-right'] = DOT, ['border-bottom'] = '1px dashed #000001', width = '1em', height = '1em' } },
{ style = { ['border-bottom'] = DSH, width = '1em', height = '1em' } } }
},
['a'] = {
b = { { style = { ['border-right'] = DOT, width = '1em', height = '1em' } },
{ style = { width = '1em', height = '1em' } } },
t = { { style = { ['border-right'] = DOT, ['border-bottom'] = SLD, width = '1em', height = '1em' } },
{ style = { ['border-bottom'] = SLD, width = '1em', height = '1em' } } }
},
['b2'] = {
b = { { style = { ['border-right'] = DSH, width = '1em', height = '1em' } },
{ style = { width = '1em', height = '1em' } } },
t = { { style = { ['border-right'] = DSH, ['border-bottom'] = '1px dotted #000001', width = '1em', height = '1em' } },
{ style = { ['border-bottom'] = DOT, width = '1em', height = '1em' } } }
},
['b3'] = {
b = { { style = { ['border-right'] = SLD, width = '1em', height = '1em' } },
{ style = { width = '1em', height = '1em' } } },
t = { { style = { ['border-right'] = SLD, ['border-bottom'] = DSH, width = '1em', height = '1em' } },
{ style = { ['border-bottom'] = DOT, width = '1em', height = '1em' } } }
},
['b'] = {
b = { { style = { ['border-right'] = SLD, width = '1em', height = '1em' } },
{ style = { width = '1em', height = '1em' } } },
t = { { style = { ['border-right'] = SLD, ['border-bottom'] = DOT, width = '1em', height = '1em' } },
{ style = { ['border-bottom'] = DOT, width = '1em', height = '1em' } } }
},
['c'] = {
b = { { style = { ['border-right'] = DSH, width = '1em', height = '1em' } } },
t = { { style = { ['border-right'] = DSH, ['border-bottom'] = SLD, width = '1em', height = '1em' } },
{ attr = { rowspan = '2' }, style = { width = '1em', height = '2em' } } }
},
['d'] = {
b = { { style = { width = '1em', height = '1em' } } },
t = { { attr = { rowspan = '2' }, style = { ['border-right'] = DSH, width = '1em', height = '2em' } },
{ style = { ['border-bottom'] = SLD, width = '1em', height = '1em' } } }
},
['di'] = {
b = { { attr = { colspan = '2' }, style = { width = '2em', height = '1em' } } },
t = { { style = { ['border-right'] = DSH, width = '1em', height = '1em' } },
{ style = { ['border-bottom'] = SLD, width = '1em', height = '1em' } } }
},
['dj'] = {
b = { { style = { ['border-right'] = DSH, width = '1em', height = '1em' } },
{ style = { width = '1em', height = '1em' } } },
t = { { style = { width = '1em', height = '1em' } },
{ style = { ['border-bottom'] = SLD, width = '1em', height = '1em' } } }
},
['e'] = {
b = { { style = { ['border-right'] = SLD, width = '1em', height = '1em' } } },
t = { { style = { ['border-right'] = SLD, ['border-bottom'] = DSH, width = '1em', height = '1em' } },
{ attr = { rowspan = '2' }, style = { width = '1em', height = '2em' } } }
},
['f'] = {
b = { { style = { width = '1em', height = '1em' } } },
t = { { attr = { rowspan = '2' }, style = { ['border-right'] = SLD, width = '1em', height = '2em' } },
{ style = { ['border-bottom'] = DSH, width = '1em', height = '1em' } } }
},
['fh'] = {
b = { { attr = { colspan = '2' }, style = { width = '2em', height = '1em' } } },
t = { { style = { ['border-right'] = SLD, width = '1em', height = '1em' } },
{ style = { ['border-bottom'] =DSH, width = '1em', height = '1em' } } }
},
['fy'] = {
b = { { style = { ['border-right'] = SLD, width = '1em', height = '1em' } },
{ style = { width = '1em', height = '1em' } } },
t = { { style = { width = '1em', height = '1em' } },
{ style = { ['border-bottom'] = DSH, width = '1em', height = '1em' } } }
},
['h'] = {
b = { { attr = { colspan = '2' }, style = { width = '2em', height = '1em' } } },
t = { { style = { ['border-right'] = SLD, ['border-bottom'] = DSH, width = '1em', height = '1em' } },
{ style = { ['border-bottom'] = DSH, width = '1em', height = '1em' } } }
},
['he'] = {
b = { { style = { width = '1em', height = '1em' } } },
t = { { style = { ['border-right'] = SLD, ['border-bottom'] = DSH, width = '1em', height = '1em' } },
{ attr = { rowspan = '2' }, style = { width = '1em', height = '2em' } } }
},
['i'] = {
b = { { attr = { colspan = '2' }, style = { width = '2em', height = '1em' } } },
t = { { style = { ['border-right'] = DSH, ['border-bottom'] = SLD, width = '1em', height = '1em' } },
{ style = { ['border-bottom'] = SLD, width = '1em', height = '1em' } } }
},
['ic'] = {
b = { { style = { width = '1em', height = '1em' } } },
t = { { style = { ['border-right'] = DSH, ['border-bottom'] = SLD, width = '1em', height = '1em' } },
{ attr = { rowspan = '2' }, style = { width = '1em', height = '2em' } } }
},
['j'] = {
b = { { style = { ['border-right'] = DSH, width = '1em', height = '1em' } },
{ style = { width = '1em', height = '1em' } } },
t = { { attr = { colspan = '2' }, style = { ['border-bottom'] = SLD, width = '2em', height = '1em' } } }
},
['jc'] = {
b = { { style = { ['border-right'] = DSH, width = '1em', height = '1em' } } },
t = { { style = { ['border-bottom'] = SLD, width = '1em', height = '1em' } },
{ attr = { rowspan = '2' }, style = { width = '1em', height = '2em' } } }
},
['k2'] = {
b = { { style = { width = '1em', height = '1em' } } },
t = { { attr = { rowspan = '2' }, style = { ['border-right'] = DOT, width = '1em', height = '2em' } },
{ style = { ['border-bottom'] = DSH, width = '1em', height = '1em' } } }
},
['k3'] = {
b = { { style = { ['border-right'] = DSH, width = '1em', height = '1em' } },
{ style = { width = '1em', height = '1em' } } },
t = { { style = { ['border-right'] = SLD, width = '1em', height = '1em' } },
{ style = { ['border-bottom'] = DSH, width = '1em', height = '1em' } } }
},
['k'] = {
b = { { style = { width = '1em', height = '1em' } } },
t = { { attr = { rowspan = '2' }, style = { ['border-right'] = DOT, width = '1em', height = '2em' } },
{ style = { ['border-bottom'] = SLD, width = '1em', height = '1em' } } }
},
['kq'] = {
b = { { attr = { colspan = '2' }, style = { width = '2em', height = '1em' } } },
t = { { style = { ['border-right'] = DOT, width = '1em', height = '1em' } },
{ style = { ['border-bottom'] = SLD, width = '1em', height = '1em' } } }
},
['kr'] = {
b = { { style = { ['border-right'] = DOT, width = '1em', height = '1em' } },
{ style = { width = '1em', height = '1em' } } },
t = { { style = { width = '1em', height = '1em' } },
{ style = { ['border-bottom'] = SLD, width = '1em', height = '1em' } } }
},
['kq2'] = {
b = { { attr = { colspan = '2' }, style = { width = '2em', height = '1em' } } },
t = { { style = { ['border-right'] = DOT, width = '1em', height = '1em' } },
{ style = { ['border-bottom'] = DSH, width = '1em', height = '1em' } } }
},
['kr2'] = {
b = { { style = { ['border-right'] = DOT, width = '1em', height = '1em' } },
{ style = { width = '1em', height = '1em' } } },
t = { { style = { width = '1em', height = '1em' } },
{ style = { ['border-bottom'] = DSH, width = '1em', height = '1em' } } }
},
['l2'] = {
b = { { style = { ['border-right'] = DOT, width = '1em', height = '1em' } } },
t = { { style = { ['border-right'] = DOT, ['border-bottom'] = '1px dashed #000001', width = '1em', height = '1em' } },
{ attr = { rowspan = '2' }, style = { width = '1em', height = '2em' } } }
},
['l3'] = {
b = { { style = { ['border-right'] = DSH, width = '1em', height = '1em' } } },
t = { { style = { ['border-right'] = SLD, ['border-bottom'] = SLD, width = '1em', height = '1em' } },
{ attr = { rowspan = '2' }, style = { width = '1em', height = '2em' } } }
},
['l4'] = {
b = { { style = { ['border-right'] = DSH, width = '1em', height = '1em' } } },
t = { { style = { ['border-right'] = SLD, ['border-bottom'] = DSH, width = '1em', height = '1em' } },
{ attr = { rowspan = '2' }, style = { width = '1em', height = '2em' } } }
},
['l'] = {
b = { { style = { ['border-right'] = DOT, width = '1em', height = '1em' } } },
t = { { style = { ['border-right'] = DOT, ['border-bottom'] = SLD, width = '1em', height = '1em' } },
{ attr = { rowspan = '2' }, style = { width = '1em', height = '2em' } } }
},
['m2'] = {
b = { { style = { ['border-right'] = DSH, width = '1em', height = '1em' } },
{ style = { width = '1em', height = '1em' } } },
t = { { attr = { colspan = '2' }, style = { ['border-bottom'] = DOT, width = '2em', height = '1em' } } }
},
['m'] = {
b = { { style = { ['border-right'] = SLD, width = '1em', height = '1em' } },
{ style = { width = '1em', height = '1em' } } },
t = { { attr = { colspan = '2' }, style = { ['border-bottom'] = DOT, width = '2em', height = '1em' } } }
},
['mp'] = {
b = { { style = { ['border-right'] = SLD, width = '1em', height = '1em' } } },
t = { { style = { ['border-bottom'] = DOT, width = '1em', height = '1em' } },
{ attr = { rowspan = '2' }, style = { width = '1em', height = '2em' } } }
},
['mp2'] = {
b = { { style = { ['border-right'] = DSH, width = '1em', height = '1em' } } },
t = { { style = { ['border-bottom'] = DOT, width = '1em', height = '1em' } },
{ attr = { rowspan = '2' }, style = { width = '1em', height = '2em' } } }
},
['n2'] = {
b = { { attr = { colspan = '2' }, style = { width = '2em', height = '1em' } } },
t = { { style = { ['border-right'] = DSH, ['border-bottom'] = '1px dotted #000001', width = '1em', height = '1em' } },
{ style = { ['border-bottom'] = DOT, width = '1em', height = '1em' } } }
},
['n'] = {
b = { { attr = { colspan = '2' }, style = { width = '2em', height = '1em' } } },
t = { { style = { ['border-right'] = SLD, ['border-bottom'] = DOT, width = '1em', height = '1em' } },
{ style = { ['border-bottom'] = DOT, width = '1em', height = '1em' } } }
},
['np'] = {
b = { { style = { width = '1em', height = '1em' } } },
t = { { style = { ['border-right'] = SLD, ['border-bottom'] = DOT, width = '1em', height = '1em' } },
{ attr = { rowspan = '2' }, style = { width = '1em', height = '2em' } } }
},
['np2'] = {
b = { { style = { width = '1em', height = '1em' } } },
t = { { style = { ['border-right'] = DSH, ['border-bottom'] = DOT, width = '1em', height = '1em' } },
{ attr = { rowspan = '2' }, style = { width = '1em', height = '2em' } } }
},
['o2'] = {
b = { { style = { width = '1em', height = '1em' } } },
t = { { attr = { rowspan = '2' }, style = { ['border-right'] = DSH, width = '1em', height = '2em' } },
{ style = { ['border-bottom'] = DOT, width = '1em', height = '1em' } } }
},
['o'] = {
b = { { style = { width = '1em', height = '1em' } } },
t = { { attr = { rowspan = '2' }, style = { ['border-right'] = SLD, width = '1em', height = '2em' } },
{ style = { ['border-bottom'] = DOT, width = '1em', height = '1em' } } }
},
['om'] = {
b = { { style = { ['border-right'] = SLD, width = '1em', height = '1em' } },
{ style = { width = '1em', height = '1em' } } },
t = { { style = { width = '1em', height = '1em' } },
{ style = { ['border-bottom'] = DOT, width = '1em', height = '1em' } } }
},
['om2'] = {
b = { { style = { ['border-right'] = DSH, width = '1em', height = '1em' } },
{ style = { width = '1em', height = '1em' } } },
t = { { style = { width = '1em', height = '1em' } },
{ style = { ['border-bottom'] = DOT, width = '1em', height = '1em' } } }
},
['on'] = {
b = { { attr = { colspan = '2' }, style = { width = '2em', height = '1em' } } },
t = { { style = { ['border-right'] = SLD, width = '1em', height = '1em' } },
{ style = { ['border-bottom'] = DOT, width = '1em', height = '1em' } } }
},
['on2'] = {
b = { { attr = { colspan = '2' }, style = { width = '2em', height = '1em' } } },
t = { { style = { ['border-right'] = DSH, width = '1em', height = '1em' } },
{ style = { ['border-bottom'] = DOT, width = '1em', height = '1em' } } }
},
['p2'] = {
b = { { style = { ['border-right'] = DSH, width = '1em', height = '1em' } } },
t = { { style = { ['border-right'] = DSH, ['border-bottom'] = '1px dotted #000001', width = '1em', height = '1em' } },
{ attr = { rowspan = '2' }, style = { width = '1em', height = '2em' } } }
},
['p'] = {
b = { { style = { ['border-right'] = SLD, width = '1em', height = '1em' } } },
t = { { style = { ['border-right'] = SLD, ['border-bottom'] = DOT, width = '1em', height = '1em' } },
{ attr = { rowspan = '2' }, style = { width = '1em', height = '2em' } } }
},
['q2'] = {
b = { { attr = { colspan = '2' }, style = { width = '2em', height = '1em' } } },
t = { { style = { ['border-right'] = DOT, ['border-bottom'] = '1px dashed #000001', width = '1em', height = '1em' } },
{ style = { ['border-bottom'] = DSH, width = '1em', height = '1em' } } }
},
['q'] = {
b = { { attr = { colspan = '2' }, style = { width = '2em', height = '1em' } } },
t = { { style = { ['border-right'] = DOT, ['border-bottom'] = SLD, width = '1em', height = '1em' } },
{ style = { ['border-bottom'] = SLD, width = '1em', height = '1em' } } }
},
['ql'] = {
b = { { style = { width = '1em', height = '1em' } } },
t = { { style = { ['border-right'] = DOT, ['border-bottom'] = SLD, width = '1em', height = '1em' } },
{ attr = { rowspan = '2' }, style = { width = '1em', height = '2em' } } }
},
['ql2'] = {
b = { { style = { width = '1em', height = '1em' } } },
t = { { style = { ['border-right'] = DOT, ['border-bottom'] =DSH, width = '1em', height = '1em' } },
{ attr = { rowspan = '2' }, style = { width = '1em', height = '2em' } } }
},
['r2'] = {
b = { { style = { ['border-right'] = DOT, width = '1em', height = '1em' } },
{ style = { width = '1em', height = '1em' } } },
t = { { attr = { colspan = '2' }, style = { ['border-bottom'] = DSH, width = '2em', height = '1em' } } }
},
['r'] = {
b = { { style = { ['border-right'] = DOT, width = '1em', height = '1em' } },
{ style = { width = '1em', height = '1em' } } },
t = { { attr = { colspan = '2' }, style = { ['border-bottom'] = SLD, width = '2em', height = '1em' } } }
},
['rl'] = {
b = { { style = { ['border-right'] = DOT, width = '1em', height = '1em' } } },
t = { { style = { ['border-bottom'] = SLD, width = '1em', height = '1em' } },
{ attr = { rowspan = '2' }, style = { width = '1em', height = '2em' } } }
},
['rl2'] = {
b = { { style = { ['border-right'] = DOT, width = '1em', height = '1em' } } },
t = { { style = { ['border-bottom'] = DSH, width = '1em', height = '1em' } },
{ attr = { rowspan = '2' }, style = { width = '1em', height = '2em' } } }
},
['t'] = {
b = { { style = { ['border-right'] = SLD, width = '1em', height = '1em' } },
{ style = { width = '1em', height = '1em' } } },
t = { { style = { ['border-right'] = SLD, ['border-bottom'] = DSH, width = '1em', height = '1em' } },
{ style = { ['border-bottom'] = DSH, width = '1em', height = '1em' } } }
},
['v'] = {
b = { { style = { ['border-right'] = SLD, width = '1em', height = '1em' } },
{ style = { width = '1em', height = '1em' } } },
t = { { attr = { colspan = '2' }, style = { ['border-bottom'] = SLD, width = '2em', height = '1em' } } }
},
['x'] = {},
['y'] = {
b = { { style = { ['border-right'] = SLD, width = '1em', height = '1em' } },
{ style = { width = '1em', height = '1em' } } },
t = { { attr = { colspan = '2' }, style = { ['border-bottom'] = DSH, width = '2em', height = '1em' } } }
},
['ye'] = {
b = { { style = { ['border-right'] = SLD, width = '1em', height = '1em' } } },
t = { { style = { ['border-bottom'] = DSH, width = '1em', height = '1em' } },
{ attr = { rowspan = '2' }, style = { width = '1em', height = '2em' } } }
},
['~'] = {
b = { { attr = { colspan = '2' }, style = { width = '2em', height = '1em' } } },
t = { { attr = { colspan = '2' }, style = { ['border-bottom'] = DSH, width = '2em', height = '1em' } } }
}
}
local retval = {}
for k,v in pairs(data) do
retval[k] = {}
for k2,v2 in pairs(v) do
local renderedCells = mw.html.create()
for k3,v3 in ipairs(v2) do
renderedCells:tag('td'):css(v3.style or {}):attr(v3.attr or {})
end
retval[k][k2] = tostring(renderedCells)
end
end
return retval
g6bakgq1oihq77zx8jbsli7b8wpd6mc
Vortioxetine
0
30784
114531
2026-10-10T22:26:29Z
DaSupremo
9
Created by translating the page [[:mdwiki:Special:Redirect/revision/1462077|Vortioxetine]] to:gpe #mdwikicx
114531
wikitext
text/x-wiki
[[Category:Translated from MDWiki]]
r0gf7axtnvt68k0p85plnlehx64o08u
114532
114531
2026-10-10T22:45:49Z
DaSupremo
9
Improve article
114532
wikitext
text/x-wiki
{{Databox}}
'''Vortioxetine''', dem sell under de brand names '''Trintellix''' (insyd de US) den '''Brintellix''' (insyd Europe) among odas, be an [[Antidepressant|antidepressant medication]] of de [[serotonin modulator den stimulator]] (SMS) class used in the treatment of [[major depressive disorder]].<ref name=AHFS2019/><ref name=webmmd>{{cite web|url=https://www.webmd.com/drugs/2/drug-165165/vortioxetine-oral/details|title=Vortioxetine Tablet - Uses, Side Effects, and More|website=WebMD|access-date=13 April 2024}}</ref> Ein effectiveness be viewed as similar to dat of oda [[antidepressants]].<ref name=AHFS2019/> Dem dey take am [[Oral administration|orally]].<ref name=AHFS2019>{{cite web |title=Vortioxetine Hydrobromide Monograph for Professionals |url=https://www.drugs.com/monograph/vortioxetine-hydrobromide.html |website=Drugs.com |publisher=American Society of Health-System Pharmacists |access-date=18 March 2019 }}</ref>
== References ==
[[Category:Translated from MDWiki]]
<references />
== External links ==
qlfpoijxuvyw9ncq08linl159dgqaf2
114533
114532
2026-10-10T22:57:35Z
DaSupremo
9
Improve article
114533
wikitext
text/x-wiki
{{Databox}}
'''Vortioxetine''', dem sell under de brand names '''Trintellix''' (insyd de US) den '''Brintellix''' (insyd Europe) among odas, be an [[Antidepressant|antidepressant medication]] of de [[serotonin modulator den stimulator]] (SMS) class used in the treatment of [[major depressive disorder]].<ref name=AHFS2019/><ref name=webmmd>{{cite web|url=https://www.webmd.com/drugs/2/drug-165165/vortioxetine-oral/details|title=Vortioxetine Tablet - Uses, Side Effects, and More|website=WebMD|access-date=13 April 2024}}</ref> Ein effectiveness be viewed as similar to dat of oda [[antidepressants]].<ref name=AHFS2019/> Dem dey take am [[Oral administration|orally]].<ref name=AHFS2019>{{cite web |title=Vortioxetine Hydrobromide Monograph for Professionals |url=https://www.drugs.com/monograph/vortioxetine-hydrobromide.html |website=Drugs.com |publisher=American Society of Health-System Pharmacists |access-date=18 March 2019 }}</ref>
Common [[side effect]]s dey include [[nausea]], [[dry mouth]], [[diarrhea]], [[constipation]], [[vomiting]] (3-6% of people), den [[sexual dysfunction]].<ref name=AHFS2019/> Serious side effects fi include [[suicide]] insyd those under de age of 25, [[serotonin syndrome]], [[bleeding]], [[mania]], den [[SIADH]].<ref name=AHFS2019/> A [[antidepressant discontinuation syndrome|withdrawal syndrome]] fi occur if de medication be abruptly stopped anaa dem decrease de dose.<ref name=AHFS2019/> Ein use during [[pregnancy]] den [[breastfeeding]] generally no be recommended.<ref name=BNF76>{{cite book|title=British national formulary: BNF 76|date=2018|publisher=Pharmaceutical Press|isbn=978-0-85711-338-2|pages=376|edition=76}}</ref> Vortioxetine ein [[mechanism of action]] no be entirely understood, buh dem believe e be related to increasing [[serotonin]] levels den possibly interacting plus certain serotonin [[receptor (biochemistry)|receptors]].<ref name=AHFS2019/>
== References ==
<references />
== External links ==
[[Category:Translated from MDWiki]]
ro9vn1wqdhhfa7up08rnb098pdyz46z
114534
114533
2026-10-10T22:59:53Z
DaSupremo
9
Add references
114534
wikitext
text/x-wiki
{{Databox}}
'''Vortioxetine''', dem sell under de brand names '''Trintellix''' (insyd de US) den '''Brintellix''' (insyd Europe) among odas, be an [[Antidepressant|antidepressant medication]] of de [[serotonin modulator den stimulator]] (SMS) class used in the treatment of [[major depressive disorder]].<ref name=AHFS2019/><ref name=webmmd>{{cite web|url=https://www.webmd.com/drugs/2/drug-165165/vortioxetine-oral/details|title=Vortioxetine Tablet - Uses, Side Effects, and More|website=WebMD|access-date=13 April 2024}}</ref> Ein effectiveness be viewed as similar to dat of oda [[antidepressants]].<ref name=AHFS2019/> Dem dey take am [[Oral administration|orally]].<ref name=AHFS2019>{{cite web |title=Vortioxetine Hydrobromide Monograph for Professionals |url=https://www.drugs.com/monograph/vortioxetine-hydrobromide.html |website=Drugs.com |publisher=American Society of Health-System Pharmacists |access-date=18 March 2019 }}</ref>
Common [[side effect]]s dey include [[nausea]], [[dry mouth]], [[diarrhea]], [[constipation]], [[vomiting]] (3-6% of people), den [[sexual dysfunction]].<ref name=AHFS2019/><ref name="Trintellix FDA label">{{cite web |date=26 July 2019 |title=Trintellix- vortioxetine tablet, film coated |url=https://dailymed.nlm.nih.gov/dailymed/drugInfo.cfm?setid=1a5b68e2-14d0-419d-9ec6-1ca97145e838 |access-date=16 November 2020 |website=DailyMed}}</ref> Serious side effects fi include [[suicide]] insyd those under de age of 25, [[serotonin syndrome]], [[bleeding]], [[mania]], den [[SIADH]].<ref name=AHFS2019/> A [[antidepressant discontinuation syndrome|withdrawal syndrome]] fi occur if de medication be abruptly stopped anaa dem decrease de dose.<ref name=AHFS2019/> Ein use during [[pregnancy]] den [[breastfeeding]] generally no be recommended.<ref name=BNF76>{{cite book|title=British national formulary: BNF 76|date=2018|publisher=Pharmaceutical Press|isbn=978-0-85711-338-2|pages=376|edition=76}}</ref> Vortioxetine ein [[mechanism of action]] no be entirely understood, buh dem believe e be related to increasing [[serotonin]] levels den possibly interacting plus certain serotonin [[receptor (biochemistry)|receptors]].<ref name=AHFS2019/><ref name="pmid25907797">{{cite journal |vauthors=Keks NA, Hope J, Culhane C |date=June 2015 |title=Vortioxetine: A multimodal antidepressant or another selective serotonin reuptake inhibitor? |url= |journal=Australas Psychiatry |volume=23 |issue=3 |pages=210–3 |doi=10.1177/1039856215581297 |pmid=25907797 |s2cid=21642202}}</ref><ref name="pmid25562777">{{cite journal |vauthors=Zhang J, Mathis MV, Sellers JW, Kordzakhia G, Jackson AJ, Dow A, Yang P, Fossom L, Zhu H, Patel H, Unger EF, Temple RJ |date=January 2015 |title=The US Food and Drug Administration's perspective on the new antidepressant vortioxetine |url= |journal=J Clin Psychiatry |volume=76 |issue=1 |pages=8–14 |doi=10.4088/JCP.14r09164 |pmid=25562777}}</ref>
== References ==
<references />
== External links ==
[[Category:Translated from MDWiki]]
e6rakbb6vkfodnxpj9m0si4ekn7e269
114535
114534
2026-10-10T23:13:01Z
DaSupremo
9
Improve article
114535
wikitext
text/x-wiki
{{Databox}}
'''Vortioxetine''', dem sell under de brand names '''Trintellix''' (insyd de US) den '''Brintellix''' (insyd Europe) among odas, be an [[Antidepressant|antidepressant medication]] of de [[serotonin modulator den stimulator]] (SMS) class used in the treatment of [[major depressive disorder]].<ref name=AHFS2019/><ref name=webmmd>{{cite web|url=https://www.webmd.com/drugs/2/drug-165165/vortioxetine-oral/details|title=Vortioxetine Tablet - Uses, Side Effects, and More|website=WebMD|access-date=13 April 2024}}</ref> Ein effectiveness be viewed as similar to dat of oda [[antidepressants]].<ref name=AHFS2019/> Dem dey take am [[Oral administration|orally]].<ref name=AHFS2019>{{cite web |title=Vortioxetine Hydrobromide Monograph for Professionals |url=https://www.drugs.com/monograph/vortioxetine-hydrobromide.html |website=Drugs.com |publisher=American Society of Health-System Pharmacists |access-date=18 March 2019 }}</ref>
Common [[side effect]]s dey include [[nausea]], [[dry mouth]], [[diarrhea]], [[constipation]], [[vomiting]] (3-6% of people), den [[sexual dysfunction]].<ref name=AHFS2019/><ref name="Trintellix FDA label">{{cite web |date=26 July 2019 |title=Trintellix- vortioxetine tablet, film coated |url=https://dailymed.nlm.nih.gov/dailymed/drugInfo.cfm?setid=1a5b68e2-14d0-419d-9ec6-1ca97145e838 |access-date=16 November 2020 |website=DailyMed}}</ref> Serious side effects fi include [[suicide]] insyd those under de age of 25, [[serotonin syndrome]], [[bleeding]], [[mania]], den [[SIADH]].<ref name=AHFS2019/> A [[antidepressant discontinuation syndrome|withdrawal syndrome]] fi occur if de medication be abruptly stopped anaa dem decrease de dose.<ref name=AHFS2019/> Ein use during [[pregnancy]] den [[breastfeeding]] generally no be recommended.<ref name=BNF76>{{cite book|title=British national formulary: BNF 76|date=2018|publisher=Pharmaceutical Press|isbn=978-0-85711-338-2|pages=376|edition=76}}</ref> Vortioxetine ein [[mechanism of action]] no be entirely understood, buh dem believe e be related to increasing [[serotonin]] levels den possibly interacting plus certain serotonin [[receptor (biochemistry)|receptors]].<ref name=AHFS2019/><ref name="pmid25907797">{{cite journal |vauthors=Keks NA, Hope J, Culhane C |date=June 2015 |title=Vortioxetine: A multimodal antidepressant or another selective serotonin reuptake inhibitor? |url= |journal=Australas Psychiatry |volume=23 |issue=3 |pages=210–3 |doi=10.1177/1039856215581297 |pmid=25907797 |s2cid=21642202}}</ref><ref name="pmid25562777">{{cite journal |vauthors=Zhang J, Mathis MV, Sellers JW, Kordzakhia G, Jackson AJ, Dow A, Yang P, Fossom L, Zhu H, Patel H, Unger EF, Temple RJ |date=January 2015 |title=The US Food and Drug Administration's perspective on the new antidepressant vortioxetine |url= |journal=J Clin Psychiatry |volume=76 |issue=1 |pages=8–14 |doi=10.4088/JCP.14r09164 |pmid=25562777}}</ref>
Na e be approved for medical use insyd de United States<ref name="Brintellix FDA approval">{{cite web | title=Drug Approval Package: Brintellix (vortioxetine) Tablets NDA #204447 | website=U.S. [[Food and Drug Administration]] (FDA) | date=30 October 2013 | url=https://www.accessdata.fda.gov/drugsatfda_docs/nda/2013/204447Orig1s000TOC.cfm | archive-url=https://web.archive.org/web/20160708132519/http://www.accessdata.fda.gov/drugsatfda_docs/nda/2013/204447Orig1s000TOC.cfm | archive-date=8 July 2016 | access-date=10 December 2024}}</ref><ref name=AHFS2019/><ref>{{cite journal | vauthors = Gibb A, Deeks ED | title = Vortioxetine: first global approval | journal = Drugs | volume = 74 | issue = 1 | pages = 135–145 | date = January 2014 | pmid = 24311349 | doi = 10.1007/s40265-013-0161-9 | s2cid = 5987668 }}</ref> den insyd de European Union insyd 2013.<ref>{{Cite web |date=2018-07-18 |title=Brintellix {{!}} European Medicines Agency (EMA) |url=https://www.ema.europa.eu/en/medicines/human/EPAR/brintellix |access-date=2026-10-10 |website=www.ema.europa.eu |language=en}}</ref> Insyd 2020, na e be de 243rd most commonly prescribed medication insyd de United States, plus more dan 1{{nbsp}}million prescriptions.<ref>{{cite web | title = The Top 300 of 2020 | url = https://clincalc.com/DrugStats/Top300Drugs.aspx | website = ClinCalc | access-date = 7 October 2022}}</ref><ref>{{cite web | title = Vortioxetine - Drug Usage Statistics | website = ClinCalc | url = https://clincalc.com/DrugStats/Drugs/Vortioxetine | access-date = 7 October 2022}}</ref>
== References ==
<references />
== External links ==
[[Category:Translated from MDWiki]]
2puy7qhug6l4q447dkciuhmw7om2qc3
114536
114535
2026-10-10T23:23:10Z
DaSupremo
9
Improve article
114536
wikitext
text/x-wiki
{{Databox}}
'''Vortioxetine''', dem sell under de brand names '''Trintellix''' (insyd de US) den '''Brintellix''' (insyd Europe) among odas, be an [[Antidepressant|antidepressant medication]] of de [[serotonin modulator den stimulator]] (SMS) class used in the treatment of [[major depressive disorder]].<ref name=AHFS2019/><ref name=webmmd>{{cite web|url=https://www.webmd.com/drugs/2/drug-165165/vortioxetine-oral/details|title=Vortioxetine Tablet - Uses, Side Effects, and More|website=WebMD|access-date=13 April 2024}}</ref> Ein effectiveness be viewed as similar to dat of oda [[antidepressants]].<ref name=AHFS2019/> Dem dey take am [[Oral administration|orally]].<ref name=AHFS2019>{{cite web |title=Vortioxetine Hydrobromide Monograph for Professionals |url=https://www.drugs.com/monograph/vortioxetine-hydrobromide.html |website=Drugs.com |publisher=American Society of Health-System Pharmacists |access-date=18 March 2019 }}</ref>
Common [[side effect]]s dey include [[nausea]], [[dry mouth]], [[diarrhea]], [[constipation]], [[vomiting]] (3-6% of people), den [[sexual dysfunction]].<ref name=AHFS2019/><ref name="Trintellix FDA label">{{cite web |date=26 July 2019 |title=Trintellix- vortioxetine tablet, film coated |url=https://dailymed.nlm.nih.gov/dailymed/drugInfo.cfm?setid=1a5b68e2-14d0-419d-9ec6-1ca97145e838 |access-date=16 November 2020 |website=DailyMed}}</ref> Serious side effects fi include [[suicide]] insyd those under de age of 25, [[serotonin syndrome]], [[bleeding]], [[mania]], den [[SIADH]].<ref name=AHFS2019/> A [[antidepressant discontinuation syndrome|withdrawal syndrome]] fi occur if de medication be abruptly stopped anaa dem decrease de dose.<ref name=AHFS2019/> Ein use during [[pregnancy]] den [[breastfeeding]] generally no be recommended.<ref name=BNF76>{{cite book|title=British national formulary: BNF 76|date=2018|publisher=Pharmaceutical Press|isbn=978-0-85711-338-2|pages=376|edition=76}}</ref> Vortioxetine ein [[mechanism of action]] no be entirely understood, buh dem believe e be related to increasing [[serotonin]] levels den possibly interacting plus certain serotonin [[receptor (biochemistry)|receptors]].<ref name=AHFS2019/><ref name="pmid25907797">{{cite journal |vauthors=Keks NA, Hope J, Culhane C |date=June 2015 |title=Vortioxetine: A multimodal antidepressant or another selective serotonin reuptake inhibitor? |url= |journal=Australas Psychiatry |volume=23 |issue=3 |pages=210–3 |doi=10.1177/1039856215581297 |pmid=25907797 |s2cid=21642202}}</ref><ref name="pmid25562777">{{cite journal |vauthors=Zhang J, Mathis MV, Sellers JW, Kordzakhia G, Jackson AJ, Dow A, Yang P, Fossom L, Zhu H, Patel H, Unger EF, Temple RJ |date=January 2015 |title=The US Food and Drug Administration's perspective on the new antidepressant vortioxetine |url= |journal=J Clin Psychiatry |volume=76 |issue=1 |pages=8–14 |doi=10.4088/JCP.14r09164 |pmid=25562777}}</ref>
Na e be approved for medical use insyd de United States<ref name="Brintellix FDA approval">{{cite web | title=Drug Approval Package: Brintellix (vortioxetine) Tablets NDA #204447 | website=U.S. [[Food and Drug Administration]] (FDA) | date=30 October 2013 | url=https://www.accessdata.fda.gov/drugsatfda_docs/nda/2013/204447Orig1s000TOC.cfm | archive-url=https://web.archive.org/web/20160708132519/http://www.accessdata.fda.gov/drugsatfda_docs/nda/2013/204447Orig1s000TOC.cfm | archive-date=8 July 2016 | access-date=10 December 2024}}</ref><ref name=AHFS2019/><ref>{{cite journal | vauthors = Gibb A, Deeks ED | title = Vortioxetine: first global approval | journal = Drugs | volume = 74 | issue = 1 | pages = 135–145 | date = January 2014 | pmid = 24311349 | doi = 10.1007/s40265-013-0161-9 | s2cid = 5987668 }}</ref> den insyd de European Union insyd 2013.<ref>{{Cite web |date=2018-07-18 |title=Brintellix {{!}} European Medicines Agency (EMA) |url=https://www.ema.europa.eu/en/medicines/human/EPAR/brintellix |access-date=2026-10-10 |website=www.ema.europa.eu |language=en}}</ref> Insyd 2020, na e be de 243rd most commonly prescribed medication insyd de United States, plus more dan 1{{nbsp}}million prescriptions.<ref>{{cite web | title = The Top 300 of 2020 | url = https://clincalc.com/DrugStats/Top300Drugs.aspx | website = ClinCalc | access-date = 7 October 2022}}</ref><ref>{{cite web | title = Vortioxetine - Drug Usage Statistics | website = ClinCalc | url = https://clincalc.com/DrugStats/Drugs/Vortioxetine | access-date = 7 October 2022}}</ref>
== References ==
<references />
== External links ==
{{Commons}}
{{Authority control}}
[[Category:5-HT1A agonists]]
[[Category:5-HT1B agonists]]
[[Category:5-HT1D antagonists]]
[[Category:5-HT3 antagonists]]
[[Category:5-HT7 antagonists]]
[[Category:Antidepressants]]
[[Category:Anxiolytics]]
[[Category:Drugs wey Takeda Pharmaceutical Company develop]]
[[Category:1-Phenylpiperazines]]
[[Category:Serotonin reuptake inhibitors]]
[[Category:Thioethers]]
[[Category:Xylyl compounds]]
[[Category:Translated from MDWiki]]
t7mx06rjw85pt7xsaneak4xscrsspee
Category:Xylyl compounds
14
30785
114537
2026-10-10T23:24:40Z
DaSupremo
9
Fresh category
114537
wikitext
text/x-wiki
phoiac9h4m842xq45sp7s6u21eteeq1
Category:5-HT1B agonists
14
30786
114538
2026-10-10T23:25:50Z
DaSupremo
9
Fresh category
114538
wikitext
text/x-wiki
phoiac9h4m842xq45sp7s6u21eteeq1
Category:5-HT1D antagonists
14
30787
114539
2026-10-10T23:26:42Z
DaSupremo
9
Fresh category
114539
wikitext
text/x-wiki
phoiac9h4m842xq45sp7s6u21eteeq1
Avascular necrosis
0
30788
114541
2026-10-11T11:18:00Z
DaSupremo
9
Created by translating the page [[:mdwiki:Special:Redirect/revision/1500557|Avascular_necrosis]] to:gpe #mdwikicx
114541
wikitext
text/x-wiki
[[Category:Translated from MDWiki]]
r0gf7axtnvt68k0p85plnlehx64o08u
114542
114541
2026-10-11T11:29:59Z
DaSupremo
9
Improve article
114542
wikitext
text/x-wiki
{{Databox}}
'''Avascular necrosis''' ('''AVN'''), dem sanso call '''osteonecrosis''' anaa '''bone infarction''', be [[necrosis|death]] of bone tissue secof interruption of de [[blood supply]].<ref name="NIH2015">{{cite web|title=Questions and Answers about Osteonecrosis (Avascular Necrosis)|url=https://www.niams.nih.gov/health-topics/osteonecrosis|website=NIAMS|language=en|date=October 2015|url-status=live|archive-url=https://web.archive.org/web/20170809040514/https://www.niams.nih.gov/health_info/Osteonecrosis/default.asp|archive-date=9 August 2017}}</ref> Early on, der fi be no symptoms.<ref name=NIH2015/> Gradually [[joint pain]] fi develop, wich fi limit de person ein ability to move.<ref name=NIH2015/> Complications fi include collapse of de bone anaa nearby [[joint]] surface.<ref name=NIH2015/>
== References ==
[[Category:Translated from MDWiki]]
<references />
== External links ==
dn6nfp00tx1fd7oam3rc342u185kr0r
114543
114542
2026-10-11T11:36:11Z
DaSupremo
9
Improve article
114543
wikitext
text/x-wiki
{{Databox}}
'''Avascular necrosis''' ('''AVN'''), dem sanso call '''osteonecrosis''' anaa '''bone infarction''', be [[necrosis|death]] of bone tissue secof interruption of de [[blood supply]].<ref name="NIH2015">{{cite web|title=Questions and Answers about Osteonecrosis (Avascular Necrosis)|url=https://www.niams.nih.gov/health-topics/osteonecrosis|website=NIAMS|language=en|date=October 2015|url-status=live|archive-url=https://web.archive.org/web/20170809040514/https://www.niams.nih.gov/health_info/Osteonecrosis/default.asp|archive-date=9 August 2017}}</ref> Early on, der fi be no symptoms.<ref name=NIH2015/> Gradually [[joint pain]] fi develop, wich fi limit de person ein ability to move.<ref name=NIH2015/> Complications fi include collapse of de bone anaa nearby [[joint]] surface.<ref name=NIH2015/>
Risk factors dey include [[bone fracture]]s, [[joint dislocation]]s, [[alcoholism]], den de [[Steroid-induced osteoporosis|use of high-dose steroids]].<ref name=NIH2015/> De condition sanso fi occur widout any clear reason.<ref name=NIH2015/> De most commonly affected bone be de [[femur]] (thigh bone).<ref name=NIH2015/> Oda relatively common sites dey include de upper arm bone, knee, shoulder, den ankle.<ref name=NIH2015/> Diagnosis typically be by [[medical imaging]] such as [[radiograph|X-ray]], [[CT scan]], anaa [[magnetic resonance imaging|MRI]].<ref name=NIH2015/> Rarely [[tissue biopsy|biopsy]] fi be used.<ref name=NIH2015/>
== References ==
<references />
== External links ==
[[Category:Translated from MDWiki]]
7dqaohuueilq5pqy5f6xdwulznfku41