Jump to content

Module:fo-noun/data-f

From Wiktionary, the free dictionary

This module needs documentation.
Please document this module by describing its purpose and usage on the documentation page.

local decl = {}

decl["f1"] = {
	params = {
		[1] = {},
		},
	singular = function(args, data)
		data.forms["nom_sg"] = {args[1] .. "a"}
		data.forms["nom_sg_def"] = {args[1] .. "an"}

		data.forms["acc_sg"] = {args[1] .. "u"}
		data.forms["acc_sg_def"] = {args[1] .. "una"}
		
		data.forms["dat_sg"] = {args[1] .. "u"}
		data.forms["dat_sg_def"] = {args[1] .. "uni"}
		
		data.forms["gen_sg"] = {args[1] .. "u"}
		data.forms["gen_sg_def"] = {args[1] .. "unnar"}
	end,
	plural = function(args, data)
		data.forms["nom_pl"] = {args[1] .. "ur"}
		data.forms["nom_pl_def"] = {args[1] .. "urnar"}
		
		data.forms["acc_pl"] = {args[1] .. "ur"}
		data.forms["acc_pl_def"] = {args[1] .. "urnar"}
		
		data.forms["dat_pl"] = {args[1] .. "um"}
		data.forms["dat_pl_def"] = {args[1] .. "unum"}
		
		data.forms["gen_pl"] = {args[1] .. "a"}
		data.forms["gen_pl_def"] = {args[1] .. "anna"}
	end
}
setmetatable(decl["f1"], {__call = function(self, args, data)
	data.decl_type = "f1"
	
	self.singular(args, data)
	self.plural(args, data)
end
})

decl["f1-p"] = {
	params = {
		[1] = {},
		},
}
setmetatable(decl["f1-p"], {__call = function(self, args, data)
	decl["f1"].plural(args, data)
	
	data.info = " (plural only)"
	data.decl_type = "f1p"
	data.defective = "p"
end
})

decl["f1-s"] = {
	params = {
		[1] = {},
		},
}
setmetatable(decl["f1-s"], {__call = function(self, args, data)
	decl["f1"].singular(args, data)
	
	data.info = " (singular only)"
	data.decl_type = "f1s"
	data.defective = "s"
end
})

decl["f1-s-def"] = {
	params = {
		[1] = {},
		},
}
setmetatable(decl["f1-s-def"], {__call = function(self, args, data)
	decl["f1"].singular(args, data)
		
	data.info = " (singular definite only)"
	data.decl_type = "f1s def"
	data.defective = "s_def"
end
})


decl["f1-s-f6-p"] = {
	params = {
		[1] = {},
		},
}
setmetatable(decl["f1-s-f6-p"], {__call = function(self, args, data)
	decl["f1"].singular(args, data)
	decl["f2"].plural(args, data)		
	
	data.decl_type = "f1s/f6p"
	
	data.forms["nom_pl"] = {args[1] .. "ar"}
	data.forms["nom_pl_def"] = {args[1] .. "arnar"}
	
	data.forms["acc_pl"] = {args[1] .. "ar"}
	data.forms["acc_pl_def"] = {args[1] .. "arnar"}
end
})


decl["f1-s-indef"] = {
	params = {
		[1] = {},
		},
}
setmetatable(decl["f1-s-indef"], {__call = function(self, args, data)
	decl["f1"].singular(args, data)
		
	data.info = " (singular indefinite only)"
	data.decl_type = "f1s indef"
	data.defective = "s_indef"
end
})

decl["f2"] = {
	params = {
		[1] = {},
		},
	singular = function(args, data)
		data.forms["nom_sg"] = {args[1]}
		data.forms["nom_sg_def"] = {args[1] .. "in"}

		data.forms["acc_sg"] = {args[1]}
		data.forms["acc_sg_def"] = {args[1] .. "ina"}
		
		data.forms["dat_sg"] = {args[1]}
		data.forms["dat_sg_def"] = {args[1] .. "ini"}
		
		data.forms["gen_sg"] = {args[1] .. "ar"}
		data.forms["gen_sg_def"] = {args[1] .. "arinnar"}
	end,
	plural = function(args, data)
		data.forms["nom_pl"] = {args[1] .. "ir"}
		data.forms["nom_pl_def"] = {args[1] .. "irnar"}
		
		data.forms["acc_pl"] = {args[1] .. "ir"}
		data.forms["acc_pl_def"] = {args[1] .. "irnar"}
		
		data.forms["dat_pl"] = {args[1] .. "um"}
		data.forms["dat_pl_def"] = {args[1] .. "unum"}
		
		data.forms["gen_pl"] = {args[1] .. "a"}
		data.forms["gen_pl_def"] = {args[1] .. "anna"}
	end
}
setmetatable(decl["f2"], {__call = function(self, args, data)
	data.info = ""
	data.decl_type = "f2"
		
	self.singular(args, data)
	self.plural(args, data)
end
})

decl["f2 (á)"] = {
	params = {
		[1] = {},
		},
}
setmetatable(decl["f2 (á)"], {__call = function(self, args, data)
	decl["f2"](args, data)
	
	data.decl_type = "f2 (á)"
		
	data.forms["acc_sg_def"] = {args[1] .. "nna"}
	data.forms["dat_sg_def"] = {args[1] .. "nni"}
end
})


decl["f2-p"] = {
	params = {
		[1] = {},
		},
}
setmetatable(decl["f2-p"], {__call = function(self, args, data)
	decl["f2"].plural(args, data)
		
	data.info = " (plural only)"
	data.decl_type = "f2p"
	data.defective = "p"
end
})

decl["f2-s"] = {
	params = {
		[1] = {},
		},
}
setmetatable(decl["f2-s"], {__call = function(self, args, data)
	decl["f2"].singular(args, data)
	
	data.info = " (singular only)"
	data.decl_type = "f2s"
	data.defective = "s"
end
})

decl["f2-skrá"] = {
	params = {
		[1] = {},
		},

}
setmetatable(decl["f2-skrá"], {__call = function(self, args, data)
	decl["f2"](args, data)
		
	data.decl_type = "f2 (skrá)"
		
	data.forms["dat_sg_def"] = {args[1] .. "nni"}
end
})

