<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://kiprobatt.de/w/index.php?action=history&amp;feed=atom&amp;title=Module%3ALabProcess%2FParameter%2FConfig</id>
	<title>Module:LabProcess/Parameter/Config - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://kiprobatt.de/w/index.php?action=history&amp;feed=atom&amp;title=Module%3ALabProcess%2FParameter%2FConfig"/>
	<link rel="alternate" type="text/html" href="https://kiprobatt.de/w/index.php?title=Module:LabProcess/Parameter/Config&amp;action=history"/>
	<updated>2026-04-09T10:25:43Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.35.7</generator>
	<entry>
		<id>https://kiprobatt.de/w/index.php?title=Module:LabProcess/Parameter/Config&amp;diff=8683&amp;oldid=prev</id>
		<title>Simon Stier: Simon Stier changed the content model of the page Module:LabProcess/Parameter/Config from &quot;wikitext&quot; to &quot;Scribunto&quot;: wrong content model defined by PageImporter</title>
		<link rel="alternate" type="text/html" href="https://kiprobatt.de/w/index.php?title=Module:LabProcess/Parameter/Config&amp;diff=8683&amp;oldid=prev"/>
		<updated>2022-06-23T05:29:33Z</updated>

		<summary type="html">&lt;p&gt;Simon Stier changed the content model of the page &lt;a href=&quot;/wiki/Module:LabProcess/Parameter/Config&quot; title=&quot;Module:LabProcess/Parameter/Config&quot;&gt;Module:LabProcess/Parameter/Config&lt;/a&gt; from &amp;quot;wikitext&amp;quot; to &amp;quot;Scribunto&amp;quot;: wrong content model defined by PageImporter&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left diff-editfont-monospace&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 05:29, 23 June 2022&lt;/td&gt;
				&lt;/tr&gt;
&lt;!-- diff cache key mediawiki:diff::1.12:old-8606:rev-8683 --&gt;
&lt;/table&gt;</summary>
		<author><name>Simon Stier</name></author>
	</entry>
	<entry>
		<id>https://kiprobatt.de/w/index.php?title=Module:LabProcess/Parameter/Config&amp;diff=8606&amp;oldid=prev</id>
		<title>Maintenance script: Updated with content from Extension:OpenSemanticLab version 0.0.3</title>
		<link rel="alternate" type="text/html" href="https://kiprobatt.de/w/index.php?title=Module:LabProcess/Parameter/Config&amp;diff=8606&amp;oldid=prev"/>
		<updated>2022-06-23T05:11:30Z</updated>

		<summary type="html">&lt;p&gt;Updated with content from Extension:OpenSemanticLab version 0.0.3&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;local p = {}&lt;br /&gt;
&lt;br /&gt;
-- another example, subobject used inside another function&lt;br /&gt;
function p.create_url_param_string( parameters, index )&lt;br /&gt;
	local result = &amp;quot;&amp;quot;&lt;br /&gt;
	mw.logObject(parameters)&lt;br /&gt;
	for key,value in next, parameters do --somehow 'in pairs(parameters) do ' gets wrong values?&lt;br /&gt;
		mw.log(value)&lt;br /&gt;
		result = result .. &amp;quot;[&amp;quot; .. index .. &amp;quot;][&amp;quot; .. key .. &amp;quot;]=&amp;quot; .. value ..&amp;quot;;&amp;quot; &lt;br /&gt;
	end&lt;br /&gt;
	return result&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- from https://stackoverflow.com/questions/640642/how-do-you-copy-a-lua-table-by-value&lt;br /&gt;
function p.copy(obj, seen)&lt;br /&gt;
  if type(obj) ~= 'table' then return obj end&lt;br /&gt;
  if seen and seen[obj] then return seen[obj] end&lt;br /&gt;
  local s = seen or {}&lt;br /&gt;
  local res = setmetatable({}, getmetatable(obj))&lt;br /&gt;
  s[obj] = res&lt;br /&gt;
  for k, v in pairs(obj) do res[p.copy(k, s)] = p.copy(v, s) end&lt;br /&gt;
  return res&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- from Module:LabProcess/Object&lt;br /&gt;
