spyglassmc / spyglass Goto Github PK
View Code? Open in Web Editor NEWDevelopment tools for vanilla Minecraft: Java Edition data pack developers.
Home Page: https://spyglassmc.com
License: MIT License
Development tools for vanilla Minecraft: Java Edition data pack developers.
Home Page: https://spyglassmc.com
License: MIT License
Please refer to https://github.com/SPGoding/datapack-language-server/wiki/IMP-Doc.
Doc comments are a way to describe a function or a user-defined value for both human and DHP.
There are two types of doc comments: the one for function and the one for user-defined stuff.
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC 2119.
Function doc comments MUST be put at the very beginning of a function file.
A doc comment MUST begin with #>
instead of #
. You MAY put several spaces (
) or tabs (\t
) before or after the beginning symbol. You SHOULD put the function's namespaced ID after this symbol. This ID can be used to perform rename operations, show call hierarchy, and many other features provided by DHP.
It's RECOMMENDED to put other comments after this line to describe the function, usage, and any other related stuff of this function, beginning with #
. You MAY put several white spaces (
, \t
, \r
, \n
, or \r\n
) before or after these symbols too. Any lines that are not beginning with #
(e.g. an empty line, a command, etc.) or are define comments (#define <type> <id>
) will break the doc comments at that position.
You MAY use annotations which start with @
to help describe your function, showed below.
Here is an example of a function doc comment.
#> minecraft:foo
# This function is used to balabala.
# Balabala.
# Balabala.
# @author SPGoding
# @input score #foo params <description of #foo parameter>
# @input
# score #bar params
# <description of #bar parameter>
# But don't break the streak of `#`s. For instance, there is an empty line before this line, so this line will not be considered as part of the doc comment.
Here's a full list of annotations that you can use within your function doc comment. All parameters in the annotation should be seperated with at least one white space. ...
indicates that this argument will eat all the characters until the end of this doc comment or encounters another annotation.
Type | Syntax | Description |
---|---|---|
author | @author <string...> |
The author of this function. |
context | @context <string...> |
The execution context of this function. |
deprecated | @deprecated [<reason...>] |
This function is deprecated. This annotation affects the semantic coloring token modifier for this namespaced ID. |
handles | @handles <namespaced_id> [<namespaced_id>, ...] |
Marks this function as an event handler. |
override | @override |
Indicates that this function overrides a function intentionally. If noImplicitOverride is set to true in the config (defaults to false ), unmarked override will trigger a warning. |
patch | @patch |
The same as @override . |
input | @input data (block|entity|storage) <id> <path> [<description...>] |
Defines an NBT data input of this function. <id> part will be treated as a private declaration automatically, and will be used to provide completions in this function file. |
input | @input score <score_holder> <objective> [<description...>] |
Defines a score input of this function. <score_holder> part will be treated as a private declaration automatically, and will be used to provide completions in this function file. |
output | @output data (block|entity|storage) <id> <path> [<description...>] |
Defines an NBT data output of this function. <id> part will be treated as a private declaration automatically, and will be used to provide completions in this function file. |
output | @output score <score_holder> <objective> [<description...>] |
Defines a score output of this function. <score_holder> part will be treated as a private declaration automatically, and will be used to provide completions in this function file. |
private | @private |
WIP. See #319 for access modifier proposal. |
within | @within <namespaced_id> [<namespaced_id>, ...] |
WIP. See #319 for access modifier proposal. |
internal | @internal |
WIP. See #319 for access modifier proposal. |
public | @public |
WIP. See #319 for access modifier proposal. |
custom | @<custom_annotation_name> [<parameters...>] |
Custom annotations. |
Doc comments for other user-defined stuff are similar to function doc comment, but with these differences:
#>
symbol.author
, deprecated
, private
, within
, internal
, public
, and custom annotations work.The doc comment MUST be write right before the corresponding stuff. Here are several working examples:
#>
# Balalala.
# @internal
scoreboard objectives add test dummy
#>
# Alalalab.
# @deprecated
# @within spgoding:
#define entity SPGoding
Reference: Arcensoth's IMP Function Documentation Format.
Provides methods to walk through nbt schemas.
Relates to #5.
Add functions to walk through compound tag.
e.g.
#region XXX
say hi
#endregion
Including insertStringNBT
and insertBlockStates
.
Relates to: #11.
Including completions for:
{}
for compoud tags.[]
for list tags.[X;]
for respective array tags.The LineParser
should provide functions to parse a whole line and show hints to users.
Use โ
and โ
to quote strings instead of using ``s.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.