decl["f3"] = {
	params = {
		[1] = {},
		[2] = {},
		[3] = {},
		[4] = {},
		},
	singular = function(args, data)
		if args[1] == '-' then
			-- e.g. øksl (f3), ørn (f5 which ultimately calls f3)
			args[1] = ''
		end
		
		data.forms["nom_sg"] = {args[1] .. args[2] .. args[3]}
		data.forms["nom_sg_def"] = {args[1] .. args[2] .. args[3] .. "in"}

		data.forms["acc_sg"] = {args[1] .. args[2] .. args[3]}
		data.forms["acc_sg_def"] = {args[1] .. args[2] .. args[3] .. "ina"}
		
		data.forms["dat_sg"] = {args[1] .. args[2] .. args[3]}
		data.forms["dat_sg_def"] = {args[1] .. args[2] .. args[3] .. "ini"}
		
		data.forms["gen_sg"] = {args[1] .. args[4] .. args[3] .. "ar"}
		data.forms["gen_sg_def"] = {args[1] .. args[4] .. args[3] .. "arinnar"}
	end,
	plural = function(args, data)
		data.forms["nom_pl"] = {args[1] .. args[4] .. args[3] .. "ir"}
		data.forms["nom_pl_def"] = {args[1] .. args[4] .. args[3] .. "irnar"}
		
		data.forms["acc_pl"] = {args[1] .. args[4] .. args[3] .. "ir"}
		data.forms["acc_pl_def"] = {args[1] .. args[4] .. args[3] .. "irnar"}
		
		data.forms["dat_pl"] = {args[1] .. args[2] .. args[3] .. "um", args[1] .. args[4] .. args[3] .. "um"}
		data.forms["dat_pl_def"] = {args[1] .. args[2] .. args[3] .. "unum", args[1] .. args[4] .. args[3] .. "unum"}
		
		data.forms["gen_pl"] = {args[1] .. args[4] .. args[3] .. "a"}
		data.forms["gen_pl_def"] = {args[1] .. args[4] .. args[3] .. "anna"}
	end
}
setmetatable(decl["f3"], {__call = function(self, args, data)
	data.decl_type = "f3"
		
	self.singular(args, data)
	self.plural(args, data)
end
})


decl["f3-s"] = {
	params = {
		[1] = {},
		[2] = {},
		[3] = {},
		[4] = {},
		},
}
setmetatable(decl["f3-s"], {__call = function(self, args, data)
	decl["f3"].singular(args, data)
		
	data.info = " (singular only)"
	data.decl_type = "f3s"
	data.defective = "s"
end
})

decl["f4"] = {
	params = {
		[1] = {},
		[2] = {},
		[3] = {},
		[4] = {},
		},
}
setmetatable(decl["f4"], {__call = function(self, args, data)
	decl["f3"](args, data)
		
	data.decl_type = "f4"
		
	data.forms["dat_pl"] = {args[1] .. args[2] .. args[3] .. "um"}
	data.forms["dat_pl_def"] = {args[1] .. args[2] .. args[3] .. "unum"}
end
})


decl["f5"] = {
	params = {
		[1] = {},
		[2] = {},
		[3] = {},
		[4] = {},
		},
}
setmetatable(decl["f5"], {__call = function(self, args, data)
	decl["f4"](args, data)
		
	data.decl_type = "f5"
		
	data.forms["nom_pl"] = {args[1] .. args[2] .. args[3] .. "ir"}
	data.forms["nom_pl_def"] = {args[1] .. args[2] .. args[3] .. "irnar"}
	
	data.forms["acc_pl"] = {args[1] .. args[2] .. args[3] .. "ir"}
	data.forms["acc_pl_def"] = {args[1] .. args[2] .. args[3] .. "irnar"}
end
})

-- This pattern seems to be completely superfluous
decl["f5-s"] = {
	params = {
		[1] = {},
		[2] = {},
		[3] = {},
		},
}
setmetatable(decl["f5-s"], {__call = function(self, args, data)
	decl["f3-s"](args, data)
		
	data.decl_type = "f5s"
end
})

decl["f6"] = {
	params = {
		[1] = {},
		},
}
setmetatable(decl["f6"], {__call = function(self, args, data)
	decl["f2"](args, data)
		
	data.decl_type = "f6"
		
	data.forms["nom_pl"] = {args[1] .. "ar"}
	data.forms["nom_pl_def"] = {args[1] .. "arnar"}
	
	data.forms["acc_pl"] = {args[1] .. "ar"}
	data.forms["acc_pl_def"] = {args[1] .. "arnar"}
end
})

decl["f6-oyggj"] = {
	params = {
		[1] = {},
		},
}
setmetatable(decl["f6-oyggj"], {__call = function(self, args, data)
	data.decl_type = "f6-oyygj"
		
	data.forms["nom_sg"] = {args[1] .. "ggj"}
	data.forms["nom_sg_def"] = {args[1] .. "ggin"}
	data.forms["nom_pl"] = {args[1] .. "ggjar"}
	data.forms["nom_pl_def"] = {args[1] .. "ggjarnar"}

	data.forms["acc_sg"] = {args[1] .. "ggj"}
	data.forms["acc_sg_def"] = {args[1] .. "nna"}
	data.forms["acc_pl"] = {args[1] .. "ggjar"}
	data.forms["acc_pl_def"] = {args[1] .. "ggjarnar"}
		
	data.forms["dat_sg"] = {args[1] .. "ggj"}
	data.forms["dat_sg_def"] = {args[1] .. "nni"}
	data.forms["dat_pl"] = {args[1] .. "ggjum"}
	data.forms["dat_pl_def"] = {args[1] .. "ggjunum"}
		
	data.forms["gen_sg"] = {args[1] .. "ggjar"}
	data.forms["gen_sg_def"] = {args[1] .. "ggjarinnar"}
	data.forms["gen_pl"] = {args[1] .. "ggja"}
	data.forms["gen_pl_def"] = {args[1] .. "ggjanna"}
end
})

-- This pattern seems to be completely superfluous
decl["f6-s"] = {
	params = {
		[1] = {},
		[2] = {},
		[3] = {},
		},
}
setmetatable(decl["f6-s"], {__call = function(self, args, data)
	decl["f2-s"](args, data)
		
	data.decl_type = "f6s"
end
})

