-- Python snippets
local ls = require("luasnip")
local s = ls.snippet
local t = ls.text_node
local i = ls.insert_node
local f = ls.function_node
local c = ls.choice_node
local d = ls.dynamic_node
local sn = ls.snippet_node
local fmt = require("luasnip.extras.fmt").fmt
local rep = require("luasnip.extras").rep

-- Return a table of snippets for Python
-- stylua: ignore start
return {
  -- Print statement
  s("pr", {
    t("print("),
    i(1, "text"),
    t(")"),
  }),

  -- Function definition
  s("def", fmt([[
  def {}({}):
      {}
  ]], {
    i(1, "function_name"),
    i(2, ""),
    i(3, "pass"),
  })),

  -- Class definition
  s("class", fmt([[
  class {}:
      def __init__(self, {}):
          {}
  ]], {
    i(1, "ClassName"),
    i(2, ""),
    i(3, "pass"),
  })),

  -- For loop
  s("for", fmt([[
  for {} in {}:
      {}
  ]], {
    i(1, "item"),
    i(2, "iterable"),
    i(3, "pass"),
  })),

  -- If statement
  s("if", fmt([[
  if {}:
      {}
  ]], {
    i(1, "condition"),
    i(2, "pass"),
  })),

  -- Try/except
  s("try", fmt([[
  try:
      {}
  except {}:
      {}
  ]], {
    i(1, "# code"),
    i(2, "Exception"),
    i(3, "pass"),
  })),
}
-- stylua: ignore end
