diff --git a/extra/emacs/readme.md b/extra/emacs/readme.md new file mode 100644 index 0000000000000000000000000000000000000000..2636eab68b9521acf75c190e3fcf34e6e86fc60b --- /dev/null +++ b/extra/emacs/readme.md @@ -0,0 +1,12 @@ +# Emacs extras # + +This directory contains extra utils for use with Emacs. + +## Snippets ## + +if you copy the contents of the `snippets` directory to your `~/.emacs.d/snippets/`, the following +*yasnippet* snippets will become available: + +- yaml-mode: + - `RT`: Insert a new RecordType, with inheritance and properties sections. + - `prop`: Insert a new Property into a RecordType, with datatype and description. diff --git a/extra/emacs/snippets/yaml-mode/Property inside RecordType b/extra/emacs/snippets/yaml-mode/Property inside RecordType new file mode 100644 index 0000000000000000000000000000000000000000..92769b78e5496ec4cb545556b3eff3fc924c872d --- /dev/null +++ b/extra/emacs/snippets/yaml-mode/Property inside RecordType @@ -0,0 +1,34 @@ +# -*- mode: snippet -*- +# This file is a part of the CaosDB Project. +# +# Copyright (C) 2022 IndiScale GmbH <info@indiscale.com> +# Copyright (C) 2022 Daniel Hornung <d.hornung@indiscale.com> +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see <https://www.gnu.org/licenses/>. + +# name: Property inside RecordType +# key: prop +# expand-env: ((yas-indent-line 'fixed)) +# -- +${1:property_name}: + datatype: ${2:$$(yas-choose-value '("BOOLEAN" + "DATETIME" + "DOUBLE" + "FILE" + "INTEGER" + "LIST" + "REFERENCE" + "TEXT"))} + description: ${3:description text} +$0 \ No newline at end of file diff --git a/extra/emacs/snippets/yaml-mode/RecordType b/extra/emacs/snippets/yaml-mode/RecordType new file mode 100644 index 0000000000000000000000000000000000000000..6b4a9c263806b6d57442470a11a2770d3d417741 --- /dev/null +++ b/extra/emacs/snippets/yaml-mode/RecordType @@ -0,0 +1,30 @@ +# -*- mode: snippet -*- +# This file is a part of the CaosDB Project. +# +# Copyright (C) 2022 IndiScale GmbH <info@indiscale.com> +# Copyright (C) 2022 Daniel Hornung <d.hornung@indiscale.com> +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see <https://www.gnu.org/licenses/>. + +# name: RecordType +# key: RT +# expand-env: ((yas-indent-line 'fixed)) +# -- +${1:RecordTypeName}: + inherit_from_obligatory:$0 + inherit_from_recommended: + inherit_from_suggested: + obligatory_properties: + recommended_properties: + suggested_properties: diff --git a/src/doc/yaml_interface.rst b/src/doc/yaml_interface.rst index 52d33a174e6c98f77f4bc55b1593545f864ee0b2..f5dea11acc3a23c3d6eb9680e1c3e488c4b43a54 100644 --- a/src/doc/yaml_interface.rst +++ b/src/doc/yaml_interface.rst @@ -98,7 +98,6 @@ would declare a list of elements with datatype Project. Keywords ======== -- **parent**: Parent of this entity. - **importance**: Importance of this entity. Possible values: "recommended", "obligatory", "suggested" - **datatype**: The datatype of this property, e.g. TEXT, INTEGER or Project. - **unit**: The unit of the property, e.g. "m/s". @@ -106,9 +105,11 @@ Keywords - **recommended_properties**: Add properties to this entity with importance "recommended". - **obligatory_properties**: Add properties to this entity with importance "obligatory". - **suggested_properties**: Add properties to this entity with importance "suggested". -- **inherit_from_recommended**: Inherit from another entity using the specified importance level including the higher importance level "obligatory". This would add a corresponding parent and add all obligatory and recommended properties from the parent. -- **inherit_from_suggested including higher importance levels**: Inherit from another entity using the specified importance level. This would add a corresponding parent and add all obligatory, recommended and suggested properties from the parent. -- **inherit_from_obligatory**: Inherit from another entity using the specified importance level. This would add a corresponding parent and add all obligatory properties from the parent. +- **inherit_from_XXX**: This keyword accepts a list of other RecordTypes. Those RecordTypes are + added as parents, and all Properties with at least the importance ``XXX`` are inherited. For + example, ``inherited_from_recommended`` will inherit all Properties of importance ``recommended`` + and ``obligatory``, but not ``suggested``. +- **parent**: Parent of this entity. (*Deprecated*) Usage =====