-- replaces a number patter with an index, e. g. &lt;br /&gt;
-- Object0000 -index=32-&amp;gt; Object0013&lt;br /&gt;
function p.indexed_string(string_pattern, index)&lt;br /&gt;
	local pattern = string.reverse(string.match(string.reverse(string_pattern), &amp;quot;%d+&amp;quot;)) --select the last number group&lt;br /&gt;
	pattern = string.gsub(pattern, &amp;quot;%d&amp;quot;, &amp;quot;0&amp;quot;) --reset to e. g. 0001 to 0000&lt;br /&gt;
	local pattern_len = string.len(pattern)&lt;br /&gt;
	local index_string = &amp;quot;&amp;quot; .. index&lt;br /&gt;
	if (string.len(index_string) &amp;lt; pattern_len) then --auto grow pattern&lt;br /&gt;
		index_string = string.sub(pattern .. index, -pattern_len) &lt;br /&gt;
	end&lt;br /&gt;
	local result = string.reverse(string.gsub(string.reverse(string_pattern), &amp;quot;%d+&amp;quot;, string.reverse(index_string), 1)) --replace only the last number group&lt;br /&gt;
	return result&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.test()&lt;br /&gt;
	mw.log(p.create_url_param_string({p1= &amp;quot;value1&amp;quot;}, 1))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.common(frame, params)&lt;br /&gt;
	-- set default&lt;br /&gt;
	local page = nil&lt;br /&gt;
	if frame.args['page'] == nil then page = mw.title.getCurrentTitle()&lt;br /&gt;
	else page = mw.title.new(frame.args['page']) end&lt;br /&gt;
	&lt;br /&gt;
	if params['count'] == nil then params['count'] = &amp;quot;1&amp;quot; end&lt;br /&gt;
	local count = tonumber(params['count'])&lt;br /&gt;
	&lt;br /&gt;
	if (params[&amp;quot;id&amp;quot;] == nil) then params[&amp;quot;id&amp;quot;] = &amp;quot;P0000&amp;quot; end&lt;br /&gt;
	if (params[&amp;quot;name&amp;quot;] == nil) then params[&amp;quot;name&amp;quot;] = &amp;quot;Param0&amp;quot; end&lt;br /&gt;
	if (params[&amp;quot;label&amp;quot;] == nil) then params[&amp;quot;label&amp;quot;] = &amp;quot;Param 0&amp;quot; end&lt;br /&gt;
	--if (params[&amp;quot;object_id&amp;quot;] == nil) then params[&amp;quot;object_id&amp;quot;] = &amp;quot;O0000&amp;quot; end --object_id is optional&lt;br /&gt;
	if count &amp;gt; 1 then&lt;br /&gt;
		if params[&amp;quot;object_id&amp;quot;] ~= nil and string.match(params['object_id'], &amp;quot;%d+&amp;quot;) == nil then params['object_id'] = params['object_id'] .. &amp;quot;0&amp;quot; end -- e. g. &amp;quot;P&amp;quot; -&amp;gt; &amp;quot;P0&amp;quot;&lt;br /&gt;
		if string.match(params['name'], &amp;quot;%d+&amp;quot;) == nil then params['name'] = params['name'] .. &amp;quot;0&amp;quot; end&lt;br /&gt;
		if string.match(params['label'], &amp;quot;%d+&amp;quot;) == nil then params['label'] = params['label'] .. &amp;quot;0&amp;quot; end&lt;br /&gt;
		if string.match(params['id'], &amp;quot;%d+&amp;quot;) == nil then params['id'] = params['id'] .. &amp;quot;0&amp;quot; end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- common&lt;br /&gt;
	if (params[&amp;quot;actual_category&amp;quot;] == nil and params[&amp;quot;nominal_category&amp;quot;] ~= nil) then params[&amp;quot;actual_category&amp;quot;] = params[&amp;quot;nominal_category&amp;quot;] end&lt;br /&gt;
	if (params[&amp;quot;actual_type&amp;quot;] == nil and params[&amp;quot;nominal_type&amp;quot;] ~= nil) then params[&amp;quot;actual_type&amp;quot;] = params[&amp;quot;nominal_type&amp;quot;] end&lt;br /&gt;
	if (params[&amp;quot;actual_instance&amp;quot;] == nil and params[&amp;quot;nominal_instance&amp;quot;] ~= nil) then params[&amp;quot;actual_instance&amp;quot;] = params[&amp;quot;nominal_instance&amp;quot;] end&lt;br /&gt;
	if (params[&amp;quot;actual_instance_static&amp;quot;] ~= nil and params[&amp;quot;actual_instance_static&amp;quot;] ~= &amp;quot;&amp;quot;) then&lt;br /&gt;
		if string.match(params[&amp;quot;actual_instance_static&amp;quot;], &amp;quot;#&amp;quot;) == nil then params[&amp;quot;actual_instance_static&amp;quot;] = page.fullText .. &amp;quot;#&amp;quot; .. params[&amp;quot;actual_instance_static&amp;quot;] end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- devices&lt;br /&gt;
	if (params[&amp;quot;actual_setup&amp;quot;] == nil and params[&amp;quot;nominal_setup&amp;quot;] ~= nil) then params[&amp;quot;actual_setup&amp;quot;] = params[&amp;quot;nominal_setup&amp;quot;] end&lt;br /&gt;
	&lt;br /&gt;
	-- quantitatives&lt;br /&gt;
	if (params[&amp;quot;actual_quantity&amp;quot;] == nil and params[&amp;quot;nominal_quantity&amp;quot;] ~= nil) then params[&amp;quot;actual_quantity&amp;quot;] = params[&amp;quot;nominal_quantity&amp;quot;] end&lt;br /&gt;
	if (params[&amp;quot;actual_unit&amp;quot;] == nil and params[&amp;quot;nominal_unit&amp;quot;] ~= nil) then params[&amp;quot;actual_unit&amp;quot;] = params[&amp;quot;nominal_unit&amp;quot;] end&lt;br /&gt;
	&lt;br /&gt;
&lt;br /&gt;
	&lt;br /&gt;
	if count == 1 and params['offset'] == nil then params['offset'] = &amp;quot;1&amp;quot; end&lt;br /&gt;
	if params['offset'] == nil then&lt;br /&gt;
		id_offset = tonumber(string.match(params['id'], &amp;quot;%d+&amp;quot;))&lt;br /&gt;
		if params[&amp;quot;object_id&amp;quot;] ~= nil then object_offset = tonumber(string.match(params['object_id'], &amp;quot;%d+&amp;quot;)) end&lt;br /&gt;
		name_offset = tonumber(string.match(params['name'], &amp;quot;%d+&amp;quot;))&lt;br /&gt;
		label_offset = tonumber(string.match(params['label'], &amp;quot;%d+&amp;quot;))&lt;br /&gt;
	else &lt;br /&gt;
		id_offset = tonumber(params['offset'])&lt;br /&gt;
		object_offset	= tonumber(params['offset'])&lt;br /&gt;
		name_offset	= tonumber(params['offset'])&lt;br /&gt;
		label_offset	= tonumber(params['offset'])&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if params['index_offset'] == nil then params['index_offset'] = &amp;quot;0&amp;quot; end&lt;br /&gt;
	local index_offset = tonumber(params['index_offset'])&lt;br /&gt;
&lt;br /&gt;
	&lt;br /&gt;
	--delete config params&lt;br /&gt;
	params['count'] = nil&lt;br /&gt;
	params['index_offset'] = nil&lt;br /&gt;
	mw.logObject(frame)&lt;br /&gt;
	&lt;br /&gt;
	local result = &amp;quot;&amp;quot;&lt;br /&gt;
	for index = 0, count - 1 do&lt;br /&gt;
		if count &amp;gt; 1 then&lt;br /&gt;
			params['id'] = p.indexed_string( params['id'], index + id_offset)&lt;br /&gt;
			params['name'] = p.indexed_string( params['name'], index + name_offset)&lt;br /&gt;
			params['label'] = p.indexed_string( params['label'], index + label_offset)&lt;br /&gt;
			if params[&amp;quot;object_id&amp;quot;] ~= nil then params['object_id'] = p.indexed_string( params['object_id'], index + object_offset) end&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		--object_ids = object_ids .. params['id']&lt;br /&gt;
		--local params = p.copy(params)&lt;br /&gt;
		result = result .. p.create_url_param_string(params, index + 1 + index_offset)&lt;br /&gt;
		--result = result .. p.create_url_param_string(frame, index)&lt;br /&gt;
	end&lt;br /&gt;
	return result	&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.object(frame)&lt;br /&gt;
	local params = p.copy(frame.args) --frame.args is a metatable so we have to create a normal table as copy to edit it&lt;br /&gt;
	if (params[&amp;quot;label&amp;quot;] == nil) then params[&amp;quot;label&amp;quot;] = &amp;quot;Object 0&amp;quot; end&lt;br /&gt;
	return p.common(frame, params)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.tool(frame)&lt;br /&gt;
	local params = p.copy(frame.args)&lt;br /&gt;
	if (params[&amp;quot;label&amp;quot;] == nil) then params[&amp;quot;label&amp;quot;] = &amp;quot;Device 0&amp;quot; end&lt;br /&gt;
	return p.common(frame, params)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.file(frame)&lt;br /&gt;
	local params = p.copy(frame.args)&lt;br /&gt;
	if (params[&amp;quot;label&amp;quot;] == nil) then params[&amp;quot;label&amp;quot;] = &amp;quot;File 0&amp;quot; end&lt;br /&gt;
	return p.common(frame, params)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.quantitative(frame)&lt;br /&gt;
	local params = p.copy(frame.args)&lt;br /&gt;
	if (params[&amp;quot;label&amp;quot;] == nil) then params[&amp;quot;label&amp;quot;] = &amp;quot;Quantitative 0&amp;quot; end&lt;br /&gt;
	return p.common(frame, params)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;br /&gt;
&lt;br /&gt;
--DEBUG&lt;br /&gt;
--[[&lt;br /&gt;
frame = mw.getCurrentFrame() -- Get a frame object&lt;br /&gt;
newFrame = frame:newChild{ -- Get one with args&lt;br /&gt;
	title = 'LabObject:OSL02344d31ba6d4e49acc75772946f1ba1' ,&lt;br /&gt;
 args = { &lt;br /&gt;
[&amp;quot;nominal_category&amp;quot;] = &amp;quot;Category:OSLb1415173552d4921acf30ac51f3bce62&amp;quot;,&lt;br /&gt;
[&amp;quot;name&amp;quot;] = &amp;quot;MagazineSelection&amp;quot;,&lt;br /&gt;
[&amp;quot;label&amp;quot;] = &amp;quot;Magazine Selection&amp;quot;,&lt;br /&gt;
[&amp;quot;count&amp;quot;] = 3&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
mw.log(p.object( newFrame ) ) &lt;br /&gt;
--]]&lt;/div&gt;</summary>
		<author><name>Maintenance script</name></author>
	</entry>
</feed>