decl["f7"] = {
	params = {
		[1] = {},
		[2] = {},
		[3] = {},
		[4] = {},
		},

}
setmetatable(decl["f7"], {__call = function(self, args, data)
	decl["f3"](args, data)
		
	data.decl_type = "f7"
		
	data.forms["nom_pl"] = {args[1] .. args[4] .. args[3] .. "ar"}
	data.forms["nom_pl_def"] = {args[1] .. args[4] .. args[3] .. "arnar"}
	
	data.forms["acc_pl"] = {args[1] .. args[4] .. args[3] .. "ar"}
	data.forms["acc_pl_def"] = {args[1] .. args[4] .. args[3] .. "arnar"}
end
})

decl["f8"] = {
	params = {
		[1] = {},
		},
}
setmetatable(decl["f8"], {__call = function(self, args, data)
	data.decl_type = "f8"
	
	data.forms["nom_sg"] = {args[1]}
	data.forms["nom_sg_def"] = {args[1] .. "in"}
	data.forms["nom_pl"] = {args[1] .. "jar"}
	data.forms["nom_pl_def"] = {args[1] .. "jarnar"}

	data.forms["acc_sg"] = {args[1]}
	data.forms["acc_sg_def"] = {args[1] .. "ina"}
	data.forms["acc_pl"] = {args[1] .. "jar"}
	data.forms["acc_pl_def"] = {args[1] .. "jarnar"}
	
	data.forms["dat_sg"] = {args[1]}
	data.forms["dat_sg_def"] = {args[1] .. "ini"}
	data.forms["dat_pl"] = {args[1] .. "jum"}
	data.forms["dat_pl_def"] = {args[1] .. "junum"}
	
	data.forms["gen_sg"] = {args[1] .. "jar"}
	data.forms["gen_sg_def"] = {args[1] .. "jarinnar"}
	data.forms["gen_pl"] = {args[1] .. "ja"}
	data.forms["gen_pl_def"] = {args[1] .. "janna"}
end
})

decl["f9"] = {
	params = {
		[1] = {},
		[2] = {},
		},
}
setmetatable(decl["f9"], {__call = function(self, args, data)
	data.decl_type = "f9"
	
	if args[1] == '-' then
		-- e.g. ont (f9)
		args[1] = ''
	end
		
	data.forms["nom_sg"] = {args[1] .. "o" .. args[2]}
	data.forms["nom_sg_def"] = {args[1] .. "o" .. args[2] .. "in"}
	data.forms["nom_pl"] = {args[1] .. "e" .. args[2] .. "ur"}
	data.forms["nom_pl_def"] = {args[1] .. "e" .. args[2] .. "urnar"}

	data.forms["acc_sg"] = {args[1] .. "o" .. args[2]}
	data.forms["acc_sg_def"] = {args[1] .. "o" .. args[2] .. "ina"}
	data.forms["acc_pl"] = {args[1] .. "e" .. args[2] .. "ur"}
	data.forms["acc_pl_def"] = {args[1] .. "e" .. args[2] .. "urnar"}
	
	data.forms["dat_sg"] = {args[1] .. "o" .. args[2]}
	data.forms["dat_sg_def"] = {args[1] .. "o" .. args[2] .. "ini"}
	data.forms["dat_pl"] = {args[1] .. "o" .. args[2] .. "um"}
	data.forms["dat_pl_def"] = {args[1] .. "o" .. args[2] .. "unum"}
	
	data.forms["gen_sg"] = {args[1] .. "a" .. args[2] .. "ar"}
	data.forms["gen_sg_def"] = {args[1] .. "a" .. args[2] .. "arinnar"}
	data.forms["gen_pl"] = {args[1] .. "a" .. args[2] .. "a"}
	data.forms["gen_pl_def"] = {args[1] .. "a" .. args[2] .. "anna"}
end
})

decl["f10"] = {
	params = {
		[1] = {},
		[2] = {},
		},
}
setmetatable(decl["f10"], {__call = function(self, args, data)
	decl["f9"](args, data)
	
	data.decl_type = "f10"
	
	data.forms["gen_sg"] = {args[1] .. "o" .. args[2] .. "ar"}
	data.forms["gen_sg_def"] = {args[1] .. "o" .. args[2] .. "arinnar"}
	data.forms["gen_pl"] = {args[1] .. "o" .. args[2] .. "a"}
	data.forms["gen_pl_def"] = {args[1] .. "o" .. args[2] .. "anna"}
end
})

decl["f11"] = {
	params = {
		[1] = {},
		[2] = {},
		[3] = {},
		[4] = {},
		[5] = {},
		},
}
setmetatable(decl["f11"], {__call = function(self, args, data)
	data.decl_type = "f11"
	
	if args[1] == '-' then
		-- e.g. ong
		args[1] = ''
	end
	
	data.forms["nom_sg"] = {args[1] .. args[2] .. args[3]}
	data.forms["nom_sg_def"] = {args[1] .. args[2] .. args[3] .. "in"}
	data.forms["nom_pl"] = {args[1] .. args[4] .. args[3] .. "ir", args[1] .. args[5] .. args[3] .. "ur"}
	data.forms["nom_pl_def"] = {args[1] .. args[4] .. args[3] .. "irnar", args[1] .. args[5] .. args[3] .. "urnar"}

	data.forms["acc_sg"] = {args[1] .. args[2] .. args[3]}
	data.forms["acc_sg_def"] = {args[1] .. args[2] .. args[3] .. "ina"}
	data.forms["acc_pl"] = {args[1] .. args[4] .. args[3] .. "ir", args[1] .. args[5] .. args[3] .. "ur"}
	data.forms["acc_pl_def"] = {args[1] .. args[4] .. args[3] .. "irnar", args[1] .. args[5] .. args[3] .. "urnar"}
	
	data.forms["dat_sg"] = {args[1] .. args[2] .. args[3]}
	data.forms["dat_sg_def"] = {args[1] .. args[2] .. args[3] .. "ini"}
	data.forms["dat_pl"] = {args[1] .. args[4] .. args[3] .. "jum"}
	data.forms["dat_pl_def"] = {args[1] .. args[4] .. args[3] .. "junum"}
	
	data.forms["gen_sg"] = {args[1] .. args[4] .. args[3] .. "jar" , args[1] .. args[2] .. args[3] .. "ar"}
	data.forms["gen_sg_def"] = {args[1] .. args[4] .. args[3] .. "jarrinar" , args[1] .. args[2] .. args[3] .. "arinnar"}
	data.forms["gen_pl"] = {args[1] .. args[4] .. args[3] .. "ja"}
	data.forms["gen_pl_def"] = {args[1] .. args[4] .. args[3] .. "janna"}
end
})

