<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh">
	<id>https://arolstar52-zhtest.hf.space/index.php?action=history&amp;feed=atom&amp;title=Module%3ARouteSequence</id>
	<title>Module:RouteSequence - 版本历史</title>
	<link rel="self" type="application/atom+xml" href="https://arolstar52-zhtest.hf.space/index.php?action=history&amp;feed=atom&amp;title=Module%3ARouteSequence"/>
	<link rel="alternate" type="text/html" href="https://arolstar52-zhtest.hf.space/index.php?title=Module:RouteSequence&amp;action=history"/>
	<updated>2026-06-27T09:21:12Z</updated>
	<subtitle>本wiki上该页面的版本历史</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://arolstar52-zhtest.hf.space/index.php?title=Module:RouteSequence&amp;diff=2514916&amp;oldid=prev</id>
		<title>imported&gt;TimWu007：​自Module:RouteSequence/sandbox合并Siyuwj的版本77358767</title>
		<link rel="alternate" type="text/html" href="https://arolstar52-zhtest.hf.space/index.php?title=Module:RouteSequence&amp;diff=2514916&amp;oldid=prev"/>
		<updated>2023-06-12T05:59:53Z</updated>

		<summary type="html">&lt;p&gt;自&lt;a href=&quot;/wiki/Module:RouteSequence/sandbox&quot; title=&quot;Module:RouteSequence/sandbox&quot;&gt;Module:RouteSequence/sandbox&lt;/a&gt;合并&lt;a href=&quot;/wiki/Special:%E7%94%A8%E6%88%B7%E8%B4%A1%E7%8C%AE/Siyuwj&quot; title=&quot;Special:用户贡献/Siyuwj&quot;&gt;Siyuwj&lt;/a&gt;的&lt;a href=&quot;/wiki/Special:%E5%9B%BA%E5%AE%9A%E9%93%BE%E6%8E%A5/77358767&quot; title=&quot;Special:固定链接/77358767&quot;&gt;版本77358767&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新页面&lt;/b&gt;&lt;/p&gt;&lt;div&gt;local p = {&lt;br /&gt;
    STATION_SEPARATOR = &amp;#039;&amp;amp;#32;&amp;amp;ndash;&amp;amp;#32;&amp;#039;,&lt;br /&gt;
    DEFAULT_STATION_SUFFIX = &amp;#039;站&amp;#039;,&lt;br /&gt;
    BLOCK_ALIGN_PATTERN = &amp;#039;##BLOCK_ALIGN##&amp;#039;,&lt;br /&gt;
    BLOCK_START = &amp;#039;&amp;amp;#32;&amp;amp;lt;&amp;amp;#32;&amp;lt;div style=&amp;quot;display:inline-block; text-align: ##BLOCK_ALIGN##; vertical-align:middle;&amp;quot;&amp;gt;&amp;#039;,&lt;br /&gt;
    BLOCK_START_PURE = &amp;#039;&amp;lt;div style=&amp;quot;display:inline-block; text-align: ##BLOCK_ALIGN##; vertical-align:middle;&amp;quot;&amp;gt;&amp;#039;,&lt;br /&gt;
    BLOCK_LINE_SEPARATOR = &amp;#039;&amp;lt;br /&amp;gt;&amp;#039;,&lt;br /&gt;
    BLOCK_END = &amp;#039;&amp;lt;/div&amp;gt;&amp;amp;#32;&amp;amp;gt;&amp;amp;#32;&amp;#039;,&lt;br /&gt;
    BLOCK_END_PURE = &amp;#039;&amp;lt;/div&amp;gt;&amp;#039;,&lt;br /&gt;
    GRAY_COLOR = &amp;#039;#717171&amp;#039;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
p.sep_translate = {&lt;br /&gt;
    [&amp;#039;%%dash%%&amp;#039;] = &amp;#039;&amp;amp;ndash;&amp;#039;,&lt;br /&gt;
    [&amp;#039;%%rarrow%%&amp;#039;] = &amp;#039;→&amp;#039;,&lt;br /&gt;
    [&amp;#039;%%larrow%%&amp;#039;] = &amp;#039;←&amp;#039;,&lt;br /&gt;
    [&amp;#039;%%darrow%%&amp;#039;] = &amp;#039;↔&amp;#039;,&lt;br /&gt;
    [&amp;#039;%%ldarrow%%&amp;#039;] = &amp;#039;⇐&amp;#039;,&lt;br /&gt;
    [&amp;#039;%%rdarrow%%&amp;#039;] = &amp;#039;⇒&amp;#039;,&lt;br /&gt;
    [&amp;#039;%%ddarrow%%&amp;#039;] = &amp;#039;⇔&amp;#039;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
p.station_suffix = p.DEFAULT_STATION_SUFFIX&lt;br /&gt;
&lt;br /&gt;
function p.truncateEnds(s, l)&lt;br /&gt;
    if l == nil then l = 1 end&lt;br /&gt;
    return string.sub(s, l + 1, string.len(s) - l)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.appendStyle(s, a)&lt;br /&gt;
    s = mw.text.trim(s)&lt;br /&gt;
    if s == &amp;#039;&amp;#039; then&lt;br /&gt;
        return a&lt;br /&gt;
    elseif string.find(s, &amp;#039;;$&amp;#039;) ~= nil then&lt;br /&gt;
        return s .. &amp;#039; &amp;#039; .. a&lt;br /&gt;
    else&lt;br /&gt;
        return s .. &amp;#039;; &amp;#039; .. a&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.loadSystemStationData(system, station_link)&lt;br /&gt;
	local status&lt;br /&gt;
	local system_data&lt;br /&gt;
	local adj_result&lt;br /&gt;
	&lt;br /&gt;
	if string.sub(system, 1, 3) == &amp;#039;AS:&amp;#039; then&lt;br /&gt;
		-- legacy AS-coersion code&lt;br /&gt;
		system = string.sub(system, 4)&lt;br /&gt;
	end&lt;br /&gt;
	adj_result = require(&amp;#039;Module:Adjacent stations&amp;#039;)._station({&lt;br /&gt;
		system = system,&lt;br /&gt;
		station = station_link,&lt;br /&gt;
		line = nil,&lt;br /&gt;
		type = nil,&lt;br /&gt;
	}, {})&lt;br /&gt;
	return string.sub(adj_result, 3, string.len(adj_result) - 2)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.marshalStation(station_link, style, system, frame)&lt;br /&gt;
	local station_name&lt;br /&gt;
	local station_data = nil&lt;br /&gt;
	&lt;br /&gt;
	function marshal(station_link, station_name, style)&lt;br /&gt;
	    if style == nil or mw.text.trim(style) == &amp;#039;&amp;#039; then&lt;br /&gt;
    	    return &amp;#039;[[&amp;#039; .. station_link .. &amp;#039;|&amp;#039; .. station_name .. &amp;#039;]]&amp;#039;&lt;br /&gt;
    	else&lt;br /&gt;
        	return &amp;#039;[[&amp;#039; .. station_link .. &amp;#039;|&amp;lt;span style=&amp;quot;&amp;#039; .. style .. &amp;#039;&amp;quot;&amp;gt;&amp;#039; .. station_name .. &amp;#039;&amp;lt;/span&amp;gt;]]&amp;#039;&lt;br /&gt;
    	end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if system ~= nil and mw.text.trim(system) ~= &amp;#039;&amp;#039; and not string.find(station_link, &amp;quot;!&amp;quot;) then&lt;br /&gt;
		station_data = p.loadSystemStationData(system, station_link)&lt;br /&gt;
	end&lt;br /&gt;
	if station_data ~= nil then&lt;br /&gt;
        local i, datum&lt;br /&gt;
        local repr = &amp;#039;&amp;#039;&lt;br /&gt;
        local station_parts&lt;br /&gt;
        &lt;br /&gt;
        if type(station_data) ~= &amp;#039;table&amp;#039; then&lt;br /&gt;
            station_data = {station_data, }&lt;br /&gt;
        end&lt;br /&gt;
        for i, datum in ipairs(station_data) do&lt;br /&gt;
            if string.find(datum, &amp;#039;|&amp;#039;, 1, true) == nil or string.find(datum, &amp;#039;[[&amp;#039;, 1, true) ~= nil then&lt;br /&gt;
                repr = repr .. datum&lt;br /&gt;
            else&lt;br /&gt;
                station_parts = mw.text.split(datum, &amp;#039;|&amp;#039;)&lt;br /&gt;
                station_link = station_parts[1]&lt;br /&gt;
                station_name = table.concat(station_parts, &amp;#039;|&amp;#039;, 2)&lt;br /&gt;
                if frame ~= nil and string.find(station_name, &amp;#039;{&amp;#039;, 1, true) ~= nil then&lt;br /&gt;
                    station_name = frame:preprocess(table.concat(station_parts, &amp;#039;|&amp;#039;, 2))&lt;br /&gt;
                end&lt;br /&gt;
                repr = repr .. marshal(station_link, station_name, style)&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
        return repr&lt;br /&gt;
    else&lt;br /&gt;
        local link_name_split = mw.text.split(station_link, &amp;#039;!&amp;#039;)&lt;br /&gt;
        if table.getn(link_name_split) == 1 then&lt;br /&gt;
            station_name, match = string.gsub(station_link, p.station_suffix .. &amp;#039; +%(.+%)$&amp;#039;, &amp;#039;&amp;#039;)&lt;br /&gt;
            if match == 0 then&lt;br /&gt;
                station_name, match = string.gsub(station_link, p.station_suffix .. &amp;#039;$&amp;#039;, &amp;#039;&amp;#039;)&lt;br /&gt;
            end&lt;br /&gt;
            if match == 0 then&lt;br /&gt;
                station_name = station_link&lt;br /&gt;
                station_link = station_link .. p.station_suffix&lt;br /&gt;
            end&lt;br /&gt;
        else&lt;br /&gt;
            station_link = link_name_split[1]&lt;br /&gt;
            station_name = link_name_split[2]&lt;br /&gt;
        end&lt;br /&gt;
        return marshal(station_link, station_name, style)&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.parseLink(station_link, style, system, frame)&lt;br /&gt;
    local station_name, match&lt;br /&gt;
    local prefix, suffix = &amp;#039;&amp;#039;, &amp;#039;&amp;#039;&lt;br /&gt;
    local link_name_split&lt;br /&gt;
&lt;br /&gt;
    if string.find(station_link, &amp;quot;^%%.+%%$&amp;quot;) ~= nil then&lt;br /&gt;
    	return p.renderPlain(p.truncateEnds(station_link), style, system, frame)&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    local has_decorator = true&lt;br /&gt;
    while has_decorator do&lt;br /&gt;
        local prefix_patterns = {&lt;br /&gt;
            [&amp;quot;^s.+s$&amp;quot;] = { prefix=&amp;#039;&amp;lt;s&amp;gt;&amp;#039;, suffix=&amp;#039;&amp;lt;/s&amp;gt;&amp;#039;, len=1 },&lt;br /&gt;
            [&amp;quot;^&amp;#039;.+&amp;#039;$&amp;quot;] = { prefix=&amp;quot;&amp;#039;&amp;quot;, suffix=&amp;quot;&amp;#039;&amp;quot;, len=1 },&lt;br /&gt;
            [&amp;quot;^%(.+%)$&amp;quot;] = { prefix=&amp;#039;(&amp;#039;, suffix=&amp;#039;)&amp;#039;, len=1 },&lt;br /&gt;
            [&amp;quot;^（.+）$&amp;quot;] = { prefix=&amp;#039;（&amp;#039;, suffix=&amp;#039;）&amp;#039;, len=1 },&lt;br /&gt;
        }&lt;br /&gt;
        has_decorator = false&lt;br /&gt;
        if string.find(station_link, &amp;quot;^g.+g$&amp;quot;) ~= nil then&lt;br /&gt;
            station_link = p.truncateEnds(station_link)&lt;br /&gt;
            style = p.appendStyle(style, &amp;#039;color:&amp;#039; .. p.GRAY_COLOR)&lt;br /&gt;
            has_decorator = true&lt;br /&gt;
        end&lt;br /&gt;
        for patt, ps in pairs(prefix_patterns) do&lt;br /&gt;
            if string.find(station_link, patt) ~= nil then&lt;br /&gt;
                station_link = p.truncateEnds(station_link, ps.len)&lt;br /&gt;
                prefix = ps.prefix .. prefix&lt;br /&gt;
                suffix = suffix .. ps.suffix&lt;br /&gt;
                has_decorator = true&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
	return prefix .. p.marshalStation(station_link, style, system, frame) .. suffix&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.renderPlain(text, style, system, frame)&lt;br /&gt;
    local spos, epos, station_name = 1, 1, nil&lt;br /&gt;
    local out_text = &amp;#039;&amp;#039;&lt;br /&gt;
    local pos = 1&lt;br /&gt;
	while spos ~= nil do&lt;br /&gt;
		spos, epos, station_name = string.find(text, &amp;#039;%$([^%$]+)%$&amp;#039;, pos)&lt;br /&gt;
		if spos ~= nil then&lt;br /&gt;
			out_text = out_text .. string.sub(text, pos, spos - 1) .. p.parseLink(station_name, style, system, frame)&lt;br /&gt;
			pos = epos + 1&lt;br /&gt;
		else&lt;br /&gt;
			out_text = out_text .. string.sub(text, pos, string.len(text))&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return out_text&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.splitStationExpr(station)&lt;br /&gt;
    local new_split = {}&lt;br /&gt;
    local separators = {}&lt;br /&gt;
    local last_element, cur_element&lt;br /&gt;
    local cur_separator = &amp;#039;&amp;#039;&lt;br /&gt;
    local station_split = mw.text.split(station, &amp;#039;#&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
    for i, spart in ipairs(station_split) do&lt;br /&gt;
        if i &amp;gt; 1 and (string.find(last_element, &amp;#039;&amp;amp;$&amp;#039;) ~= nil  -- process html escapes, i.e., `&amp;amp;#32;`&lt;br /&gt;
            or string.find(last_element, &amp;#039;: *$&amp;#039;) ~= nil       -- process CSS color, i.e., `color: #cccccc`&lt;br /&gt;
            or string.find(last_element, &amp;#039;= *$&amp;#039;) ~= nil       -- process old-fashioned property without quotes, i.e., `&amp;lt;font color=#cccccc&amp;gt;`&lt;br /&gt;
            or string.find(last_element, &amp;#039;= *\&amp;quot; *$&amp;#039;) ~= nil   -- process old-fashioned property with quotes, i.e., `&amp;lt;font color=&amp;quot;#cccccc&amp;quot;&amp;gt;`&lt;br /&gt;
            ) then&lt;br /&gt;
            table.remove(new_split)&lt;br /&gt;
            table.remove(separators)&lt;br /&gt;
            cur_element = last_element .. &amp;#039;#&amp;#039; .. spart&lt;br /&gt;
        elseif i &amp;gt; 1 and spart == &amp;#039;&amp;#039; then&lt;br /&gt;
            table.remove(new_split)&lt;br /&gt;
            table.remove(separators)&lt;br /&gt;
            cur_separator = &amp;#039;&amp;amp;#32;&amp;#039;&lt;br /&gt;
            cur_element = last_element&lt;br /&gt;
        else&lt;br /&gt;
            cur_element = spart&lt;br /&gt;
        end&lt;br /&gt;
        table.insert(new_split, cur_element)&lt;br /&gt;
        table.insert(separators, cur_separator)&lt;br /&gt;
        cur_separator = &amp;#039;&amp;#039;&lt;br /&gt;
        last_element = cur_element&lt;br /&gt;
    end&lt;br /&gt;
    return new_split, separators&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.parseStation(station, style, system, frame)&lt;br /&gt;
    local station_str, station_link&lt;br /&gt;
    local station_prefix, station_suffix&lt;br /&gt;
    local station_split, station_seps = p.splitStationExpr(station, &amp;#039;#&amp;#039;)&lt;br /&gt;
    &lt;br /&gt;
    if table.getn(station_split) == 1 then&lt;br /&gt;
        station_prefix = &amp;#039;&amp;#039;&lt;br /&gt;
        station_expr = mw.text.trim(station_split[1])&lt;br /&gt;
        station_suffix = &amp;#039;&amp;#039;&lt;br /&gt;
    elseif table.getn(station_split) == 2 then&lt;br /&gt;
        station_prefix = mw.text.trim(station_split[1]) .. station_seps[1]&lt;br /&gt;
        station_expr = mw.text.trim(station_split[2])&lt;br /&gt;
        station_suffix = &amp;#039;&amp;#039;&lt;br /&gt;
    elseif table.getn(station_split) == 3 then&lt;br /&gt;
        if mw.text.trim(station_split[1]) ~= &amp;#039;&amp;#039; then&lt;br /&gt;
            station_prefix = mw.text.trim(station_split[1]) .. station_seps[1]&lt;br /&gt;
        else&lt;br /&gt;
            station_prefix = &amp;#039;&amp;#039;&lt;br /&gt;
        end&lt;br /&gt;
        station_expr = mw.text.trim(station_split[2])&lt;br /&gt;
        station_suffix = station_seps[2] .. mw.text.trim(station_split[3])&lt;br /&gt;
    end&lt;br /&gt;
    if station_prefix ~= &amp;#039;&amp;#039; then&lt;br /&gt;
    	station_prefix = p.renderPlain(station_prefix, style, system, frame)&lt;br /&gt;
	end&lt;br /&gt;
    if station_suffix ~= &amp;#039;&amp;#039; then&lt;br /&gt;
    	station_suffix = p.renderPlain(station_suffix, style, system, frame)&lt;br /&gt;
	end&lt;br /&gt;
    station_link = p.parseLink(mw.text.trim(station_expr), style, system, frame)&lt;br /&gt;
    station_str = station_prefix .. station_link .. station_suffix&lt;br /&gt;
    if station_prefix ~= &amp;#039;&amp;#039; or station_suffix ~= &amp;#039;&amp;#039; then&lt;br /&gt;
        station_str = &amp;#039;&amp;lt;span class=&amp;quot;nowrap&amp;quot;&amp;gt;&amp;#039; .. station_str .. &amp;#039;&amp;lt;/span&amp;gt;&amp;#039;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return station_str&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.processRoute(route_str, gstyle, condition, system, frame)&lt;br /&gt;
    if gstyle == nil then&lt;br /&gt;
        gstyle = &amp;#039;&amp;#039;&lt;br /&gt;
    end&lt;br /&gt;
    if condition == nil then&lt;br /&gt;
        condition = &amp;#039;&amp;#039;&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    local style = gstyle&lt;br /&gt;
    local out_style = gstyle&lt;br /&gt;
    &lt;br /&gt;
    local stations = mw.text.split(route_str, &amp;#039;~&amp;#039;)&lt;br /&gt;
    local output_strs = {}&lt;br /&gt;
&lt;br /&gt;
    local condition = mw.text.trim(condition)&lt;br /&gt;
    local cond_expr, conds, cond, raw_cond&lt;br /&gt;
    local cond_met = true&lt;br /&gt;
    &lt;br /&gt;
    local gray_state, italic_state = false, false&lt;br /&gt;
    &lt;br /&gt;
    local block_level = 0&lt;br /&gt;
    local block_align&lt;br /&gt;
    local station_index = 0&lt;br /&gt;
    &lt;br /&gt;
    local bl_mark&lt;br /&gt;
&lt;br /&gt;
    local separator&lt;br /&gt;
    local next_separator = p.STATION_SEPARATOR&lt;br /&gt;
    local user_separator = p.STATION_SEPARATOR&lt;br /&gt;
    &lt;br /&gt;
    function endRouteLine()&lt;br /&gt;
    	local i&lt;br /&gt;
	    -- change all BLOCK_END at ends with BLOCK_END_PURE&lt;br /&gt;
	    i = table.getn(output_strs)&lt;br /&gt;
	    while i &amp;gt; 0 and output_strs[i] == p.BLOCK_END do&lt;br /&gt;
	    	output_strs[i] = p.BLOCK_END_PURE&lt;br /&gt;
	    	i = i - 1&lt;br /&gt;
	    end&lt;br /&gt;
		-- make sure all blocks ended&lt;br /&gt;
	    while block_level &amp;gt; 0 do&lt;br /&gt;
	        block_level = block_level - 1&lt;br /&gt;
	        table.insert(output_strs, p.BLOCK_END_PURE)&lt;br /&gt;
	    end&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    for i, station in ipairs(stations) do&lt;br /&gt;
        station = mw.text.trim(station)&lt;br /&gt;
        if string.find(station, &amp;#039;^con *=&amp;#039;) ~= nil then&lt;br /&gt;
            cond_expr = mw.text.trim(mw.text.split(station, &amp;#039;=&amp;#039;)[2])&lt;br /&gt;
            if cond_expr == &amp;#039;&amp;#039; then&lt;br /&gt;
                cond_met = true&lt;br /&gt;
            else&lt;br /&gt;
                conds = mw.text.split(cond_expr, &amp;#039;#&amp;#039;)&lt;br /&gt;
                cond_met = false&lt;br /&gt;
                for i, cond in ipairs(conds) do&lt;br /&gt;
                    raw_cond = mw.text.trim(cond)&lt;br /&gt;
                    if string.find(raw_cond, &amp;#039;^- *&amp;#039;) ~= nil then&lt;br /&gt;
                        raw_cond = string.gsub(raw_cond, &amp;#039;^- *&amp;#039;, &amp;#039;&amp;#039;)&lt;br /&gt;
                        if mw.text.trim(raw_cond) ~= condition then&lt;br /&gt;
                            cond_met = true&lt;br /&gt;
                            break&lt;br /&gt;
                        end&lt;br /&gt;
                    else&lt;br /&gt;
                        if mw.text.trim(raw_cond) == condition then&lt;br /&gt;
                            cond_met = true&lt;br /&gt;
                            break&lt;br /&gt;
                        end&lt;br /&gt;
                    end&lt;br /&gt;
                end&lt;br /&gt;
            end&lt;br /&gt;
        elseif cond_met then&lt;br /&gt;
        	if string.find(station, &amp;#039;^style *=&amp;#039;) ~= nil then&lt;br /&gt;
	            style = mw.text.trim(mw.text.split(station, &amp;#039;=&amp;#039;)[2])&lt;br /&gt;
	            if style == &amp;#039;&amp;#039; then&lt;br /&gt;
	                style = gstyle&lt;br /&gt;
	            end&lt;br /&gt;
	        elseif string.find(station, &amp;#039;^sep *=&amp;#039;) ~= nil then&lt;br /&gt;
		        separator = mw.text.trim(mw.text.split(station, &amp;#039;=&amp;#039;)[2])&lt;br /&gt;
		        if separator == &amp;#039;&amp;#039; then&lt;br /&gt;
		            separator = p.STATION_SEPARATOR&lt;br /&gt;
		        else&lt;br /&gt;
		            separator = &amp;#039;&amp;amp;#32;&amp;#039; .. separator .. &amp;#039;&amp;amp;#32;&amp;#039;&lt;br /&gt;
		            for spatt, sep in pairs(p.sep_translate) do&lt;br /&gt;
		                separator = string.gsub(separator, spatt, sep)&lt;br /&gt;
		            end&lt;br /&gt;
		        end&lt;br /&gt;
		        next_separator = separator&lt;br /&gt;
		        user_separator = separator&lt;br /&gt;
	        elseif station == &amp;#039;blstart&amp;#039; then&lt;br /&gt;
	            block_level = block_level + 1&lt;br /&gt;
	            if station_index &amp;gt; 0 then&lt;br /&gt;
	                bl_mark = string.gsub(p.BLOCK_START, p.BLOCK_ALIGN_PATTERN, &amp;#039;left&amp;#039;)&lt;br /&gt;
	            else&lt;br /&gt;
	                bl_mark = string.gsub(p.BLOCK_START_PURE, p.BLOCK_ALIGN_PATTERN, &amp;#039;right&amp;#039;)&lt;br /&gt;
	            end&lt;br /&gt;
	            table.insert(output_strs, bl_mark)&lt;br /&gt;
	            next_separator = &amp;#039;&amp;#039;&lt;br /&gt;
	        elseif string.find(station, &amp;#039;^blstart *=&amp;#039;) ~= nil then&lt;br /&gt;
	            block_level = block_level + 1&lt;br /&gt;
	            block_align = mw.text.trim(mw.text.split(station, &amp;#039;=&amp;#039;)[2])&lt;br /&gt;
	            if station_index &amp;gt; 0 then&lt;br /&gt;
	                bl_mark = string.gsub(p.BLOCK_START, p.BLOCK_ALIGN_PATTERN, block_align)&lt;br /&gt;
	            else&lt;br /&gt;
	                bl_mark = string.gsub(p.BLOCK_START_PURE, p.BLOCK_ALIGN_PATTERN, block_align)&lt;br /&gt;
	            end&lt;br /&gt;
	            table.insert(output_strs, bl_mark)&lt;br /&gt;
	            next_separator = &amp;#039;&amp;#039;&lt;br /&gt;
	        elseif station == &amp;#039;blline&amp;#039; then&lt;br /&gt;
	            next_separator = p.BLOCK_LINE_SEPARATOR&lt;br /&gt;
	        elseif station == &amp;#039;blend&amp;#039; then&lt;br /&gt;
	            block_level = block_level - 1&lt;br /&gt;
	            table.insert(output_strs, p.BLOCK_END)&lt;br /&gt;
	            next_separator = &amp;#039;&amp;#039;&lt;br /&gt;
	        elseif station == &amp;#039;gstart&amp;#039; then&lt;br /&gt;
	            gray_state = true&lt;br /&gt;
	        elseif station == &amp;#039;gend&amp;#039; then&lt;br /&gt;
	            gray_state = false&lt;br /&gt;
	        elseif station == &amp;#039;istart&amp;#039; then&lt;br /&gt;
	            italic_state = true&lt;br /&gt;
	        elseif station == &amp;#039;iend&amp;#039; then&lt;br /&gt;
	            italic_state = false&lt;br /&gt;
	        elseif station == &amp;#039;line&amp;#039; then&lt;br /&gt;
	            endRouteLine()&lt;br /&gt;
	            next_separator = &amp;#039;&amp;lt;br /&amp;gt;&amp;#039;&lt;br /&gt;
	        else&lt;br /&gt;
	            station_index = station_index + 1&lt;br /&gt;
	            if station_index &amp;gt; 1 or block_level &amp;gt; 0 then&lt;br /&gt;
	                table.insert(output_strs, next_separator)&lt;br /&gt;
	            end&lt;br /&gt;
	            out_style = style&lt;br /&gt;
	            if gray_state then&lt;br /&gt;
	                out_style = p.appendStyle(style, &amp;#039;color:&amp;#039; .. p.GRAY_COLOR)&lt;br /&gt;
	            end&lt;br /&gt;
	            if italic_state then&lt;br /&gt;
	                out_style = p.appendStyle(style, &amp;#039;font-style:italic&amp;#039;)&lt;br /&gt;
	            end&lt;br /&gt;
	            table.insert(output_strs, p.parseStation(station, out_style, system, frame))&lt;br /&gt;
	            next_separator = user_separator&lt;br /&gt;
	        end&lt;br /&gt;
	    end&lt;br /&gt;
    end&lt;br /&gt;
	endRouteLine()&lt;br /&gt;
    return table.concat(output_strs)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.route(frame)&lt;br /&gt;
    local gstyle = frame.args[&amp;#039;style&amp;#039;]&lt;br /&gt;
    local route_str = frame.args[&amp;#039;stations&amp;#039;]&lt;br /&gt;
    local condition = frame.args[&amp;#039;condition&amp;#039;]&lt;br /&gt;
    local system = frame.args[&amp;#039;system&amp;#039;]&lt;br /&gt;
&lt;br /&gt;
    p.station_suffix = mw.text.trim(frame.args[&amp;#039;station_suffix&amp;#039;] or p.DEFAULT_STATION_SUFFIX)&lt;br /&gt;
&lt;br /&gt;
    return p.processRoute(string.gsub(route_str, &amp;#039;\n&amp;#039;, &amp;#039;&amp;#039;), gstyle, condition, system, frame)&lt;br /&gt;
end&lt;br /&gt;
 &lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>imported&gt;TimWu007</name></author>
	</entry>
</feed>