<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://mtrop.ru/index.php?action=history&amp;feed=atom&amp;title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C%3A%D0%9F%D0%BE%D1%85%D0%BE%D0%B4</id>
	<title>Модуль:Поход - История изменений</title>
	<link rel="self" type="application/atom+xml" href="https://mtrop.ru/index.php?action=history&amp;feed=atom&amp;title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C%3A%D0%9F%D0%BE%D1%85%D0%BE%D0%B4"/>
	<link rel="alternate" type="text/html" href="https://mtrop.ru/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:%D0%9F%D0%BE%D1%85%D0%BE%D0%B4&amp;action=history"/>
	<updated>2026-10-01T02:39:28Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.43.0</generator>
	<entry>
		<id>https://mtrop.ru/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:%D0%9F%D0%BE%D1%85%D0%BE%D0%B4&amp;diff=44&amp;oldid=prev</id>
		<title>Mnogotrop: Новая страница: «local p = {}  local difficulties = {    [&quot;очень лёгкий&quot;] = &quot;Очень лёгкий&quot;,    [&quot;лёгкий&quot;] = &quot;Лёгкий&quot;,    [&quot;немного сложнее&quot;] = &quot;Немного сложнее, чем лёгкий&quot;,    [&quot;средний&quot;] = &quot;Средний&quot;,    [&quot;трудный&quot;] = &quot;Трудный&quot;,    [&quot;очень трудный&quot;] = &quot;Очень трудный&quot;,  }  local gear_labels = {    backpack = &quot;Рюкзак&quot;,   gaiters = &quot;Гамаши&quot;,...»</title>
		<link rel="alternate" type="text/html" href="https://mtrop.ru/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:%D0%9F%D0%BE%D1%85%D0%BE%D0%B4&amp;diff=44&amp;oldid=prev"/>
		<updated>2026-06-19T21:51:47Z</updated>

		<summary type="html">&lt;p&gt;Новая страница: «local p = {}  local difficulties = {    [&amp;quot;очень лёгкий&amp;quot;] = &amp;quot;Очень лёгкий&amp;quot;,    [&amp;quot;лёгкий&amp;quot;] = &amp;quot;Лёгкий&amp;quot;,    [&amp;quot;немного сложнее&amp;quot;] = &amp;quot;Немного сложнее, чем лёгкий&amp;quot;,    [&amp;quot;средний&amp;quot;] = &amp;quot;Средний&amp;quot;,    [&amp;quot;трудный&amp;quot;] = &amp;quot;Трудный&amp;quot;,    [&amp;quot;очень трудный&amp;quot;] = &amp;quot;Очень трудный&amp;quot;,  }  local gear_labels = {    backpack = &amp;quot;Рюкзак&amp;quot;,   gaiters = &amp;quot;Гамаши&amp;quot;,...»&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;local p = {}&lt;br /&gt;
&lt;br /&gt;
local difficulties = {&lt;br /&gt;
&lt;br /&gt;
  [&amp;quot;очень лёгкий&amp;quot;] = &amp;quot;Очень лёгкий&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
  [&amp;quot;лёгкий&amp;quot;] = &amp;quot;Лёгкий&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
  [&amp;quot;немного сложнее&amp;quot;] = &amp;quot;Немного сложнее, чем лёгкий&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
  [&amp;quot;средний&amp;quot;] = &amp;quot;Средний&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
  [&amp;quot;трудный&amp;quot;] = &amp;quot;Трудный&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
  [&amp;quot;очень трудный&amp;quot;] = &amp;quot;Очень трудный&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local gear_labels = {&lt;br /&gt;
&lt;br /&gt;
  backpack = &amp;quot;Рюкзак&amp;quot;,&lt;br /&gt;
  gaiters = &amp;quot;Гамаши&amp;quot;,&lt;br /&gt;
  thermos = &amp;quot;Термос&amp;quot;,&lt;br /&gt;
  stew = &amp;quot;Тушёнка&amp;quot;,&lt;br /&gt;
  tent = &amp;quot;Палатка&amp;quot;,&lt;br /&gt;
  sleeping_bag = &amp;quot;Спальник&amp;quot;,&lt;br /&gt;
  mat = &amp;quot;подстилка, пенка, каремат&amp;quot;,&lt;br /&gt;
  stove = &amp;quot;Плитка/горелка&amp;quot;,&lt;br /&gt;
  fuel = &amp;quot;Топливо для горелки&amp;quot;,&lt;br /&gt;
  first_aid = &amp;quot;Аптечка&amp;quot;,&lt;br /&gt;
  knife = &amp;quot;Нож&amp;quot;,&lt;br /&gt;
  headlamp = &amp;quot;Налобный фонарь&amp;quot;,&lt;br /&gt;
  extra_batteries = &amp;quot;Запасные батареи&amp;quot;,&lt;br /&gt;
  map = &amp;quot;Карта&amp;quot;,&lt;br /&gt;
  compass = &amp;quot;Компас&amp;quot;,&lt;br /&gt;
  water_bottle = &amp;quot;Фляга/бутылка&amp;quot;,&lt;br /&gt;
  water_filter = &amp;quot;Фильтр/таблетки для воды&amp;quot;,&lt;br /&gt;
  food = &amp;quot;Еда/перекус&amp;quot;,&lt;br /&gt;
  rain_jacket = &amp;quot;Дождевик&amp;quot;,&lt;br /&gt;
  warm_layer = &amp;quot;Тёплая одежда&amp;quot;,&lt;br /&gt;
  gloves = &amp;quot;Перчатки&amp;quot;,&lt;br /&gt;
  hat = &amp;quot;Шапка/кепка&amp;quot;,&lt;br /&gt;
  sunscreen = &amp;quot;Солнцезащитный крем&amp;quot;,&lt;br /&gt;
  sunglasses = &amp;quot;Солнцезащитные очки&amp;quot;,&lt;br /&gt;
  trekking_poles = &amp;quot;Походные палки&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local function trim(s) return (s:gsub(&amp;quot;^%s*(.-)%s*$&amp;quot;, &amp;quot;%1&amp;quot;)) end&lt;br /&gt;
&lt;br /&gt;
local function split(sep, s)&lt;br /&gt;
&lt;br /&gt;
  local t = {}&lt;br /&gt;
  if not s or s == &amp;quot;&amp;quot; then return t end&lt;br /&gt;
  for part in string.gmatch(s, &amp;quot;[^&amp;quot; .. sep .. &amp;quot;]+&amp;quot;) do&lt;br /&gt;
    table.insert(t, trim(part))&lt;br /&gt;
  end&lt;br /&gt;
  return t&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function normalize_item(raw)&lt;br /&gt;
  if not raw then return nil end&lt;br /&gt;
  local item = trim(raw):lower()&lt;br /&gt;
  if item == &amp;quot;&amp;quot; then return nil end&lt;br /&gt;
  return gear_labels[item] or raw -- возвращаем метку если есть, иначе оригинал (с сохранением регистра)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.render(frame)&lt;br /&gt;
  local args = frame:getParent().args&lt;br /&gt;
  local title = trim(args.title or &amp;quot;&amp;quot;)&lt;br /&gt;
  local duration = trim(args.duration or &amp;quot;&amp;quot;)&lt;br /&gt;
  local place = trim(args.place or &amp;quot;&amp;quot;)&lt;br /&gt;
  local time = trim(args.time or &amp;quot;&amp;quot;)&lt;br /&gt;
  local difficulty_raw = (args.difficulty or &amp;quot;&amp;quot;):lower()&lt;br /&gt;
  local difficulty = difficulties[difficulty_raw] or (args.difficulty and args.difficulty ~= &amp;quot;&amp;quot; and args.difficulty) or &amp;quot;Не указано&amp;quot;&lt;br /&gt;
  local gear_list = {}&lt;br /&gt;
&lt;br /&gt;
  -- 1) Поддержка поля gear[]: PageForms обычно передаёт как args[&amp;quot;gear[]&amp;quot;] (таблица) или отдельные ключи gear[1], gear[2] и т.д.&lt;br /&gt;
&lt;br /&gt;
  -- Проверим разные варианты:&lt;br /&gt;
&lt;br /&gt;
  -- Если передали как таблицу args[&amp;quot;gear[]&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
  if args[&amp;quot;gear[]&amp;quot;] then&lt;br /&gt;
    if type(args[&amp;quot;gear[]&amp;quot;]) == &amp;quot;table&amp;quot; then&lt;br /&gt;
      for _,v in ipairs(args[&amp;quot;gear[]&amp;quot;]) do&lt;br /&gt;
        local n = normalize_item(v)&lt;br /&gt;
        if n then table.insert(gear_list, n) end&lt;br /&gt;
      end&lt;br /&gt;
    else&lt;br /&gt;
&lt;br /&gt;
      -- может прийти как строка со разделителями&lt;br /&gt;
&lt;br /&gt;
      for _,v in ipairs(split(&amp;quot;,|&amp;quot;, args[&amp;quot;gear[]&amp;quot;])) do&lt;br /&gt;
        local n = normalize_item(v)&lt;br /&gt;
        if n then table.insert(gear_list, n) end&lt;br /&gt;
      end&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  -- Если передали как ключи gear1..gearN или gear[1], gear[2] и т.д. — пройдём по всем аргументам и соберём те, чьё имя начинается с &amp;quot;gear&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  for k,v in pairs(args) do&lt;br /&gt;
    if type(k) == &amp;quot;string&amp;quot; then&lt;br /&gt;
      -- gear, gear1, gear2, gear[1], gear[something]&lt;br /&gt;
      if string.match(k, &amp;quot;^gear%[?%d*%]?$&amp;quot;) or string.match(k, &amp;quot;^gear%d+&amp;quot;) then&lt;br /&gt;
        if v and v ~= &amp;quot;&amp;quot; then&lt;br /&gt;
          local n = normalize_item(v)&lt;br /&gt;
          if n then table.insert(gear_list, n) end&lt;br /&gt;
        end&lt;br /&gt;
      end&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  -- Если есть поле gear как одна строка (csv или pipe-separated)&lt;br /&gt;
&lt;br /&gt;
  if args.gear and args.gear ~= &amp;quot;&amp;quot; then&lt;br /&gt;
    -- если ранее args[&amp;quot;gear[]&amp;quot;] уже добавил — не дублируем; иначе парсим&lt;br /&gt;
    if #gear_list == 0 then&lt;br /&gt;
&lt;br /&gt;
      local parts = {}&lt;br /&gt;
      -- поддерживаем запятую и вертикальную черту как разделители&lt;br /&gt;
      for _,p in ipairs(split(&amp;quot;,|&amp;quot;, args.gear)) do&lt;br /&gt;
        local n = normalize_item(p)&lt;br /&gt;
        if n then table.insert(gear_list, n) end&lt;br /&gt;
      end&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  -- Убираем дубли, сохраняя порядок&lt;br /&gt;
&lt;br /&gt;
  local seen = {}&lt;br /&gt;
  local uniq = {}&lt;br /&gt;
  for _,v in ipairs(gear_list) do&lt;br /&gt;
    if not seen[v] then&lt;br /&gt;
      table.insert(uniq, v)&lt;br /&gt;
      seen[v] = true&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  local gear_out = &amp;quot;Не указано&amp;quot;&lt;br /&gt;
  if #uniq &amp;gt; 0 then gear_out = table.concat(uniq, &amp;quot;, &amp;quot;) end&lt;br /&gt;
  local out = {}&lt;br /&gt;
&lt;br /&gt;
  table.insert(out, &amp;quot;== Описание маршрута ==&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
  if title ~= &amp;quot;&amp;quot; then table.insert(out, &amp;quot;&amp;#039;&amp;#039;&amp;#039;Название:&amp;#039;&amp;#039;&amp;#039; &amp;quot; .. title) end&lt;br /&gt;
&lt;br /&gt;
  if place ~= &amp;quot;&amp;quot; then table.insert(out, &amp;quot;&amp;#039;&amp;#039;&amp;#039;Место:&amp;#039;&amp;#039;&amp;#039; &amp;quot; .. place) end&lt;br /&gt;
&lt;br /&gt;
  if duration ~= &amp;quot;&amp;quot; then table.insert(out, &amp;quot;&amp;#039;&amp;#039;&amp;#039;Длительность:&amp;#039;&amp;#039;&amp;#039; &amp;quot; .. duration) end&lt;br /&gt;
&lt;br /&gt;
  if time ~= &amp;quot;&amp;quot; then table.insert(out, &amp;quot;&amp;#039;&amp;#039;&amp;#039;Время выхода:&amp;#039;&amp;#039;&amp;#039; &amp;quot; .. time) end&lt;br /&gt;
&lt;br /&gt;
  table.insert(out, &amp;quot;&amp;#039;&amp;#039;&amp;#039;Сложность:&amp;#039;&amp;#039;&amp;#039; &amp;quot; .. difficulty)&lt;br /&gt;
&lt;br /&gt;
  table.insert(out, &amp;quot;&amp;#039;&amp;#039;&amp;#039;Что взять с собой:&amp;#039;&amp;#039;&amp;#039; &amp;quot; .. gear_out)&lt;br /&gt;
&lt;br /&gt;
  return table.concat(out, &amp;quot;\n\n&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Mnogotrop</name></author>
	</entry>
</feed>