decl["f12"] = {
	params = {
		[1] = {},
		[2] = {},
		[3] = {},
		[4] = {},
		},
	singular = function(args, data)
		data.forms["nom_sg"] = {args[1] .. args[2] .. args[3]}
		data.forms["nom_sg_def"] = {args[1] .. args[2] .. args[3] .. "in"}
		
		data.forms["acc_sg"] = {args[1] .. args[2] .. args[3]}
		data.forms["acc_sg_def"] = {args[1] .. args[2] .. args[3] .. "ina"}
		
		data.forms["dat_sg"] = {args[1] .. args[2] .. args[3]}
		data.forms["dat_sg_def"] = {args[1] .. args[2] .. args[3] .. "ini"}
		
		data.forms["gen_sg"] = {args[1] .. args[2] .. args[3] .. "ar"}
		data.forms["gen_sg_def"] = {args[1] .. args[2] .. args[3] .. "arinnar"}
	end,
	plural = function(args, data)
		data.forms["nom_pl"] = {args[1] .. args[4] .. args[3] .. "ur"}
		data.forms["nom_pl_def"] = {args[1] .. args[4] .. args[3] .. "urnar"}
	
		data.forms["acc_pl"] = {args[1] .. args[4] .. args[3] .. "ur"}
		data.forms["acc_pl_def"] = {args[1] .. args[4] .. args[3] .. "urnar"}
			
		data.forms["dat_pl"] = {args[1] .. args[2] .. args[3] .. "um"}
		data.forms["dat_pl_def"] = {args[1] .. args[2] .. args[3] .. "unum"}
			
		data.forms["gen_pl"] = {args[1] .. args[2] .. args[3] .. "a"}
		data.forms["gen_pl_def"] = {args[1] .. args[2] .. args[3] .. "anna"}
	end
}
setmetatable(decl["f12"], {__call = function(self, args, data)
	data.decl_type = "f12"
		
	self.singular(args, data)
	self.plural(args, data)
end
})

decl["f12-s"] = {
	params = {
		[1] = {},
		[2] = {},
		[3] = {},
		},
}
setmetatable(decl["f12-s"], {__call = function(self, args, data)
	decl["f12"].singular(args, data)
	
	data.info = " (singular only)"
	data.decl_type = "f12s"
	data.defective = "s"
end
})

decl["f13"] = {
	params = {
		[1] = {},
		[2] = {},
		[3] = {},
		[4] = {},
		[5] = {},
		},
}
setmetatable(decl["f13"], {__call = function(self, args, data)
	decl["f12"](args, data)
	
	data.decl_type = "f13"
	
	data.forms["gen_sg"] = {args[1] .. args[5] .. args[3] .. "ar"}
	data.forms["gen_sg_def"] = {args[1] .. args[5] .. args[3] .. "arinnar"}
	data.forms["gen_pl"] = {args[1] .. args[5] .. args[3] .. "a"}
	data.forms["gen_pl_def"] = {args[1] .. args[5] .. args[3] .. "anna"}
end
})

decl["f14"] = {
	params = {
		[1] = {},
		[2] = {},
		[3] = {},
		[4] = {},
		},
}
setmetatable(decl["f14"], {__call = function(self, args, data)
	data.decl_type = "f14"

	data.forms["nom_sg"] = {args[1] .. args[2] .. args[3] .. args[3]}
	data.forms["nom_sg_def"] = {args[1] .. args[2] .. args[3] .. args[3] .. "in"}
	data.forms["nom_pl"] = {args[1] .. args[4] .. args[3] .. "ur"}
	data.forms["nom_pl_def"] = {args[1] .. args[4] .. args[3] .. "urnar"}

	data.forms["acc_sg"] = {args[1] .. args[2] .. args[3] .. args[3]}
	data.forms["acc_sg_def"] = {args[1] .. args[2] .. args[3] .. args[3] .. "ina"}
	data.forms["acc_pl"] = {args[1] .. args[4] .. args[3] .. "ur"}
	data.forms["acc_pl_def"] = {args[1] .. args[2] .. args[3] .. args[3] .. "urnar"}
	
	data.forms["dat_sg"] = {args[1] .. args[2] .. args[3] .. args[3]}
	data.forms["dat_sg_def"] = {args[1] .. args[2] .. args[3] .. args[3] .. "ini"}
	data.forms["dat_pl"] = {args[1] .. args[2] .. args[3] .. args[3] .. "um"}
	data.forms["dat_pl_def"] = {args[1] .. args[2] .. args[3] .. args[3] .. "unum"}
	
	data.forms["gen_sg"] = {args[1] .. args[2] .. args[3] .. args[3] .. "ar"}
	data.forms["gen_sg_def"] = {args[1] .. args[2] .. args[3] .. args[3] .. "arinnar"}
	data.forms["gen_pl"] = {args[1] .. args[2] .. args[3] .. args[3] .. "a"}
	data.forms["gen_pl_def"] = {args[1] .. args[2] .. args[3] .. args[3] .. "anna"}
end
})

decl["f15"] = {
	params = {
		[1] = {},
		[2] = {},
		[3] = {},
		[4] = {},
		[5] = {},
		},
}
setmetatable(decl["f15"], {__call = function(self, args, data)
	decl["f13"](args, data)
	
	data.decl_type = "f15"
	
	data.forms["nom_pl"] = {args[1] .. args[4] .. args[3]}
	data.forms["nom_pl_def"] = {args[1] .. args[4] .. args[3] .. "inar"}
	data.forms["acc_pl"] = {args[1] .. args[4] .. args[3]}
	data.forms["acc_pl_def"] = {args[1] .. args[4] .. args[3] .. "inar"}
end
})

