Difference between revisions of "Module:Backpack item/format"

From Team Fortress Wiki
Jump to: navigation, search
Line 86: Line 86:
 
       assert(arg_text, 'Text for arg ' .. arg_name .. ' was nil')
 
       assert(arg_text, 'Text for arg ' .. arg_name .. ' was nil')
 
       prefix = string.gsub(prefix, arg_name, arg_text)
 
       prefix = string.gsub(prefix, arg_name, arg_text)
       suffix = string.gsub(prefix, arg_name, arg_text)
+
       suffix = string.gsub(suffix, arg_name, arg_text)
 
     end
 
     end
  

Revision as of 03:34, 13 June 2019

Documentation for this module may be created at Module:Backpack item/format/doc

--[[
These are the order of parameters in different languages.
When the template is evaluated, the english text here will be replaced with language-appropriate strings.
Please note the missing spaces are intentional, as some languages concatenate words together.
The raw strings for these words live in Template:Dictionary/common_strings#Module:Backpack_item
Note that extra spaces, empty parenthesis, and extra dashes will be cleaned up automatically.
--]]

-- Missing translations: ar, cs
-- Self translated: none
item_name_format = {
  ['da']      = 'quality filter festivized killstreak item_name',
  ['de']      = 'item_name - quality filter killstreak - festivized',
  ['en']      = 'quality filter festivized killstreak item_name',
  ['es']      = 'item_name quality filter festivized killstreak',
  ['fi']      = 'qualityfilter killstreak festivizeditem_name',
  ['fr']      = 'item_name festivized (quality filter killstreak)',
  ['hu']      = 'qualityfilter festivizedkillstreak item_name',
  ['it']      = 'item_name (festivized) (quality filter killstreak)',
  ['ja']      = 'quality filter killstreak festivized item_name',
  ['ko']      = 'quality filter festivized killstreak item_name',
  ['nl']      = 'qualityfilter festivizedkillstreakitem_name',
  ['no']      = 'quality filter festivized killstreak item_name',
  ['pl']      = 'item_name (quality filter festivized killstreak)',
  ['pt']      = 'item_name filter (festivized) (quality killstreak)',
  ['pt-br']   = 'item_name filter (festivized) (quality killstreak)',
  ['ro']      = 'qualityfilter festivizedkillstreakitem_name',
  ['ru']      = 'item_name killstreak festivized quality filter',
  ['sv']      = 'quality filter festivized killstreakitem_name',
  ['tr']      = 'qualityfitler festivizedkillstreak item_name',
  ['zh-hans'] = 'quality filter festivizedkillstreak item_name',
  ['zh-hant'] = 'qualityfilter festivizedkillstreakitem_name',
}

-- Missing translations: fi, fr (limited is missing), pl
-- Self translated: none
item_desc_format_strange = {
  ['cs']      = 'limited strange_rank_name item_kind rankson',
  ['da']      = 'limited item_kind strange_rank_name rankson',
  ['de']      = 'limited item_kind strange_rank_name rankson',
  ['en']      = 'limited strange_rank_name item_kind rankson',
  ['es']      = 'item_kind strange_rank_name limited rankson',
  ['fr']      = 'item_kind strange_rank_name rankson',
  ['hu']      = 'limitedstrange_rank_name item_kind rankson',
  ['it']      = 'item_kind - limited strange_rank_name rankson',
  ['ja']      = 'limited strange_rank_name item_kind rankson',
  ['ko']      = 'limited strange_rank_name item_kind rankson',
  ['nl']      = 'limitedstrange_rank_name item_kind rankson',
  ['no']      = 'limiteditem_kind strange_rank_name rankson',
  ['pt']      = 'item_kind strange_rank_name limited rankson',
  ['pt-br']   = 'item_kind strange_rank_name limited rankson',
  ['ro']      = 'limitedstrange_rank_name item_kind rankson',
  ['ru']      = 'item_kind strange_rank_name limited rankson',
  ['sv']      = 'limitedstrange_rank_name item_kind rankson',
  ['tr']      = 'limitedstrange_rank_name item_kind rankson',
  ['zh-hans'] = 'limitedstrange_rank_name item_kind rankson',
  ['zh-hant'] = 'limitedstrange_rank_name item_kind rankson',
}

-- A list of strings which mean "don't show" rather than "use me"
local negatives = {
  ['none'] = true,
  ['no'] = true,
  ['0'] = true,
  ['false'] = true,
  ['hide'] = true,
  ['negative'] = true,
  [''] = true,
}

function format_string(order, args)
  assert(type(order) == 'string', 'You must call Lang() on the format before passing it to this function')

  local output_string

  local idx = string.find(order, 'item_name')
  if idx ~= nil then
    -- Step 1: Split out prefix/suffix
    local prefix = string.sub(order, 0, idx - 1)
    local suffix = string.sub(order, idx + 9)

    local foo = '"' .. order .. '" : "' .. prefix .. '" : "' .. suffix .. '" : '

    -- Step 2: Replace parameters with their actual values
    for arg_name, arg_text in pairs(args) do
      assert(arg_text, 'Text for arg ' .. arg_name .. ' was nil')
      prefix = string.gsub(prefix, arg_name, arg_text)
      suffix = string.gsub(suffix, arg_name, arg_text)
    end

    for arg_name, arg_text in pairs(args) do
      foo = foo .. arg_name .. ' ' .. arg_text .. ' : '
    end
    foo = foo .. ' : "' .. prefix .. '" : "' .. suffix .. '"'
    assert(false, foo)

    -- Step 3: Replace prefix/suffix as needed
    if negatives[args['prefix']] then
      prefix = ''
    elseif args['prefix'] ~= nil then
      prefix = args['prefix'] .. ' '
    end
    if negatives[args['suffix']] then
      suffix = ''
    elseif args['suffix'] ~= nil then
      suffix = ' ' .. args['suffix']
    end

    assert(args['item_name'], 'Text for arg item_name was nil')
    output_string = prefix .. args['item_name'] .. suffix

  else -- No prefix/suffix, since there's no item_name
    -- Step 2: Replace parameters with their actual values
    for arg_name, arg_text in pairs(args) do
      assert(arg_text, 'Text for arg ' .. arg_name .. ' was nil')
      order = string.gsub(order, arg_name, arg_text)
    end

    output_string = order
  end

  -- Step 4: Clean up extra characters
  output_string = string.gsub(output_string, '%( *', '(') -- Extra spaces in parenthesis
  output_string = string.gsub(output_string, ' *%)', ')') -- Extra spaces in parenthesis
  output_string = string.gsub(output_string, '%(%)', '') -- Empty parentheticals

  output_string = string.gsub(output_string, '- *-', '-') -- Double dashes
  output_string = string.gsub(output_string, '- *$', '') -- Trailing dashes
  output_string = string.gsub(output_string, '^ *-', '') -- Leading dashes

  output_string = string.gsub(output_string, '  +', ' ') -- Double spaces
  output_string = string.gsub(output_string, '^ ', '') -- Extra space at start
  output_string = string.gsub(output_string, ' $', '') -- Extra space at end

  -- TODO: Replace () in chinese (maybe just pass language in?)

  return output_string
end