--
-- Copyright (c) 2021-2025 Zeping Lee
-- Released under the MIT license.
-- Repository: https://github.com/zepinglee/citeproc-lua
--

local style
local citation
local bibliography
local locale
local layout
local text
local date
local number
local names
local label
local group
local choose
local sort

local using_luatex, kpse = pcall(require, "kpse")
if using_luatex then
 style = require("citeproc-node-style")
 citation = require("citeproc-node-citation")
 bibliography = require("citeproc-node-bibliography")
 locale = require("citeproc-node-locale")
 layout = require("citeproc-node-layout")
 text = require("citeproc-node-text")
 date = require("citeproc-node-date")
 number = require("citeproc-node-number")
 names = require("citeproc-node-names")
 label = require("citeproc-node-label")
 group = require("citeproc-node-group")
 choose = require("citeproc-node-choose")
 sort = require("citeproc-node-sort")
else
 style = require("citeproc.node-style")
 citation = require("citeproc.node-citation")
 bibliography = require("citeproc.node-bibliography")
 locale = require("citeproc.node-locale")
 layout = require("citeproc.node-layout")
 text = require("citeproc.node-text")
 date = require("citeproc.node-date")
 number = require("citeproc.node-number")
 names = require("citeproc.node-names")
 label = require("citeproc.node-label")
 group = require("citeproc.node-group")
 choose = require("citeproc.node-choose")
 sort = require("citeproc.node-sort")
end

local nodes = {
 ["style"] = style.Style,
 ["citation"] = citation.Citation,
 ["intext"] = citation.Intext,
 ["bibliography"] = bibliography.Bibliography,
 ["locale"] = locale.Locale,
 ["term"] = locale.Term,
 ["layout"] = layout.Layout,
 ["text"] = text.Text,
 ["date"] = date.Date,
 ["date-part"] = date.DatePart,
 ["number"] = number.Number,
 ["names"] = names.Names,
 ["name"] = names.Name,
 ["name-part"] = names.NamePart,
 ["et-al"] = names.EtAl,
 ["substitute"] = names.Substitute,
 ["label"] = label.Label,
 ["group"] = group.Group,
 ["choose"] = choose.Choose,
 ["if"] = choose.If,
 ["else"] = choose.Else,
 ["else-if"] = choose.ElseIf,
 ["sort"] = sort.Sort,
 ["key"] = sort.Key,
}

return nodes