decl["f16"] = {
	params = {
		[1] = {},
		[2] = {},
		[3] = {},
		[4] = {},
		},
}
setmetatable(decl["f16"], {__call = function(self, args, data)
	data.decl_type = "f16"
	
	data.forms["nom_sg"] = {args[1] .. args[2] .. args[3]}
	data.forms["nom_sg_def"] = {args[1] .. args[2] .. args[3] .. "in"}
	data.forms["nom_pl"] = {args[1] .. args[4] .. args[3]}
	data.forms["nom_pl_def"] = {args[1] .. args[4] .. args[3] .. "nar"}
	
	data.forms["acc_sg"] = {args[1] .. args[2] .. args[3]}
	data.forms["acc_sg_def"] = {args[1] .. args[2] .. args[3] .. "ina"}
	data.forms["acc_pl"] = {args[1] .. args[4] .. args[3]}
	data.forms["acc_pl_def"] = {args[1] .. args[4] .. args[3] .. "nar"}
	
	data.forms["dat_sg"] = {args[1] .. args[2] .. args[3]}
	data.forms["dat_sg_def"] = {args[1] .. args[2] .. args[3] .. "ini"}
	data.forms["dat_pl"] = {args[1] .. args[2] .. args[3] .. "um"}
	data.forms["dat_pl_def"] = {args[1] .. args[2] .. args[3] .. "unum", args[1] .. args[4] .. args[3] .. "num"}
	
	data.forms["gen_sg"] = {args[1] .. args[2] .. args[3] .. "ar"}
	data.forms["gen_sg_def"] = {args[1] .. args[2] .. args[3] .. "arinnar"}
	data.forms["gen_pl"] = {args[1] .. args[2] .. args[3] .. "a"}
	data.forms["gen_pl_def"] = {args[1] .. args[2] .. args[3] .. "anna"}
end
})

decl["f17"] = {
	params = {
		[1] = {},
		[2] = {},
		},

}
setmetatable(decl["f17"], {__call = function(self, args, data)
	data.decl_type = "f17"
	
	data.forms["nom_sg"] = {args[1] .. "u" .. args[2]}
	data.forms["nom_sg_def"] = {args[1] .. "u" .. args[2] .. "in"}
	data.forms["nom_pl"] = {args[1] .. args[2] .. "ar"}
	data.forms["nom_pl_def"] = {args[1] .. args[2] .. "arnar"}

	data.forms["acc_sg"] = {args[1] .. "u" .. args[2]}
	data.forms["acc_sg_def"] = {args[1] .. args[2] .. "ina"}
	data.forms["acc_pl"] = {args[1] .. args[2] .. "ar"}
	data.forms["acc_pl_def"] = {args[1] .. args[2] .. "arnar"}
	
	data.forms["dat_sg"] = {args[1] .. "u" .. args[2]}
	data.forms["dat_sg_def"] = {args[1] .. args[2] .. "ini"}
	data.forms["dat_pl"] = {args[1] .. args[2] .. "um"}
	data.forms["dat_pl_def"] = {args[1] .. args[2] .. "unum"}
	
	data.forms["gen_sg"] = {args[1] .. args[2] .. "ar"}
	data.forms["gen_sg_def"] = {args[1] .. args[2] .. "arinnar"}
	data.forms["gen_pl"] = {args[1] .. args[2] .. "a"}
	data.forms["gen_pl_def"] = {args[1] .. args[2] .. "anna"}
end
})

decl["f18"] = {
	params = {
		[1] = {},
		[2] = {},
		},
}
setmetatable(decl["f18"], {__call = function(self, args, data)
	decl["f17"](args, data)
	
	data.decl_type = "f18"
	
	data.forms["gen_sg"] = {args[1] .. "a" .. args[2]}
	data.forms["gen_sg_def"] = {args[1] .. "a" .. args[2] .. "innar"}
end
})

decl["f19"] = {
	params = {
		[1] = {},
		[2] = {},
		[3] = {},
		[4] = {},
		[5] = {},
		},
}
setmetatable(decl["f19"], {__call = function(self, args, data)
	data.decl_type = "f19"
	
	data.forms["nom_sg"] = {args[1] .. args[2] .. args[3] .. "u" .. args[4]}
	data.forms["nom_sg_def"] = {args[1] .. args[2] .. args[3] .. "u" .. args[4] .. "in"}
	data.forms["nom_pl"] = {args[1] .. args[5] .. args[3] .. args[4] .. "ar"}
	data.forms["nom_pl_def"] = {args[1] .. args[5] .. args[3] .. args[4] .. "arnar"}

	data.forms["acc_sg"] = {args[1] .. args[2] .. args[3] .. "u" .. args[4]}
	data.forms["acc_sg_def"] = {args[1] .. args[2] .. args[3] .. args[4] .. "ina"}
	data.forms["acc_pl"] = {args[1] .. args[5] .. args[3] .. args[4] .. "ar"}
	data.forms["acc_pl_def"] = {args[1] .. args[5] .. args[3] .. args[4] .. "arnar"}
	
	data.forms["dat_sg"] = {args[1] .. args[2] .. args[3] .. "u" .. args[4]}
	data.forms["dat_sg_def"] = {args[1] .. args[2] .. args[3] .. args[4] .. "ini"}
	data.forms["dat_pl"] = {args[1] .. args[2] .. args[3] .. args[4] .. "um", args[1] .. args[5] .. args[3] .. args[4] .. "um"}
	data.forms["dat_pl_def"] = {args[1] .. args[2] .. args[3] .. args[4] .. "unum", args[1] .. args[5] .. args[3] .. args[4] .. "unum"}
	
	data.forms["gen_sg"] = {args[1] .. args[5] .. args[3] .. args[4] .. "ar"}
	data.forms["gen_sg_def"] = {args[1] .. args[5] .. args[3] .. args[4] .. "arinnar"}
	data.forms["gen_pl"] = {args[1] .. args[5] .. args[3] .. args[4] .. "a"}
	data.forms["gen_pl_def"] = {args[1] .. args[5] .. args[3] .. args[4] .. "anna"}
end
})

--Special case pattern: ær
decl["f20"] = {
	params = {
		[1] = {},
		[2] = {},
		[3] = {},
		},
}
setmetatable(decl["f20"], {__call = function(self, args, data)
	data.decl_type = "f20"
	
	data.forms["nom_sg"] = {args[1]}
	data.forms["nom_sg_def"] = {args[1] .. "in"}
	data.forms["nom_pl"] = {args[1]}
	data.forms["nom_pl_def"] = {args[1] .. "nar"}

	data.forms["acc_sg"] = {args[1]}
	data.forms["acc_sg_def"] = {args[1] .. "ina"}
	data.forms["acc_pl"] = {args[1]}
	data.forms["acc_pl_def"] = {args[1] .. "nar"}
	
	data.forms["dat_sg"] = {args[1]}
	data.forms["dat_sg_def"] = {args[1] .. "ini"}
	data.forms["dat_pl"] = {args[2] .. "m"}
	data.forms["dat_pl_def"] = {args[2] .. "num"}
	
	data.forms["gen_sg"] = {args[1]}
	data.forms["gen_sg_def"] = {args[1] .. "innar"}
	data.forms["gen_pl"] = {args[3] .. "a"}
	data.forms["gen_pl_def"] = {args[3] .. "anna"}
end
})

