モジュール:Protocol version

提供: Minecraft Wiki
移動先: 案内検索

このモジュールは、{{Protocol version}}{{Data version}}、および {{Protocol version/Table}} を実装しています。

このモジュールで使用される実際のデータは、モジュール:Protocol version/Versionsに格納されています。

関連項目[ソースを編集]

[閲覧 | 編集 | 履歴 | キャッシュ破棄]上記の解説は、モジュール:Protocol version/docから参照されています。
local p = {}

-- {{Protocol version}}
function p.protocol_version( f )
    local args = f
    if f == mw.getCurrentFrame() then 
        args = require( 'モジュール:ProcessArgs' ).merge( true )
    end
    local version = mw.text.trim( args[1] or '' )
    
    -- load the values from the submodule
    local version_data = mw.loadData( 'モジュール:Protocol version/Versions' ).versions[version]
    
    local category = ''
    local value
    local title = mw.title.getCurrentTitle()
    
    if version_data then
        if version_data.protocol then
    		if version_data.protocol == 'Unknown' then
    			value = '[[Template:Protocol version#Unknown version|Unknown]]'
    			if not args.nocat and title.namespace == 0 and not title.isSubpage then
					category = '[[Category:Unknown protocol version]]'
				end
    		else
    	 	value = version_data.protocol
			end
        else
            value = 'N/A'
        end
    else
        value = '[[テンプレート:Protocol version#不明なバージョン|—]]'
        if not args.nocat and title.namespace == 0 and not title.isSubpage then
            category = '[[カテゴリ:不明なプロトコルバージョン]]'
        end
    end
    return value .. category
end

-- {{Data version}}
function p.data_version( f )
    local args = f
    if f == mw.getCurrentFrame() then 
        args = require( 'モジュール:ProcessArgs' ).merge( true )
    end
    local version = mw.text.trim( args[1] or '' )
    
    -- load the values from the submodule
    local version_data = mw.loadData( 'モジュール:Protocol version/Versions' ).versions[version]
    
    local category = ''
    local value
    local title = mw.title.getCurrentTitle()
    
    if version_data then
        if version_data.data then
            if version_data.data == 'Unknown' then
    			value = '[[テンプレート:Data version#不明なバージョン|—]]'
    			if not args.nocat and title.namespace == 0 and not title.isSubpage then
					category = '[[カテゴリ:不明なデータバージョン]]'
				end
			else
				value = version_data.data
			end
        else
            value = 'N/A'
        end
    else
        value = '[[テンプレート:Data version#不明なバージョン|—]]'
        if not args.nocat and title.namespace == 0 and not title.isSubpage then
            category = '[[カテゴリ:不明なデータバージョン]]'
        end
    end
    return value .. category
end

-- Version table ({{Protocol version/table}})
function p.table( f )
    local args = f
    if f == mw.getCurrentFrame() then
        args = require( 'モジュール:ProcessArgs' ).merge( true )
    end
    
    local html = {}
    local groups = mw.loadData( 'モジュール:Protocol version/Versions' ).groups

    for _, group in ipairs(groups) do
    	local include = true
    	if #args ~= 0 then
    		include = nil
    		for __, name in ipairs(args) do
    			if name == group.name then
    				include = true
    				break
				end
			end
		end

		if include then
                if not args.notitle then
	            table.insert( html, "=== [[" .. group.link .. '|' .. group.name .. "]] ===\n" )
                end
	        if group.desc ~= nil then
	            table.insert( html, group.desc .. '\n')
	        end
	        table.insert( html, "<table class='wikitable sortable jquery-tablesorter'>\n" )
	        table.insert( html, '<tr>\n' )
	        table.insert( html, '<th>バージョン</th>\n' )
	        table.insert( html, '<th>[[プロトコルバージョン]]</th>\n' )
	        if group.has_data_versions then
	            table.insert( html, '<th>[[データバージョン]]</th>\n' )
	        end
	        table.insert( html, '</tr>\n' )
	
	        local num_same_protocol
	        local last_protocol = -1
	        local protocol_row
	        
	        local num_same_data
	        local last_data = -1
	        local data_row
	
	        for __, version in ipairs(group.values) do
	            table.insert( html, '<tr>' )
	            table.insert( html, '<td>[[' .. version.name .. ']]</td>\n' )
	            if version.protocol ~= last_protocol or version.force_split_protocol then
	                last_protocol = version.protocol
	                num_same_protocol = 1
	                table.insert( html, '<td style="text-align:center">' .. version.protocol .. '</td>\n' )
	                protocol_row = #html
	            else
	                num_same_protocol = num_same_protocol + 1
	                html[protocol_row] = '<td style="text-align:center" rowspan="' .. num_same_protocol .. '">' .. version.protocol .. '</td>\n'
	            end
	            if group.has_data_versions then
	                if version.data then
	                	if version.data ~= last_data then
	                		last_data = version.data
	                		num_same_data = 1
	                		table.insert( html, '<td style="text-align:center">' .. version.data .. '</td>\n' )
	                		data_row = #html
	                	else
	                		num_same_data = num_same_data + 1
	                		html[data_row] = '<td style="text-align:center" rowspan="' .. num_same_data .. '">' .. version.data .. '</td>\n'
	                	end
	                else
	                	if last_data ~= "N/A" then
	                		last_data = "N/A"
	                		num_same_data = 1
	                		table.insert( html, '<td style="text-align:center">N/A</td>\n' )
	                		data_row = #html
	                	else
	                		num_same_data = num_same_data + 1
	                		html[data_row] = '<td style="text-align:center" rowspan="' .. num_same_data .. '">' .. "N/A </td>\n"
	                	end
	                end
	            end
	            table.insert( html, '</tr>\n' )
	        end
	
	        table.insert( html, '</table>\n' )
        end
    end

    return table.concat( html )
end

return p