<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://opensemantic.world/w/index.php?action=history&amp;feed=atom&amp;title=Module%3AViewer%2FGithub</id>
	<title>Module:Viewer/Github - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://opensemantic.world/w/index.php?action=history&amp;feed=atom&amp;title=Module%3AViewer%2FGithub"/>
	<link rel="alternate" type="text/html" href="https://opensemantic.world/w/index.php?title=Module:Viewer/Github&amp;action=history"/>
	<updated>2026-05-05T00:31:43Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.39.17</generator>
	<entry>
		<id>https://opensemantic.world/w/index.php?title=Module:Viewer/Github&amp;diff=694&amp;oldid=prev</id>
		<title>Maintenance script: Protected &quot;Module:Viewer/Github&quot;: Protected as read-only import via Page Exchange extension ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite)) [cascading]</title>
		<link rel="alternate" type="text/html" href="https://opensemantic.world/w/index.php?title=Module:Viewer/Github&amp;diff=694&amp;oldid=prev"/>
		<updated>2026-01-08T04:44:55Z</updated>

		<summary type="html">&lt;p&gt;Protected &amp;quot;&lt;a href=&quot;/wiki/Module:Viewer/Github&quot; title=&quot;Module:Viewer/Github&quot;&gt;Module:Viewer/Github&lt;/a&gt;&amp;quot;: Protected as read-only import via Page Exchange extension ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite)) [cascading]&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&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 04:44, 8 January 2026&lt;/td&gt;
				&lt;/tr&gt;
&lt;!-- diff cache key mediawiki:diff::1.12:old-61:rev-694 --&gt;
&lt;/table&gt;</summary>
		<author><name>Maintenance script</name></author>
	</entry>
	<entry>
		<id>https://opensemantic.world/w/index.php?title=Module:Viewer/Github&amp;diff=61&amp;oldid=prev</id>
		<title>Maintenance script: Install package: OSW Core</title>
		<link rel="alternate" type="text/html" href="https://opensemantic.world/w/index.php?title=Module:Viewer/Github&amp;diff=61&amp;oldid=prev"/>
		<updated>2023-06-24T16:29:10Z</updated>

		<summary type="html">&lt;p&gt;Install package: OSW Core&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;local p = {} --p stands for package&lt;br /&gt;