decl["f21"] = {
	params = {
		[1] = {},
		[2] = {},
		[3] = {},
		[4] = {},
		},
}
setmetatable(decl["f21"], {__call = function(self, args, data)
	data.decl_type = "f21"
	
	data.forms["nom_sg"] = {args[1] .. args[2] .. args[3]}
	data.forms["nom_sg_def"] = {args[1] .. args[2] .. args[3] .. "in"}
	data.forms["nom_pl"] = {args[1] .. args[4] .. "ir"}
	data.forms["nom_pl_def"] = {args[1] .. args[4] .. "irnar"}

	data.forms["acc_sg"] = {args[1] .. args[2] .. args[3]}
	data.forms["acc_sg_def"] = {args[1] .. args[2] .. "nna"}
	data.forms["acc_pl"] = {args[1] .. args[4] .. "ir"}
	data.forms["acc_pl_def"] = {args[1] .. args[4] .. "irnar"}
	
	data.forms["dat_sg"] = {args[1] .. args[2] .. args[3]}
	data.forms["dat_sg_def"] = {args[1] .. args[2] .. "nni"}
	data.forms["dat_pl"] = {args[1] .. args[4] .. "um"}
	data.forms["dat_pl_def"] = {args[1] .. args[4] .. "unum"}
	
	data.forms["gen_sg"] = {args[1] .. args[4] .. "ar"}
	data.forms["gen_sg_def"] = {args[1] .. args[4] .. "arinnar"}
	data.forms["gen_pl"] = {args[1] .. args[4] .. "a"}
	data.forms["gen_pl_def"] = {args[1] .. args[4] .. "anna"}
end
})

decl["f22"] = {
	params = {
		[1] = {},
		[2] = {},
		[3] = {},
		[4] = {},
		},
}
setmetatable(decl["f22"], {__call = function(self, args, data)
	decl["f21"](args, data)
	
	data.decl_type = "f22"
	
	data.forms["nom_pl"] = {args[1] .. args[4] .. "ur"}
	data.forms["nom_pl_def"] = {args[1] .. args[4] .. "rnar"}
	
	data.forms["acc_pl"] = {args[1] .. args[4] .. "ur"}
	data.forms["acc_pl_def"] = {args[1] .. args[4] .. "rnar"}
	
	data.forms["dat_pl"] = {args[1] .. args[2] .. "m"}
	data.forms["dat_pl_def"] = {args[1] .. args[2] .. "num"}
	
	data.forms["gen_sg"] = {args[1] .. args[2] .. "ar"}
	data.forms["gen_sg_def"] = {args[1] .. args[2] .. "arinnar"}
	data.forms["gen_pl"] = {args[1] .. args[2] .. args[3] .. "a"}
	data.forms["gen_pl_def"] = {args[1] .. args[2] .. args[3] .. "anna"}
end
})

decl["f23"] = {
	params = {
		[1] = {},
		[2] = {},
		[3] = {},
		},
}
setmetatable(decl["f23"], {__call = function(self, args, data)
	data.decl_type = "f23"
	
	data.forms["nom_sg"] = {args[1] .. args[2] .. args[3]}
	data.forms["nom_sg_def"] = {args[1] .. args[2] .. args[3] .. "in"}
	data.forms["nom_pl"] = {args[1] .. args[2] .. args[3] .. "ir"}
	data.forms["nom_pl_def"] = {args[1] .. args[2] .. args[3] .. "irnar"}

	data.forms["acc_sg"] = {args[1] .. args[2] .. args[3]}
	data.forms["acc_sg_def"] = {args[1] .. args[2] .. "nna"}
	data.forms["acc_pl"] = {args[1] .. args[2] .. args[3] .. "ir"}
	data.forms["acc_pl_def"] = {args[1] .. args[2] .. args[3] .. "irnar"}
	
	data.forms["dat_sg"] = {args[1] .. args[2] .. args[3]}
	data.forms["dat_sg_def"] = {args[1] .. args[2] .. "nni"}
	data.forms["dat_pl"] = {args[1] .. args[2] .. args[3] .. "um"}
	data.forms["dat_pl_def"] = {args[1] .. args[2] .. args[3] .. "unum"}
	
	data.forms["gen_sg"] = {args[1] .. args[2] .. "ar"}
	data.forms["gen_sg_def"] = {args[1] .. args[2] .. "arinnar"}
	data.forms["gen_pl"] = {args[1] .. args[2] .. args[3] .. "a"}
	data.forms["gen_pl_def"] = {args[1] .. args[2] .. args[3] .. "anna"}
end
})

decl["f24"] = {
	params = {
		[1] = {},
		[2] = {},
		[3] = {},
		[4] = {},
		},
}
setmetatable(decl["f24"], {__call = function(self, args, data)
	for i = 1, 4 do
		if not args[i] then args[i] = "" end
	end
	data.decl_type = "f24"
	
	data.forms["nom_sg"] = {args[1] .. args[2] .. args[3]}
	data.forms["nom_sg_def"] = {args[1] .. args[2] .. args[3] .. "in"}
	data.forms["nom_pl"] = {args[1] .. args[4] .. "r"}
	data.forms["nom_pl_def"] = {args[1] .. args[4] .. "rnar"}

	data.forms["acc_sg"] = {args[1] .. args[2] .. args[3]}
	data.forms["acc_sg_def"] = {args[1] .. args[2] .. "nna"}
	data.forms["acc_pl"] = {args[1] .. args[4] .. "r"}
	data.forms["acc_pl_def"] = {args[1] .. args[4] .. "rnar"}
	
	data.forms["dat_sg"] = {args[1] .. args[2] .. args[3]}
	data.forms["dat_sg_def"] = {args[1] .. args[2] .. "nni"}
	data.forms["dat_pl"] = {args[1] .. args[2] .. "m"}
	data.forms["dat_pl_def"] = {args[1] .. args[2] .. "num"}
	
	data.forms["gen_sg"] = {args[1] .. args[2] .. args[3] .. "ar"}
	data.forms["gen_sg_def"] = {args[1] .. args[2] .. args[3] .. "arinnar"}
	data.forms["gen_pl"] = {args[1] .. args[2] .. args[3] .. "a"}
	data.forms["gen_pl_def"] = {args[1] .. args[2] .. args[3] .. "anna"}
end
})

