Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Roblox
GitHub Repository: Roblox/luau
Path: blob/master/Analysis/include/Luau/Documentation.h
2727 views
1
// This file is part of the Luau programming language and is licensed under MIT License; see LICENSE.txt for details
2
#pragma once
3
4
#include "Luau/DenseHash.h"
5
#include "Luau/Variant.h"
6
7
#include <string>
8
#include <vector>
9
10
namespace Luau
11
{
12
13
struct FunctionDocumentation;
14
struct TableDocumentation;
15
struct OverloadedFunctionDocumentation;
16
struct BasicDocumentation;
17
18
using Documentation = Luau::Variant<BasicDocumentation, FunctionDocumentation, TableDocumentation, OverloadedFunctionDocumentation>;
19
using DocumentationSymbol = std::string;
20
21
struct BasicDocumentation
22
{
23
std::string documentation;
24
std::string learnMoreLink;
25
std::string codeSample;
26
};
27
28
struct FunctionParameterDocumentation
29
{
30
std::string name;
31
DocumentationSymbol documentation;
32
};
33
34
// Represents documentation for anything callable. This could be a method or a
35
// callback or a free function.
36
struct FunctionDocumentation
37
{
38
std::string documentation;
39
std::vector<FunctionParameterDocumentation> parameters;
40
std::vector<DocumentationSymbol> returns;
41
std::string learnMoreLink;
42
std::string codeSample;
43
};
44
45
struct OverloadedFunctionDocumentation
46
{
47
// This is a map of function signature to overload symbol name.
48
Luau::DenseHashMap<std::string, DocumentationSymbol> overloads;
49
};
50
51
// Represents documentation for a table-like item, meaning "anything with keys".
52
// This could be a table or a class.
53
struct TableDocumentation
54
{
55
std::string documentation;
56
Luau::DenseHashMap<std::string, DocumentationSymbol> keys;
57
std::string learnMoreLink;
58
std::string codeSample;
59
};
60
61
using DocumentationDatabase = Luau::DenseHashMap<DocumentationSymbol, Documentation>;
62
63
} // namespace Luau
64
65