&lt;br /&gt;
p.file_type_mapping = {&lt;br /&gt;
	[&amp;quot;py&amp;quot;] = &amp;quot;python&amp;quot;,&lt;br /&gt;
	[&amp;quot;json&amp;quot;] = &amp;quot;json&amp;quot;,&lt;br /&gt;
	[&amp;quot;md&amp;quot;] = &amp;quot;markdown&amp;quot;,&lt;br /&gt;
	[&amp;quot;yml&amp;quot;] = &amp;quot;yaml&amp;quot;,&lt;br /&gt;
	[&amp;quot;yaml&amp;quot;] = &amp;quot;yaml&amp;quot;,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function p.code(frame)&lt;br /&gt;
	local url = frame.args[&amp;#039;url&amp;#039;]&lt;br /&gt;
	local lang = frame.args[&amp;#039;lang&amp;#039;]&lt;br /&gt;
	if (lang == &amp;quot;&amp;quot;) then lang = nil end&lt;br /&gt;
	local show_line_numbers = frame.args[&amp;#039;show_line_numbers&amp;#039;]&lt;br /&gt;
	if (show_line_numbers == nil or show_line_numbers == &amp;quot;&amp;quot; or show_line_numbers == &amp;quot;0&amp;quot; or show_line_numbers == &amp;quot;false&amp;quot;) then show_line_numbers = false&lt;br /&gt;
	else show_line_numbers = true end&lt;br /&gt;
	local highlight = frame.args[&amp;#039;highlight&amp;#039;]&lt;br /&gt;
	local render_markdown = frame.args[&amp;#039;render_markdown&amp;#039;]&lt;br /&gt;
	if (render_markdown == nil or render_markdown == &amp;quot;&amp;quot;) then render_markdown = true end&lt;br /&gt;
	if (render_markdown == &amp;quot;0&amp;quot; or render_markdown == &amp;quot;false&amp;quot;) then render_markdown = false end&lt;br /&gt;
&lt;br /&gt;
	local url_parts = p.splitString(url, &amp;quot;#&amp;quot;)&lt;br /&gt;
	mw.logObject(url_parts)&lt;br /&gt;
	local base_url = url_parts[1]&lt;br /&gt;
	local anchor = url_parts[2]&lt;br /&gt;
	local start_line = frame.args[&amp;#039;start_line&amp;#039;]&lt;br /&gt;
	local end_line = frame.args[&amp;#039;end_line&amp;#039;]&lt;br /&gt;
	if ((start_line == nil or start_line == &amp;quot;&amp;quot;) and anchor ~= nil) then start_line =  p.splitString(p.splitString(p.splitString(anchor, &amp;quot;-&amp;quot;)[1], &amp;quot;L&amp;quot;)[1], &amp;quot;C&amp;quot;)[1] end -- &amp;#039;#L65C1-L80C10&amp;#039; =&amp;gt; 65&lt;br /&gt;
	if ((end_line == nil or end_line == &amp;quot;&amp;quot;) and anchor ~= nil) then &lt;br /&gt;
		end_line =  p.splitString(anchor, &amp;quot;-&amp;quot;)[2]&lt;br /&gt;
		if (end_line ~= nil) then end_line =  p.splitString(p.splitString(end_line, &amp;quot;L&amp;quot;)[1], &amp;quot;C&amp;quot;)[1] end -- &amp;#039;#L65C1-L80C10&amp;#039; =&amp;gt; 10&lt;br /&gt;
	end&lt;br /&gt;
	mw.logObject(start_line)&lt;br /&gt;
	mw.logObject(end_line)&lt;br /&gt;
	local path_parts = p.splitString(base_url, &amp;quot;/&amp;quot;)&lt;br /&gt;
	local protocol = path_parts[1]&lt;br /&gt;
	local domain = path_parts[2]&lt;br /&gt;
	local org = path_parts[3]&lt;br /&gt;
	local repo = path_parts[4]&lt;br /&gt;
	local blob = path_parts[5] &lt;br /&gt;
	local ref = path_parts[6] -- branch or commit&lt;br /&gt;
	local file_path =  &amp;quot;&amp;quot; --p.splitString(base_url, &amp;quot;ref&amp;quot;)[2]&lt;br /&gt;
	for i = 7, #path_parts do file_path = file_path .. &amp;quot;/&amp;quot; .. (path_parts[i]) end&lt;br /&gt;
	local file_path_parts = p.splitString(file_path, &amp;quot;.&amp;quot;)&lt;br /&gt;
	local file_type = file_path_parts[#file_path_parts]&lt;br /&gt;
	mw.logObject(path_parts)&lt;br /&gt;
	mw.logObject(file_path)&lt;br /&gt;
	mw.logObject(file_path_parts)&lt;br /&gt;
	local raw_url = &amp;quot;https://raw.githubusercontent.com/&amp;quot; .. org .. &amp;quot;/&amp;quot; .. repo .. &amp;quot;/&amp;quot; .. ref .. file_path&lt;br /&gt;
	mw.logObject(raw_url)&lt;br /&gt;
	--https://raw.githubusercontent.com/OpenSemanticLab/osw-python/b83d590553231dcc74d849af7f40239ef43546e0/src/osw/core.py&lt;br /&gt;
	local params = {}&lt;br /&gt;
	params[&amp;quot;url&amp;quot;] = raw_url&lt;br /&gt;
	params[&amp;quot;format&amp;quot;] = &amp;quot;text&amp;quot;&lt;br /&gt;
	if (start_line ~= nil) then params[&amp;quot;start line&amp;quot;] = start_line end&lt;br /&gt;
	if (end_line ~= nil) then params[&amp;quot;end line&amp;quot;] = end_line end&lt;br /&gt;
	res = mw.ext.externalData.getWebData(params)&lt;br /&gt;
	mw.logObject(res[&amp;quot;__text&amp;quot;])&lt;br /&gt;
	&lt;br /&gt;
	if (lang == nil) then lang = p.file_type_mapping[file_type] end&lt;br /&gt;
	if (lang == nil) then lang = &amp;quot;text&amp;quot; end&lt;br /&gt;
	&lt;br /&gt;
	local wikitext = &amp;quot;&amp;quot;&lt;br /&gt;
	&lt;br /&gt;
	if (lang == &amp;quot;markdown&amp;quot; and render_markdown) then&lt;br /&gt;
		-- https://www.mediawiki.org/wiki/Extension:WikiMarkdown&lt;br /&gt;
		wikitext = frame:extensionTag{ name = &amp;quot;markdown&amp;quot; , content = res[&amp;quot;__text&amp;quot;] }&lt;br /&gt;
	else&lt;br /&gt;
		local hl_params = {}&lt;br /&gt;
		hl_params[&amp;quot;lang&amp;quot;] = lang&lt;br /&gt;
		-- extract line numbers from url&lt;br /&gt;
		if (start_line ~= nil and start_line ~= &amp;quot;&amp;quot;) then hl_params[&amp;quot;start&amp;quot;] = start_line end&lt;br /&gt;
		if (show_line_numbers) then hl_params[&amp;quot;line&amp;quot;] = &amp;quot;1&amp;quot; end&lt;br /&gt;
		if (highlight ~= nil and highlight ~= &amp;quot;&amp;quot;) then &lt;br /&gt;
			if (start_line ~= nil and start_line ~= &amp;quot;&amp;quot;) then&lt;br /&gt;
				local highlight_with_offset =&amp;quot;&amp;quot;&lt;br /&gt;
				local offset = tonumber(start_line) - 1&lt;br /&gt;
				d=&amp;#039;(%D-)&amp;#039;&lt;br /&gt;
				for k,i,j in highlight:gmatch(d..&amp;#039;(%d+)&amp;#039;..d) do highlight_with_offset = highlight_with_offset .. k .. i-offset .. j end&lt;br /&gt;
				hl_params[&amp;quot;highlight&amp;quot;] = highlight_with_offset &lt;br /&gt;
			else&lt;br /&gt;
				hl_params[&amp;quot;highlight&amp;quot;] = highlight&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		mw.logObject(hl_params)&lt;br /&gt;
		-- https://www.mediawiki.org/wiki/Extension:SyntaxHighlight&lt;br /&gt;
		wikitext = frame:extensionTag{ name = &amp;quot;syntaxhighlight&amp;quot; , content = res[&amp;quot;__text&amp;quot;], args = hl_params }&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	mw.logObject(wikitext)&lt;br /&gt;
	return wikitext&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.test()&lt;br /&gt;
	d=&amp;#039;(%D-)&amp;#039;&lt;br /&gt;
	s = &amp;quot;1,2,3-5&amp;quot;&lt;br /&gt;
	res = &amp;quot;&amp;quot;&lt;br /&gt;
	for k,i,j in s:gmatch(d..&amp;#039;(%d+)&amp;#039;..d) do res = res .. k .. i+1 .. j&lt;br /&gt;
	end&lt;br /&gt;
	mw.logObject(res)&lt;br /&gt;
	--mw.logObject(names)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.splitString(inputstr, sep)&lt;br /&gt;
	&lt;br /&gt;
        if sep == nil then&lt;br /&gt;
                sep = &amp;quot;;&amp;quot;&lt;br /&gt;
        end&lt;br /&gt;
        local t={}&lt;br /&gt;
        for str in string.gmatch(inputstr, &amp;quot;([^&amp;quot;..sep..&amp;quot;]+)&amp;quot;) do&lt;br /&gt;
                table.insert(t, str)&lt;br /&gt;
        end&lt;br /&gt;
        return t&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;br /&gt;
&lt;br /&gt;
--DEBUG (direct invoke)&lt;br /&gt;
--[[&lt;br /&gt;
frame = mw.getCurrentFrame() -- Get a frame object&lt;br /&gt;
url = &amp;quot;https://github.com/OpenSemanticLab/osw-python/blob/b83d590553231dcc74d849af7f40239ef43546e0/src/osw/core.py#L49-L61&amp;quot;&lt;br /&gt;
newFrame = frame:newChild{ args = {url=url}}&lt;br /&gt;
mw.log(p.code( newFrame ) ) &lt;br /&gt;
--]]&lt;/div&gt;</summary>
		<author><name>Maintenance script</name></author>
	</entry>
</feed>