decl["f24-s"] = {
	params = {
		[1] = {},
		[2] = {},
		[3] = {},
		[4] = {},
		},
}
setmetatable(decl["f24-s"], {__call = function(self, args, data)
	decl["f24"](args, data)
	
	data.info = " (singular only)"
	data.decl_type = "f24s"
	data.defective = "s"
end
})

-- This pattern appears to be completely superfluous
decl["f25"] = {
	params = {
		[1] = {},
		[2] = {},
		[3] = {},
		[4] = {},
		},
}
setmetatable(decl["f25"], {__call = function(self, args, data)
	decl["f16"](args, data)
	
	data.decl_type = "f25"
end
})

decl["f26"] = {
	params = {
		[1] = {},
		[2] = {},
		[3] = {},
		[4] = {},
		},
}
setmetatable(decl["f26"], {__call = function(self, args, data)
	data.decl_type = "f26"
	
	data.forms["nom_sg"] = {args[1] .. args[2]}
	data.forms["nom_sg_def"] = {args[1] .. args[2] .. "in"}
	data.forms["nom_pl"] = {args[1] .. args[3] .. "r"}
	data.forms["nom_pl_def"] = {args[1] .. args[3] .. "rnar"}

	data.forms["acc_sg"] = {args[1] .. args[2]}
	data.forms["acc_sg_def"] = {args[1] .. args[2] .. "nna"}
	data.forms["acc_pl"] = {args[1] .. args[3] .. "r"}
	data.forms["acc_pl_def"] = {args[1] .. args[3] .. "rnar"}
	
	data.forms["dat_sg"] = {args[1] .. args[2]}
	data.forms["dat_sg_def"] = {args[1] .. args[2] .. "nni"}
	data.forms["dat_pl"] = {args[1] .. args[4] .. "m"}
	data.forms["dat_pl_def"] = {args[1] .. args[4] .. "num"}
	
	data.forms["gen_sg"] = {args[1] .. args[2] .. "ar"}
	data.forms["gen_sg_def"] = {args[1] .. args[2] .. "arinnar"}
	data.forms["gen_pl"] = {args[1] .. args[2] .. "a"}
	data.forms["gen_pl_def"] = {args[1] .. args[2] .. "anna"}
end
})

-- This pattern appears to be completely superfluous
decl["f27"] = {
	params = {
		[1] = {},
		[2] = {},
		[3] = {},
		[4] = {},
		},
}
setmetatable(decl["f27"], {__call = function(self, args, data)
	decl["f12"](args, data)
	
	data.decl_type = "f27"
end
})

decl["f28"] = {
	params = {
		[1] = {},
		[2] = {},
		[3] = {},
		[4] = {},
		},
}
setmetatable(decl["f28"], {__call = function(self, args, data)
	data.decl_type = "f28"
	
	data.info = " (plural only)"
	data.defective = "p"
	
	data.forms["nom_pl"] = {args[1] .. args[2] .. args[3]}
	data.forms["nom_pl_def"] = {args[1] .. args[2] .. args[3] .. "nar"}

	data.forms["acc_pl"] = {args[1] .. args[2] .. args[3]}
	data.forms["acc_pl_def"] = {args[1] .. args[2] .. args[3] .. "nar"}
	
	data.forms["dat_pl"] = {args[1] .. args[4] .. args[3] .. "um"}
	data.forms["dat_pl_def"] = {args[1] .. args[4] .. args[3] .. "unum"}
	
	data.forms["gen_pl"] = {args[1] .. args[4] .. args[3] .. "a"}
	data.forms["gen_pl_def"] = {args[1] .. args[4] .. args[3] .. "anna"}
end
})

--Special case pattern: móðir and derivatives
decl["f29"] = {
	params = {
		[1] = {},
		[2] = {},
		[3] = {},
		[4] = {},
		},
	singular = function(args, data)
		data.forms["nom_sg"] = {args[1] .. args[2] .. args[3] .. "ir"}
		data.forms["nom_sg_def"] = {args[1] .. args[2] .. args[3] .. "irin"}
		
		data.forms["acc_sg"] = {args[1] .. args[2] .. args[3] .. "ur"}
		data.forms["acc_sg_def"] = {args[1] .. args[2] .. args[3] .. "urina"}
		
		data.forms["dat_sg"] = {args[1] .. args[2] .. args[3] .. "ur"}
		data.forms["dat_sg_def"] = {args[1] .. args[2] .. args[3] .. "urini"}
		
		data.forms["gen_sg"] = {args[1] .. args[2] .. args[3] .. "ur"}
		data.forms["gen_sg_def"] = {args[1] .. args[2] .. args[3] .. "urinnar"}
	end,
	plural = function(args, data)
		data.forms["nom_pl"] = {args[1] .. args[4] .. args[3] .. "ur"}
		data.forms["nom_pl_def"] = {args[1] .. args[4] .. args[3] .. "urnar"}

		data.forms["acc_pl"] = {args[1] .. args[4] .. args[3] .. "ur"}
		data.forms["acc_pl_def"] = {args[1] .. args[4] .. args[3] .. "urnar"}

		data.forms["dat_pl"] = {args[1] .. args[4] .. args[3] .. "rum"}
		data.forms["dat_pl_def"] = {args[1] .. args[4] .. args[3].. "rnum"}
		
		data.forms["gen_pl"] = {args[1] .. args[4] .. args[3] .. "ra"}
		data.forms["gen_pl_def"] = {args[1] .. args[4] .. args[3] .. "ranna"}
	end
}
setmetatable(decl["f29"], {__call = function(self, args, data)
	data.decl_type = "f29"
	
	self.singular(args, data)
	self.plural(args, data)
end
})

