Wikipedia madwiki https://mad.wikipedia.org/wiki/Tan%C3%A8yan MediaWiki 1.47.0-wmf.10 first-letter Mèḍia Spesial Pakanḍhâ'ân Pangangghuy Pakanḍhâ'ânna pangangghuy Wikipèḍia Pakanḍhâ'ânna Wikipèḍia Bhengkek Pakanḍhâ'ânna bhengkek MèḍiaWiki Pakanḍhâ'ânna MèḍiaWiki Cèṭa'an Pakanḍhâ'ânna cèṭa'an Bhântowan Pakanḍhâ'ânna bhântowan Bhângsa Pakanḍhâ'ânna bhângsa TimedText TimedText talk Modul Pembicaraan Modul Acara Pembicaraan Acara Modul:Params 828 3367 64874 64688 2026-07-09T20:15:58Z Grufo 5223 [[:mw:Module:Params|Upstream]] updates 64874 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 -- 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_key_list_sorted (tbl, sort_fn) local nums, words, nn, nw = {}, {}, 0, 0 for key, val in pairs(tbl) do if type(key) == 'number' then nn = nn + 1 nums[nn] = key else nw = nw + 1 words[nw] = key end end table.sort(nums) table.sort(words, sort_fn) return nums, words, nn, nw end -- Parse a parameter name string and return it as a string or a number local function get_parameter_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_parameter_name(dkey) if skey ~= realkey then dest[realkey] = val src[skey] = 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 } -- Functions and modifiers MUST avoid these names too: `let`, `here`, -- `in_substack`, `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.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 refpipe = { call_for_each_group = true, --coins = true, count = true, evaluating = true, for_each = true, list = true, list_values = true, list_maybe_with_names = true, value_of = true } -- 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, renaming_by_mixing = true, renaming_to_sequence = true, renaming_to_uppercase = true, renaming_to_lowercase = true, --renaming_to_values = true, shifting = true, splicing = true, --swapping_names_and_values = 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) local ctx = {} ctx.frame = child_frame:getParent() ctx.opipe = child_frame.args ctx.oparams = ctx.frame.args ctx.firstposonly = static_iface ctx.iterfunc = pairs ctx.sorttype = 0 ctx.n_parents = 0 ctx.n_children = 0 ctx.n_available = maxfill return ctx end -- Move to the next action within the user-given list local function context_iterate (ctx, n_forward) local nextfn if ctx.pipe[n_forward] ~= nil then nextfn = ctx.pipe[n_forward]: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 remove_numeric_keys(ctx.pipe, 1, n_forward) 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 (dest, opts, start_from) local cmd if opts[start_from] == nil then return start_from - 1 end cmd = opts[start_from]:gsub('%s+', ''):gsub('/+', '/') :match'^/*(.*[^/])' if cmd == nil then return start_from end local amap, sep, argc = {}, string.byte('/'), start_from + 1 local vname local chr for idx = 1, #cmd do chr = cmd:byte(idx) if chr == sep then for key, val in ipairs(amap) do dest[val] = opts[argc] amap[key] = 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 newparams = {} local currsnap = 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 tmp = raw_arg:match'^%s*(.-)%s*$' if tmp == 'without_sorting' then return nil, 2, false end tmp = sortfunctions[tmp] if tmp == nil then return nil, 1, false end return tmp or nil, 2, true end -- Parse optional user arguments of type `...|[let]|[...][number of additional -- parameters]|[parameter 1]|[parameter 2]|[...]` local function load_child_opts (src, start_from, append_after) local tbl, pin = {}, start_from local tnamed while src[pin] ~= nil and src[pin]:match'^%s*let%s*$' and src[pin + 1] ~= nil and src[pin + 2] ~= nil do tbl[get_parameter_name(src[pin + 1])] = src[pin + 2] pin = pin + 3 end if pin ~= start_from then tnamed, tbl = tbl, {} end local tmp = tonumber(src[pin]) if tmp ~= nil and math.floor(tmp) == tmp then if tmp < 0 then tmp = -1 end local shf = append_after - pin for idx = pin + 1, pin + tmp do tbl[idx + shf] = src[idx] end pin = pin + tmp + 1 end if tnamed ~= nil then for key, val in pairs(tnamed) do tbl[key] = val end end return tbl, pin end -- Load the optional arguments of some of the `mapping_*` and `renaming_*` -- class of modifiers local function load_callback_opts (src, n_skip, default_style) local style local shf local tmp = src[n_skip + 1] if tmp ~= nil then style = mapping_styles[tmp:match'^%s*(.-)%s*$'] end if style == nil then style, shf = default_style, n_skip - 1 else shf = n_skip 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 local dest, nargs = load_child_opts(src, style[2] + shf, n_exist) tmp = style[1] 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, nargs, tmp, karg, varg end -- Parse the arguments of some of the `mapping_*` and `renaming_*` class of -- modifiers local function load_replace_args (opts, whoami) if opts[1] == nil then error(modulename .. ', ‘' .. whoami .. '’: No pattern string was given', 0) end if opts[2] == nil then error(modulename .. ', ‘' .. whoami .. '’: No replacement string was given', 0) end local ptn, repl, nmax, argc = opts[1], opts[2], tonumber(opts[3]), 3 if nmax ~= nil or (opts[3] or ''):match'^%s*$' ~= nil then argc = 4 end local flg = opts[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, 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, whoami) local ptns, state, nptns, cnt = {}, 0, 0, 1 local keyw for _, val in ipairs(opts) do if state == 0 then nptns, state = nptns + 1, -1 ptns[nptns] = { val, false, false } else keyw = val: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 cnt = cnt + 1 end if state == 0 then error(modulename .. ', ‘' .. whoami .. '’: No pattern was given', 0) end return ptns, nptns, cnt end -- Load the optional arguments of the `parsing`, `reinterpreting` and -- `evaluating` modifiers local function load_parse_opts (opts, start_from, isp, psp) local tmp local optslots, noptslots, argc = { true, true, true }, 3, start_from local trimn, trimu, iplain, pplain = 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 = tmp[1], tmp[2] optslots[1] = nil elseif optslots[2] ~= nil and isep_parse_opts[tmp] ~= nil then argc = argc + 1 iplain, isp = isep_parse_opts[tmp], opts[argc] optslots[2] = nil elseif optslots[3] ~= nil and psep_parse_opts[tmp] ~= nil then argc = argc + 1 pplain, psp = psep_parse_opts[tmp], opts[argc] optslots[3] = 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] = key margs[varg] = 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] = key rargs[varg] = 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 local 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 = {} local canvas = {} local idx = 1 local s_pos = 1 local e_pos = string.find(target, '%$[@#]', 1, false) while e_pos ~= nil do canvas[idx] = target:sub(s_pos, e_pos - 1) skel[idx + 1] = target:sub(e_pos, e_pos + 1) == '$@' idx = idx + 2 s_pos = 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 local val local spos1 local spos2 local pos1 local pos2 local pos3 = 0 local idx = 1 local lenplone = #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 idx 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 idx = idx + 1 else key = get_parameter_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 idx 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] = val idx = idx + 1 until pos2 == nil return idx 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_parameter_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 idx 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 = ctx.pipe if ctx.pipe[1] == nil then error(modulename .. ', ‘' .. whoami .. '’: No parameter name was provided', 0) end local tbl = ctx.params local vars = {} local sortfn, tmp, do_sort = load_sort_opt(opts[2]) local argc = set_strings(vars, opts, tmp + 1) if argc < tmp then error(modulename .. ', ‘' .. whoami .. '’: No setting directive was given', 0) end if next(tbl) == nil then if vars.ifngiven ~= nil then ctx.params = { [get_parameter_name(ctx.pipe[1])] = vars.ifngiven } elseif tbl == ctx.oparams then ctx.params = {} end return argc end local cache local len if do_sort then local words cache, words, len, tmp = get_key_list_sorted(tbl, sortfn) for idx = 1, tmp do cache[len + idx] = words[idx] end len = len + tmp else cache = {} len = 0 for key in pairs(tbl) do len = len + 1 cache[len] = key end end local pmap, nss, kvs, pps = {}, 0, vars.pairsep or '', vars.itersep or '' for idx = 1, len do tmp = cache[idx] pmap[nss + 1] = 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_parameter_name(ctx.pipe[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) local retval, tbl, nmax = {}, ctx.params, table.maxn(ctx.pipe) 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(ctx.pipe) 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 tbl = ctx.params if ctx.subset == 1 then for key, val in ipairs(tbl) do fn(key, val) end return end if ctx.subset == -1 then for key, val in ipairs(tbl) do tbl[key] = nil end end if ctx.sorttype > 0 then local nums, words, nn, nw = get_key_list_sorted(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 then for key, val in ipairs(tbl) do fn(key, val) tbl[key] = nil end end for key, val in pairs(tbl) do fn(key, val) 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 for key, val in ipairs(ctx.params) do fn_seq(key, val) end return end if ctx.subset == -1 then flush_params(ctx, fn_oth) return end local tbl = ctx.params if ctx.sorttype > 0 then local nums, words, nn, nw = get_key_list_sorted(tbl, natural_sort) local sequence = {} for key, val in ipairs(tbl) do sequence[key] = val end 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 sequence[nums[idx]] then fn_seq(nums[idx], sequence[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(tbl) do fn_seq(key, val) tbl[key] = nil 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 = ipairs ctx.subset = 1 return context_iterate(ctx, 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 = pairs ctx.subset = -1 return context_iterate(ctx, 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, 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, 1) end -- Syntax: #invoke:params|setting|directives|...|pipe to library.setting = function (ctx) local argc = set_strings(ctx, ctx.pipe, 1) if argc < 2 then error(modulename .. ', ‘setting’: No directive was given', 0) end return context_iterate(ctx, argc + 1) end -- Syntax: #invoke:params|scoring|new parameter name|[container]|pipe to library.scoring = function (ctx) if ctx.pipe[1] == nil then error(modulename .. ', ‘scoring’: No parameter name was provided', 0) end local tmp local retval, opts = 0, ctx.pipe for _ in pairs(ctx.params) do retval = retval + 1 end if opts[2] ~= nil then tmp = opts[2]:match'^%s*(.*%S)' end if tmp == 'here' then ctx.params[get_parameter_name(opts[1])] = tostring(retval) return context_iterate(ctx, 3) end new_substack(ctx)[get_parameter_name(opts[1])] = tostring(retval) return context_iterate(ctx, tmp == 'in_substack' and 3 or 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] = key store[key] = val tbl[key] = nil end end table.sort(indices) for idx = 1, newlen do tbl[idx] = store[indices[idx]] end return context_iterate(ctx, 1) end -- Syntax: #invoke:params|filling_the_gaps|pipe to library.filling_the_gaps = function (ctx) local tbl, tmp, nmin, nmax, nnums = ctx.params, {}, 1, nil, -1 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 nnums = nnums + 1 tmp[key] = val 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, 1 do tbl[idx] = '' end for key, val in pairs(tmp) do tbl[key] = val end end return context_iterate(ctx, 1) end -- Syntax: #invoke:params|clearing|pipe to library.clearing = function (ctx) local tbl = ctx.params local numerics = {} for key, val in pairs(tbl) do if type(key) == 'number' then numerics[key] = val tbl[key] = nil end end for key, val in ipairs(numerics) do tbl[key] = val end return context_iterate(ctx, 1) end -- Syntax: #invoke:params|cutting|left cut|right cut|pipe to library.cutting = function (ctx) local lcut = tonumber(ctx.pipe[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(ctx.pipe[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, 1 do tbl[idx] = nil end for idx = 1, lcut, 1 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, 3) end -- Syntax: #invoke:params|cropping|left crop|right crop|pipe to library.cropping = function (ctx) local lcut = tonumber(ctx.pipe[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(ctx.pipe[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 local 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, 1 do tbl[idx - lshift] = tbl[idx] tbl[idx] = nil end end end end return context_iterate(ctx, 3) end -- Syntax: #invoke:params|purging|start offset|length|pipe to library.purging = function (ctx) local idx = tonumber(ctx.pipe[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(ctx.pipe[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, 3) end len = len - idx + 1 end ctx.params = copy_table_reduced(tbl, idx, len) return context_iterate(ctx, 3) end -- Syntax: #invoke:params|backpurging|start offset|length|pipe to library.backpurging = function (ctx) local last = tonumber(ctx.pipe[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(ctx.pipe[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, 3) end idx = idx - len if last < idx then return context_iterate(ctx, 3) end len = last - idx + 1 end ctx.params = copy_table_reduced(ctx.params, idx, len) return context_iterate(ctx, 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[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, 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] = val tbl[key] = 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, 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 numerics = {} for key, val in pairs(tbl) do if type(key) == 'number' then numerics[key] = val tbl[key] = nil end end for key, val in pairs(numerics) do tbl[shift - key] = val end return context_iterate(ctx, 1) end ]]-- -- Syntax: #invoke:params|mirroring_numeric_names|pipe to --[[ library.mirroring_numeric_names = function (ctx) local tbl, numerics = ctx.params, {} local nmax local nmin for key, val in pairs(tbl) do if type(key) == 'number' then numerics[key] = val tbl[key] = 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(numerics) do tbl[nmax + nmin - key] = val end return context_iterate(ctx, 1) end ]]-- -- Syntax: #invoke:params|swapping_numeric_names|pipe to --[[ library.swapping_numeric_names = function (ctx) local tbl, cache, nsize = ctx.params, {}, 0 local tmp for key in pairs(tbl) do if type(key) == 'number' then nsize = nsize + 1 cache[nsize] = key end end table.sort(cache) for idx = math.floor(nsize / 2), 1, -1 do tmp = tbl[cache[idx] ] tbl[cache[idx] ] = tbl[cache[nsize - idx + 1] ] tbl[cache[nsize - idx + 1] ] = tmp end return context_iterate(ctx, 1) end ]]-- -- Syntax: #invoke:params|sorting_sequential_values|[criterion]|pipe to library.sorting_sequential_values = function (ctx) local sortfn if ctx.pipe[1] ~= nil then sortfn = sortfunctions[ctx.pipe[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, 1) end return context_iterate(ctx, 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 opts, tbl = ctx.pipe, ctx.params local tmp1 = opts[1] local tmp2 local argc local pos local refp if tmp1 ~= nil then tmp2 = tonumber(tmp1) if tmp2 == nil or math.floor(tmp2) ~= tmp2 then pos, argc, tmp2 = tonumber(opts[2]), 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, 3, 0 end else pos, argc, refp = tonumber(opts[2]), 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 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 tmp1 = tonumber(opts[argc]) if len == 0 and (tmp1 == nil or tmp1 < 1) then error(modulename .. ', ‘splicing’: When the increment is zero the number of elements to add cannot be zero', 0) end if tmp1 == nil or tmp1 < 0 or math.floor(tmp1) ~= tmp1 then return context_iterate(ctx, argc) end tmp2 = argc - pos + 1 for key = pos, pos + tmp1 - 1 do tbl[key] = opts[key + tmp2] end return context_iterate(ctx, argc + tmp1 + 1) end -- Syntax: #invoke:params|imposing|name|value|pipe to library.imposing = function (ctx) if ctx.pipe[1] == nil then error(modulename .. ', ‘imposing’: Missing parameter name to impose', 0) end ctx.params[get_parameter_name(ctx.pipe[1])] = ctx.pipe[2] return context_iterate(ctx, 3) end -- Syntax: #invoke:params|providing|name|value|pipe to library.providing = function (ctx) if ctx.pipe[1] == nil then error(modulename .. ', ‘providing’: Missing parameter name to provide', 0) end local key = get_parameter_name(ctx.pipe[1]) if ctx.params[key] == nil then ctx.params[key] = ctx.pipe[2] end return context_iterate(ctx, 3) end -- Syntax: #invoke:params|discarding|name|[how many]|pipe to library.discarding = function (ctx) if ctx.pipe[1] == nil then error(modulename .. ', ‘discarding’: Missing parameter name to discard', 0) end local len = tonumber(ctx.pipe[2]) if len == nil then ctx.params[get_parameter_name(ctx.pipe[1])] = nil return context_iterate(ctx, 2) end local key = tonumber(ctx.pipe[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, 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, 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, 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 targets, nptns, argc = load_pattern_args(ctx.pipe, 'with_name_matching') local tmp local ptn local tbl = ctx.params local newparams = {} 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 targets, nptns, argc = load_pattern_args(ctx.pipe, 'with_name_not_matching') local tbl = ctx.params 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 local 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 tbl = ctx.params local targets, nptns, argc = load_pattern_args(ctx.pipe, 'with_value_matching') local nomatch local ptn 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 tbl = ctx.params local targets, nptns, argc = load_pattern_args(ctx.pipe, 'with_value_not_matching') local yesmatch local ptn 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|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, 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, 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, 1) end -- Syntax: #invoke:params|mapping_by_calling|template name|[call -- style]|[let]|[...][number of additional parameters]|[parameter -- 1]|[parameter 2]|[...]|[parameter N]|pipe to library.mapping_by_calling = function (ctx) local opts = ctx.pipe local tname if opts[1] ~= nil then tname = opts[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 = load_callback_opts(opts, 1, mapping_styles.values_only) local model = { title = tname, args = margs } value_maps[looptype](ctx.params, margs, karg, varg, function () return ctx.frame:expandTemplate(model) end) return context_iterate(ctx, argc) end -- Syntax: #invoke:params|mapping_by_invoking|module name|function -- name|[call style]|[let]|[...]|[number of additional -- arguments]|[argument 1]|[argument 2]|[...]|[argument N]|pipe to library.mapping_by_invoking = function (ctx) local opts = ctx.pipe local mname local fname if opts[1] ~= nil then mname = opts[1]:match'^%s*(.*%S)' end if mname == nil then error(modulename .. ', ‘mapping_by_invoking’: No module name was provided', 0) end if opts[2] ~= nil then fname = opts[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 = load_callback_opts(opts, 2, mapping_styles.values_only) 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](ctx.params, margs, karg, varg, function () return tostring(mfunc(ctx.frame:newChild(model))) end) return context_iterate(ctx, argc) end -- Syntax: #invoke:params|mapping_by_magic|parser function|[call -- style]|[let]|[...][number of additional arguments]|[argument -- 1]|[argument 2]|[...]|[argument N]|pipe to library.mapping_by_magic = function (ctx) local opts = ctx.pipe local magic if opts[1] ~= nil then magic = opts[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 = load_callback_opts(opts, 1, mapping_styles.values_only) value_maps[looptype](ctx.params, margs, karg, varg, function () return ctx.frame:callParserFunction(magic, margs) end) 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, '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) if ctx.pipe[1] == nil then error(modulename .. ', ‘mapping_by_mixing’: No mixing string was provided', 0) end local mix = ctx.pipe[1] local tbl = ctx.params if mix == '$#' then for key in pairs(tbl) do tbl[key] = tostring(key) end return context_iterate(ctx, 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, 2) end -- Syntax: #invoke:params|mapping_to_names|pipe to --[[ library.mapping_to_names = function (ctx) local tbl = ctx.params for key in pairs(tbl) do tbl[key] = tostring(key) end return context_iterate(ctx, 1) 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, 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, 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 tbl = ctx.params local sortfn, argc, do_sort = load_sort_opt(ctx.pipe[1]) local cache local len if do_sort then local words local wl cache, words, len, wl = get_key_list_sorted(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 = 0 for _, val in pairs(tbl) do len = len + 1 cache[len] = val end end ctx.params = cache return context_iterate(ctx, argc) end -- Syntax: #invoke:params|renaming_by_calling|template name|[call -- style]|[let]|[...][number of additional parameters]|[parameter -- 1]|[parameter 2]|[...]|[parameter N]|pipe to library.renaming_by_calling = function (ctx) local opts = ctx.pipe local tname if opts[1] ~= nil then tname = opts[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 = load_callback_opts(opts, 1, mapping_styles.names_only) local model = { title = tname, args = rargs } map_names(ctx.params, rargs, karg, varg, looptype, function () return ctx.frame:expandTemplate(model) end) return context_iterate(ctx, argc) end -- Syntax: #invoke:params|renaming_by_invoking|module name|function -- name|[call style]|[let]|[...]|[number of additional -- arguments]|[argument 1]|[argument 2]|[...]|[argument N]|pipe to library.renaming_by_invoking = function (ctx) local opts = ctx.pipe local mname local fname if opts[1] ~= nil then mname = opts[1]:match'^%s*(.*%S)' end if mname == nil then error(modulename .. ', ‘renaming_by_invoking’: No module name was provided', 0) end if opts[2] ~= nil then fname = opts[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 = load_callback_opts(opts, 2, mapping_styles.names_only) 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(ctx.params, rargs, karg, varg, looptype, function () return tostring(mfunc(ctx.frame:newChild(model))) end) return context_iterate(ctx, argc) end -- Syntax: #invoke:params|renaming_by_magic|parser function|[call -- style]|[let]|[...][number of additional arguments]|[argument -- 1]|[argument 2]|[...]|[argument N]|pipe to library.renaming_by_magic = function (ctx) local opts = ctx.pipe local magic if opts[1] ~= nil then magic = opts[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 = load_callback_opts(opts, 1, mapping_styles.names_only) map_names(ctx.params, rargs, karg, varg, looptype, function () return ctx.frame:callParserFunction(magic, rargs) end) 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, 'renaming_by_replacing') if die then return context_iterate(ctx, argc) end local tbl = ctx.params if flg == 3 then ptn = get_parameter_name(ptn) local val = tbl[ptn] if val ~= nil then tbl[ptn] = nil tbl[get_parameter_name(repl)] = 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 if ctx.pipe[1] == nil then error(modulename .. ', ‘renaming_by_mixing’: No mixing string was provided', 0) end local mix = ctx.pipe[1]:match'^%s*(.-)%s*$' local cache = {} if mix == '$@' then for _, val in pairs(ctx.params) do cache[get_parameter_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_parameter_name(table.concat(canvas))] = val end end ctx.params = cache return context_iterate(ctx, 2) end -- Syntax: #invoke:params|renaming_to_values|pipe to --[[ library.renaming_to_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 cache = {} for _, val in pairs(ctx.params) do cache[val] = val end ctx.params = cache return context_iterate(ctx, 1) end ]]-- -- Syntax: #invoke:params|grouping_by_calling|template -- name|[let]|[...]|[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 = ctx.pipe local tmp if opts[1] ~= nil then tmp = opts[1]: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 argc tmp, argc = load_child_opts(opts, 2, 0) 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 local groups = make_groups(ctx.params) for gid, group in pairs(groups) do for key, val in pairs(gargs) do group[key] = val end group[0] = gid model.args = group groups[gid] = ctx.frame:expandTemplate(model) 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 = ctx.pipe if opts[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, 2, '|', '=') parse_parameter_string(ctx.params, opts[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 = ctx.pipe if opts[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, 2, '|', '=') local tbl, tmp = ctx.params, get_parameter_name(opts[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) -- NOTE: `ctx.pipe` might be the original metatable! As a modifier, -- this function MUST create a copy of it before returning local opts = ctx.pipe if opts[1] == nil then error(modulename .. ', ‘evaluating’: No string to parse was provided', 0) end local isep, iplain, psep, pplain, trimnamed, trimunnamed, argc = load_parse_opts(opts, 2, '!', ':') if opts[1]:match'^%s*(.*%S)' == nil then ctx.pipe = copy_or_ref_table(opts, opts ~= ctx.opipe) return context_iterate(ctx, argc) end local new_opts, cache = {}, {} local shift = parse_parameter_string(cache, opts[1], isep, iplain, psep, pplain, trimnamed, trimunnamed) - argc for key, val in pairs(opts) do if type(key) ~= 'number' or key < 1 then new_opts[key] = val elseif key >= argc then new_opts[key + shift] = val end end for key, val in pairs(cache) do new_opts[key] = val end ctx.pipe = new_opts return context_iterate(ctx, 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 if ctx.pipe[1] == nil then error(modulename .. ', ‘mixing_names_and_values’: No mixing string was provided for parameter names', 0) end if ctx.pipe[2] == nil then error(modulename .. ', ‘mixing_names_and_values’: No mixing string was provided for parameter values', 0) end local cache = {} local mix_k, mix_v = ctx.pipe[1]:match'^%s*(.-)%s*$', ctx.pipe[2] local tmp if mix_k == '$@' and mix_v == '$@' then for _, val in pairs(ctx.params) do cache[get_parameter_name(val)] = val end elseif mix_k == '$@' and mix_v == '$#' then for key, val in pairs(ctx.params) do cache[get_parameter_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_parameter_name(table.concat(cnv_k))] = table.concat(cnv_v) end end ctx.params = cache return context_iterate(ctx, 3) end -- Syntax: #invoke:params|swapping_names_and_values|pipe to --[[ library.swapping_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 cache = {} for key, val in pairs(ctx.params) do cache[val] = key end ctx.params = cache return context_iterate(ctx, 1) end ]]-- -- Syntax: #invoke:params|combining|new parameter name|[sort order]|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]|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 tname = ctx.pipe[1] if tname ~= nil then tname = tname:match'^%s*(.*%S)' else error(modulename .. ', ‘combining_by_calling’: No template name was provided', 0) end if ctx.pipe[2] == nil then error(modulename .. ', ‘combining_by_calling’: No parameter name was provided', 0) end ctx.params = { [get_parameter_name(ctx.pipe[2])] = ctx.frame:expandTemplate{ title = tname, args = ctx.params } } return context_iterate(ctx, 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 mname = ctx.pipe[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 = ctx.pipe[2] if fname ~= nil then fname = fname:match'^%s*(.*%S)' else error(modulename .. ', ‘combining_by_invoking’: No function name was provided', 0) end if ctx.pipe[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_parameter_name(ctx.pipe[3])] = tostring(mfunc(ctx.frame:newChild(model))) } return context_iterate(ctx, 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 magic = ctx.pipe[1] if magic ~= nil then magic = magic:match'^%s*(.*%S)' else error(modulename .. ', ‘combining_by_magic’: No parser function was provided', 0) end if ctx.pipe[2] == nil then error(modulename .. ', ‘combining_by_magic’: No parameter name was provided', 0) end ctx.params = { [get_parameter_name(ctx.pipe[2])] = ctx.frame:callParserFunction(magic, ctx.params) } return context_iterate(ctx, 3) end -- Syntax: #invoke:params|snapshotting|pipe to library.snapshotting = function (ctx) local stack = new_substack(ctx) for key, val in pairs(ctx.params) do stack[key] = val end return context_iterate(ctx, 1) end -- Syntax: #invoke:params|remembering|pipe to library.remembering = function (ctx) local stack = new_substack(ctx) for key, val in pairs(ctx.oparams) do stack[key] = val end return context_iterate(ctx, 1) end -- Syntax: #invoke:params|entering_substack|[new]|pipe to library.entering_substack = function (ctx) local tbl = ctx.params local ncurrparent = ctx.n_parents + 1 if ctx.parents == nil then ctx.parents = { tbl } else ctx.parents[ncurrparent] = tbl end ctx.n_parents = ncurrparent if ctx.pipe[1] ~= nil and ctx.pipe[1]:match'^%s*new%s*$' then ctx.params = {} return context_iterate(ctx, 2) end local currsnap = ctx.n_children if currsnap > 0 then ctx.params = ctx.children[currsnap] ctx.children[currsnap] = nil ctx.n_children = currsnap - 1 else local newparams = {} for key, val in pairs(tbl) do newparams[key] = val end ctx.params = newparams end return context_iterate(ctx, 1) end -- Syntax: #invoke:params|pulling|parameter name|pipe to library.pulling = function (ctx) local opts = ctx.pipe if opts[1] == nil then error(modulename .. ', ‘pulling’: No parameter to pull was provided', 0) end local parent local tmp = ctx.n_parents if tmp < 1 then parent = ctx.oparams else parent = ctx.parents[tmp] end tmp = get_parameter_name(opts[1]) if parent[tmp] ~= nil then ctx.params[tmp] = parent[tmp] end return context_iterate(ctx, 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, 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.parents[ncurrparent] = nil ctx.n_parents = ncurrparent - 1 return context_iterate(ctx, 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.parents[ncurrparent] = nil ctx.n_parents = ncurrparent - 1 ctx.n_children = currsnap return context_iterate(ctx, 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 = ctx.parents[ncurrparent] local child = ctx.params ctx.params = parent ctx.parents[ncurrparent] = nil ctx.n_parents = ncurrparent - 1 for key, val in pairs(child) do parent[key] = val end return context_iterate(ctx, 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 = ctx.params local currsnap = ctx.n_children for key, val in pairs(ctx.children[currsnap]) do parent[key] = val end ctx.children[currsnap] = nil ctx.n_children = currsnap - 1 return context_iterate(ctx, 1) end --[[ Functions ]]-- ----------------------------- -- Syntax: #invoke:params|count library.count = function (ctx) -- NOTE: `ctx.pipe` and `ctx.params` might be the original metatables! 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 opts = ctx.pipe local tname if opts[1] ~= nil then tname = opts[1]:match'^%s*(.*%S)' end if tname == nil then error(modulename .. ', ‘concat_and_call’: No template name was provided', 0) end remove_numeric_keys(opts, 1, 1) ctx.text = ctx.frame:expandTemplate{ title = tname, args = concat_params(ctx) } 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 opts = ctx.pipe local mname local fname if opts[1] ~= nil then mname = opts[1]:match'^%s*(.*%S)' end if mname == nil then error(modulename .. ', ‘concat_and_invoke’: No module name was provided', 0) end if opts[2] ~= nil then fname = opts[2]:match'^%s*(.*%S)' end if fname == nil then error(modulename .. ', ‘concat_and_invoke’: No function name was provided', 0) end remove_numeric_keys(opts, 1, 2) 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) }) 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 opts = ctx.pipe local magic if opts[1] ~= nil then magic = opts[1]:match'^%s*(.*%S)' end if magic == nil then error(modulename .. ', ‘concat_and_magic’: No parser function was provided', 0) end remove_numeric_keys(opts, 1, 1) ctx.text = ctx.frame:callParserFunction(magic, concat_params(ctx)) return false end -- Syntax: #invoke:params|value_of|parameter name library.value_of = function (ctx) -- NOTE: `ctx.pipe` and `ctx.params` might be the original metatables! local opts = ctx.pipe if opts[1] == nil then error(modulename .. ', ‘value_of’: No parameter name was provided', 0) end local val local key = opts[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) -- NOTE: `ctx.pipe` might be the original metatable! local ret, nss, kvs, pps = {}, 0, ctx.pairsep or '', ctx.itersep or '' flush_params( ctx, function (key, val) ret[nss + 1] = pps ret[nss + 2] = key ret[nss + 3] = kvs ret[nss + 4] = val nss = 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: `ctx.pipe` might be the original metatable! -- 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] = pps ret[nss + 2] = val nss = 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) -- NOTE: `ctx.pipe` might be the original metatable! local ret, nss, kvs, pps = {}, 0, ctx.pairsep or '', ctx.itersep or '' mixed_flush_params( ctx, function (key, val) ret[nss + 1] = pps ret[nss + 2] = '' ret[nss + 3] = '' ret[nss + 4] = val nss = nss + 4 end, function (key, val) ret[nss + 1] = pps ret[nss + 2] = key ret[nss + 3] = kvs ret[nss + 4] = val nss = nss + 4 end ) finalize_and_return_concatenated_list(ctx, ret, nss, 4) return false end -- Syntax: #invoke:params|coins|[first coin = value 1]|[second coin = value -- 2]|[...]|[last coin = value N] --[[ library.coins = function (ctx) -- NOTE: `ctx.pipe` might be the original metatable! local opts, tbl = ctx.pipe, ctx.params for key, val in pairs(tbl) do tbl[key] = opts[get_parameter_name(val)] end return library.list_values(ctx) end ]]-- -- Syntax: #invoke:params|unique_coins|[first coin = value 1]|[second coin = -- value 2]|[...]|[last coin = value N] library.unique_coins = function (ctx) local opts, tbl = ctx.pipe, ctx.params local tmp for key, val in pairs(tbl) do tmp = get_parameter_name(val) tbl[key] = opts[tmp] opts[tmp] = nil end return library.list_values(ctx) end -- Syntax: #invoke:params|for_each|wikitext library.for_each = function (ctx) -- NOTE: `ctx.pipe` might be the original metatable! local ret, nss, pps, txt = {}, 0, ctx.itersep or '', ctx.pipe[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] = pps ret[nss + 2] = table.concat(cnv) nss = nss + 2 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 opts = ctx.pipe local tname if opts[1] ~= nil then tname = opts[1]:match'^%s*(.*%S)' end if tname == nil then error(modulename .. ', ‘call_for_each’: No template name was provided', 0) end local model = { title = tname, args = opts } local ret, nss, ccs = {}, 0, ctx.itersep or '' table.insert(opts, 1, true) flush_params( ctx, function (key, val) opts[1] = key opts[2] = val ret[nss + 1] = ccs ret[nss + 2] = ctx.frame:expandTemplate(model) nss = nss + 2 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 opts = ctx.pipe local mname local fname if opts[1] ~= nil then mname = opts[1]:match'^%s*(.*%S)' end if mname == nil then error(modulename .. ', ‘invoke_for_each’: No module name was provided', 0) end if opts[2] ~= nil then fname = opts[2]:match'^%s*(.*%S)' end if fname == nil then error(modulename .. ', ‘invoke_for_each’: No function name was provided', 0) end local model = { title = 'Module:' .. mname, args = opts } local mfunc = require(model.title)[fname] local ret, nss, ccs = {}, 0, ctx.itersep or '' flush_params( ctx, function (key, val) opts[1] = key opts[2] = val ret[nss + 1] = ccs ret[nss + 2] = mfunc(ctx.frame:newChild(model)) nss = nss + 2 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 opts = ctx.pipe local magic if opts[1] ~= nil then magic = opts[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 = {}, 0, ctx.itersep or '' table.insert(opts, 1, true) flush_params( ctx, function (key, val) opts[1] = key opts[2] = val ret[nss + 1] = ccs ret[nss + 2] = ctx.frame:callParserFunction(magic, opts) nss = nss + 2 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 opts = ctx.pipe local tname if opts[1] ~= nil then tname = opts[1]:match'^%s*(.*%S)' end if tname == nil then error(modulename .. ', ‘call_for_each_value’: No template name was provided', 0) end local model = { title = tname, args = opts } local ret, nss, ccs = {}, 0, ctx.itersep or '' flush_params( ctx, function (key, val) opts[1] = val ret[nss + 1] = ccs ret[nss + 2] = ctx.frame:expandTemplate(model) nss = nss + 2 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 opts = ctx.pipe local mname local fname if opts[1] ~= nil then mname = opts[1]:match'^%s*(.*%S)' end if mname == nil then error(modulename .. ', ‘invoke_for_each_value’: No module name was provided', 0) end if opts[2] ~= nil then fname = opts[2]:match'^%s*(.*%S)' end if fname == nil then error(modulename .. ', ‘invoke_for_each_value’: No function name was provided', 0) end local model = { title = 'Module:' .. mname, args = opts } local mfunc = require(model.title)[fname] local ret, nss, ccs = {}, 0, ctx.itersep or '' remove_numeric_keys(opts, 1, 1) flush_params( ctx, function (key, val) opts[1] = val ret[nss + 1] = ccs ret[nss + 2] = mfunc(ctx.frame:newChild(model)) nss = nss + 2 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 opts = ctx.pipe local magic if opts[1] ~= nil then magic = opts[1]:match'^%s*(.*%S)' end if magic == nil then error(modulename .. ', ‘magic_for_each_value’: No parser function was provided', 0) end local ret, nss, ccs = {}, 0, ctx.itersep or '' flush_params( ctx, function (key, val) opts[1] = val ret[nss + 1] = ccs ret[nss + 2] = ctx.frame:callParserFunction(magic, opts) nss = nss + 2 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.pipe` and `ctx.params` might be the original metatables! local tmp if ctx.pipe[1] ~= nil then tmp = ctx.pipe[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 opts, ret, nss, ccs = {}, {}, 0, ctx.itersep or '' for key, val in pairs(ctx.pipe) do if type(key) == 'number' then opts[key - 1] = val else opts[key] = val end end ctx.pipe = opts ctx.params = make_groups(ctx.params) flush_params( ctx, function (gid, group) for key, val in pairs(opts) do group[key] = val end group[0] = gid model.args = group ret[nss + 1] = ccs ret[nss + 2] = ctx.frame:expandTemplate(model) nss = nss + 2 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) ctx.pipe = copy_or_ref_table(ctx.opipe, false) ctx.params = {} main_loop(ctx, context_iterate(ctx, 1)) return ctx.text end --[[ First-position-only functions ]]-- --------------------------------------- -- Syntax: #invoke:params|self static_iface.self = function (frame) return 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) ctx.pipe = copy_or_ref_table(ctx.opipe, refpipe[fname]) ctx.params = copy_or_ref_table(ctx.oparams, refparams[fname]) main_loop(ctx, func) return ctx.text end end }) bx8a2av95b6jpca3zvf7xnia4bz7hsf Maimun Saleh 0 15062 64883 56218 2026-07-10T03:02:50Z InternetArchiveBot 639 Rescuing 1 sources and tagging 0 as dead.) #IABot (v2.0.9.5 64883 wikitext text/x-wiki {{Stub}} '''Sersan''' '''Mayor Udara (Anumèrta) Maimun Saleh''' (14 Mèi 1929 – Tangghâl 1 Agustus 1952) èngghi panèka sala sèttong pahlawan nasional Inḍonèsia. <ref>[https://web.archive.org/web/20170721190519/http://portalsatu.com/read/histori/kisah-maimun-saleh-si-penerbang-dari-aceh-8690 ""Kisah Maimun Saleh Si Penerbang dari Aceh""]. È arsip ḍâri [http://portalsatu.com/read/histori/kisah-maimun-saleh-si-penerbang-dari-aceh-8690 asli] tangghâl 2017-07-21. Èaksès 2025-12-26.</ref> <ref>{{Cite web |title=Not Found {{!}} TNI AU |url=https://tni-au.mil.id/content/lanud-maimun-saleh-0 |access-date=2026-01-10 |website=tni-au.mil.id |archive-date=2025-08-09 |archive-url=https://web.archive.org/web/20250809172945/https://tni-au.mil.id/content/lanud-maimun-saleh-0 |url-status=dead }}</ref> Maimun Saleh ètârèma mènangka moreḍ è sâkola'an penerbangan è Koetaraḍja (Banda Acèh) sè èpinḍa ka sâkola'an penerbangan è Kaliḍjati è taon 1950 bân bisa ollè ijaza mènangka pilot kellas 3 è taon 1951. Sa'ellana jârèya, Maimun Saleh maso' Skuadron IV bân noro' è sakabbhina operasi udara sè dhâddhi tanggung jawab kasatowanna. Namong, è tangghâl 1 Agustus 1952, Sersan Maimun Saleh sè mângabbher molo' intai Auster IV-R-80 ghâghâr è Pangkalan Udara Semplak, Bogor bân sèdhâ mènangka pahlawan nasional. <ref>[http://www.portal-komando.com/2017/07/lanud-sim-bersihkan-monumen-pesawat.html "Sekilas mengenai Sersan Mayor Maimun Saleh"] Èaksès 2026-01-10.</ref> Samangkèn, asma Serma Anumerta Maemun Saleh è abadi'aghi sareng Angkatan Uḍara Inḍonèsia mènangka asma Pangkalan Angkatan Uḍara Inḍonèsia è Polo Sabang, Propènsi Nanggroe Acèh Ḍarussalam. == Karir == [[Bhengkek:Bombardier Dash 8 Q300 VH-SBG from 74 Sunbury St Geebung IMGP4448.jpg|jmpl]] È bulân Agustus 1949 Maimun Saleh ètarèma mènangka mahasiswa pilot è Kotaraḍja bân è taon 1950 èpinḍa ka Sâkola'an Penerbangan è Kaliḍjati, [[Kabhupatèn Subang|Subang]] è ḍimma salèrana bisa ollè sertifikat mènangka pilot kellas 3 è tangghâl 1 Pèbruwari 1951. saterrossa salèrana maso' Skuaḍron IV (Pengintaian Ḍarat) bân noro' è sakabbhina operasi sè èjhâlânè sareng Skuaḍron. Kalabân sèḍhâna Maimun Saleh, Angkatan Uḍara Inḍonèsia jhughân ka'èlangan orèng sè ḍegghik bhâkal makowat è ḍâlem perkembhângan Angkatan Uḍara Inḍonèsia. Ahèrra, ḍâ' kâlowarga almarhum Maimun, kaulâ saḍhâjâ ḍâri Angkasa atas nyama saḍhâjâ angghuta AURI ta' loppa nyampayaghi takziah atas sèḍhâna Maimun Saleh. Almarhum panèka pilot Wilaya Khusus Aceh, sè sèḍhâ è tangghâl 1 Agustus 1952 è omor 23 taon bân èkobhur è Aneuek Galong Sibreh, Kâcamadhân Suka Makmur, Kabhupatèn Aceh Besar. Ka'angghuy ḍhâḍḍhi kenangan, nyama: MAIMUN SALEH ampon è'abaḍi'aghi ghâbây Banḍara Militèr LHO' NGA bân Ḍetasemen Banda Acèh AURI (sâbelunna Koetaradja) tangghâl 9 April 1954 sareng Angkatan Uḍara Inḍonèsia. == Auster IV-R-80 == È arè Juma'at, 1 Agustus 1952, pokol 09.25, pesawat pengintai Auster IV–R–80 ghâgghâr è Pangkalan Uḍara Semplak (Bogor) sè èpiloti sareng Sersan Udara Maimun Saleh. È ḍâlem kâcâlaka’an panèka, Maimun Saleh langsong sèḍhâ. Bisa èjhârbâ'aghi lebbi jhâu jhâ' kaḍhâḍḍhiyân sè cè' sossa'na panèka kaḍhâḍḍhiyân è bâkto latèyan rutin è Komando Pangkalan Uḍara Semplak bân sâbabbhâ kabâdâ'an ghi' ta' èkataowè. Tangghâl 2 Agustus 1952 pokol 06.35 mayyit almarhum Maimun è ghibâ sareng molo' ḍâri Pangkalan Uḍara Tjililitan ka Kotaraḍja ([[Acèh]]), ka’ḍimma salèrana è bhâbbhâraghi. == Sombher == ltp0ag9ke8uqennnr2yyrescj1xq5e3 Papèda 0 15167 64885 50568 2026-07-10T04:15:03Z InternetArchiveBot 639 Rescuing 1 sources and tagging 0 as dead.) #IABot (v2.0.9.5 64885 wikitext text/x-wiki {{Infobox food}} '''Papèda''' panèka [[Makanan|kakanan aropa]] [[bubur]] [[sagu]] sè asalla dâri [[Kepulauan Maluku|Polo Maluku]] bân paseser bârâ[[Papua (wilayah Indonesia)|' Papua]] . Kakanan panèka biasana èghâbây kalabân [[Ikan tongkol|tongkol otabâ jhuko' tuna]] sè èbumbui [[kunyit|konyi']].<ref name="Khas">{{Cite web |last=Prasasti |first=Rati |year=2013 |title=Papeda Makanan Khas Dari Timur Indonesia |url=http://mediapublica.co/2013/04/02/papeda-makanan-khas-dari-timur-indonesia/ |access-date=9 Mei 2014 |publisher=Media Publica |archive-date=2015-04-08 |archive-url=https://web.archive.org/web/20150408170928/http://mediapublica.co/2013/04/02/papeda-makanan-khas-dari-timur-indonesia/ |url-status=dead }}</ref> Papèda bârnana [[Putih|potè]] bân aghâdhui tèkstur sè lengket, akadhi [[lem]] kalabân rassa sè bek tabâr.<ref name="Khas" /> Papèda bânnya' serat, rèndhâ [[kolesterol]], bân cè' bergizina.<ref name="tribun">{{Cite news |last=Santoso |first=Agung Budi |year=2013 |editor-last=Gultom |editor-first=Hasiolan Eko P |title=Papeda, Makanan Sehat Khas Papua |url=http://www.tribunnews.com/lifestyle/2013/12/10/papeda-makanan-sehat-khas-papua |accessdate=9 Mei 2014 |work=[[Tribunnews|Tribunnews.com]] |publisher= |language=id}}</ref> == Sejarah == È pan-bârâmpan daèrah pasèsèr bân daèrah rèndhâ è Papua, sagu panèka bahan dhâsar dâlem pan-bârâmpan kakanan.<ref name="NatGeo">{{Cite web |last=Wisanggeni |first=Aryo |year=2013 |title=Belanga dan Papeda |url=http://nationalgeographic.co.id/berita/2013/12/belanga-dan-papeda |archive-url=https://web.archive.org/web/20131225071920/http://nationalgeographic.co.id/berita/2013/12/belanga-dan-papeda |archive-date=2013-12-25 |access-date=9 Mei 2014 |publisher=National Geographic Indonesia}}</ref> [[Sagu bakar|Sagu pangghâng]], sagu rata, bân bola sagu panèka kakanan sè palèng èkennal è bhân-sabbhân penjuru Papua, khusussa è tradisi kuliner masyarakat pribumi è Kabupaten Mappi, [[Asmat]], bân [[Mimika]].<ref name="NatGeo" /> Papèda panèka kakanan sagu khas sè cè' ghâmpangngah ètemmoè, khusussa è wilayah Maluku bân Papua.<ref name="NatGeo" /> [[Antropolog]] bân Kepala Lembaga Penelitian Papua, Johszua Robert Mansoben, nyataaghi jhâ' papèda lebbi èkennal è dâlem tradisi orèng asli [[Suku Sentani|Sentani]] è [[Danau Sentani|Tase' Sentani]], [[Suku Taikat|Taikat]] è [[Arso, Keerom|Arso]], bân [[Manokwari]].<ref name="NatGeo" /> == Macemma menu == Umumna, papèda èkakan kalabân jhuko' tongkol.<ref name="Maluku">{{Cite web |title=Papeda, Maluku: Bubur 'Lem' Segar Bergizi |url=http://www.femina.co.id/kuliner/info.kuliner/papeda.maluku.bubur.lem.segar.bergizi/004/002/234 |access-date=14 April 2014 |publisher=Femina}}</ref> Namong, papèda bisa jhughân èkombinasiaghi sareng [[Kakap merah|kakap mèra]], [[Kuwe gerong|bubara]].<ref name="Maluku" /> Salaèn sop jhuko' konèng,<ref>{{Cite web |last=adminpotret |first=potretmaluku.id |date=2021-07-06 |title=Talucu Lidah di Ikan Kuah Kuning - Potret Maluku |url=https://potretmaluku.id/talucu-lidah-di-ikan-kuah-kuning/ |access-date=2022-05-18 |website=potretmaluku.id |language=en-US}}</ref> papeda bisa jhughân ènikmati kalabân sayur ''ganemo'' sè èkaghâbây dâri dâun [[melinjo]] ngodâ sè èghuring kalabân kembhâng katès ngodâ bân [[cabbhi]] mèra.<ref name="Maluku" /> == Sombher == <references /> nyj9pyswd4ihrrza29205ne7cfuwrrq Uli 0 15186 64891 52115 2026-07-10T06:11:56Z InternetArchiveBot 639 Rescuing 1 sources and tagging 0 as dead.) #IABot (v2.0.9.5 64891 wikitext text/x-wiki Uli otabâ jâdah iyaâ arèya kakanan sè èghâbây ḍari bherres plotan, daun panḍân kalabân cara èbhungkos. Uli èbento' kalabân è ra'-kerra' samarèna cellep. È bâkto èkakanna, uli bisa èkakan bân oncom, ghulâ pasèr, otabâ nyèor sangngar. Macem laènna ḍâri uli iyâ arèya tapay uli, panèka uli sè èkakan bân tapay sè ḍâri plotan. == Macem-macemma Uli == === Uli Ghulâng === Uli blondo iyâ arèya uli sè èsajiyâghi bân ghulâng bân bannya' ètemmuè è Solo. Carana aghâbây iyâ arèya kalabân cara anowap bherres plotan bân parotan nyèor. Mon marè massa', adhunan kasebbhut bhâkal è tèttè kantos alos bân èsajiyâghi dhing la cellep. Ghulâng iyâ arèya ampassa patè sè èghuring kantos kalowar minnya' abentu' ghumpalan-ghumpalan kèni' è dimma pangolaenna bhuto bâkto a jhâm-jhâm.<ref>{{Cite web |title=Pemerintah Kota Surakarta |url=https://surakarta.go.id/?p=12796 |access-date=2025-12-27 |website=surakarta.go.id |archive-date=2023-03-31 |archive-url=https://web.archive.org/web/20230331161842/https://surakarta.go.id/?p=12796 |url-status=dead }}</ref><ref>{{Cite web|last=Jatmiko Adi/JIBI/Solopos|first=Bayu|date=2017-12-05WIB15:15:19+00:00|title=KULINER SOLO : Gurih Manis Jadah Blondo Menggoyang Lidah|url=https://www.solopos.com/kuliner-solo-gurih-manis-jadah-blondo-menggoyang-lidah-874246|website=Solopos.com|language=id|access-date=2022-07-06}}</ref> === Uli Tèmpè === Uli Tèmpè iyâ arèya uli sè èsajiyâghi kalabân tèmpè bân bânnya' ètemmo è Yogyakarta. Tèmpè sè èsajiyâghi iyâ arèya macem tèmpè bacem kantos ngalowaraghi rassa manès bân seddhâ' bâkto èkakan. Awalla uli tèmpè iyâ arèya kakanan kona biyasa bân èjhuwâl è Kaliurang bân èkennallaghi sè dhimèn è taon 1950-an sareng mba Carik otabâ Sastro Dinomo. Kakanan rèya dhâddhi èkennal bân orèng-orèng bannya' bâkto Sri Sultan Hamengkubuwono IX arassaè uli tèmpè. Nyatana Panjânnângèpon senneng bân toman nyoro pengawalla kaangghuy mellè uli tèmpè ḍâ' Kaliurang. Sajjhâkka jârèya uli tèmpè dhâddhi kaonang bân ḍhâddhi kakanan khas Yogyakarta kantos satèya.<ref>{{Cite web |title=Pemerintah Kabupaten Sleman » Blog Archive » Jadah Tempe, Makanan Tradisional Kegemaran Sultan |url=http://www.slemankab.go.id/3844/jadah-tempe-makanan-tradisional-kegemaran-sultan.slm |archive-url=https://web.archive.org/web/20230320103650/http://www.slemankab.go.id/3844/jadah-tempe-makanan-tradisional-kegemaran-sultan.slm |archive-date=2023-03-20 |access-date=2025-12-27 |website=www.slemankab.go.id |url-status=dead }}</ref><ref>{{Cite web |last=Dania |first=Rachma |title=Sejarah Jadah Tempe: Makanan Khas Yogyakarta Kesukaan Sultan |url=https://tirto.id/sejarah-jadah-tempe-makanan-khas-yogyakarta-kesukaan-sultan-efgE |access-date=2025-12-27 |website=tirto.id |language=id}}</ref> === Uli Mantan === Uli mantan iyâ arèya jhâjhân kona Yogyakarta sè èghâbây ḍari plotan, patè, bân dhâghing, bisa cebbhirân ajâm otabâ sapè, dhâddhi essena, lajhu èbhungkos bân tellor dhâddhâr bân acora' paḍâ'â bân lemper. È kennângan laèn, jhâjhân rèya jhughân èkennal kalabân nyama ''semar mendem'' kalabân panyajiyân ta' parlo èjhitèng.<ref>{{Cite news|last=Lyliana|first=Lea|date=2021-11-27|title=Resep Jadah Manten Khas Yogyakarta, Kudapan dari Ketan Isi Daging Ayam|url=https://www.kompas.com/food/read/2021/11/27/170600875/resep-jadah-manten-khas-yogyakarta-kudapan-dari-ketan-isi-daging-ayam|work=[[Kompas.com]]|language=id|access-date=2025-12-27|editor-last=Lyliana|editor-first=Lea}}</ref> == Sombher == pgryoo5qkqucuq2yhnkged55b0xnxs9 Tari Alang Suntiang Panghulu 0 15588 64889 57363 2026-07-10T05:49:46Z InternetArchiveBot 639 Rescuing 1 sources and tagging 0 as dead.) #IABot (v2.0.9.5 64889 wikitext text/x-wiki '''Tari Alang Suntiang Panghulu''' èngghi panèka tarian tradisional sè asalla ḍâri Nagari Padang Laweh, [[Kabhupatèn Agam|Kabupatèn Agam]], [[Sumatra Bârâ’|Propinsi Sumatera Bârâ']].<ref>{{Cite web |last=Sedyawati |first=Edi |last2=Parani |first2=Yulianti |date=1995 |others=Djoko Soebandono |title=Ensiklopedi tari Indonesia |url=https://pustaka.kebudayaan.kemdikbud.go.id/index.php?p=show_detail&id=3258&keywords=ensiklopedi+tari |access-date=2025-12-29 |website=pustaka.kebudayaan.kemdikbud.go.id |language=id}}</ref> Lambâ', tarian ka'ḍinto èlampa'aghi è ḍaèra Luhak Nan Tigo è [[Orèng Minangkabau|Minangkabau]], èngghi ka'ḍinto Luhak Tanah Datar, Luhak Agam sareng Luhak Limo Puluh Koto, tor aropa'aghi tarian tradisional sè aropa'aghi kapara ''Pangulu'' (Pamèmpèn Adhât).<ref>''[https://repositori.kemendikdasmen.go.id/12474/1/Khasanah%20Budaya%20Nusantara%20VII.pdf Khasanah Budaya Nusantara VII] {{Webarchive|url=https://web.archive.org/web/20260106060947/https://repositori.kemendikdasmen.go.id/12474/1/Khasanah%20Budaya%20Nusantara%20VII.pdf |date=2026-01-06 }}''. Repositori Kemendikdasmen. Èyaksès tangghâl 29 Ḍèsèmber 2025.</ref> Tarian ka’ḍinto namong èlampa’aghi neng acara-acara khusus sè akaè’ sareng ''Pangulu''. Saèstona, tari panèka ampon abit ta' èkalako. Namong, ka'angghuy mastèyaghi tari panèka ta' elang, Pak Djarmis mabâli polè è taon 1960-an. Pak Djarmis nyèpta’aghi polè ghulina sè khas ḍâri tari Alang Suntiang Panngulu bân ngajhâri ḍâ’ na'-kana' ngoḍâ è tello’ kampong. Pak Djarmis jhughân aghâbây tari tradisional ḍaèra panèka ka kotta [[Kottha Bukittinggi|Bukittinggi]], sè aghâbây tari panèka lebbi kalonta è lowar dhisa.<ref name=":0">{{Cite journal |last=Wahyuni |first=Wahida |last2=Yusfil |first2=Yusfil |last3=Suharti |first3=Suharti |date=2018 |title=TARI ALANG SUNTIANG PANGULU: TARIAN ADAT MASYARAKAT PADANG LAWEH DI MINANGKABAU(TANTANGAN DAN PROBLEMATIKA) |url=https://dipro.isi-ska.ac.id/index.php/SemHas/article/view/19 |journal=PROSIDING: SENI, TEKNOLOGI, DAN MASYARAKAT |language=en |issue=3 |pages=66–71 |issn=2715-4351}}</ref> == Sajhârâ == Maskè panalètèyan tor ola'an ''informasi'' ampon èlampa’aghi è lapangan sareng ''sejarawan'', ghi’ ta’ èkaonèngè kalabân pastè bilâ tari Alang Suntiang Panghulu sè ḍâ’-aḍa’na ècèpta’aghi. Ca’èpon, tari ka’ḍinto ghi’ dhimèn namong ''pertunjukan'' tari sè èlampa’aghi saccara spontan è bâkto acara pangangka'an sèttong pangolo otabâ “''batagak pangulu''” mènangka sellèngan tor bur-lèburân è ḍâlem acara ka’ḍinto. Sampè’ samangkèn tradisi pangangka'an sèttong pangolo è kampong Padang Laweh, [[Kabhupatèn Agam|Kabupatèn Agam]], pagghun èjhâlânnaghi kalabân èyèrèngngè kalabân tari ka'ḍinto. Acara pangangka'an ka’ḍinto jhughân aropa’aghi pasaroju'ân masyarakat ka'angghuy ngangka' sèttong pangolo sè aghântè’è pangolo sè ampon sèdhâ.<ref>Imran, Mhd Nefi; Noerdin, Sajoeti (1991). "[http://repository.unp.ac.id/id/eprint/1689/ Analisis Etnologi Tari Alang Suntiang Pangulu]". ''repository.unp.ac.id'' (ḍâlem bhâsa Inggris). kaca. 4-5.</ref> Salaèn ghânèka, sajhârâ tari Alang Suntiang Pangulu cokop lanjhâng bân jhughân èkennal è dhisa lokal. Hal ka’ḍinto ètandhèi kalabân bâḍâna pan-bârâmpan kalompo’ tari sè langsong èbina sareng saseppo sè ampon alampa’aghi tari ka’ḍinto. ''Penampilan'' otabâ palampa’anna tari Alang Suntiang Pangulo ampon segghut kalowar ḍâlem acem-macem kagiyadhân akadhi upacara adhât, paraya’an tor ngambâ' tamoy sè ḍâteng ḍâri lowar. È taon 1973, tari ka’ḍinto èlampa’aghi ka'angghuy ngambâ' Wâkkèl Prèsiḍèn [[Inḍonèsia|RI]] bâkto ka’ḍinto [[Hamengkubuwana IX|Sri Sultan Hamengkubuwono IX]], sè rabu ka Ambun Pagi, Matur, Kabupatèn Agam.<ref name=":0" /> == Sombher == q53hmufb81ecdk8pzziatnva5y916id Olympe de Gouges 0 15868 64884 52900 2026-07-10T04:09:17Z InternetArchiveBot 639 Rescuing 2 sources and tagging 0 as dead.) #IABot (v2.0.9.5 64884 wikitext text/x-wiki Olympe de Gouges lahir Marie Gouze è taon 1748 è Montauban, Prancis lao'. Bâ'na dâtâng dâri kalowarga kellas tengnga; èkennal resmi mènangka pottrana Pierre Gouze, tukang daging, sanajân bâdâ spekulasi jhâjhârbâ'ân jhâ' ramana kandungna panèka bangsawan lokal, Jean-Jacques Lefranc de Pompignan. Latar sosial panèka nyaba'aghi è antarana dunnyana orèng biasa bân elit intelektual, posisi sè bhâkal mapangaro perspektif kritisna dâ' hierarki sosial<ref>{{Cite web |last=seobeta01 |date=2023-05-07 |title=Olympe de Gouges, Singa Betina Revolusi Perancis |url=https://www.berdikarionline.com/olympe-de-gouges-singa-betina-revolusi-perancis/ |access-date=2026-01-01 |website=Berdikari Online |archive-date=2025-11-20 |archive-url=https://web.archive.org/web/20251120000836/http://www.berdikarionline.com/olympe-de-gouges-singa-betina-revolusi-perancis/ |url-status=dead }}</ref>. akadhi bânnya' bhâbinè'an abad ke-18, Marie Gouze ta' narèma pendidikan tèngghi sè resmi. Sabaligga, èpon ngèmbangaghi kamampowan intelektual lèbât pendidikan dhibi' lèbât maos, adiskusi, bân terlibat dâlem kalangan sastra. Saellana akabin ghi' ngodâ bân saterrossa dhâddhi randhâ, èpon apinda ka Paris bân ngobâ nyamana dâddhi Olympe de Gouges, sèttong lalakon simbolis kaangghuy mabâdâhaghi identitas anyar mènangka bhâbinè' bebas bân sastrawan umum. È Paris, èpon maso' ka salon intelektual bân kalangan teater, è dhissa' èpon ngasah katerampilanna è dâlem nolès drama, pamflet politik, bân esai. Pangalamanna mènangka bhâbinè' sè ta' andi' perlindungan hukum sè samporna baik è dâlem parkawinan otabâ masyarakat maènga' kasadaranna dâ' ketimpangan gender bân aghâbây èpon aghâdhui tolesan mènangka alat perjuangan politik. [[Bhengkek:Marie-Olympe-de-Gouges.jpg|jmpl|Olympe de Gouges]] == Karirre == Maso' ka Paris è taon 1770-an, Olympe de Gouges aktif mènangka penulis drama bân pamfletis politik. Bâ'na aghuna'aghi teater mènangka media kritik sosial, khusussa kaangghuy nolak perbudakan, ketimpangan kelas, bân subordinasi bhâbinè'an. Sala sèttong karyana sè palèng kontroversial panèka drama L'Esclavage des Noirs (1785), sè secara terbuka nolak perbudakan è koloni Perancis posisi sè berani bân ta' èkasennengi è antarana elit ekonomi è bâkto jârèya<ref>{{Cite web |last=seobeta01 |date=2023-05-07 |title=Olympe de Gouges, Singa Betina Revolusi Perancis |url=https://www.berdikarionline.com/olympe-de-gouges-singa-betina-revolusi-perancis/ |access-date=2026-01-01 |website=Berdikari Online}}</ref>. Bâkto Revolusi Perancis èmolaè è taon 1789, de Gouges terlibat langsung dâlem debat umum. Bâ'na nolès ratosan pamflet bân selebaran sè ngritik kegagalan revolusi kaangghuy mamaso' bhâbinè'an mènangka subjek politik. Puncak dâri pekkeranna panèka Deklarasi Hak-hak Bhâbinè' bân Warga (1791), jawaban langsung dâ' Deklarasi Hak-hak Lakè' bân Warga Negara, sè secara implisit èkalowarè bhâbinè'. È dâlem teks panèka, de Gouges aghâdhui jhâ' bhâbinè'an lahir bebas bân padâ sareng lakè' è dâlem hak-hak sipil, politik, bân hukum, è antarana hak mèlè bân hak ghâbây aghâdhui. Salaèn masalah gender, de Gouges jhughân nolak hukuman matè, è antarana Rato Louis XVI, bân nganjuraghi demokrasi konstitusional. Sikap moderat bân humanis aghâbây èpon ta' cocok sareng fraksi Jacobin sè sajân radikal, khusussa è bâbâna pimpinan Maximilien Robespierre. E bâkto Teror Revolusioner (1793), tolesan Olympe de Gouges èangghep subversif. ètangkep polana ètuduh nolak republik bân nyebbâlaghhi ide-ide kontra-revolusioner. È dâlem pangadilan sè panḍâ' bân ta' adil, ètolak pertahanan sè teppa'<ref>{{Cite web |last=seobeta01 |date=2023-05-07 |title=Olympe de Gouges, Singa Betina Revolusi Perancis |url=https://www.berdikarionline.com/olympe-de-gouges-singa-betina-revolusi-perancis/ |access-date=2026-01-01 |website=Berdikari Online |archive-date=2025-11-20 |archive-url=https://web.archive.org/web/20251120000836/http://www.berdikarionline.com/olympe-de-gouges-singa-betina-revolusi-perancis/ |url-status=dead }}</ref>. Olympe de Gouges èeksekusi kalabân guillotine è tanggal 3 November 1793, è Paris. E bâkto matè, èpon aghâdhui hak sè padâ kaangghuy naè' ka platform politik bân polana jârèya jhughân kaangghuy naè' ka taruhan algojo, ironi paè' dâri revolusi sè èproklamasiaghi kabebasanna bân kasetaraan. Maske ampon abit èpaèlang dâri narasi resmi Revolusi Perancis, Olympe de Gouges samangkèn èkennal mènangka pelopor feminisme modern bân pemikir HAM. Pèkkèran-pèkkèranna tentang kesetaraan hukum, representasi politik bhâbinè'an, bân penolakan kekerasan naghara ampon dhâddhi referensi penting dâlem pangajharan feminisme, demokrasi, bân filsafat politik. Carèta odi'na nojjhuaghi paradoks revolusi: cara perjuangan kaangghuy merdeka bisa aoba dâddhi alat penindasan bâkto sowara kritis otamana sowara bhâbinè'an èpèyara. == Sombher == <references /> 9ptzrkfxry633y0vg2tpz7jzmv56faw Anggia Ermarini 0 16840 64876 60419 2026-07-10T00:25:36Z InternetArchiveBot 639 Rescuing 1 sources and tagging 0 as dead.) #IABot (v2.0.9.5 64876 wikitext text/x-wiki {{Infobox orang}} '''Ḍatuk Seri Dr. Hajah Anggia Ermarini''', S.Pd., M.K.M. (lahèr 25 Sèptèmber 1974) panèka sala sèttong politisi Inḍonèsia ḍâri Partai Kebangkitan Bangsa (PKB) & Partai Keaḍilan Rakyat (PKR). Abggia jhughân atugas dhâddhi bâkkèl Sekretaris Jenḍeral Ḍewan Eksekutif Pusat (ḌPP) PKB, Katowa Umum PP Fatayat Nahdlatul Ulama (NU), bân Sekretaris Lembaga Kasèhadhân PP NU (LKNU).<ref>{{Cite web |title=Profil Anggia Erma Rini, Wakil Sekretaris Jenderal DPP PKB 2019-2024, Wakil Ketua Komisi IV DPR RI |url=https://www.tribunnews.com/mata-lokal-memilih/2022/11/26/profil-anggia-erma-rini-wakil-sekretaris-jenderal-dpp-pkb-2019-2024-wakil-ketua-komisi-iv-dpr-ri |access-date=2026-01-09 |website=Tribunnews.com |language=id-ID}}</ref><ref>Anggia Ermarini, Panglima Baru Fatayat. {{Cite web |url=http://thayyiba.com/2015/09/22/1076/anggia-ermarini-panglima-baru-fatayat/ |title=Archive copy |access-date=2026-01-09 |archive-date=2018-03-23 |archive-url=https://web.archive.org/web/20180323092925/http://thayyiba.com/2015/09/22/1076/anggia-ermarini-panglima-baru-fatayat/ |url-status=bot: unknown }} Diakses dari situs berita thayyiba.com pada 12 November 2017</ref> Sabellunna ampon aktif è ḍâlem Pergerakan Mahasiswa Islam Inḍonèsia (PMII) tor ekaparcajâi ka'angguy alampa’aghi manḍat dhâddhi Katowa Korps Putri PMII Cabang Kotta Malang taon 1996-1997 tor Katoa 1 Korps Putri PB PMII taon 1997-2000. Anggia jhughân dhâddhi Katowa Umum PKB [[Sumatra Bârâ’]] è taon 2021.<ref>{{Cite web |last=Arrazzi |first=Fakhruddin |date=2021-01-18 |title=Harapan Febby pada Anggia Ermarini, "Mem-PKB-Kan" dan "Meng-NU-kan" Sumbar |url=https://padangkita.com/harapan-febby-pada-anggia-ermarini-mem-pkb-kan-dan-meng-nu-kan-sumbar/ |access-date=2026-01-09 |website=Padangkita.com |language=id}}</ref> == Penḍiḍighân == Penḍiḍighân Anggi èmolaè ḍâri: * SḌN 1 Gonḍang Sragen * SMPN 1 Gonḍang Sragen * SMAN 1 Sragen (1993) * Sarjana Penḍiḍighân Bhâsa Inggris Universitas Negeri Malang (1997) * Magister Kesehatan Masyarakat Universitas Indonesia (2014) * Ḍoktor Program Stuḍi Ilmu Administrasi Konsentrasi Aḍministrasi Publik Universitas Padjajaran (2023)<ref>Anggia Erma Rini Raih Gelar Doktor di Program Studi Administrasi Publik | Fakultas Ilmu Sosial & Ilmu Politik". 2024-02-12. Diakses tanggal 2024-06-25.</ref> == Karier == * Katowa Korp PMII Puteri Cab. Malang 1996-1997 <ref>{{Cite web |last=KBR |title=KBR :: KENALI CALEG - ANGGIA ERMA RINI : info caleg terlengkap |url=https://kbr.id/kenalicaleg/caleg/kualitas_detail/id/3615 |access-date=2026-01-09 |website=kbr.id |language=id |archive-date=2024-06-25 |archive-url=https://web.archive.org/web/20240625145951/https://kbr.id/kenalicaleg/caleg/kualitas_detail/id/3615 |url-status=dead }}</ref> * Katowa 1 PB Korp PMII Putri 1997-2000 * Biḍang Advokasi PP Fatayat NU 2005 * Katowa Ḍepartemen Kepenḍuḍukan PP LKKNU 2005-2010 * Project Officer GNKL PBNU * Sekjen INTERNA * Sekretaris Lembaga Kesehatan NU * Katowa Umum PP Fatayat NU 2015-2020 * Staff Khusus Menteri Biḍang Komunikasi bân Kemitraan Kementerian Pemuḍa bân Olahraga Republik Inḍonèsia * Wasekjen Partai Kebangkitan Bangsa * Angghuta ḌPR RI (Perioḍe 2019-2024, 2024-2029) * bâkkèl Katowa Komisi IV ḌPR RI (2019-2024) <ref>{{Cite web |title=Profil Dr. ANGGIA ERMA RINI, M.K.M. |url=https://www.lezen.id/profil-calon/dpr/jawa-timur-vi/3506/dr-anggia-erma-rini-mkm/6586 |access-date=2026-01-09 |website=Info Pemilu |language=id}}</ref> * Katowa ḌPW Partai Kebangkitan Bangsa somattra Bârâ' 2020 - 2023 * Katowa Komisi VI ḌPR RI (2024-Samangkèn) == Sombher == <references /> lca7dhy3l5zuk121773u908dt1fmcx9 Tarumanagara 0 17045 64890 56433 2026-07-10T05:59:34Z InternetArchiveBot 639 Rescuing 1 sources and tagging 0 as dead.) #IABot (v2.0.9.5 64890 wikitext text/x-wiki {{Infobox former country | conventional_long_name = Tarumanagara | native_name = {{lang|su|ᮒᮛᮥᮙᮔᮌᮛ}} | common_name = Tarumanagara | today = {{flag|Indonesia}} | religion = [[Hinḍu]] bân [[Bhuddhâ]] | p1 = Kraton Kutai Martapura | s1 = Kraton Sondhâ | s2 = Kraton Meḍang | year_start = Abad ka-5 | year_end = Abad ka-7 | date_start = | date_end = | event_start = [[Prasasti Ciaruteun]] | event_end = Arebbhu' [[Sriwijaya]] | image_map = Tarumanagara id.svg | image_map_caption = Wilajâ Tarumanagara | capital = Sundapura | official_languages = [[Bhâsa Sanskerta|Sanskèrta]] | government_type = Monarki | title_leader = [[Rato]] | leader1 = [[Purnawarman]] | year_leader1 = Abad ka-5 | footnotes = Purnawarman: Rato Tarumanagara sè èkataowè kalabân dhâsar temmowan prasasti [[prasasti Ciaruteun|Ciaruteun]], [[prasasti Jambu|Jambu]], bân [[prasasti Tugu|Tugu]].<br> Prasasti Ciaruteun: [[Prasasti Ciaruteun]]: bhuktè palèng towa paningghâlân kraton Tarumanagara sè asalla ḍâri abad ka-5 M. | currency = emmas bân sakala }} '''Tarumanagara''' otabâ Kraton Taruma ([[bhâsa Sondhâ]]: ᮒᮛᮥᮙᮔᮌᮛ) panèka sala sèttong kraton palèng towa kapèng ḍuwâ' è Nusantara sa'amponna [[Kraton Kutai Martapura|Kraton Kutai]], sè aningghâllaghi bhuktè ''arkeologi''. Kraton Tarumanagara panèka toma kobâsa è wilajâ bârâ' ḍâri polo [[Jhâbâ]] è abad ka-5 kantos abad ka-7 M. Bhuktè palèng towa paningghâlân arkeologi ḍâri Kraton Tarumanagara panèka prasasti Ciaruteun, aropa bâto parèngeddhân ḍâri abad ka-5 M sè ètandhâi kalabân bh`angon dhâpa'an soko rato [[Purnawarman]].<ref>{{Cite web |last=https://disbudpar.bogorkab.go.id |title=PRASASTI CIARUTEUN |url=https://disbudpar.bogorkab.go.id/berita/Seputar-OPD/prasasti-ciaruteun |access-date=2026-01-11 |website=Dinas Kebudayaan dan Pariwisata Kabupaten Bogor |language=en}}</ref><ref>{{Cite book |last=Soekmono |first=R. |url=https://books.google.co.id/books/about/Pengantar_sejarah_kebudayaan_Indonesia.html?id=N84bAAAAMAAJ&redir_esc=y |title=Pengantar sejarah kebudayaan Indonesia |date=1973 |publisher=Yayasan Kanisius |language=id}}</ref> == Prasasti Ciaruteun == Kennengngan Prasati Ciaruteun è dhisa Ciaruteun, kacamatan Cibungbulang, kabupatèn Bogor ètemmowaghi è alèran Ci Aruteun, Bogor taon 1863, prasasti panèka bâḍâ abâgi dhâddhi ḍuwâ' bâgiyân. Èngghi ka'ḍinto Prasti Ciaruteun A sè atolès kalabân [[Bhâsa Sanskerta|bhâsa Sanskèrta]] bân aksara Pallawa bâḍâ empa' bhâris puisi Inḍia (''irama anustubh''), bân Prasasti Ciaruteun B èssè ghurisân dhâpa' soko bân ''motif'' bâ-labâ sè ghi' ta' èkataowè ma'nana, mènorot jhuru koncèna Prasasti Ciaruteun, lambang sè bâḍâ è prasti Ciaruteun B nandhâ'aghi Rato Purnawarman sè ghâghâ bân akobâsa. Prasasti panèka anḍi' okoran 2 mèter kalabân tèngghi 1,5 mèter, berrâ'ân 8 ton. Allè aksara ḍâri prasati Ciaruteun ka'ḍinto: * Bhâris kapèng sèttong: ''vikkrantasya vanipateh'' * Bhâris kapèng ḍuwâ': ''srimatah purnnavarmmanah'' * Bhâris kapèng tello': ''tarumanagarendrasya'' * Bhâris kapèng empa': ''visnor-iva padadvayam'' <blockquote>Artèna: ''Panèka sapasang (dhâpa') soko, sè akadhi (dhâpa' soko) Ḍewa Wisnu, panèka dhâpa' sokona sè moljâ Purnawarman, rato è naghârâ Taruma (Tarumanagara), rato sè ghâghâ è dhunnya.<ref>{{Cite web |last=Qadarsih |first=Maharani |date=2023-11-27 |others=Didin Ansori |title=Laeflet 7 Prasati Kerajaan Tarumanegara |url=https://repositori.kemendikdasmen.go.id/25742/ |access-date=2026-01-11 |website=Laeflet 7 Prasati Kerajaan Tarumanegara |language=id |archive-date=2026-01-21 |archive-url=https://web.archive.org/web/20260121155129/https://repositori.kemendikdasmen.go.id/25742/ |url-status=dead }}</ref>''</blockquote> == Sombher == lhj0r53pfnke599ga1y6t5s190q0r0k Safzen Noerdin 0 17065 64888 63903 2026-07-10T05:00:23Z InternetArchiveBot 639 Rescuing 1 sources and tagging 0 as dead.) #IABot (v2.0.9.5 64888 wikitext text/x-wiki {{Infobox orang}} Safzen Noerdin<ref>{{Cite web |title=Safzen Noerdin, TNI Angkatan Laut {{!}} Ensiklopedi Tokoh Indonesia |url=http://www.tokohindonesia.com/ensiklopedi/s/safzen-noerdin/index.shtml |archive-url=https://web.archive.org/web/20060112090018/http://www.tokohindonesia.com/ensiklopedi/s/safzen-noerdin/index.shtml |archive-date=2006-01-12 |access-date=2026-01-11 |website=www.tokohindonesia.com}}</ref> (lahèr 25 Jânuwari 1952) panèka ''purnawirawan TNI-AL'' sè palèng akhèr ajabat mènangka ''Inspèktur Jènderal Departemèn Pertahanan (Irjèn Dephan).''<ref>{{Cite web |last=Gie |first=Yap Hong |date=2008-04-25 |title=[Marinir] MAYJEN TNI (MAR) SAFZEN NOERDIN, S.IP. JABAT IRJEN DEPHAN |url=http://www.polarhome.com/pipermail/marinir/2008-April/001442.html |access-date=2026-01-11 |archive-date=2021-01-16 |archive-url=https://web.archive.org/web/20210116124151/http://www.polarhome.com/pipermail/marinir/2008-April/001442.html |url-status=dead }}</ref> Safzen panèka lolosân palèng saè ḍâri ''Akademi Angkatan Laut (AAL)'' angkadhân sè kapèng-XX/taon 1975. Jabadhân palèng akhèr ḍâri jènderal bintang tèllo' panèka ''Irjenal.'' Safzen Noerdin perna ajabât ''Komisaris Utama PT. Pindad.'' Abâ'na samangkèn ajabât mènangka ''Duta Besar RI'' ka'angghuy Ira' sajjhek bulân Maret.<ref>{{Cite news |last=dotMe |first=Lintas |title=Putra Aceh dilantik jadi Duta Besar Untuk Irak - inilahaceh.com |url=http://www.lintas.me/news/politik-hukum/inilahaceh.com/putra-aceh-dilantik-jadi-duta-besar-untuk-irak |access-date=2026-01-11 |work=Lintas.me |language=id |archive-date=2014-04-13 |archive-url=https://web.archive.org/web/20140413155116/http://www.lintas.me/news/politik-hukum/inilahaceh.com/putra-aceh-dilantik-jadi-duta-besar-untuk-irak |url-status=dead }}</ref><ref>{{Cite web |title={{!}} LIPUTAN INDONESIA NEWS |url=https://liputanindonesianews.com/detail/4142/letjen-tni-mar-purn-safzen-noerdin-luncurkan-buku-harihari-rawan-di-irak.html |archive-url=https://web.archive.org/web/20210120153830/https://liputanindonesianews.com/detail/4142/letjen-tni-mar-purn-safzen-noerdin-luncurkan-buku-harihari-rawan-di-irak.html |archive-date=2021-01-20 |access-date=2026-01-11 |website={{!}} LIPUTAN INDONESIA NEWS |language=en-US |url-status=live }}</ref> == Riwayât Panḍhiḍhighân == * ''AAL (1975)'' * ''Dikko Marinir'' * ''Diklapa-I Marinir (1977/1978)'' * ''Sustafpur TNI AD (1987)'' * ''Sus Dan Yon/Inf TNI AD (1989)'' * ''Seskoal'' Angkadhân''-29 (1991/1992)'' * ''Sesko ABRI'' Angkadhân''-23 (1996/1997)'' * ''Lemhannas KRA XXXIII (2000)'' == Riwayât jabadhân == * ''Komandan Peleton (1976)'' * ''Komandan Kompi (1983)'' * ''Komandan Batalyon Infanteri 6/Marinir (1993—1995)'' * ''Komandan Satuan Marinir Armada Timur (1997)'' * ''Asisten Dankormar Bidang Operasi (1998—1999)'' * ''Komandan Brigif-2 Marinir (1999—2001)'' * ''Wakil Gubernur AAL (2001—2002)'' * ''Kaskormar (2002—2004)'' * ''Dankodikal (2004—2005)'' * ''Dankormar<ref>{{Cite web |last=PUSPEN TNI, Puspen Mabes TNI |title=PERGANTIAN JABATAN KOMANDAN KORPS MARINIR {{!}} WEBSITE TENTARA NASIONAL INDONESIA |url=https://tni.mil.id/view-5799-pergantian-jabatan-komandan-korps-marinir.html |archive-url=https://web.archive.org/web/20230211000702/https://tni.mil.id/view-5799-pergantian-jabatan-komandan-korps-marinir.html |archive-date=2023-02-11 |access-date=2026-01-11 |website=www.tni.mil.id |language=en |url-status=live }}</ref> (2005—2007)'' * ''Irjenal (2007—2008)'' * ''Irjen Kemhan (2008—2010)'' == Sombher == b2mdvs3tz7l2tovx1oa2zmeb236t9l0 Wuspo Lukito 0 17083 64892 57778 2026-07-10T06:42:51Z InternetArchiveBot 639 Rescuing 1 sources and tagging 0 as dead.) #IABot (v2.0.9.5 64892 wikitext text/x-wiki {{Infobox orang}} Wuspo Lukito (lahèr 29 Sèptèmber 1961) panèka ''purnawirawan perwira'' tèngghi TNI-AL sè palèng akhèr) ajabat mènangka Bakkèl Kopala ''Staf TNI Angkatan Laut.'' Wuspo panèka ''alumnus Akademi Angkatan Laut (AAL)'' angkadhân sè kapèng-XXXI/taon 1986. Jabadhân palèng akhèr ḍâri jènderal bintang tèllo' panèka ''Gubernur Akademi Angkatan Laut''. == Panḍhiḍhighân Militer == * ''AAL (1986)'' * ''Suspaja (1986)'' * ''Sus Mantak (1989)'' * ''Diklapa-1 (1990)'' * ''Sus Pariksa (1992)'' * ''Diklapa II (1993)'' * ''Dikualsus Sishanudnas (1997)'' * ''Seskoal'' angkadhân sè kapèng-37 (1999) * ''Sus Opsgab TNI (2005)'' * ''Sesko TNI'' angkadhân sè kapèng-36 (2009) * ''Lemhannas'' angkadhân XLVIII (2012) * S1 Èkonomi * S2 Èkonomi == Lampa’an Militèr == * ''As Padiv Nagi KRI Yohannes 332 (1985)'' * ''Padiv Kom KRI Yohannes 332 (1986)'' * ''Padiv Kom KRI Martadinata 342 (1988)'' * ''Padiv Kom KRI Fatahillah 361 (1991)'' * ''Kadep Ops KRI Wiratno 379 (1993)'' * ''Palaksa KRI Wiratno 379 (1996)'' * ''Komandan KRI Sutanto 377 (1998)'' * ''Komandan KRI Memet Sastrawiria 380 (2001)'' * ''Komandan KRI Keris 624 (2002)'' * ''Komandan KRI Malahayati 362 (2002)'' * ''Komandan KRI Oswald Siahaan 354 (2004)'' * ''Komandan Lanal Kendari (2005)'' * ''Komandan Satfib Koarmatim (2006)'' * ''Dansat Puslat Kaprang Kolatarmatim (2007)'' * ''Dansatlinlamil Sorbhâjâ (2008)'' * ''Dankolat Koarmabar (2009)<ref>{{Cite web |title=Harian Pelita |url=http://www.pelita.or.id/cetakartikel.php?id=87363 |archive-url=https://web.archive.org/web/20161130190342/http://www.pelita.or.id/cetakartikel.php?id=87363 |archive-date=2016-11-30 |access-date=2026-01-11 |website=www.pelita.or.id}}</ref>'' * ''Dosen Sesko TNI (2010)'' * ''Paban II Ops Sopsal Mabesal (2011)'' * ''Danguskamlatim (2012)<ref>{{Cite news |last=Ali |first=Achmad |date=2013-01-08 |title=Kolonel Laut (P) Wuspo Lukito Jabat Komandan Guskamlatim - LensaIndonesia.com |url=http://www.lensaindonesia.com/2013/01/08/kolonel-laut-p-wuspo-lukito-jabat-komandan-guskamlatim.html |access-date=2026-01-11 |work=LensaIndonesia.com |language=en-US |archive-date=2016-11-30 |archive-url=https://web.archive.org/web/20161130185216/http://www.lensaindonesia.com/2013/01/08/kolonel-laut-p-wuspo-lukito-jabat-komandan-guskamlatim.html |url-status=dead }}</ref>'' * ''Kapus Kooropskamla Bakamla (2014)'' * ''Staf Khusus Kasal (2016)<ref>{{Cite web |url=http://www.beritasatu.com/nasional/370315-tni-lakukan-mutasi-besarbesaran.html |title="TNI Lakukan Mutasi Besar-Besaran" |access-date=2026-01-12 |archive-date=2020-08-04 |archive-url=https://web.archive.org/web/20200804003815/https://www.beritasatu.com/nasional/370315-tni-lakukan-mutasi-besarbesaran.html |url-status=dead }}</ref>'' * ''Gubernur AAL (2016)<ref>{{Cite web |url=http://aal.ac.id/2016/12/22/laksma-tni-wuspo-lukito-s-e-m-m-gubernur-aal-yang-baru/ |title="LAKSMA TNI WUSPO LUKITO, S.E., M.M. GUBERNUR AAL YANG BARU" |access-date=2026-01-12 |archive-date=2017-04-26 |archive-url=https://web.archive.org/web/20170426043256/http://aal.ac.id/2016/12/22/laksma-tni-wuspo-lukito-s-e-m-m-gubernur-aal-yang-baru/ |dead-url=yes }}</ref>'' * ''Wakasal (2018)'' * ''Pati Mabesal'' (neng ḍâlem rangka pansiun) (2019)<ref>{{Cite web |last=PUSPEN TNI, Puspen Mabes TNI |title=TNI Mutasi dan Promosi Jabatan 69 Perwira Tinggi {{!}} WEBSITE TENTARA NASIONAL INDONESIA |url=https://tni.mil.id/view-160395-tni-mutasi-dan-promosi-jabatan-69-perwira-tinggi.html |archive-url=https://web.archive.org/web/20210829035533/https://tni.mil.id/view-160395-tni-mutasi-dan-promosi-jabatan-69-perwira-tinggi.html |archive-date=2021-08-29 |access-date=2026-01-11 |website=tni.mil.id |language=en |url-status=live }}</ref> == Sombher == 5clerlyl99mcnnu262e5xeh5ldc9hov Yuhastihar 0 17191 64893 61981 2026-07-10T06:51:36Z InternetArchiveBot 639 Rescuing 1 sources and tagging 0 as dead.) #IABot (v2.0.9.5 64893 wikitext text/x-wiki {{Infobox orang}} Yuhastihar ''gelar'' Datuak Indo Mangkuto (lahèr 30 Juni 1960)<ref>{{Cite web |last=KBR |title=KBR :: KENALI CALEG - LAKSDA TNI (Purn) Ir. YUHASTIHAR, M.M. (Daerah Pemilihan Jawa Timur I) |url=https://kbr.id/kenalicaleg/2019/caleg/laksda-tni--purn--ir--yuhastihar--m-m/2197.html |access-date=2026-01-13 |website=kbr.id |language=id |archive-date=2023-07-24 |archive-url=https://web.archive.org/web/20230724082134/https://kbr.id/kenalicaleg/2019/caleg/laksda-tni--purn--ir--yuhastihar--m-m/2197.html |url-status=dead }}</ref> panèka ''purnawirawan TNI-AL'' sè palèng akhèr ajabbat mènangka ''Deputi Pemantapan Nilai-Nilai Kebangsaan Lembaga Ketahanan Nasional (Lemhannas) RI.'' Yuhastihar panèka ''alumnus Akademi Angkatan Laut (AAL)'' angkadhân sè kapèng-XXVIII/taon 1983.<ref>{{Cite web |title=Akademi Angkatan Laut |url=https://www.aal.ac.id/alumniaal/37/ANGKATAN-XXVIII/ |access-date=2026-01-13 |website=www.aal.ac.id |archive-date=2023-12-23 |archive-url=https://web.archive.org/web/20231223104110/https://www.aal.ac.id/alumniaal/37/ANGKATAN-XXVIII/ |url-status=dead }}</ref> Jabadhân palèng akhèr ḍâri jènderal bintang ḍuwâ' panèka ''Kadiskomlekal''. Salaèn ḍâri ka'dinto, abâ'na jhughân pottrâ dâèrah Somattra Bârâ' sè asalla ḍâri Balimbing, Rambatan, Tanah Datar.<ref>{{Cite web |last=novri |title=K3B JAYA |url=https://k3bjaya.wordpress.com/ |access-date=2026-01-13 |website=K3B JAYA |language=en}}</ref><ref>{{Cite web |last=metro |first=kabar |title=Menuju DPR RI Bersama PDI Perjuangan, Laksda TNI (Purna) Yuhastihar Silaturahmi dengan Ketua DPC PDI Perjuangan Padang Pariaman - http://kabarmetro.id/ |url=https://kabarmetro.id/menuju-dpr-ri-bersama-pdi-perjuangan-laksda-tni-purna-yuhastihar-silaturahmi-dengan-ketua-dpc-pdi-perjuangan-padang-pariaman/ |archive-url=https://web.archive.org/web/20251126110527/https://kabarmetro.id/menuju-dpr-ri-bersama-pdi-perjuangan-laksda-tni-purna-yuhastihar-silaturahmi-dengan-ketua-dpc-pdi-perjuangan-padang-pariaman/ |archive-date=2025-11-26 |access-date=2026-01-13 |website=kabarmetro.id |language=id |url-status=live }}</ref> == Karièr == Yuhastihar èparèngè amânat sareng ''PDIP'' mènangka ''Caleg DPR RI'' kaangghuy Dapil Jhâbâ Tèmor I (Sorbhâjâ – Sidoarjo) kalabân nomor urut 3 neng pèmèlèyan omom sè èlakonè areng-bhâreng è tangghâl 17 April 2019.<ref>{{Cite web |title=Kunjungi TribunJatim, Cak Yuhas Beber Alasan PDIP Rekrut Banyak Purnawirawan Jenderal TNI Maju Caleg |url=https://jatim.tribunnews.com/2018/10/17/kunjungi-tribunjatim-cak-yuhas-beber-alasan-pdip-rekrut-banyak-purnawirawan-jenderal-tni-maju-caleg |access-date=2026-01-13 |website=Tribunjatim.com |language=id-ID}}</ref> Lolosân palèng saè ''Akabri Laut'' 1983 ka'dinto mare'è panḍhiḍhighân S1 Jurusân Tèknik Èlèktro STTAL 1994 bân Sèskoal 1997, lolos ''Lemhannas'' 2012, lolos S2 neng Unkris Jakarta, bân lolos S3 Èlmu Manajemèn neng Universitas Negeri Jakarta 2022.<ref>{{Cite web |last=redaksi |date=2019-03-08 |title=Kedatangan Yuhastihar ke Surabaya TV Di Terima Penuh Kekeluargaan |url=https://nawacita.co/index.php/2019/03/08/kedatangan-yuhastihar-ke-surabaya-tv-di-terima-penuh-kekeluargaan/ |access-date=2026-01-13 |website=Nawacita |language=en-US}}</ref> Tèsissâ anyama "Èvaluasi Program Pemantabhân Nèlai-Nèlai ''Kebangsaan Lembaga Ketahanan Nasional'' Rèpublik Indonèsia ''(LEMHANNAS RI)''". == Sombher == d7sj0yofw2p87m5c7z9uc5cidtn6tae Adinia Wirasti 0 17248 64875 57018 2026-07-10T00:03:43Z InternetArchiveBot 639 Rescuing 1 sources and tagging 0 as dead.) #IABot (v2.0.9.5 64875 wikitext text/x-wiki {{Infobox orang}} '''Aḍinia Wirasti Wijayanto''' (lahèr è tangghâl 19 Jânuwari 1987) panèka sala sèttong aktris bân moḍel asal Inḍonesia. Aḍinia panèka ale'na aktris bân panyanyi Inḍonesia Sara Wijayanto. Aḍinia panèka aktris palèng ngoḍâ è ḍâlem jhâjhârbâ'ân filem Inḍonesia sè mennang piala Citra kalabân ''Aktris Penḍukung Terbaik'' è omorra 18 taon è taon 2005 neng è filem ''Tentang'' ''Ḍia''. == Kaoḍi'ân Awwâl == Aḍinia Wirasti katoronan Jhâbâ. E bâkto ghi' kènè', èkennalaghi ḍâ' kabhudhâjâ'an Jhâbâ, akadhi bâjâng (wayang), sareng embana.<ref>{{Cite web |last=Bhisma |first=Mahardian Prawira |title=Bakat Seni Sudah Mengalir Sejak Adinia Wirasti Kecil |url=https://hot.detik.com/celeb-of-the-month/d-3498420/bakat-seni-sudah-mengalir-sejak-adinia-wirasti-kecil |access-date=2026-01-13 |website=detikhot |language=id-ID}}</ref> == kalakoan == Aḍinia molaè alako dhâddhi moḍel ghâbây majalah rèmaja. Ḍebut aktingnga è taon 2002 ''Aḍa Apa ḍengan Cinta'' dhâddhi Karmen. Aḍinia mennang piala Citra untuk Aktris Penḍukung Terbaik è Festival Film Inḍonesia 2005 polana peranna è ''Tentang Dia''.<ref>{{Cite web |last=Copied! |first=Ulin Share Link |date=2007-11-15 |title='TENTANG DIA', Ketulusan Cinta dan Persahabatan |url=https://www.kapanlagi.com/film/indonesia/tentang-dia-ketulusan-cinta-dan-persahabatan.html |access-date=2026-01-13 |website=KapanLagi.com |language=id}}</ref> è filem, Aḍinia aperan Ruḍy. Aḍinia jhughân narèma Pangarghâ'ân è Festival Film Banḍung ghâbây filem sè paḍâ.<ref>{{Cite web |title=Gatra.Com |url=http://www.gatra.com/2005-02-13/artikel.php?pil=23&id=52955 |archive-url=https://web.archive.org/web/20090704114951/http://www.gatra.com/2005-02-13/artikel.php?pil=23&id=52955 |archive-date=2009-07-04 |access-date=2026-01-13 |website=www.gatra.com}}</ref> È taon 2006, Aḍinia abhuktèaghi polè ka'ahlian aktingnga è filem ''Ḍunia Mereka'' bân ''Ruang''. E bulân Maret 2007, Aḍinia abâli è film ''3 Hari untuk Selamanya'' sè èsutraḍarai bân Riri Riza.<ref>{{Cite web |last=Copied! |first=Yunita Rachmawati Share Link |date=2007-05-30 |title='3 HARI UNTUK SELAMANYA' Disensor, Adinia Wirasti Pasrah |url=https://www.kapanlagi.com/showbiz/film/indonesia/3-hari-untuk-selamanya-disensor-adinia-wirasti-pasrah-v1osoi4.html |access-date=2026-01-13 |website=KapanLagi.com |language=id}}</ref><ref>{{Cite web |title=Adinia Wirasti Sulit Cium Bibir Nicholas Saputra |url=https://hot.detik.com/movie/d-781769/adinia-wirasti-sulit-cium-bibir-nicholas-saputra |access-date=2026-01-13 |website=detikhot |language=id-ID}}</ref> È taon 2013, Aḍinia mennang polè Piala Citra dhâddhi Aktris Otama Terbaik è Festival Film Inḍonesia 2013 polana peranna è ''Laura & Marsha''.<ref>{{Cite web |last=Liputan6.com |date=2013-03-31 |title=Sstt.. Adinia Wirasti Tampil Topless di 'Laura &amp; Marsha' |url=https://www.liputan6.com/showbiz/read/548935/sstt-adinia-wirasti-tampil-topless-di-laura-amp-marsha |access-date=2026-01-13 |website=liputan6.com |language=id}}</ref><ref>{{Cite web |url=https://www.beritasatu.com/hiburan/154339/reza-rahardian-dan-adinia-wirasti-berjaya-di-piala-citra-ffi-2013 |title=Archive copy |access-date=2026-01-13 |archive-date=2023-06-30 |archive-url=https://web.archive.org/web/20230630093536/https://www.beritasatu.com/hiburan/154339/reza-rahardian-dan-adinia-wirasti-berjaya-di-piala-citra-ffi-2013 |url-status=dead }}</ref> == Sombher == <references /> gxcx6jbzee31zululy9avona8y1yzgu Enggartiasto Lukita 0 17574 64877 58453 2026-07-10T01:28:36Z InternetArchiveBot 639 Rescuing 1 sources and tagging 0 as dead.) #IABot (v2.0.9.5 64877 wikitext text/x-wiki Enggartiasto Lukita (lahèr 12 Oktober 1951) panèka politikus bân pangusaha Bhângsa Indonèsia sè toman dhâddhi mantan Menteri Pardhâghângan sejjhâk 27 Juli 2016 kantos 20 Oktober 2019. Nyamana èkennal luwas bâkto dhâddhi angghuta DPR RI dâri Partai Golkar (periode 1999–2004, 2004–2009, bân 2009–2014). Tapè sejjhâk taon 2013 Enggartiasto Lukita dhâddhi bâgiyân dâri partai anyar, panèka Partai NasDem. Bân è Pèlèyan Umum 2014, kapèlè polè mènangka angghuta DPR RI. Enggartiasto Lukita ècatet toman negghu' jabadhân mènangka Katua Umum Real Estate Indonèsia (REI), periode 1992-1995.<ref>http://profil.merdeka.com/indonesia/e/enggartiasto-lukita/ {{Webarchive|url=https://web.archive.org/web/20160917171517/http://profil.merdeka.com//indonesia/e/enggartiasto-lukita/ |date=2016-09-17 }} Èaksès tangghâl 7 April 2015</ref><ref>http://www.beritasatu.com/nasional/207936-enggartiasto-lukita-pengusaha-properti-yang-inginkan-perubahan.html {{Webarchive|url=https://web.archive.org/web/20180824135015/http://www.beritasatu.com/nasional/207936-enggartiasto-lukita-pengusaha-properti-yang-inginkan-perubahan.html |date=2018-08-24 }}, Èaksès tangghâl 7 April 2015</ref><ref>http://www.tokohindonesia.com/biografi/article/286-direktori/1144-pengusaha-yang-aktif-berorganisasi {{Webarchive|url=https://web.archive.org/web/20160308042256/http://www.tokohindonesia.com/biografi/article/286-direktori/1144-pengusaha-yang-aktif-berorganisasi |date=2016-03-08 }}, Èarsipaghi 2016-03-08 è Wayback Machine., Èaksès 7 April 2015</ref> Salèrana jhughân ajabat mènangka Katua Ikatan Alumni Univèrsitas Pendidikan Indonèsia (IKA UPI) duwâ' periode abiddhâ.<ref>"DWITUNGGAL ENGGAR-TETEN KEMBALI PIMPIN IKA UPI". Èarsipaghi ḍâri vèrsi aslina tangghâl 2018-01-05. Èaksès tangghâl 2018-01-04.</ref> Salèrana èyangka' mènangka Menteri Pardhâghângan bâkto reshuffle Kabinèt Karjâ Jilid II È tangghâl 27 Juli 2016 aghentè'è Thomas Trikasih Lembong sè èpinda dhâddhi Kapala Koordinasi Pananemman Modal.<ref>http://news.detik.com/berita/3262256/ini-daftar-lengkap-reshuffle-kabinet-kerja-jilid-ii Èaksès tangghâl 27 Juli 2016</ref> == Kaodi'ân == Enggartiasto Lukita lahèr è Cirebon, Jhâbâ Bârâ' tangghâl 12 Oktober 1951. Mamarè pendidighânna è Fakultas Èlmo Pendidikan Sosial, Univèrsitas Pendidikan Indonèsia. Sejjhâk è omor ngodâ, ampon akrab dâ' dhunnya  organisasi. Salèrana ècatet toman mimpin pan-bârâmpan organisasi sa-nasional, akadhi Real Estate Indonesia (REI). Salèrana ngawwâli karirra è bidang politik bâkto dhâddhi bâgiyân dâri Partai Golongan Karya mènangka bekkèl  Bendahara Umum. Lèbât partai ka'dinto polè salèrana èpèlè mènangka angghuta DPR RI ghâbây tello' periode, dâri taon 2000 kantos 2013. È taon 2013, Enggar apinda afiliasi ka Partai NasDem bân nyorot dâri jabadhânna mènangka angghuta DPR. È partai ka'dinto, Enggar èkaparcajâ ajabat mènangka Katua  Bidang Hubungan Lowar Naghârâ. È dhunnya usaha, Enggartiasto Lukita fokus è bidang properti bân ajabat pan-bârâmpan perusahaan akadhi mènangka Komisaris Otama PT Unicora Aghung, Dirut PT Kartika Karisma Indah, Dirut PT Kemang Pratama, Dirut PT Bangun Tjipta Pratama, bân Dirèktur PT Supradinakarya Multijaya (1994-2004). == Karir == * Komisaris Otama PT Unicora Aghung * Dirut PT Kartika Karisma Indah * Dirut PT Kemang Pratama * Dirut PT Bangun Tjipta Pratama * Dirèktur PT Supradinakarya Multijaya, 1994–2004 * Komisaris Otama PT Bersatu Digital Indonèsia, 2022–samangkèn == Sombher-sombher == <references /> 4gwdrt0zjbp9m18axat9q68zla7yrwq Rudiantara 0 17634 64886 58183 2026-07-10T04:55:03Z InternetArchiveBot 639 Rescuing 1 sources and tagging 0 as dead.) #IABot (v2.0.9.5 64886 wikitext text/x-wiki Rudiantara (lahèr 3 Mèi 1959<ref>{{Cite web |url=http://www.beritasatu.com/nasional/220302-profil-singkat-menteri-komunikasi-dan-informatika-rudiantara.html |title=Archive copy |access-date=2026-01-16 |archive-date=2018-08-09 |archive-url=https://web.archive.org/web/20180809121753/http://www.beritasatu.com/nasional/220302-profil-singkat-menteri-komunikasi-dan-informatika-rudiantara.html |url-status=dead }}</ref>) panèka Mantan Menteri Komunikasi bân Digital Indonèsia Kalèma' è Kabinèt Karjâ (2014–2019). Salèrana panèka profèsional è bidang Tèlèkomunikasi bân toman akarir è Indosat, Telkomsel, Excelcomindo (samangkèn XL Axiata), bân Telkom.<ref>http://tekno.kompas.com/read/2014/10/26/17383417/Rudiantara.Menkominfo.di.Kabinet.Kerja</ref> Salèrana jhughân toman alako è PT PLN (Persero) mènangka bekkèl Dirèktur Otama. Bâkto èyangka' dhâddhi menteri, salèrana ajabat mènangka angghuta komisaris è Indosat. == Pendidikan == Salèrana amolaè Pendidikan Tèngghi è Univèrsitas Padjadjaran jurusan Statistika bân ollè gellar sarjana taon 1984. Salèrana alanjutaghi ka IPPM (Institut Pendidikan bân Pambina'an Manajemen) sè samangkèn anyama  PPM School of Management, bân ollè gellar MBA taon 1988.<ref>http://investing.businessweek.com/research/stocks/private/person.asp?personId=25054815&privcapId=6296392, Èaksès dâri situs berita Businessweek 26 Oktober 2014</ref> == Karir == Salèrana amolaè karir è taon 1996 è Indosat mènangka General Manager Business Development. Salèrana jhughân toman dhâddhi  Chief Operating Officer PT Tèlèkomindo Primabhakti sejjhâk 1996 bân ollè pan-bârâmpan jabadhân èksekutif 11 taon abiddhâ è Indosat bân Telkomsel kantos 2006. Salèrana ajabat mènangka bekkèl Prèsidèn Dirèktur PT Semèn Gresik (Persero), Prèsidèn Dirèktur bân CEO PT Bukit Asam Transpacific Railways tor PT Rajawali Asia Resources. Salèrana toman dhâddhi bekkèl Prèsidèn Dirèktur PT Perusahaan Listrik Naghârâ (Persero) sejjhâk 2008 bân dhâddhi direkturra, Dirèktur Hubungan Korporat PT XL Axiata Tbk dâri Maret 2005 kantos 2008 tor dhâddhi dirèkturra. Bân mènangka Dirèktur pajhuwâlân bân marketing ghâbây Solusi Bisnis bulân Juni 2003. Salèrana jhughân toman dhâddhi bekkèl Prèsidèn Dirèktur PT Semèn Indonèsia (Persero), Tbk bân Semèn Gresik Persero, jhughân mènangka Dirèktur. Bâkto è PLN, salèrana dhâddhi kasohor saellana noro' bâgiyân dâri nyarè pandanaan perusahaan khusussa ènjeman ghâbây proyèk pembangkit listrik 10 èbuh mègawatt. Saellana, salèrana nyorot polana arassa ampon mamarè tugas profèsional sè èberri'i bân patabârân lèbur laènna. Polana èman kalabân bakat sè èka'anḍi', pamarènta usaha ghâbây aberri' salèrana jabadhân è Indosat.<ref>http://finance.detik.com/read/2010/01/22/140944/1284007/4/pemerintah-tak-mau-rudiantara-dibajak-swasta Èaksès situs berita Detik 26 Agustus 2014</ref> Tangghâl 17 Sèptèmber 2012, salèrana èyangka' dhâddhi Komisaris.<ref>http://economy.okezone.com/read/2012/09/17/278/691132/indosat-ganti-dirut-angkat-rudiantara-jadi-komisaris, Èaksès situs Berita Okezone 26 Oktober 2014</ref> Tangghâl 27 Sèptèmber 2024, Rudiantara èyangka' mènangka Katua Pangurus Yayasan Pangembhângan Tata Kelola Indonèsia (YPTKI) ghâbây aghentè'è Sigit Pramono.<ref>"Serah Terima Jabatan Ketua Pengurus YPTKI Senin, 2 September 2024 Sumba Room, Hotel Borobudur, Jakarta". ''IICD''. 9 September 2024. Èaksès tangghâl 15 September 2025.</ref> == Pangangka'an mènangka menteri == Rudiantara makarè nyama-nyama orèng laènna akadhi Ahli Èkonomi Digital bân Tèlèkomunikasi Heru Sutadi sè jhughân mantan angghuta Bhâdhân Règulasi Tèlèkomunikasi Indonèsia (BRTI), Niken Widiastuti, Dirut RRI, Richardus Eko Indrajit, Katua APTIKOM, Gatot S. Dewa Broto, Dèputi Bidang Harmonisasi bân Kamitraan Kemenpora, Mantan Humas Kemenkominfo bân Onno W. Purbo, Akademisi tor Praktisi TI.<ref>http://www.tribunnews.com/nasional/2014/10/26/profil-menkominfo-rudiantara, Èaksès situs berita TribunNews 26 Oktober 2014</ref><ref>http://news.okezone.com/read/2014/12/02/17/1073528/rudiantara</ref> == Sombher == <references /> n2d714l26m44yf85880uuy18ipzm6u7 Aldi Taher 0 17635 64873 58189 2026-07-09T13:07:30Z ~2026-38768-75 5337 /* */ 64873 wikitext text/x-wiki https://myaccount.google.com/?hl=en&utm_source=OGB&utm_medium=act&gar=WzJd == Kaoḍi'ân awwâlna == Aldi Taher èlahèraghi kalabân asma Rahmat Aldiansyah, mènangka dhâddhi pottra sè nomer tello' ḍâri ennem satarètanan sè orèng seppona katoronan Minangkabau, èngghi panèka Ramlis Saputra Sidi Rusli Taher sareng Rosita Bagindo Oedin, saèngghâ salèrana tamaso' kompoy ḍâri orèng sè maddhek Universitas Jayabaya, èngghi panèka Moeslim Taher.<ref>{{Cite news |title=Aldi Taher Bangga Kisah Kakek-Neneknya Dijadikan Buku |url=https://hot.detik.com/celeb/2287662/aldi-taher-bangga-kisah-kakek-neneknya-dijadikan-buku |access-date=2026-01-16 |work=detikhot}}</ref> == Karèr == Aldi amolaè akarèr è ḍunia hiburân kalabân noro' lomba moḍèl sè èlaksanaaghi sareng majalah Anèka Yess! è taon 2001. Salèrana molaè èkennal sareng orèng bânynya' saamponna dhâddhi moḍèl kaangghuy vidèo klip dari grup musik Ada Band kalabân juḍul laghu "[[Manossa]] sè Bhudhu". Aldi jhughân dhâddhi finalis è lomba MTV VJ Hunt. Salèrana jhughân toman aghâbây grup musik sè ènyamaè Radio asareng [[Raffi Ahmad|Raffi]] [[Raffi Ahmad|Ahmad]], Irwansyah, Indra Perdana Sinaga, Mende, sareng Okin, tor jhughân aghâbây grup musik duo sè ènyamaè Kingkong - sè toman makalowar sèttong album sè ajuḍul Nyarè Orèng Binè' Laèn è taon 20008.<ref>Puteri Avantika. "[https://www.idntimes.com/hype/entertainment/aldi-taher-raffi-ahmad-dan-irwansyah-c1c2-01-nzrkj-stmc7x Pernah Satu Band, 9 Momen Reuni Aldi Taher, Raffi Ahmad, dan Irwansyah"] . IDN Times. 2023-02-17. Aksès 2026-01-16. </ref> Salèrana jhughân aghâbây laghu kaangghuy filem Leak asareng Nadia Vega. È taon 2013 sampè' 2016, salèrana jhughân toman agabung ḍâlem grup vokal bâgiyân Lakè'an sè anyama Trio Ubur Ubur, sè èpaddhek karana sèrial tèlèvisi Emak Ijah Terro Èntara Ka Mekka (2013 - 2015).<ref>{{Cite web |last=Santi |title=Lama Tak Tampil di TV, Apa Kabar Trio Ubur Ubur? |url=https://www.insertlive.com/hot-gossip/20200207190202-7-80039/lama-tak-tampil-di-tv-apa-kabar-trio-ubur-ubur |access-date=2026-01-16 |website=hot-gossip |language=id-ID}}</ref> È taon 2022, Aldi kalonta polè karana anyanyè laghu "[[Lesti Kejora|Lesti]] Sayang [[Rizky Billar|Rizky]] [[Rizky Billar|Billar]]".<ref>Surya Hadiansyah. "[https://www.liputan6.com/showbiz/read/5095820/aldi-taher-ciptakan-lagu-untuk-dukung-lesti-kejora-dan-rizky-billar-berdamai Aldi Taher Ciptakan Lagu untuk Dukung Lesti Kejora dan Rizky Billar Berdamai"] . Liputan 6. 2022-10-13. Èyaksès 2026-01-16.</ref> == Sombher == <references /> o0a3cqkrpmuajtr3uqit173b92ttytn Safaruddin 0 18432 64887 60463 2026-07-10T04:58:37Z InternetArchiveBot 639 Rescuing 1 sources and tagging 0 as dead.) #IABot (v2.0.9.5 64887 wikitext text/x-wiki {{Infobox orang}} Irjen. Pol. (Purn.) Drs. '''Safaruddin''', M.I.Kom (lahèr 10 Fèbruwari 1960) panèka pènsiunan perwira tèngghi ''Polri'' bân ''politikus'' Inḍonèsia. Samangkèn, abâi'na dhâddhi Angghuta ''DPR-RI'' molaè taon 2019 sè abakkèlè dâèra pèlèyan Kalimantan Tèmor. Sabellunna, abâ'na dhâddhi ''Kapolda'' Kalimantan Tèmor molaè 2015 sampè' 2018. Safaruddin panèka ''kader Partai PDIP'' bân enneng è ''Komisi III.''<ref>{{Cite web |last=Putri |first=Cantika Adinda |title=Catat! Ini Daftar Anggota DPR RI di Komisi I Hingga Komisi XI |url=https://www.cnbcindonesia.com/news/20191030063226-4-111185/catat-ini-daftar-anggota-dpr-ri-di-komisi-i-hingga-komisi-xi |access-date=2026-01-20 |website=CNBC Indonesia |language=id}}</ref><ref>{{Cite web |last=KBR |title=KBR :: KENALI CALEG - G. BUDISATRIO DJIWANDONO (Daerah Pemilihan Kalimantan Timur) |url=https://kbr.id/kenalicaleg/2019/caleg/g--budisatrio-djiwandono/1761.html |access-date=2026-01-20 |website=kbr.id |language=id |archive-date=2023-10-07 |archive-url=https://web.archive.org/web/20231007104741/https://kbr.id/kenalicaleg/2019/caleg/g--budisatrio-djiwandono/1761.html |url-status=dead }}</ref> Safaruddin panèka lulusân Akpol taon 1984 bân bânnya' pangalamânna è bidâng ''Intel.'' == Panḍhiḍhighân: == * ''Akademi'' Kepolisiân (1984) * Parghuruwân Tèngghi Èlmo Kepolisiân (1992) * ''Sespim (1999)'' * ''Sespati (2008)'' * ''Lembaga Ketahanan Nasional (2013)'' == Tanḍhâ Jhâsa == {| style="margin:1em auto; text-align:center;" |- |{{Ribbon devices|number=0|type=award-star|ribbon=Pita (Ribbon) Bintang Bhayangkara Pratama.png|width=100}} {{Ribbon devices|number=0|type=award-star|ribbon=Pita (Ribbon) Bintang Bhayangkara Nararya.png|width=100}} |- |{{Ribbon devices|number=0|type=award-star|ribbon=Pita (Ribbon) Satyalencana Pengabdian XXIV.png|width=100}} {{Ribbon devices|number=0|type=award-star|ribbon=Pita (Ribbon) Satyalencana Pengabdian XVI.png|width=100}} {{Ribbon devices|number=0|type=award-star|ribbon=Pita (Ribbon) Satyalencana Pengabdian VIII.png|width=100}} |- |{{Ribbon devices|number=0|type=award-star|ribbon=Pita (Ribbon) Satyalencana Jana Utama.png|width=100}} {{Ribbon devices|number=0|type=award-star|ribbon=Pita (Ribbon) Satyalencana Ksatria Bhayangkara.png|width=100}} {{Ribbon devices|number=0|type=award-star|ribbon=Pita (Ribbon) Satyalencana Karya Bhakti.png|width=100}} |- |{{Ribbon devices|number=0|type=award-star|ribbon=Pita (Ribbon) Satyalencana Bhakti Pendidikan.png|width=100}} {{Ribbon devices|number=0|type=award-star|ribbon=Pita (Ribbon) Satyalencana Dharma Nusa.png|width=100}} {{Ribbon devices|number=0|type=award-star|ribbon=Pita (Ribbon) Satyalencana Seroja.png|width=100}} |- |{{Ribbon devices|number=0|type=award-star|ribbon=Pita (Ribbon) Satyalencana Bhakti Nusa.png|width=100}} {{Ribbon devices|number=0|type=award-star|ribbon=Pita (Ribbon) Satyalencana Kebhaktian Sosial.png|width=100}} {{Ribbon devices|number=0|ribbon=Satyalencana GOM VII.gif|width=100}} |} {| class="wikitable" style="margin:1em auto; text-align:center;" |- !Bhâris ke-1 | colspan="9"|''Bintang Bhayangkara Pratama<ref>{{Cite web|date=2023-06-30|title=Kapolri Sematkan Tanda Kehormatan Bintang Bhayangkara Pratama ke 22 Pati Polri|url=https://republika.co.id/share/rx21o1349|website=Republika Online|language=id|access-date=2026-01-20}}</ref> (2023)'' |- !Bhâris ke-2 | colspan="3"|''Bintang Bhayangkara Nararya'' | colspan="3"|''Satyalancana Pengabdiân 24 Taon'' | colspan="3"|''Satyalancana Pengabdiân 16 Taon'' |- !Bhâris ke-3 | colspan="3"|''Satyalancana Pengabdiân 8 Taon'' | colspan="3"|''Satyalancana Ksatria Bhayangkara'' | colspan="3"|''Satyalancana Karya Bhakt'' |- !Bhâris ke-4 | colspan="3"|''Satyalancana Bhakti Panḍhiḍhighân'' | colspan="3"|''Satyalancana Dharma Nusa'' | colspan="3"|''Satyalancana Seroja'' |- !Bhâris ke-5 | colspan="3"|''Satyalancana Bhakti Nusa'' | colspan="3"|''Satyalancana Kebaktian Sosial'' | colspan="3"|''Satyalancana G.O.M VII'' |} == Sombher == 8mv94mx9kidgpow3pqr6jyzj762zs0m Khichuri alos 0 19033 64881 63780 2026-07-10T02:34:33Z InternetArchiveBot 639 Rescuing 1 sources and tagging 0 as dead.) #IABot (v2.0.9.5 64881 wikitext text/x-wiki [[Bhengkek:ꠁꠍꠔꠣꠞꠤ ১১.jpg|jmpl|kakanan tradisional abhuka powasa Sylheti kalabân Kisuri]] '''Khichuri''' '''Alos''' (bhâsa [[Bhâsa Inggris|ènggris]]: '''''Soft Khichuri'''''; bhâsa Bengali: পাতলা খিচুড়ি ''Pātalā'' ''Khichuṛi''), jhughân è kennal mènangka '''Norom Kisuri''' panèka sala sèttong kakanan sè bahan poko'na [[bherrâs]] sè olaanna paḍâ kalabân tajhin sè mashur è wilayah Sylhet, [[Bangladesh]].<ref>{{Cite web |date=2024-07-26 |title=From Beginner to Expert: How to Cook Khichuri Step by Step - OliviaOven |url=https://oliviaoven.com/how-to-cook-khichuri/ |access-date=2026-02-25 |website=oliviaoven.com |language=en-US}}</ref> kakanan nèka kakanan tradisional bân sa' massa'na Sylheti sè è robhâ'aghi è sabâgiyân rajâ mèjâ ngakan è bulân soccè [[Romadon]] ka'angghuy kakanan poko' è [[Powasa|bâkto abhuka]].<ref name=":0">{{Cite web |last=Pratidin |first=Bangladesh |date=2016-06-12 |title=সিলেটের ঐতিহ্য আখনি ও পাতলা খিচুড়ি {{!}} |url=https://www.bd-pratidin.com/last-page/2016/06/12/150507 |access-date=2026-02-25 |website=bd-pratidin.com |language=bn |archive-date=2023-11-18 |archive-url=https://web.archive.org/web/20231118152459/https://www.bd-pratidin.com/last-page/2016/06/12/150507 |url-status=dead }}</ref> Khichuri alos bân Akhni panèka kakanan tradisi Sylhet sè biasa è robhâ'aghi ḍâ' tamuy.<ref>{{Cite web |title=ভোরের কাগজ {{!}} বাংলা সংবাদপত্র {{!}} বাংলা নিউজ পেপার |url=http://www.bhorerkagoj.com/ |access-date=2026-02-25 |website=Bhorer Kagoj |language=bn}}</ref> Nasè' aromatik sè è campor kalabân pan bârâmpan palappa tamaso' mènyyak samèn, nigella, bân [[klabhet]] panèka bahan ḍâsar ka'angghuy amassa' Kisuri.<ref name=":0" /><ref>{{Cite web |last=Silas |date=2026-01-14 |title=Mastering Khichuri: An Easy, Authentic One-Pot Recipe |url=https://eathealthy365.com/mastering-khichuri-an-easy-authentic-one-pot-recipe/ |access-date=2026-02-25 |website=Flavor365 |language=en-US}}</ref> Bâḍâ duwâ' macem Khichuri Alos, ''khichuri alos potè'' (jau/zau) bân ''skhichuri alos'' ''konèng'' (kisuri).<ref>{{Cite web |last=Fenice |date=2023-06-26 |title=White/Shada Khichuri by Jannatul Farhana Rupa - The Wannabe Cook {{!}} Authentic Bengali Recipes & Cooking Tips |url=https://thewannabecook.com/white-shada-khichuri/ |access-date=2026-02-25 |website=The Wannabe Cook |language=en-US}}</ref> == Bahan-bahan == [[Bherrâs]], dal, bhâbâng bucay, [[jhâi]], minyyak sakonnè' otabâ mantèghâ, [[klabhet]], bân bujâ.<ref>{{Cite web |last=SAMAKAL |title=SAMAKAL {{!}} GET THE LATEST ONLINE BANGLA NEWS |url=https://samakal.com/todays-print-edition/tp-mohanagar/article/1706297960/%E0%A6%87%E0%A6%AB%E0%A6%A4%E0%A6%BE%E0%A6%B0%E0%A7%87%E0%A6%B0-%E0%A6%AA%E0%A7%8D%E0%A6%B0%E0%A6%B6%E0%A6%BE%E0%A6%A8%E0%A7%8D%E0%A6%A4%E0%A6%BF-%E0%A6%AA%E0%A6%BE%E0%A6%A4%E0%A6%B2%E0%A6%BE-%E0%A6%96%E0%A6%BF%E0%A6%9A%E0%A7%81%E0%A7%9C%E0%A6%BF%E0%A6%A4%E0%A7%87 |archive-url=https://web.archive.org/web/20241208092050/https://samakal.com/todays-print-edition/tp-mohanagar/article/1706297960/%E0%A6%87%E0%A6%AB%E0%A6%A4%E0%A6%BE%E0%A6%B0%E0%A7%87%E0%A6%B0-%E0%A6%AA%E0%A7%8D%E0%A6%B0%E0%A6%B6%E0%A6%BE%E0%A6%A8%E0%A7%8D%E0%A6%A4%E0%A6%BF-%E0%A6%AA%E0%A6%BE%E0%A6%A4%E0%A6%B2%E0%A6%BE-%E0%A6%96%E0%A6%BF%E0%A6%9A%E0%A7%81%E0%A7%9C%E0%A6%BF%E0%A6%A4%E0%A7%87 |archive-date=2024-12-08 |access-date=2026-02-25 |website=samakal.com |language=en |url-status=live }}</ref><ref>{{Cite web |date=2021-09-17 |title=Resep Khichuri oleh Rejeki 2021 |url=https://cookpad.com/id/resep/15513936 |access-date=2026-02-25 |website=Cookpad |language=id}}</ref> == Sombher == <references /> [[Bhângsa:Kakanan bhuka pasa]] 5v0sy9skif31erwyjos5j7huiino085 Soetran 0 19368 64880 64861 2026-07-10T02:19:43Z Oikivivi 2325 64880 wikitext text/x-wiki {{infobox orang}} [[Brigadir Jenderal]] [[Tentara Nasional Indonesia|TNI]] (HOR) (Purn.) '''Soetran''' (EBI: '''Sutran''', 5 April 1921 – 1 Juli 1987) iyâ arèya tokoh militèr bân politisi [[Inḍonèsia]] sè dhâddhi Bupati Trenggalèk ḍari taon 1968 sampè' 1975 bân Gubernur Irian Jaya ḍari taon 1975 sampè' 1981. <ref>Junaedi, Didi. [https://books.google.co.id/books?hl=id&lr=&id=p216CgAAQBAJ&oi=fnd&pg=PA97&dq=info:PuSPXvz4BxwJ:scholar.google.com/&ots=mfIQ59rO3G&sig=NPeC1zS7Awpt7i1L5RTbTokdk-s&redir_esc=y#v=onepage&q&f=false Pahlawan-pahlawan Indonesia sepanjang masa]. IndonesiaTera, 2014. Diaksès 2026-06-09. </ref> Lahèr è [[Kabhupatèn Siḍoarjo|Siḍoarjo]], Soetran kodhu ambu ḍari [[Sakola'an|sakola]] ḍâsar è kellas 4 bân alako sakabbina kalakowan. Neng taon 1942, Soetran masok ka ḍâlem organisasi [[Pembèla Tanah Air]] (PETA) kalabân pangkat ''budancho'' (setingkat [[Sersan|sèrsan]]). Samarèna [[Proklamasi Kemerdekaan Indonesia|kamardhika'an Inḍonèsia]], Soetran masok [[Tentara Nasional Indonesia|Tentara Nasional Inḍonèsia]] (TNI), bân dhâddhi mènangka Komandan Distrik Militèr (Dandim) è Mèrauke bân [[Kabhupatèn Trènggalèk|Trenggalèk]]. Soetran ngaollè jabatan politik pertamana è bákto la èpèlè mènangka Bupati Trenggalèk neng taon 1968. Salah sèttong karakteristik kepemimpinanna iyâ arèya sistem komando sè è anut bi' pamarènta daerah. Pencapaian sè palèng rajâ Soetran dhâddhi bupati iyâ arèya madhâddhi Trenggalèk mènangka pusat cengkè sa- [[Jhâbâ Tèmor]]. Soetran jhughân ngosollaghi kebijakan ''tembokisasi'' (pembangunan geddhung) bân [[reboisasi]] è wilayah Trenggalèk mènangka upaya ka'angghuy ningkataghi taraf oḍi' rakyat Trenggalèk. Soetran ètunjuk polè ka'angghuy masa jabatan sè Kaḍuwe' neng taon 1973, bân Trenggalèk narèma penghargaan Parasamya Purnakarya Nugraha mènangka Kabupatèn sè palèng bhâghus neng taon 1974. Mènangka penghargaan atas pencapaianna è Trenggalèk, Soetran ètunjuk ka'angghuy dhâddhi Gubernur Irian Jaya è taon 1975. Neng masa kepemimpinanna, Soetran nerrapaghi program wâjib Namen Cengkè sè èwâjibaghi hampir sakabbina penduduk bân instansi è Irian Jaya ka'angghuy namen cengkè. Polana program kasebbhut, Soetran èkoca' mènangka "Gubernur Cengkè". Maskè deyyeh, program kasebbhut gagal polana pelaksana'enna sè ru-kabhuru, ta' tao carana namen cengkè, keputusân ka'angghuy ngimpor cengkè ḍari Trenggalèk maskè ghita' è uji kelayakanna, bân korangnga sosialisasi program. Propènsi kasebbhut jhughân ngalamè ḍuwe' kalè lèndhu è taon 1976. Soetran ngahèrrè masa jabatânna mènangka gubernur è taon 1981, ra kèra empa' bulân lebbi abit ḍari sè èrencana'aghi. Samarèna mundur ḍari jabatân gubernur, Soetran neng neng è [[Kottha Sorbhâjâ|Sorbâjâ]]. Soetran dhingghâl omor è taon 1987. == Bâkto kènnè' bân karir militèr == Soetran èlahèrraghi è tangghâl 5 April 1921 è dhisa Cangkring, Sidoarjo, ḍari kalowarga rèng tanè. Polana kabâḍâ'en eppa'en sè buta, dhibi'en ambu asakola è bangku kellas 4 sakola ḍâsar (SD) bân molaè nyarè kalakowan. Soetran mulaè alakonè pan-bârâmpan macem kalakowan, akadhi mènangka tanè, penampil è hajatân, bân pemaèn ludruk kalèlèng. È taon 1942, nyusol pendudukân Jeppang è Inḍonèsia, Soetran ajâlânè pendidikan militèr è Renseitai, akademi militèr sè èbangun bi' tentara Jeppang. Soetran kantos dhâddhi angghuta satuan [[Pembèla Tanah Air]] samarèna lulus bân ngaollè pangkat ''budancho'' (setara kalabân [[Sersan|sèrsan ).]] Samarèna Inḍonèsia mardhika, Soetran agabung ka dâlem Badan Keamanan Rakyat (cikal bakal [[Tentara Nasional Indonesia|TNI]]) bân ètempataghi mènangka komandan sèksi neng Batalion Tjipto sajjhâ' tangghâl 17 Sèptèmber 1945.<ref>Bachtiar, Harsya W. (1988). [https://books.google.co.id/books?id=IyQgAAAAMAAJ&redir_esc=y Siapa dia? Perwira Tinggi Tentara Nasional Indonesia Angkatan Darat (TNI-AD).] Jakarta. hlm. 417. [[:id:Istimewa:Sumber_buku/9789794281000|ISBN 9789794281000]]. Diaksès 2026-06-10. </ref> Samarèna [[Revolusi Nasional Indonesia|Rèvolusi Nasional Inḍonèsia]] la marè neng taon 1949, Soetran nuro' Latihan Persamaan Perwira bân lulus dhâddhi Lètnan sèttong neng taon 1950. Soetran kantos nuro' pan bârâmpan pendidikân militèr laènna, è antarana Pendidikan Persiapan Untuk Perwira è [[Kabhupatèn Jhembher|Jember]] (lulus 1956) bân Kursus Perwira Lanjutân Satu è [[Kottha Banḍung|Banḍung]] (lulus 1957). Neng taon 1958, Soetran dhâddhi Bhâkkèl komandan Batalyon Infanteri 511 kalabân pangkat Lètnan sèttong. Empa' taon kantos, pangkatdhâ èpaongghâ ka kaptèn bân dhibi'en dhâddhi komandan Batalyon Infanteri 511. Korang ḍari sataon kantos, neng taon 1963, Soetran èpangallè ka [[Papua (Wilayah Indonesia)|Irian Jaya]] bân dhâddhi komandan distrik militèr (Dandim) è Tanah Merah, Boven Digoel. Neng taon 1967, dhibi'en abâli èpangallè ka Jhâbâ Tèmor, dhâddhi Dandim Trenggalèk. Soetran jhughân narèma kenaikan pangkat dhâddhi mayor.<ref>Ariyanto, Danny Rizky. [https://repository.um.ac.id/54813/ Biografi Soetran (1921-1987)]. Diss. Universitas Negeri Malang, 2015. Diaksès 2026-06-10. </ref> Neng ahèr masa jabatanna dhâddhi Gubernur Irian Jaya neng taon 1980, Soetran narèma kenaikan pangkat kehormatân ḍari kolonèl dhâddhi [[Brigadir Jenderal|brigadir jènderal.]] == Bupati Trenggalèk == === Penamenan cengkè === Soetran èlantik dhâddhi Bupati Trenggalèk neng tangghâl 3 Oktobèr 1968, aghântè'aghi Moeladi<ref name=":1">Rahayu, Endah (27 Juli 2005). [https://data.kompas.id/ "Trenggalek "Wiwitan lan Wibawa""]. Kompas. hlm. 9. Diarsipkan dari versi aslinya tanggal 15 Desember 2020. Diaksès 2026-06-12. </ref>. Sabellunna dhibi'en tojhu' neng korsè bupati, Trenggalèk èkennal mènangka daèrah sè miskèn bân segghut ngalamè musèm nèmor lanjhâng sè nyebabaghi kakerrèngan neng daèrah kasebbhut. [[Gaplèk]], kananan utama penduduk Trenggalèk, ta' bisa ètamen bân èpolong mon ghi' musèm nèmor. Soetran molaè nyarè solusi ka'angghuy masalah kakerrèngan samarèna dhibi'en negghu' jabatân dhâddhi Bupati Trenggalèk. È bâbâna Soetran, pamarènta daèrah Trenggalèk anḍi' usaha ka'angghuy nyarè komoditas sè anḍi' nilai tèngghi sè sesuai kalabân lahan rakyat. Samarèna nemmo jhâ' cengkè aropa'aghi taneman sè palèng cocok ka'angghuy daerah kasebbhut, Soetran molaè nik sakonnik maksa penduduk Trenggalèk ka'angghuy namen cengkè. Panamenan cengkè kasebbhut abuwâ'aghi hasèl nik sakonnik è bâkto samarena èmolaè. Tana Trenggalèk sè tandus èobâ dhâddhi tana sè bhiru kalabân cengkè bân Kabupatèn kasebbhut dhâddhi pusat produksi cengkè è Jhâbâ Tèmor. Maskè'epon perkebunan cengkè ghun 16,21% ḍari sakabbina luas tana sè bâḍâ, produksi cengkè nambâ pendapatân masyarakat Trenggalèk ra kèra 21 miliar rupiah per taon. Wilayah Trenggalèk kantos dhâddhi idèntik kalabân cengkè, bân penduduk è ḍissa kantos ghun ngandâllaghi cengkè mènangka tong-sèttongnga sombher penghasilân. Donald K. Emmerson, seorang peneliti politik, anḍi' pendapat jhâ' keberhasilân pembangunan Trenggalèk è bâbâna pamarèntana Soetran polana sistem kepemimpinan komando sè èanut. Emmerson anḍi' pendapat jhâ' Soetran anḍi' tanggung jawab penuh ḍâ' prosès pembangunan è wilayah kasebbhut bân ajelen aghi pamarènta daèrah mènangka perpanjangan tanganna dhibi'. === Tembokisasi bân rèboisasi === Sabellunna penunjukkânna dhâddhi bupati, kantor-kantor pamarènta bân militèr ghi' aghuna'aghi gubuk sè rèyot. Soetran anḍi' usaha ka'angghuy mabhâghus kabâḍâ'en rèya lèbât konsèp tembokisasi. Konsèp sè èkoca'aghi kasebbhut Ngajhâ' masyarakat Trenggalèk ka'angghuy abangun geddhung è sakètar romana bâng-sèbânga. Sampe' taon 1972, hampèr sakabbina roma è Trenggalèk la anḍi' geddhung. Salaèn program tembokisasi, Soetran jhughân menggalakkan rèboisasi è Trenggalèk. Soetran aberri' instruksi ka masyarakat Trenggalèk jhâ' "ta' ollè sajengkal tana sè kosong ḍari tamenan". Kebijakân rèboisasi Soetran ajâghâ wilayah Trenggalèk aman ḍari bencana kakerrèngan sè lanjhâng bân abârrè' tambá'en pendapatân ka Kabupatèn ḍari èkspor kajhu-kajhu akadhi pinus, jâtè, bân akasia. === Paobâ'en nyama Trenggalèk === Neng taon 1971, kalabân alasan ka'angghuy ngobâ citra jhubâ'en Trenggalèk, Soetran ngusullaghi parobâ'en nyama Trenggalèk dhâddhi Trenggalèh. Mènorot Soetran, oca' sè ahèrrè bi' suku oca' -ek ḍâlem bhâsa Jhâbâ anḍi' konotasi sè jhubâ' (conto: jelek/elek, kemenyek, tekek). Soetran ngoca' jhâ' nyama Trenggalèk segghut èkaghâbây bahan èjèk bi' orèng Jhâbâ mènangka singkatân ḍari terang enggone wong elek (jellas-jellas tempattâ orèng jhubâ') dhâddhi Trenggalih, kalabân singkatânna Terang Ing Galih (terrang è atè sadhâjâ). Bânnya' pejabat Trenggalèk sè nolak rencana Soetran kasebbhut. Mereka anḍi' pendapat jhâ' paobâ'en nyama parlo prosès administratif bân birokratik sè cè' malaratdhâ. Maskè ollè tentangan, Soetran tettep ajhâlânaghi rencana bân nèng taon sè padá dhibi'en abântuk tim sè menginvèstigasi asal-usul nyama Trenggalèk, kamunculân sè tartolès awwâl ḍari nyama Trenggalèk, bân kemungkinan anyamaè ulang Trenggalèk kalabân arujuk ka kamunculân sè awwâl ḍâri nyamana. Proyèk rèya tettep èjâlânnaghi pan-bârâmpan taon samarèna Soetran ningghâllaghi jabatân bupati Trenggalèk. Tim kasebbhut berhasil nemmo bân adokumèntasi'aghi awwâl mola berdirina Trenggalèk bân kamunculân awwâl nyama Trenggalèk. Namong, tim kasebbhut nolak usulân ka'angghuy ngobâ nyama Trenggalèk. === Parasamya Purnakarya Nugraha === Polana èyangghep suksès mènangka Bupati Trenggalèk lèbât program namen cengkè, Soetran èpèlè polè mènangka bupati ghâbây pèriode kaduwâ' è taon 1973. È taon 1974, Kabupatèn Trenggalèk narèma pangarghâ'ân `dâri Prèsidèn [[Soeharto]] sè aropa'aghi Parasamya Purnakarya Nugraha,<ref name=":1" /> sèttong pangarghâ'ân ghâbây Bupati/Provinsi kalabân hasèl pembangonan sè palèng bhâgus è bâkto pâlaksanaan Rencana Pembangonan Lèma Taon.<ref>{{Cite book |last=Jackson |first=Karl D. |url=https://books.google.co.id/books?id=ktP7qHLI8gcC&printsec=frontcover&hl=id#v=onepage&q=Soetran&f=false |title=Political Power and Communications in Indonesia |last2=Pye |first2=Lucian W. |date=1980-01-01 |publisher=University of California Press |isbn=978-0-520-04205-6 |language=en}}</ref> Pengaarghâ'ân panèka ètarèma sareng Gubernur Jhâbâ Tèmor [[Mohammad Noer]] ḍâri Prèsidèn Soeharto è sèttong upacara sè èlaksana'aghi è tangghâl 21 Agustus 1974 è Stadion Tambaksari.<ref>{{Cite book |last=Noer |first=Mohammad |url=https://books.google.co.id/books?id=qC9wAAAAMAAJ |title=Pamong mengabdi desa: biografi Mohammad Noer |last2=Siahaan |first2=Hotman |date=1997 |publisher=Yayasan Keluarga Bhakti dan Surabaya Post |language=id}}</ref> == Gubernur Irian Jaya == [[Bhengkek:Soetran with regents from Irian Jaya.jpg|jmpl|Presiden Soeharto mèrri' Parasamya Purnakarya Nugraha ka'angghuy Trenggalek ḍâ' Gubernur Jâbâ Tèmor, Mohammad Noer.]] Sa'amponna dhâdhhi bhupatè Trenggalek duwâ' periode, Soetran ètunjuk sareng Menteri Dâlem Negeri Amirmachmud ka'anggghuy dhâddhi Gubernur [[Papua (Wilayah Indonesia)|Irian Jaya]].Soetran èpadhâddhi pejabat gubernur è tangghâl 31 April 1975, ghâbây gântèna Acub Zainal.<ref>{{Cite web |title=KompasData |url=https://data.kompas.id/ |access-date=2026-06-08 |website=data.kompas.id |language=en}}</ref> Masa jabatana sè dhâddhi penjabat gubernur lamarè tèppa' èpon èlantik dhâddhi gubernur definitif è tangghâl 12 Agustus 1975.<ref>{{Cite web |last=PT Kompas Media Nusantara |title=KompasData |url=http://www.kompasdata.id/Search/News?ref=http://www.kompasdata.id/Search/NewsDetail/19369617 |archive-url=https://web.archive.org/web/20201215073232/http://www.kompasdata.id/Search/News?ref=http://www.kompasdata.id/Search/NewsDetail/19369617 |archive-date=2020-12-15 |access-date=2026-06-08 |website=KompasData |language=en}}</ref> Masa jabatanna koḍu marè è tangghâl 4 Sèptèmber 1980, tapè polana sobung gântèna gubernur,<ref>{{Cite web |last=PT Kompas Media Nusantara |title=KompasData |url=http://www.kompasdata.id/Search/News?ref=http://www.kompasdata.id/Search/NewsDetail/19484777 |archive-url=https://web.archive.org/web/20201215073233/http://www.kompasdata.id/Search/News?ref=http://www.kompasdata.id/Search/NewsDetail/19484777 |archive-date=2020-12-15 |access-date=2026-06-08 |website=KompasData |language=en}}</ref> masa jabatanna èpaterros sampè' 20 Jânuwari 1981.<ref>{{Cite book |url=https://books.google.com/books?id=EsvVB-Z85GcC&pg=RA7-PA14 |title=Mimbar |date=1980 |publisher=Departemen Dalam Negeri |language=id}}</ref> === '''Wajib Nanem Cengkè''' === [[Bhengkek:Minister of Internal Affairs handing over the project list to Governor Soetran.jpg|jmpl|Soetran (kanan) menerima DIP Proyek pambangonan Nasional ka'angghuy Provinsi Irian Jaya ḍâri Menteri Ḍâlem Negeri Amirmachmud.]] Sa'amponna dhâddhi penjabat gubernur Irian Jaya, Soetran molay nerapaghi program sè ampon èpon lakoni è Trenggalek kabit pètto' taon. È tangghâl 20 Mèi 1975, Soetran mencanangkan program Wâjib nanem Cengkè (WTC).<ref>{{Cite news |last=Administrator |date=1976-12-11 |title=Lain trenggalek, lain di sini |url=https://majalah.tempo.co/read/daerah/70670/lain-trenggalek-lain-di-sini |access-date=2026-06-08 |work=Tempo |language=id-ID}}</ref> Soetran berpendapat cengkè bisa mèrri' hasèl sè rajâ ḍâ' penghasèlana ḍaèra Irian Jaya. Polana program kasebhut, Soetran èolok "Gubernur Cengkè".<ref>{{Cite book |last=Griapon |first=Alexander |url=https://books.google.co.id/books?id=R-NRAQAAMAAJ&redir_esc=y |title=Lembaga musyawarah adat: 10 tahun terakhir dari 30 tahun awal pemerintahan propinsi di tanah Papua |date=2010 |publisher=Kerjasama Penerbit Arika dengan Pemerintah Kabupaten Jayapura |isbn=978-602-95705-3-3 |language=id}}</ref> Mènorot èssèna komando sè èpakaloar Soetran, satèyap kopala kalowarga è Irian Jaya è kenning wâjib namen. kalowarga sè oḍi' è dhisa koḍu namen cengkè palèng sakonnè' 20 bhungka, kalowarga sè oḍi' è pèngghir kottha koḍu namen 5—10, bân kalowarga sè oḍi' è kottha koḍu namen palèng sakonnè' 5 bhungka. Kantor-kantor, sakola, asrama, kennenga ibâdâ, bân pramuka jhughân èwajibaghi ka'angghuy namen cengkè. salaèn ḍâri namen skala kènni' sareng penduduk, Soetran jhughân manaddhek kebbhun cengkè sè èkalola sareng pamarènta kabupatèn bân provinsi.<ref name=":0">{{Cite news |last=Administrator |date=1976-12-11 |title=Lain trenggalek, lain di sini |url=https://majalah.tempo.co/read/daerah/70670/lain-trenggalek-lain-di-sini |access-date=2026-06-08 |work=Tempo |language=id-ID}}</ref> Pan-bârâmpan arè sa'amponna program èmolaè, Soetran nyo'on pèssè ḍâri Prèsidèn Soeharto. Parnyo'onanna èkabbhuli, bân Soeharto aberri' hibah atahap sebânnya' 250 juta rupia è tangghâl 20 Novèmber 1975, kalabân 50 juta rupia èberri'i è taon partama. Rencanana Soetran melleya nè-binèna cengkè ka Trenggalèk sè arghâna 35 juta rupia.<ref name=":0" /> Namong, ta' abit sa'ampona èmolaè, proyèk panèka ennas. È dâlem tanam cengkeh sè èlaksanaaghi sareng [[Pegawai negeri sipil|PNS]] è Kantor Gubernur Irian Jaya, namong ra-kèra 10% ḍâri bibit cengkè sè bisa ètamen è taon partama. Orèng ahli pertanian nyata'aghi jhâ' ka ennasân panèka polana instruksi Soetran sè agher bân PNS sè ghita' ngartè carana namen cengkè. Alasan laènna èngghi panèka Soetran ampon alanggar dekrit Mentri Pertanian sè anyata'aghi jhâ' nè-binèna cengkè coma bisa è impor ḍâri empa' kennangan: [[Selokaton, Sukorejo, Kendal|Selokaton]], Branggah Banaran, Bogor, bân Maluku. Kapotosanna Soetran ka'angguy mamaso' nè-binèna cengkè ḍâri Trenggalèk èyangghâp sala raje sabhâb nè-binèna cengkè ḍâri Trenggalèk ghita' toman èteliti kalayakanna.<ref name=":0" /> Julius Ary Mollet, paneliti ḍâri [[Universitas Cenderawasih|Universitas Cendrawasih]], nyala'aghi ka ennasân Soetran è sosialisasi sè korang ka masyarakat. Mènorot Julius, masyarakat dhâddhi ta' segghân sè molonga bân nyuwâllâ cengkè polana koranga sosialisasi tentang kaontonga ḍâri namen cengkè.<ref>{{Cite web |title=KompasData |url=https://data.kompas.id/ |access-date=2026-06-29 |website=data.kompas.id |language=en}}</ref> Sa'ampona Soetran toron dâri kalaghungan Gubernur Irian Jaya, penerussa, [[Busiri Suryowinoto]], atanya kabijaghân Wâjib Namen Cengkè-na. Busiri aghântè'è program Soetran kalabân namen tanaman kakanan, polana èparcajâ cengkè ta' cocok ghâbây wilaya Irian Jaya.<ref>{{Cite news |last=Administrator |date=1981-01-24 |title=Busiri, setelah soetran busiri, setelah soetran |url=https://majalah.tempo.co/read/daerah/48872/busiri-setelah-soetran-busiri-setelah-soetran |access-date=2026-06-29 |work=Tempo |language=id-ID}}</ref> === Lènḍhu Irian Jaya === È bâkto pamarènta'ana Soetran, Provinsi Irian Jaya èkenning duwâ' lènḍhu kalabân berturut-turut. lènḍhu sè kabidhân, è tangghâl 26 Juniè 1976 bân okoranna 7,1 [[Skala Richter]], alangsong selama saminggu. Akibatâ, 12 kampong rajâ è [[Lembah Baliem]] è nyata'aghi èlang. Kecamatan Kurima, Okbibab, bân Oksibil, Sè sakabbhina bâḍâ è Kabupatèn Jayawijaya, sakabbhina ancor polana lènḍhu. Sampè' kalabân tangghâl 5 Juli 1976, 369 orèng tèmmu sèdhâ bân 5.001 orèng ènyata'aghi èlang.<ref>{{Cite web |date=17 Juli 1976 {{!}} 00.00 WIB |title=Ujian Berat Buat Soetran |url=https://www.tempo.co/politik/ujian-berat-buat-soetran-1094390 |access-date=2026-07-06 |website=Tempo |language=id}}</ref> Samarèna lènḍhu kasebbhut, para penyintas èevakuasi bân ètampong ḍâlem kamp pangungsiân.<ref>{{Cite web |title=KompasData |url=https://data.kompas.id/ |access-date=2026-07-06 |website=data.kompas.id |language=en}}</ref> Seorang pejabat pamarènta'an nghâmbhâraghi kondisi è kamp pangungsiân kasebhut kalabân "marèngès bân tako' ". Sèkrètaris Daerah Irian Jaya, Syarifuddin Harahap, ngèrèmaghi sejumlah radiogram ḍâ' departemen bân perusahaan è Irian Jaya bân mènta mereka ka'angghuy ngèrèmaghi bântowan. Prèsidèn Soeharto nangghâpi kalabân marènta lembaga pamarènta'an ka'angghuy abento' suatu satuan tugas ka'angghuy ngaḍhepi lèndhu kasebhut. bântowan kabidhân sè èberri' èbâghi ḍâ' penyintas sè terisolasi bân klaparan abento' sak [[Sabbhrâng longghâ|obi]] sè è paghâgghâr ḍâri odârâ. Tapè, sejumlah obi sèttong sak ancor polana sak la ancor. È tangghâl 3 Juli, pamarènta [[Papua Nugini|Papua Nugin]]<nowiki/>i abânto proses nyarè bân penyelamatan ḍâlem bento' sebuah pesawat [[Cessna]].<ref>{{Cite web |date=17 Juli 1976 {{!}} 00.00 WIB |title=Ujian Berat Buat Soetran |url=https://www.tempo.co/politik/ujian-berat-buat-soetran-1094390 |access-date=2026-07-06 |website=Tempo |language=id}}</ref> Soetran terbang ḍâ' Jakarta è tangghâl 10 Juli ka'angghuy abahas masalah kasebhut kalabân Prèsidèn Soeharto.<ref>{{Cite web |title=KompasData |url=https://data.kompas.id/ |access-date=2026-07-06 |website=data.kompas.id |language=en}}</ref> Soeharto mherri' bântowan sebesar 100 juta rupiya ka'angghuy nangani cobhâ'ân kasebhut bân nyata'aghi jhâ' lenḍhu panèka chobâ'ân nasional.<ref>{{Cite web |last=PT Kompas Media Nusantara |title=KompasData |url=http://www.kompasdata.id/Search/News?ref=http://www.kompasdata.id/Search/NewsDetail/19237898 |archive-url=https://web.archive.org/web/20201215073235/http://www.kompasdata.id/Search/News?ref=http://www.kompasdata.id/Search/NewsDetail/19237898 |archive-date=2020-12-15 |access-date=2026-07-06 |website=KompasData |language=en}}</ref> Soetran mengeluhkan laona bhântowana pamerènta ḍâ' chobâ'ân alam kasebhut. È tangghâl 19 Juli, Soetran nyampè'aghi ta' puwasa Soetran kalabân penanganan pamarènta pusat ḍâ' chobâ'ân kasebhut. Ta' puwas polana satgas sè èbènto' sareng pamarènta pusat ghilok dhik ḍâteng.<ref>{{Cite web |title=KompasData |url=https://data.kompas.id/ |access-date=2026-07-06 |website=data.kompas.id |language=en}}</ref> Èpon jhughân ngoca' jhâ' sampè' kalabân tangghâl 19 Juli, coma 2 dokter bân 10 perabât sè bâḍâ è kennanga chobâ'ân.<ref>{{Cite web |last=PT Kompas Media Nusantara |title=KompasData |url=http://www.kompasdata.id/Search/News?ref=http://www.kompasdata.id/Search/NewsDetail/19372490 |archive-url=https://web.archive.org/web/20201215073254/http://www.kompasdata.id/Search/News?ref=http://www.kompasdata.id/Search/NewsDetail/19372490 |archive-date=2020-12-15 |access-date=2026-07-06 |website=KompasData |language=en}}</ref> Ḍâlem sebuah pertemuana kalabân Soeharto, Soetran jhughân mengkritisi korangan bhântowana pesawat bân medis sè èberri' sareng pamarènta pusat.<ref>{{Cite web |last=PT Kompas Media Nusantara |title=KompasData |url=http://www.kompasdata.id/Search/News?ref=http://www.kompasdata.id/Search/NewsDetail/19461819 |archive-url=https://web.archive.org/web/20201215073250/http://www.kompasdata.id/Search/News?ref=http://www.kompasdata.id/Search/NewsDetail/19461819 |archive-date=2020-12-15 |access-date=2026-07-06 |website=KompasData |language=en}}</ref> Menurut Kantor Koordinasi Orosan Penanggulangan Chobâ'ân Perserikatan Bhângsa-Bhângsa (UNDRO), sampè' kalabân tangghâl 30 Sèptèmber, ra kèra sèttong satengga juta dolar AS ampon èbherri' sareng organisasi ḍâri cem macem naghârâ ka'angghuy nanganaghi chobâ'ân è Irian Jaya. UNDRO ngèra'aghi pamarènta mataḍâ' setidaknya 10 èbu dolar satiyap bulâna ka'angghuy maghâgghâr obi ḍâri oḍârâ.<ref name=":2">{{Cite web |date=4 Desember 1976 {{!}} 00.00 WIB |title=Pindah Atau Tidak ? |url=https://www.tempo.co/politik/pindah-atau-tidak--1093573 |access-date=2026-07-06 |website=Tempo |language=id}}</ref> Lèndu sè kaduwâ' è bulân November 1976. Lèndhu kasebhut berdampak ḍâ' [[Ghunong Jayawijaya|paghunongan Jayawijaya]], bân ra kèra 110 orèng seḍhâ polana lèndhu kasebhut. Lèndhu sè nomer duwâ' andi' skala sè lebbhi kecil bân narèma lebbhi dhiddi' peliputan ḍâri media.<ref name=":2" /> === Atokar kalabân Elias Paprindey === Elias Paprindey, panèka birokrat asli Papua, ètoddhu sareng Soetran dhâddhi bâkkèl gubernur ngântè Jan Mamoribo sè sèḍhâ è tangghâl 19 Oktober 1976.<ref>{{Cite web |last=Tempo |title=Keputusan Presiden Indonesia Nomor 32/M Tahun 1977 |url=https://perpustakaan.bappenas.go.id/lontar/file?file=digital%2F148437-%5B_Konten_%5D-KEPRES%20NO.%2032-M%20TAHUN%201977.PDF |access-date=2026-07-06 |archive-date=2021-01-11 |archive-url=https://web.archive.org/web/20210111055809/https://perpustakaan.bappenas.go.id/lontar/file?file=digital%2F148437-%5B_Konten_%5D-KEPRES%20NO.%2032-M%20TAHUN%201977.PDF |url-status=dead }}</ref> Sa'ampona dhâddhi bâkkèl Gubernur, Paprindey molay atokar kalabân Soetran mengenai proses pembangonan è Irian Jaya.<ref>{{Cite web |date=11 Agustus 1979 {{!}} 00.00 WIB |title=Irian Jaya, 10 Tahun Kemudian |url=https://www.tempo.co/politik/irian-jaya-10-tahun-kemudian-1086208 |access-date=2026-07-06 |website=Tempo |language=id}}</ref> Paprindey kemudian menuduh jabatan bâkkèl gubernur "tak lebbhi ḍâri simbol belaka".<ref>{{Cite web |date=1980-11-29 |title=Dari Wagub Sampai Trikora |url=https://www.tempo.co/politik/dari-wagub-sampai-trikora-1083071 |access-date=2026-07-06 |website=Tempo |language=id}}</ref> Bâkto ètanya sareng wartawan ''[[Tèmpo|Tempo]]'' Widi Yarmanto mengenai atokaran kasebhut, Soetran ta' ngako hal kasebhut bân nyata'aghi jhâ' "Hubungan lako [kami] pagghun bhâghus [bân] kalakoan [kami pagghun] bhânjhur."<ref>{{Cite web |date=11 Agustus 1979 {{!}} 00.00 WIB |title=Sesungguhnya Tak Ada Apa-apa |url=https://www.tempo.co/politik/sesungguhnya-tak-ada-apa-apa-1086206 |access-date=2026-07-06 |website=Tempo |language=id}}</ref> Lamun berita atokaran kashebut èkataoè penduduk, PNS penduduk asli Irian Jaya molay ngungkapaghin katako'ana mereka kalabân pamarènta daerah. Orèng panglako negeri nyata'aghi "Lamun keadaan èḍinna' dèyye to', lebbhi bhâghus kami ḍâ' [[Papua Nugini|PNG]] bhâin."<ref>{{Cite web |date=11 Agustus 1979 {{!}} 00.00 WIB |title=Irian Jaya, 10 Tahun Kemudian |url=https://www.tempo.co/politik/irian-jaya-10-tahun-kemudian-1086208 |access-date=2026-07-06 |website=Tempo |language=id}}</ref> == Sombher == <references /> [[Bhângsa:Gubernur Papua]] [[Bhângsa:Tokoh TNI]] [[Bhângsa:Bupati Trenggalek]] [[Bhângsa:Kalahèran 1921]] [[Bhângsa:Sèḍhâ 1987]] [[Bhângsa:Sèḍhâ omur 66]] seibf96dij2p3eeu5if56s99kyjkbqw Han So-hee 0 19442 64882 64855 2026-07-10T02:40:12Z Alfiyah Rizzy Afdiquni 9 nambâ kothak info 64882 wikitext text/x-wiki {{infobox orang}} '''Lee So-hee''' (Bhâsa Korèa; lahèr 18 November 1993), <ref name=":3">{{Cite web |title=배우 한소희, 눈부신 미녀의 ‘HAPPY BIRTHDAY’ |url=https://m.entertain.naver.com/home/article/144/0000775176 |access-date=2026-04-27 |website=m.entertain.naver.com |language=ko}}</ref> lebbi èkennal kalabân nyamana panggung Han So-hee (Bhâsa Korèa ), panèka aktris ḍâri Korèa Sèlatan. Saellana molaè karir mènangka aktor pendukung è serial televisi akadhi ''100 Days My Prince'' (2018) bân ''Abyss'' (2019), èkennal è bânnya' orèng lèbât peranna è ḍrama ''The World of the Married'' (2020). Ia saterrossa aperan è bhân-sabbhân serial akadhi ''Nevertheless'' (2021), ''My Name'' (2021), bân ''Gyeongseong Creature'' (2023–2024). èpon jhughân ampon mo'dul è pan-bârâmpan video musik, è antarana "Seven" sareng Jungkook . <ref>{{Cite web |date=2023-07-01 |title=Jungkook BTS Bakal Rilis MV 'Seven' Bulan Juli, Dibintangi Han So Hee! |url=https://yoursay.suara.com/entertainment/2023/07/01/103822/jungkook-bts-bakal-rilis-mv-seven-bulan-juli-dibintangi-han-so-hee |access-date=2026-04-27 |website=Yoursay.id |language=id}}</ref> == Kaoḍhi'an awwâl == Ia lahèr kalabân nyama Lee So-hee è tanghâl 18 November 1993 è Ulsan, Korèa Sèlatan. <ref name=":32">{{Cite web |title=배우 한소희, 눈부신 미녀의 ‘HAPPY BIRTHDAY’ |url=https://m.entertain.naver.com/home/article/144/0000775176 |access-date=2026-04-27 |website=m.entertain.naver.com |language=ko}}</ref> <ref>{{Cite web |title=[단독] 한소희, 실제 나이 1살 많은 1993년생(31살)…안타까운 가정사 있었다 |url=https://m.entertain.naver.com/home/article/312/0000687088 |access-date=2026-04-27 |website=m.entertain.naver.com |language=ko}}</ref> Ia asakola è SMA Seni Ulsan, jurusan seni . <ref>{{Cite web |last=시민일보 |date=2021-10-17 |title=′한소희′ 일상은?... 출연 드라마 인기 속 그녀의 인스타그램 ′화제′ |url=https://www.siminilbo.co.kr/news/newsview.php?ncode=1065605683551588 |access-date=2026-04-27 |website=www.siminilbo.co.kr |language=ko}}</ref> È taon ahèr SMA, èpon apinda ka Seoul ka'angghuy oḍi' è bâbâna èmba bân alakoh è cèm macèm tempat paroh-bâkto ka'angghuy nyarèh kaoḍhi'ân. <ref>{{Cite web |date=2023-06-17 |title=Profile {{!}} Meet Han So-hee, My Name actress who’s had a meteoric rise to stardom |url=https://www.scmp.com/lifestyle/k-pop/k-drama/article/3224002/who-han-so-hee-korean-actress-and-star-k-dramas-my-name-and-world-married-who-enjoyed-meteoric-rise |access-date=2026-04-27 |website=South China Morning Post |language=en}}</ref> Èmolaè, ia ta' anḍi' rèncana maso' ka industri bur-lebur bân terro nerrossaghi sekola sè tèngghi è Prancis. Namong, ia ta' bisa entar polana kendala pèssè ka'angghuy èkennal visa, sè parlo saldo tabungan ₩ 60 juta. <ref>{{Cite web |last=Seoul |first=SBS 뉴스 |date=2024-01-14 |title=한소희, 인생 바꾼 2000만 원짜리 과자 광고…프랑스 유학 포기한 이유? |url=https://news.sbs.co.kr/news/endPage.do?news_id=N1007498170 |access-date=2026-04-27 |website=SBS NEWS |language=ko}}</ref> Bâkto alako paroh-bâkto è bar bir bân model iklan ka'angghuy hemat pèssè, kapala agenna salastarèna èbujuk ka'angghuy nyoba' akting. == Lako == === 2016-2019: Debut Aktris === Ia aghâbây debut model sareng SHINee è MV sè ajuḍhul ''"Tell Me What To Do"'' è taon 2016. Bâ'na aghâbây debut akting lèbât peran pendukung è serial televisi ''Reunited Worlds'' (2017). È taon 2018, ia ollè peran awwâl è ḍâlem serial televisi ''Money Flower'' è MBC TV bân ''100 Days My Prince'' è tvN. Ia jhughân abâdâh è ḍrama khusus ''After The Rain'' è KBS2 bân muncul è video musik ''"The Hardest Part"'' karjâ Roy Kim. Saterrossa, ia aghâdhui peran pendukung è ḍrama ''Abyss'' è bâbâna aktor otama Ahn Hyo-seop bân Park Bo-young. === 2020: Pangakuwan sè lebhâr === È taon 2020, ia ka'angguy aghâdhui è serial televisi JTBC ''The World of the Married'' mènangka Yeo Da-kyung. <ref name=":2">{{Cite web |last=Hong |first=Hye-min |date=7 Oktober 2019 |title=한소희, ‘부부의 세계’ 출연 확정..김희애∙백해준과 호흡 [공식] |url=http://star.hankookilbo.com/News/Read/201910070899093767 |archive-url=https://web.archive.org/web/20191101033035/http://star.hankookilbo.com/News/Read/201910070899093767 |archive-date=2019-11-01 |access-date=1 November 2019 |website=Hankook Ilbo |language=ko}}</ref> Serial panèka èsambhât mènangka ḍrama sè palèng tèngghi è ḍâlem jhâjhârbâ'ân televisi kabel Korèa Sèlatan. Berkat kesuksesan serial panèka, ia èkennal è bânnya' orèng. Polana ropana, ia narèma nominasi ghâbây Aktris Anyar sè paleng bhâgus – Televisi è Baeksang Arts Awards ka-56. <ref>{{Cite web |title=[2020 백상예술대상] 안효섭X김다미, TV부문 신인상 영예 |url=https://m.entertain.naver.com/home/article/009/0004589709 |access-date=2026-04-27 |website=m.entertain.naver.com |language=ko}}</ref> Popularitas ia jhughân ampon aghâbây bânnya' tawaran kolaborasi sareng bânnya' merek iklan. È bulân September 2020, èpon èkonfirmasi bhâkal abintang è serial aksi Netflix, ''My Name.'' <ref>{{Cite web |last=Larasati |first=Delia Arnindita |title=Confirmed! Han So Hee Jadi Mata-mata di Drakor Terbaru Netflix Undercover |url=https://hot.detik.com/kdrama/d-5182905/confirmed-han-so-hee-jadi-mata-mata-di-drakor-terbaru-netflix-undercover |access-date=2026-04-27 |website=detikhot |language=id-ID}}</ref> === 2021–satèya: Peran otama === È taon 2021, ia ka'angguy aghâdhui è ḍrama romansa JTBC ''Nevertheless'' èbârengngè Song Kang. è taon sè paḍâ, ia èpèlè è serial aksi-kriminal Netflix ''My Name,'' mènangka bhâbinè' sè rèncanana mâles è attas kamatèanna eppa'. Serial panèka è peringkat empa' è ḍhaftar acara televisi global sè palèng èkasennengi Netflix. polana penampilanna è ''My Name'', ia narèma nominasi ghâbây Aktris sè paleng bhâgus – Televisi è 58th Baeksang Arts Awards. è bulân Maret 2022, ia mo'dul è miniseri Disney+ empa' episode Soundtrack #1 èbârengngè Park Hyung-sik. è taon sè paḍâ, ia èpèlè mènangka duta global ghâbây merek mode Balenciaga. Saterrossa èbintangi è ḍrama sajârâ Netflix Gyeongseong Creature (2023–2024) è bâbâna Park Seo-joon. È bulân Juli 2023, ia mo'dul è video musik ghâbây laghu"Seven" karjâ Jungkook BTS. == Duta merek bân iklan == Ia ampon aktif mènangka moḍel molaè taon 2016. <ref>{{Cite web |date=2020-05-23 |title=‘부세계’ 한소희, 데뷔 3년 만에 ‘대세’가 된 신흥 CF퀸 |url=https://www.newsen.com/news_view.php?uid=202005221536511810 |access-date=2026-04-27 |website=‘부세계’ 한소희, 데뷔 3년 만에 ‘대세’가 된 신흥 CF퀸 - 손에 잡히는 뉴스 눈에 보이는 뉴스 - 뉴스엔 |language=ko}}</ref> Ia ampon membintangi è iklan ghâbây bânnya' merek, è antarana CJ Group, <ref>{{Cite web |last=CJ |title=error |url=https://www.cj.net/error/ |access-date=2026-04-27 |website=www.cj.net |language=ko}}</ref> J.Estina, <ref>{{Cite web |last=조선일보 |date=2020-07-21 |title=신예 배우 한소희, 제이에스티나 뷰티 모델로 발탁 |url=https://www.chosun.com/site/data/html_dir/2017/04/20/2017042001819.html |access-date=2026-04-27 |website=조선일보 |language=ko}}</ref> Banila Co., ''Eider,'' ''Charlotte Tilbury Beauty'', <ref>{{Cite web |last=틸버리 |first=샬롯 |date=2021-06-02 |title=배우 한소희, 영국 뷰티 브랜드 ‘샬롯 틸버리’ 한국 첫 모델로 발탁 - 뉴스와이어 |url=https://www.newswire.co.kr/newsRead.php?no=924475 |access-date=2026-04-27 |website=www.newswire.co.kr |language=ko}}</ref> ''L'Oréal'', bân Giano Internasional. <ref>{{Cite web |title=Han So-hee and Cha Eun-woo Play a Gorgeous Couple in Giordano's Latest Fashion Film |url=https://www.lofficielsingapore.com/fashion/han-so-hee-cha-eun-woo-play-gorgeous-couple-giordano-fall-fashion-film-2023 |access-date=2026-04-27 |website=L'Officiel Singapore |language=en}}</ref> È taon 2022, ia ḍhâddhi duta merek global ghâbây roma mode Balenciaga bân merek jem tanang mewah Swiss Omega SA . <ref>{{Cite web |last=Pool |title=7 Gaya Elegan dan Misterius Han So Hee Jadi Global Brand Ambassador Balenciaga |url=https://wolipop.detik.com/celeb-style/d-6003876/7-gaya-elegan-dan-misterius-han-so-hee-jadi-global-brand-ambassador-balenciaga |access-date=2026-04-27 |website=wolipop |language=id}}</ref> <ref>{{Cite web |date=2022-05-09 |title=Aktris Korea Pertama, Han So Hee Ditunjuk Sebagai Duta Global Omega |url=https://yoursay.suara.com/entertainment/2022/05/09/170710/aktris-korea-pertama-han-so-hee-ditunjuk-sebagai-duta-global-omega |access-date=2026-04-27 |website=Yoursay.id |language=id}}</ref> Ia jhughân mo'dul mènangka moḍel è kampanye kolaborasi Spring/National 2023 antara Balenciaga bân Adidas. È taon 2023, èmommaghi mènangka duta merek global ghâbây label mode Singapura Charles & Keith, <ref>{{Cite web |title=HAN SO HEE – NEWEST GLOBAL BRAND AMBASSADOR |url=https://www.charleskeithgroup.com/news/han-so-hee-newest-global-brand-ambassador/ |access-date=2026-04-27 |website=CHARLES & KEITH Group |language=en-US}}</ref> roma perhiasan mewah Perancis Boucheron, <ref>{{Cite web |date=2023-07-04 |title=Melebur dengan Berlian, Intip Pesona Han So Hee sebagai Global Ambassador Boucheron! |url=https://editorial.femaledaily.com/blog/2023/07/04/melebur-dengan-berlian-intip-pesona-han-so-hee-sebagai-global-ambassador-boucheron |access-date=2026-04-27 |website=Female Daily |language=en}}</ref> bân merek kalambi olahraga Fila. <ref>{{Cite web |last=Natasya |first=Dina |title=Sporty dan Stylish, Han So Hee Resmi Terpilih Menjadi Global Ambassador FILA |url=https://www.beautynesia.id/life/sporty-dan-stylish-han-so-hee-resmi-terpilih-menjadi-global-ambassador-fila/b-279795 |access-date=2026-04-27 |website=life |language=id-ID}}</ref> È taon sè paḍâ, Lotte Chilsung mèlè ia mènangka mowana anyar ghâbây produk soju Chum Churum. <ref>{{Cite web |last=이상현 |date=2023-03-03 |title=롯데칠성음료, ‘처음처럼’ 새 얼굴로 배우 한소희 발탁 |url=https://www.mk.co.kr/news/business/10666530 |access-date=2026-04-27 |website=매일경제 |language=ko}}</ref> È taon 2024, Han èpèlè mènangka duta merek global ghâbây merek peralatan roma Shark. <ref>{{Cite web |title=[단독] 한소희, 광고 블루칩 이상無...'샤크' 글로벌 모델 최초 발탁 |url=https://m.entertain.naver.com/home/article/109/0005045334 |access-date=2026-04-27 |website=m.entertain.naver.com |language=ko}}</ref> == Sombhâr == <references /> nx9nfcixxtjtuspj30bapfidv78zh05 Gaplèk 0 19447 64878 2026-07-10T02:17:28Z Oikivivi 2325 ←Membuat halaman berisi 'Gaplèk (ḍari bhâsâ Jhâbâ: gaplèk) iyâ arèya obi kajhu (tenggâng) sè la èkombi' bân èpakerrèng (èjemmor). Polana kerrèng, gaplèk lebbi awèt èsabâ' ḍâlem jangka bâkto sè abit ta' katah tenggâng sè segger, bân polana segghut èghuna'aghi ghâbây sombher bahan pangan pokok è kennengngan sè malarat ètamennè padi. Biasana pangerrèngan gaplèk rèya èlakonè lèbât prosès è jemmor è bâbâna sinar mata'arè, saèngghâ segg...' 64878 wikitext text/x-wiki Gaplèk (ḍari bhâsâ Jhâbâ: gaplèk) iyâ arèya obi kajhu (tenggâng) sè la èkombi' bân èpakerrèng (èjemmor). Polana kerrèng, gaplèk lebbi awèt èsabâ' ḍâlem jangka bâkto sè abit ta' katah tenggâng sè segger, bân polana segghut èghuna'aghi ghâbây sombher bahan pangan pokok è kennengngan sè malarat ètamennè padi. Biasana pangerrèngan gaplèk rèya èlakonè lèbât prosès è jemmor è bâbâna sinar mata'arè, saèngghâ segghut ètombuè kapang otabâ kolat sabellunna gaplèk cè' kerrèngnga, bân dhâddhi gaplèk sè abârna kakonèngan otabâ cèllèng. 348fmekhyyk4ehn6d97jt2y7hdypdp9 64879 64878 2026-07-10T02:17:48Z Oikivivi 2325 64879 wikitext text/x-wiki '''Gaplèk''' (ḍari bhâsâ Jhâbâ: gaplèk) iyâ arèya obi kajhu (tenggâng) sè la èkombi' bân èpakerrèng (èjemmor). Polana kerrèng, gaplèk lebbi awèt èsabâ' ḍâlem jangka bâkto sè abit ta' katah tenggâng sè segger, bân polana segghut èghuna'aghi ghâbây sombher bahan pangan pokok è kennengngan sè malarat ètamennè padi. Biasana pangerrèngan gaplèk rèya èlakonè lèbât prosès è jemmor è bâbâna sinar mata'arè, saèngghâ segghut ètombuè kapang otabâ kolat sabellunna gaplèk cè' kerrèngnga, bân dhâddhi gaplèk sè abârna kakonèngan otabâ cèllèng. 4osbxo53jhy5ir65k1zvaere22o2f4a