پودمان:فاصله مجازی

توضیحات این پودمان می‌تواند در پودمان:فاصله مجازی/توضیحات قرار گیرد.

local p = {}
local needsZWNJ = {'ت', 'پ', 'ب', 'ئ', 'ث', 'ج', 'چ', 'ح', 'خ', 'س', 'ش', 'ص', 'ض', 'ط', 'ظ', 'ع', 'غ', 'ف', 'ق', 'ک', 'گ', 'ل', 'م', 'ن', 'ه', 'ی'}

function Set (list)
  local set = {}
  for _, l in ipairs(list) do set[l] = true end
  return set
end

local needsZWNJ = Set(needsZWNJ)

function p.zwnj( frame )
  if frame.args[1] == nil or frame.args[1] == "" then
    return "‌"
  else
    local lastChar = string.sub(frame.args[1], string.len(frame.args[1]) - 1, string.len(frame.args[1]))
    if needsZWNJ[lastChar] then
      return frame.args[1] .. "‌"
    else
      return frame.args[1]
    end
  end
end

return p