-- Special case pattern: dóttir and derivatives
decl["f30"] = {
	params = {
		[1] = {},
		[2] = {},
		[3] = {},
		[4] = {},
		},
}
setmetatable(decl["f30"], {__call = function(self, args, data)
	data.decl_type = "f30"
	
	data.forms["nom_sg"] = {args[1] .. args[2] .. args[3] .. args[3] .. "ir"}
	data.forms["nom_sg_def"] = {args[1] .. args[2] .. args[3] .. args[3] .. "irin"}
	
	data.forms["acc_sg"] = {args[1] .. args[2] .. args[3] .. args[3] .. "ur"}
	data.forms["acc_sg_def"] = {args[1] .. args[2] .. args[3] .. args[3] .. "rina"}
	
	data.forms["dat_sg"] = {args[1] .. args[2] .. args[3] .. args[3] .. "ur"}
	data.forms["dat_sg_def"] = {args[1] .. args[2] .. args[3] .. args[3] .. "rini"}
	
	data.forms["gen_sg"] = {args[1] .. args[2] .. args[3] .. args[3] .. "ur"}
	data.forms["gen_sg_def"] = {args[1] .. args[2] .. args[3] .. args[3] .. "urinnar"}
	
	decl["f29"].plural(args, data)
end
})

-- Special case pattern: systir and derivatives
decl["f31"] = {
	params = {
		[1] = {},
		},
}
setmetatable(decl["f31"], {__call = function(self, args, data)
	data.decl_type = "f31"
	
	data.forms["nom_sg"] = {args[1] .. "ir"}
	data.forms["nom_sg_def"] = {args[1] .. "irin"}
	data.forms["nom_pl"] = {args[1] .. "rar"}
	data.forms["nom_pl_def"] = {args[1] .. "rarnar"}

	data.forms["acc_sg"] = {args[1] .. "ur"}
	data.forms["acc_sg_def"] = {args[1] .. "rina"}
	data.forms["acc_pl"] = {args[1] .. "rar"}
	data.forms["acc_pl_def"] = {args[1] .. "rarnar"}
	
	data.forms["dat_sg"] = {args[1] .. "ur"}
	data.forms["dat_sg_def"] = {args[1] .. "rini"}
	data.forms["dat_pl"] = {args[1] .. "rum"}
	data.forms["dat_pl_def"] = {args[1] .. "runum"}
	
	data.forms["gen_sg"] = {args[1] .. "ur"}
	data.forms["gen_sg_def"] = {args[1] .. "urinnar"}
	data.forms["gen_pl"] = {args[1] .. "ra"}
	data.forms["gen_pl_def"] = {args[1] .. "ranna"}
end
})

decl["f32"] = {
	params = {
		[1] = {},
		},
	singular = function(args, data)
		data.forms["nom_sg"] = {args[1] .. "i"}
		data.forms["nom_sg_def"] = {args[1] .. "in"}

		data.forms["acc_sg"] = {args[1] .. "i"}
		data.forms["acc_sg_def"] = {args[1] .. "ina"}

		data.forms["dat_sg"] = {args[1] .. "i"}
		data.forms["dat_sg_def"] = {args[1] .. "ini"}

		data.forms["gen_sg"] = {args[1] .. "ar"}
		data.forms["gen_sg_def"] = {args[1] .. "arinnar"}
	end,
	plural = function(args, data)
		data.forms["nom_pl"] = {args[1] .. "ar"}
		data.forms["nom_pl_def"] = {args[1] .. "arnar"}
		
		data.forms["acc_pl"] = {args[1] .. "ar"}
		data.forms["acc_pl_def"] = {args[1] .. "arnar"}
		
		data.forms["dat_pl"] = {args[1] .. "um"}
		data.forms["dat_pl_def"] = {args[1] .. "unum"}
		
		data.forms["gen_pl"] = {args[1] .. "a"}
		data.forms["gen_pl_def"] = {args[1] .. "anna"}
	end
}
setmetatable(decl["f32"], {__call = function(self, args, data)
	data.decl_type = "f32"
	
	self.singular(args, data)
	self.plural(args, data)
end
})

decl["f32-p"] = {
	params = {
		[1] = {},
		},
}
setmetatable(decl["f32-p"], {__call = function(self, args, data)
	decl["f32"].plural(args, data)
	
	data.decl_type = "f32p"
	data.info = " (plural only)"
	data.defective = "p"
end
})

decl["f33"] = {
	params = {
		[1] = {},
		},
	singular = function(args, data)
		data.forms["nom_sg"] = {args[1]}
		data.forms["nom_sg_def"] = {args[1] .. "n"}

		data.forms["acc_sg"] = {args[1]}
		data.forms["acc_sg_def"] = {args[1] .. "na"}

		data.forms["dat_sg"] = {args[1]}
		data.forms["dat_sg_def"] = {args[1] .. "ni"}

		data.forms["gen_sg"] = {args[1]}
		data.forms["gen_sg_def"] = {args[1] .. "nnar"}
	end,
	plural = function(args, data)
		data.forms["nom_pl"] = {args[1] .. "r"}
		data.forms["nom_pl_def"] = {args[1] .. "rnar"}
		
		data.forms["acc_pl"] = {args[1] .. "r"}
		data.forms["acc_pl_def"] = {args[1] .. "rnar"}
		
		--data.forms["dat_pl"] = {args[1] .. "um"}
		--data.forms["dat_pl_def"] = {args[1] .. "unum"}
		
		--data.forms["gen_pl"] = {args[1] .. "a"}
		--data.forms["gen_pl_def"] = {args[1] .. "anna"}
	end
}
setmetatable(decl["f33"], {__call = function(self, args, data)
	data.decl_type = "f33"
	data.info = " (defective)"
	self.singular(args, data)
	self.plural(args, data)
end
})

decl["f33-s"] = {
	params = {
		[1] = {},
		},
}
setmetatable(decl["f33-s"], {__call = function(self, args, data)
	decl["f33"].singular(args, data)
	
	data.decl_type = "f33s"
	data.info = " (singular only)"
	data.defective = "s"
end
})

decl["f34"] = {
	params = {
		[1] = {},
		[2] = {},
		[3] = {},
		[4] = {},
		},
}
setmetatable(decl["f34"], {__call = function(self, args, data)
	decl["f3"](args, data)
	
	data.decl_type = "f34"
	
	data.forms["dat_pl"] = {args[1] .. args[4] .. args[3] .. "um"}
	data.forms["dat_pl_def"] = {args[1] .. args[4] .. args[3] .. "unum"}
	
	data.forms["gen_sg"] = {args[1] .. args[2] .. args[3] .. "ar"}
	data.forms["gen_sg_def"] = {args[1] .. args[2] .. args[3] .. "arinnar"}
end
})

return decl