mkdocstrings-matlab 0.1.3__py2.py3-none-any.whl → 0.1.5__py2.py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- mkdocstrings_handlers/matlab/collections.py +17 -0
- mkdocstrings_handlers/matlab/handler.py +51 -24
- mkdocstrings_handlers/matlab/matlab/+docstring/+metadata/argument.m +1 -1
- mkdocstrings_handlers/matlab/matlab/+docstring/+utils/dedent.m +0 -1
- mkdocstrings_handlers/matlab/matlab/+docstring/resolve.m +4 -0
- mkdocstrings_handlers/matlab/models.py +31 -6
- mkdocstrings_handlers/matlab/parser.py +31 -0
- mkdocstrings_handlers/matlab/resources/grammar.yml +566 -0
- {mkdocstrings_matlab-0.1.3.dist-info → mkdocstrings_matlab-0.1.5.dist-info}/METADATA +4 -2
- {mkdocstrings_matlab-0.1.3.dist-info → mkdocstrings_matlab-0.1.5.dist-info}/RECORD +12 -9
- {mkdocstrings_matlab-0.1.3.dist-info → mkdocstrings_matlab-0.1.5.dist-info}/WHEEL +0 -0
- {mkdocstrings_matlab-0.1.3.dist-info → mkdocstrings_matlab-0.1.5.dist-info}/licenses/LICENSE +0 -0
| @@ -0,0 +1,17 @@ | |
| 1 | 
            +
            from _griffe.collections import LinesCollection as _LinesCollection, ModulesCollection
         | 
| 2 | 
            +
            from _griffe.models import Object
         | 
| 3 | 
            +
             | 
| 4 | 
            +
             | 
| 5 | 
            +
            class LinesCollection(_LinesCollection):
         | 
| 6 | 
            +
                pass
         | 
| 7 | 
            +
             | 
| 8 | 
            +
             | 
| 9 | 
            +
            class ModelsCollection(ModulesCollection):
         | 
| 10 | 
            +
                def __init__(self):
         | 
| 11 | 
            +
                    self.members: dict[str, Object] = {}
         | 
| 12 | 
            +
             | 
| 13 | 
            +
                def __setitem__(self, key: str, value: Object):
         | 
| 14 | 
            +
                    self.members[key] = value
         | 
| 15 | 
            +
             | 
| 16 | 
            +
                def __getitem__(self, key: str):
         | 
| 17 | 
            +
                    return self.members[key]
         | 
| @@ -8,9 +8,11 @@ from griffe import Docstring, Parameters, Parameter, ParameterKind | |
| 8 8 | 
             
            from pprint import pprint
         | 
| 9 9 |  | 
| 10 10 |  | 
| 11 | 
            +
            import charset_normalizer
         | 
| 11 12 | 
             
            import json
         | 
| 12 13 |  | 
| 13 14 |  | 
| 15 | 
            +
            from mkdocstrings_handlers.matlab.collections import LinesCollection, ModelsCollection
         | 
| 14 16 | 
             
            from mkdocstrings_handlers.matlab_engine import MatlabEngine, MatlabExecutionError
         | 
| 15 17 | 
             
            from mkdocstrings_handlers.matlab.models import (
         | 
| 16 18 | 
             
                Function,
         | 
| @@ -18,23 +20,9 @@ from mkdocstrings_handlers.matlab.models import ( | |
| 18 20 | 
             
                Classfolder,
         | 
| 19 21 | 
             
                Namespace,
         | 
| 20 22 | 
             
                Property,
         | 
| 21 | 
            -
                ROOT
         | 
| 23 | 
            +
                ROOT,
         | 
| 22 24 | 
             
            )
         | 
| 23 | 
            -
             | 
| 24 | 
            -
             | 
| 25 | 
            -
            class _ModelsStorage:
         | 
| 26 | 
            -
                def __init__(self):
         | 
| 27 | 
            -
                    self._namespace = ""
         | 
| 28 | 
            -
                    self._models = {}
         | 
| 29 | 
            -
             | 
| 30 | 
            -
                def __getitem__(self, key):
         | 
| 31 | 
            -
                    return self._models[key]
         | 
| 32 | 
            -
             | 
| 33 | 
            -
                def __setitem__(self, key, value):
         | 
| 34 | 
            -
                    self._models[key] = value
         | 
| 35 | 
            -
             | 
| 36 | 
            -
                def __contains__(self, key):
         | 
| 37 | 
            -
                    return key in self._models
         | 
| 25 | 
            +
            from mkdocstrings_handlers.matlab.parser import MatlabParser
         | 
| 38 26 |  | 
| 39 27 |  | 
| 40 28 | 
             
            class MatlabHandler(BaseHandler):
         | 
| @@ -72,8 +60,8 @@ class MatlabHandler(BaseHandler): | |
| 72 60 | 
             
                    # "find_stubs_package": False,
         | 
| 73 61 | 
             
                    # "allow_inspection": True,
         | 
| 74 62 | 
             
                    "show_bases": True,
         | 
| 75 | 
            -
                    "show_inheritance_diagram": False,  #  | 
| 76 | 
            -
                    "show_source":  | 
| 63 | 
            +
                    "show_inheritance_diagram": False,  # Insider feature
         | 
| 64 | 
            +
                    "show_source": True,
         | 
| 77 65 | 
             
                    # "preload_modules": None,
         | 
| 78 66 | 
             
                    # Heading options
         | 
| 79 67 | 
             
                    "heading_level": 2,
         | 
| @@ -138,11 +126,16 @@ class MatlabHandler(BaseHandler): | |
| 138 126 |  | 
| 139 127 | 
             
                    if paths is None:
         | 
| 140 128 | 
             
                        paths = ""
         | 
| 129 | 
            +
                    else:
         | 
| 130 | 
            +
                        config_path = Path(config_file_path).parent
         | 
| 131 | 
            +
                        full_paths = [str((config_path / path).resolve()) for path in paths]
         | 
| 141 132 |  | 
| 142 133 | 
             
                    self.engine = MatlabEngine()
         | 
| 143 134 | 
             
                    self.engine.addpath(str(Path(__file__).parent / "matlab"))
         | 
| 144 | 
            -
                    self.engine.matlab_startup( | 
| 145 | 
            -
                    self.models =  | 
| 135 | 
            +
                    self.engine.matlab_startup(full_paths, startup_expression)
         | 
| 136 | 
            +
                    self.models = ModelsCollection()
         | 
| 137 | 
            +
                    self.lines = LinesCollection()
         | 
| 138 | 
            +
                    self.parser = MatlabParser()
         | 
| 146 139 | 
             
                    self._locale = locale
         | 
| 147 140 |  | 
| 148 141 | 
             
                def get_templates_dir(self, handler: str | None = None) -> Path:
         | 
| @@ -173,6 +166,11 @@ class MatlabHandler(BaseHandler): | |
| 173 166 | 
             
                        raise CollectionError(error.args[0].strip()) from error
         | 
| 174 167 | 
             
                    ast_dict = json.loads(ast_json)
         | 
| 175 168 |  | 
| 169 | 
            +
                    filepath = Path(ast_dict["path"])
         | 
| 170 | 
            +
                    if filepath not in self.lines:
         | 
| 171 | 
            +
                        lines = str(charset_normalizer.from_path(filepath).best()).splitlines()
         | 
| 172 | 
            +
                        self.lines[filepath] = lines
         | 
| 173 | 
            +
             | 
| 176 174 | 
             
                    match ast_dict["type"]:
         | 
| 177 175 | 
             
                        case "function" | "method":
         | 
| 178 176 | 
             
                            return self.collect_function(ast_dict, final_config)
         | 
| @@ -255,16 +253,38 @@ class MatlabHandler(BaseHandler): | |
| 255 253 | 
             
                        if ast_dict["docstring"]
         | 
| 256 254 | 
             
                        else None
         | 
| 257 255 | 
             
                    )
         | 
| 256 | 
            +
             | 
| 257 | 
            +
                    filepath = Path(ast_dict["path"])
         | 
| 258 | 
            +
             | 
| 259 | 
            +
                    if config["show_source"]:
         | 
| 260 | 
            +
                        tmObject = self.parser.parse_file(filepath)
         | 
| 261 | 
            +
                        tmClass = next(
         | 
| 262 | 
            +
                            child
         | 
| 263 | 
            +
                            for child in tmObject.children
         | 
| 264 | 
            +
                            if child.token == "meta.class.matlab"
         | 
| 265 | 
            +
                        )
         | 
| 266 | 
            +
                    else:
         | 
| 267 | 
            +
                        tmClass = None
         | 
| 268 | 
            +
             | 
| 269 | 
            +
                    bases = ast_dict["superclasses"] if isinstance(ast_dict["superclasses"], list) else [ast_dict["superclasses"]]
         | 
| 270 | 
            +
                    bases = [base for base in bases if base != "handle"]
         | 
| 271 | 
            +
             | 
| 258 272 | 
             
                    model = Class(
         | 
| 259 273 | 
             
                        ast_dict["name"],
         | 
| 260 274 | 
             
                        docstring=docstring,
         | 
| 261 | 
            -
                        parent=self.get_parent( | 
| 275 | 
            +
                        parent=self.get_parent(filepath.parent),
         | 
| 262 276 | 
             
                        hidden=ast_dict["hidden"],
         | 
| 263 277 | 
             
                        sealed=ast_dict["sealed"],
         | 
| 264 278 | 
             
                        abstract=ast_dict["abstract"],
         | 
| 265 279 | 
             
                        enumeration=ast_dict["enumeration"],
         | 
| 266 280 | 
             
                        handle=ast_dict["handle"],
         | 
| 267 | 
            -
                         | 
| 281 | 
            +
                        bases=bases,
         | 
| 282 | 
            +
                        filepath=filepath,
         | 
| 283 | 
            +
                        modules_collection=self.models,
         | 
| 284 | 
            +
                        lines_collection=self.lines,
         | 
| 285 | 
            +
                        lineno=1,
         | 
| 286 | 
            +
                        endlineno=len(self.lines[filepath]),
         | 
| 287 | 
            +
                        textmate=tmClass,
         | 
| 268 288 | 
             
                    )
         | 
| 269 289 |  | 
| 270 290 | 
             
                    for property_dict in ast_dict["properties"]:
         | 
| @@ -296,12 +316,14 @@ class MatlabHandler(BaseHandler): | |
| 296 316 | 
             
                            continue
         | 
| 297 317 |  | 
| 298 318 | 
             
                        method = self.collect(f"{defining_class}.{name}", config)
         | 
| 319 | 
            +
                        (method.lineno, method.endlineno) = model.get_lineno_method(name)
         | 
| 299 320 | 
             
                        method.parent = model
         | 
| 300 321 | 
             
                        method._access = method_dict["access"]
         | 
| 301 322 | 
             
                        method._static = method_dict["static"]
         | 
| 302 323 | 
             
                        method._abstract = method_dict["abstract"]
         | 
| 303 324 | 
             
                        method._sealed = method_dict["sealed"]
         | 
| 304 325 | 
             
                        method._hidden = method_dict["hidden"]
         | 
| 326 | 
            +
             | 
| 305 327 | 
             
                        model.members[name] = method
         | 
| 306 328 | 
             
                        self.models[method.canonical_path] = method
         | 
| 307 329 |  | 
| @@ -340,6 +362,7 @@ class MatlabHandler(BaseHandler): | |
| 340 362 | 
             
                            )
         | 
| 341 363 | 
             
                        )
         | 
| 342 364 |  | 
| 365 | 
            +
                    filepath = Path(ast_dict["path"])
         | 
| 343 366 | 
             
                    model = Function(
         | 
| 344 367 | 
             
                        ast_dict["name"],
         | 
| 345 368 | 
             
                        parameters=Parameters(*parameters),
         | 
| @@ -350,8 +373,12 @@ class MatlabHandler(BaseHandler): | |
| 350 373 | 
             
                        )
         | 
| 351 374 | 
             
                        if ast_dict["docstring"]
         | 
| 352 375 | 
             
                        else None,
         | 
| 353 | 
            -
                        parent=self.get_parent( | 
| 354 | 
            -
                        filepath= | 
| 376 | 
            +
                        parent=self.get_parent(filepath.parent),
         | 
| 377 | 
            +
                        filepath=filepath,
         | 
| 378 | 
            +
                        modules_collection=self.models,
         | 
| 379 | 
            +
                        lines_collection=self.lines,
         | 
| 380 | 
            +
                        lineno=1,
         | 
| 381 | 
            +
                        endlineno=len(self.lines[filepath]),
         | 
| 355 382 | 
             
                    )
         | 
| 356 383 |  | 
| 357 384 | 
             
                    self.models[model.canonical_path] = model
         | 
| @@ -1,8 +1,8 @@ | |
| 1 1 | 
             
            from enum import Enum
         | 
| 2 2 | 
             
            from typing import Any
         | 
| 3 3 | 
             
            from griffe import Function as GriffeFunction, Class as GriffeClass, Module, Attribute
         | 
| 4 | 
            -
            from _griffe.exceptions import BuiltinModuleError
         | 
| 5 4 | 
             
            from pathlib import Path
         | 
| 5 | 
            +
            from textmate_grammar.elements import ContentElement
         | 
| 6 6 |  | 
| 7 7 |  | 
| 8 8 | 
             
            class Access(Enum):
         | 
| @@ -43,6 +43,7 @@ class Class(CanonicalPathMixin, PathMixin, GriffeClass): | |
| 43 43 | 
             
                    abstract: bool = False,
         | 
| 44 44 | 
             
                    enumeration: bool = False,
         | 
| 45 45 | 
             
                    handle: bool = False,
         | 
| 46 | 
            +
                    textmate: ContentElement | None = None,
         | 
| 46 47 | 
             
                    **kwargs: Any,
         | 
| 47 48 | 
             
                ) -> None:
         | 
| 48 49 | 
             
                    super().__init__(*args, **kwargs)
         | 
| @@ -51,6 +52,31 @@ class Class(CanonicalPathMixin, PathMixin, GriffeClass): | |
| 51 52 | 
             
                    self._abstract: bool = abstract
         | 
| 52 53 | 
             
                    self._enumeration: bool = enumeration
         | 
| 53 54 | 
             
                    self._handle: bool = handle
         | 
| 55 | 
            +
                    self._textmate: ContentElement | None = textmate
         | 
| 56 | 
            +
             | 
| 57 | 
            +
                    self._method_lineno: dict[str, tuple[int, int]] = {}
         | 
| 58 | 
            +
                    if textmate is None:
         | 
| 59 | 
            +
                        return
         | 
| 60 | 
            +
                    for block in [
         | 
| 61 | 
            +
                        block
         | 
| 62 | 
            +
                        for block in self._textmate.children
         | 
| 63 | 
            +
                        if block.token == "meta.methods.matlab"
         | 
| 64 | 
            +
                    ]:
         | 
| 65 | 
            +
                        for method in block.children:
         | 
| 66 | 
            +
                            declaration = next(
         | 
| 67 | 
            +
                                item
         | 
| 68 | 
            +
                                for item in method.children
         | 
| 69 | 
            +
                                if item.token == "meta.function.declaration.matlab"
         | 
| 70 | 
            +
                            )
         | 
| 71 | 
            +
                            name = next(
         | 
| 72 | 
            +
                                item
         | 
| 73 | 
            +
                                for item in declaration.children
         | 
| 74 | 
            +
                                if item.token == "entity.name.function.matlab"
         | 
| 75 | 
            +
                            ).content
         | 
| 76 | 
            +
                            charaters_ids = method.characters.keys()
         | 
| 77 | 
            +
                            lineno = min(charaters_ids, key=lambda p: p[0])[0]
         | 
| 78 | 
            +
                            endlino = max(charaters_ids, key=lambda p: p[0])[0] + 1
         | 
| 79 | 
            +
                            self._method_lineno[name] = (lineno, endlino)
         | 
| 54 80 |  | 
| 55 81 | 
             
                @property
         | 
| 56 82 | 
             
                def is_private(self) -> bool:
         | 
| @@ -63,6 +89,9 @@ class Class(CanonicalPathMixin, PathMixin, GriffeClass): | |
| 63 89 | 
             
                    else:
         | 
| 64 90 | 
             
                        return super().canonical_path
         | 
| 65 91 |  | 
| 92 | 
            +
                def get_lineno_method(self, method_name: str) -> tuple[int, int]:
         | 
| 93 | 
            +
                    return self._method_lineno.get(method_name, (self.lineno, self.endlineno))
         | 
| 94 | 
            +
             | 
| 66 95 |  | 
| 67 96 | 
             
            class Property(CanonicalPathMixin, Attribute):
         | 
| 68 97 | 
             
                def __init__(
         | 
| @@ -137,7 +166,7 @@ class _Root(Namespace): | |
| 137 166 |  | 
| 138 167 | 
             
                def __repr__(self) -> str:
         | 
| 139 168 | 
             
                    return "MATLABROOT"
         | 
| 140 | 
            -
             | 
| 169 | 
            +
             | 
| 141 170 |  | 
| 142 171 | 
             
            ROOT = _Root()
         | 
| 143 172 |  | 
| @@ -145,7 +174,3 @@ ROOT = _Root() | |
| 145 174 | 
             
            class Classfolder(Class):
         | 
| 146 175 | 
             
                def __repr__(self) -> str:
         | 
| 147 176 | 
             
                    return f"Classfolder({self.path!r})"
         | 
| 148 | 
            -
             | 
| 149 | 
            -
             | 
| 150 | 
            -
             | 
| 151 | 
            -
             | 
| @@ -0,0 +1,31 @@ | |
| 1 | 
            +
            from textmate_grammar.parsers.base import LanguageParser
         | 
| 2 | 
            +
            from pathlib import Path
         | 
| 3 | 
            +
             | 
| 4 | 
            +
             | 
| 5 | 
            +
            import logging
         | 
| 6 | 
            +
            import yaml
         | 
| 7 | 
            +
             | 
| 8 | 
            +
             | 
| 9 | 
            +
            logging.getLogger("textmate_grammar").setLevel(logging.ERROR)
         | 
| 10 | 
            +
             | 
| 11 | 
            +
             | 
| 12 | 
            +
            class MatlabParser(LanguageParser):
         | 
| 13 | 
            +
                """
         | 
| 14 | 
            +
                Represents a grammar for the MATLAB language.
         | 
| 15 | 
            +
                """
         | 
| 16 | 
            +
             | 
| 17 | 
            +
                def __init__(self, **kwargs):
         | 
| 18 | 
            +
                    """
         | 
| 19 | 
            +
                    Initializes a new instance of the MatlabGrammar class.
         | 
| 20 | 
            +
             | 
| 21 | 
            +
                    Args:
         | 
| 22 | 
            +
                        remove_line_continuations (bool, optional): Whether to remove line continuations. Defaults to False.
         | 
| 23 | 
            +
                    """
         | 
| 24 | 
            +
             | 
| 25 | 
            +
                    with open(Path(__file__).parent / "resources" / "grammar.yml") as file:
         | 
| 26 | 
            +
                        try:
         | 
| 27 | 
            +
                            grammar = yaml.load(file.read(), Loader=yaml.CLoader)
         | 
| 28 | 
            +
                        except ImportError:
         | 
| 29 | 
            +
                            grammar = yaml.load(file.read(), Loader=yaml.Loader)
         | 
| 30 | 
            +
             | 
| 31 | 
            +
                    super().__init__(grammar, **kwargs)
         | 
| @@ -0,0 +1,566 @@ | |
| 1 | 
            +
            fileTypes:
         | 
| 2 | 
            +
            - m
         | 
| 3 | 
            +
            keyEquivalent: ^~M
         | 
| 4 | 
            +
            name: MATLAB minimal
         | 
| 5 | 
            +
            patterns:
         | 
| 6 | 
            +
            - comment: 'Rules are split into groups so #command_dual can be excluded in things
         | 
| 7 | 
            +
                like (), {}, []'
         | 
| 8 | 
            +
              include: '#rules_before_command_dual'
         | 
| 9 | 
            +
            - include: '#command_dual'
         | 
| 10 | 
            +
            - include: '#rules_after_command_dual'
         | 
| 11 | 
            +
            repository:
         | 
| 12 | 
            +
              blocks:
         | 
| 13 | 
            +
                patterns:
         | 
| 14 | 
            +
                - begin: \s*(?<=^|[\s,;])(for)\b
         | 
| 15 | 
            +
                  beginCaptures:
         | 
| 16 | 
            +
                    '1':
         | 
| 17 | 
            +
                      name: keyword.control.for.matlab
         | 
| 18 | 
            +
                  end: \s*(?<=^|[\s,;])(end)\b
         | 
| 19 | 
            +
                  endCaptures:
         | 
| 20 | 
            +
                    '1':
         | 
| 21 | 
            +
                      name: keyword.control.end.for.matlab
         | 
| 22 | 
            +
                  name: meta.for.matlab
         | 
| 23 | 
            +
                  patterns:
         | 
| 24 | 
            +
                  - begin: \G(?!$)
         | 
| 25 | 
            +
                    end: (?<!\.{3})(?:(?=([,;])(?![^(]*\)))|$)
         | 
| 26 | 
            +
                    name: meta.for.declaration.matlab
         | 
| 27 | 
            +
                    patterns:
         | 
| 28 | 
            +
                    - include: $self
         | 
| 29 | 
            +
                  - include: $self
         | 
| 30 | 
            +
                - begin: \s*(?<=^|[\s,;])(if)\b
         | 
| 31 | 
            +
                  beginCaptures:
         | 
| 32 | 
            +
                    '1':
         | 
| 33 | 
            +
                      name: keyword.control.if.matlab
         | 
| 34 | 
            +
                  end: \s*(?<=^|[\s,;])(end)\b
         | 
| 35 | 
            +
                  endCaptures:
         | 
| 36 | 
            +
                    '1':
         | 
| 37 | 
            +
                      name: keyword.control.end.if.matlab
         | 
| 38 | 
            +
                    '2':
         | 
| 39 | 
            +
                      patterns:
         | 
| 40 | 
            +
                      - include: $self
         | 
| 41 | 
            +
                  name: meta.if.matlab
         | 
| 42 | 
            +
                  patterns:
         | 
| 43 | 
            +
                  - begin: \G(?!$)
         | 
| 44 | 
            +
                    end: (?<!\.{3})(?:(?=([,;])(?![^(]*\)))|$)
         | 
| 45 | 
            +
                    name: meta.if.declaration.matlab
         | 
| 46 | 
            +
                    patterns:
         | 
| 47 | 
            +
                    - include: $self
         | 
| 48 | 
            +
                  - captures:
         | 
| 49 | 
            +
                      '1':
         | 
| 50 | 
            +
                        name: keyword.control.elseif.matlab
         | 
| 51 | 
            +
                    match: (?:\s*)(?<=^|[\s,;])(elseif)\b
         | 
| 52 | 
            +
                    name: meta.elseif.matlab
         | 
| 53 | 
            +
                    patterns:
         | 
| 54 | 
            +
                    - begin: \G(?!$)
         | 
| 55 | 
            +
                      end: (?<!\.{3})(?:(?=([,;])(?![^(]*\)))|$)
         | 
| 56 | 
            +
                      name: meta.elseif.declaration.matlab
         | 
| 57 | 
            +
                      patterns:
         | 
| 58 | 
            +
                      - include: $self
         | 
| 59 | 
            +
                  - captures:
         | 
| 60 | 
            +
                      '1':
         | 
| 61 | 
            +
                        name: keyword.control.else.matlab
         | 
| 62 | 
            +
                    end: ^
         | 
| 63 | 
            +
                    match: (?:\s*)(?<=^|[\s,;])(else)\b
         | 
| 64 | 
            +
                    name: meta.else.matlab
         | 
| 65 | 
            +
                  - include: $self
         | 
| 66 | 
            +
                - begin: \s*(?<=^|[\s,;])(parfor)\b
         | 
| 67 | 
            +
                  beginCaptures:
         | 
| 68 | 
            +
                    '1':
         | 
| 69 | 
            +
                      name: keyword.control.for.matlab
         | 
| 70 | 
            +
                  end: \s*(?<=^|[\s,;])(end)\b
         | 
| 71 | 
            +
                  endCaptures:
         | 
| 72 | 
            +
                    '1':
         | 
| 73 | 
            +
                      name: keyword.control.end.for.matlab
         | 
| 74 | 
            +
                  name: meta.for.parallel.matlab
         | 
| 75 | 
            +
                  patterns:
         | 
| 76 | 
            +
                  - begin: \G(?!$)
         | 
| 77 | 
            +
                    end: (?<!\.{3})(?:(?=([,;])(?![^(]*\)))|$)
         | 
| 78 | 
            +
                    name: meta.for.parallel.declaration.matlab
         | 
| 79 | 
            +
                    patterns:
         | 
| 80 | 
            +
                    - include: $self
         | 
| 81 | 
            +
                  - include: $self
         | 
| 82 | 
            +
                - begin: \s*(?<=^|[\s,;])(spmd)\b
         | 
| 83 | 
            +
                  beginCaptures:
         | 
| 84 | 
            +
                    '1':
         | 
| 85 | 
            +
                      name: keyword.control.repeat.parallel.matlab
         | 
| 86 | 
            +
                  end: \s*(?<=^|[\s,;])(end)\b
         | 
| 87 | 
            +
                  endCaptures:
         | 
| 88 | 
            +
                    '1':
         | 
| 89 | 
            +
                      name: keyword.control.end.repeat.parallel.matlab
         | 
| 90 | 
            +
                  name: meta.repeat.parallel.matlab
         | 
| 91 | 
            +
                  patterns:
         | 
| 92 | 
            +
                  - begin: \G(?!$)
         | 
| 93 | 
            +
                    end: (?<!\.{3})(?:(?=([,;])(?![^(]*\)))|$)
         | 
| 94 | 
            +
                    name: meta.repeat.parallel.declaration.matlab
         | 
| 95 | 
            +
                    patterns:
         | 
| 96 | 
            +
                    - include: $self
         | 
| 97 | 
            +
                  - include: $self
         | 
| 98 | 
            +
                - begin: \s*(?<=^|[\s,;])(switch)\s+([a-zA-Z0-9][a-zA-Z0-9_]*)
         | 
| 99 | 
            +
                  beginCaptures:
         | 
| 100 | 
            +
                    '1':
         | 
| 101 | 
            +
                      name: keyword.control.switch.matlab
         | 
| 102 | 
            +
                    '2':
         | 
| 103 | 
            +
                      name: variable.other.constant.matlab
         | 
| 104 | 
            +
                  end: \s*(?<=^|[\s,;])(end)\b
         | 
| 105 | 
            +
                  endCaptures:
         | 
| 106 | 
            +
                    '1':
         | 
| 107 | 
            +
                      name: keyword.control.end.switch.matlab
         | 
| 108 | 
            +
                  name: meta.switch.matlab
         | 
| 109 | 
            +
                  patterns:
         | 
| 110 | 
            +
                  - captures:
         | 
| 111 | 
            +
                      '2':
         | 
| 112 | 
            +
                        name: keyword.control.switch.case.matlab
         | 
| 113 | 
            +
                      '3':
         | 
| 114 | 
            +
                        begin: \G(?!$)
         | 
| 115 | 
            +
                        end: (?<!\.{3})(?:(?=([,;])(?![^(]*\)))|$)
         | 
| 116 | 
            +
                        name: meta.case.declaration.matlab
         | 
| 117 | 
            +
                        patterns:
         | 
| 118 | 
            +
                        - include: $self
         | 
| 119 | 
            +
                    match: (\s*)(?<=^|[\s,;])(case)\b(.*?)(?<!\.{3})(?:(?=([,;])(?![^(]*\)))|$)
         | 
| 120 | 
            +
                    name: meta.case.matlab
         | 
| 121 | 
            +
                  - captures:
         | 
| 122 | 
            +
                      '2':
         | 
| 123 | 
            +
                        name: keyword.control.switch.otherwise.matlab
         | 
| 124 | 
            +
                      '3':
         | 
| 125 | 
            +
                        patterns:
         | 
| 126 | 
            +
                        - include: $self
         | 
| 127 | 
            +
                    match: (\s*)(?<=^|[\s,;])(otherwise)\b
         | 
| 128 | 
            +
                    name: meta.otherwise.matlab
         | 
| 129 | 
            +
                  - include: $self
         | 
| 130 | 
            +
                - begin: \s*(?<=^|[\s,;])(try)\b
         | 
| 131 | 
            +
                  beginCaptures:
         | 
| 132 | 
            +
                    '1':
         | 
| 133 | 
            +
                      name: keyword.control.try.matlab
         | 
| 134 | 
            +
                  end: \s*(?<=^|[\s,;])(end)\b
         | 
| 135 | 
            +
                  endCaptures:
         | 
| 136 | 
            +
                    '1':
         | 
| 137 | 
            +
                      name: keyword.control.end.try.matlab
         | 
| 138 | 
            +
                  name: meta.try.matlab
         | 
| 139 | 
            +
                  patterns:
         | 
| 140 | 
            +
                  - captures:
         | 
| 141 | 
            +
                      '2':
         | 
| 142 | 
            +
                        name: keyword.control.catch.matlab
         | 
| 143 | 
            +
                      '3':
         | 
| 144 | 
            +
                        name: variable.other.constant.matlab
         | 
| 145 | 
            +
                    match: (\s*)(?<=^|[\s,;])(catch)\b\s*(\w+)?
         | 
| 146 | 
            +
                    name: meta.catch.matlab
         | 
| 147 | 
            +
                  - include: $self
         | 
| 148 | 
            +
                - begin: \s*(?<=^|[\s,;])(while)\b
         | 
| 149 | 
            +
                  beginCaptures:
         | 
| 150 | 
            +
                    '1':
         | 
| 151 | 
            +
                      name: keyword.control.while.matlab
         | 
| 152 | 
            +
                  end: \s*(?<=^|[\s,;])(end)\b
         | 
| 153 | 
            +
                  endCaptures:
         | 
| 154 | 
            +
                    '1':
         | 
| 155 | 
            +
                      name: keyword.control.end.while.matlab
         | 
| 156 | 
            +
                  name: meta.while.matlab
         | 
| 157 | 
            +
                  patterns:
         | 
| 158 | 
            +
                  - begin: \G
         | 
| 159 | 
            +
                    end: (?<!\.{3})(?:(?=([,;])(?![^(]*\)))|$)
         | 
| 160 | 
            +
                    endCaptures:
         | 
| 161 | 
            +
                      '1':
         | 
| 162 | 
            +
                        include: $self
         | 
| 163 | 
            +
                    name: meta.while.declaration.matlab
         | 
| 164 | 
            +
                  - include: $self
         | 
| 165 | 
            +
              classdef:
         | 
| 166 | 
            +
                comment: Class definition
         | 
| 167 | 
            +
                patterns:
         | 
| 168 | 
            +
                - begin: "(?x)\n\t\t\t\t\t\t\t^\\s*    \t\t\t\t\t\t\t# Leading whitespace\n\t\t\
         | 
| 169 | 
            +
                    \t\t\t\t\t(classdef)\n\t\t\t\t\t\t\t\\s*\n\t\t\t\t\t"
         | 
| 170 | 
            +
                  beginCaptures:
         | 
| 171 | 
            +
                    '1':
         | 
| 172 | 
            +
                      name: storage.type.class.matlab
         | 
| 173 | 
            +
                  end: \s*(?<=^|[\s,;])(end)\b
         | 
| 174 | 
            +
                  endCaptures:
         | 
| 175 | 
            +
                    '1':
         | 
| 176 | 
            +
                      name: storage.type.class.end.matlab
         | 
| 177 | 
            +
                  name: meta.class.matlab
         | 
| 178 | 
            +
                  patterns:
         | 
| 179 | 
            +
                  - begin: \G
         | 
| 180 | 
            +
                    end: (?<!\.{3})(?=\n)
         | 
| 181 | 
            +
                    name: meta.class.declaration.matlab
         | 
| 182 | 
            +
                    patterns:
         | 
| 183 | 
            +
                    - begin: \G(\([^)]*\))?\s*
         | 
| 184 | 
            +
                      beginCaptures:
         | 
| 185 | 
            +
                        '1':
         | 
| 186 | 
            +
                          comment: Optional attributes
         | 
| 187 | 
            +
                          patterns:
         | 
| 188 | 
            +
                          - match: (?<=\s)\(
         | 
| 189 | 
            +
                            name: punctuation.section.parens.begin.matlab
         | 
| 190 | 
            +
                          - match: \)\z
         | 
| 191 | 
            +
                            name: punctuation.section.parens.end.matlab
         | 
| 192 | 
            +
                          - match: ','
         | 
| 193 | 
            +
                            name: punctuation.separator.modifier.comma.matlab
         | 
| 194 | 
            +
                          - match: '[a-zA-Z][a-zA-Z0-9_]*'
         | 
| 195 | 
            +
                            name: storage.modifier.class.matlab
         | 
| 196 | 
            +
                          - begin: (=)\s*
         | 
| 197 | 
            +
                            beginCaptures:
         | 
| 198 | 
            +
                              '1':
         | 
| 199 | 
            +
                                name: keyword.operator.assignment.matlab
         | 
| 200 | 
            +
                            end: (?=\)|,)
         | 
| 201 | 
            +
                            patterns:
         | 
| 202 | 
            +
                            - match: true|false
         | 
| 203 | 
            +
                              name: constant.language.boolean.matlab
         | 
| 204 | 
            +
                            - include: '#string'
         | 
| 205 | 
            +
                          - include: '#comments'
         | 
| 206 | 
            +
                          - include: '#line_continuation'
         | 
| 207 | 
            +
                      end: (?<!\.{3})(?=\s*%|\n)
         | 
| 208 | 
            +
                      patterns:
         | 
| 209 | 
            +
                      - begin: \G\s*([a-zA-Z][a-zA-Z0-9_]*)
         | 
| 210 | 
            +
                        beginCaptures:
         | 
| 211 | 
            +
                          '1':
         | 
| 212 | 
            +
                            comment: Class name
         | 
| 213 | 
            +
                            name: entity.name.type.class.matlab
         | 
| 214 | 
            +
                        end: (?<!\.{3})(?=\n)
         | 
| 215 | 
            +
                        patterns:
         | 
| 216 | 
            +
                        - comment: Optional inheritance operator
         | 
| 217 | 
            +
                          match: <
         | 
| 218 | 
            +
                          name: punctuation.separator.lt.inheritance.matlab
         | 
| 219 | 
            +
                        - begin: (?<!\.)\b(?=[a-zA-Z])
         | 
| 220 | 
            +
                          comment: Inherited class
         | 
| 221 | 
            +
                          end: (?<=[a-zA-Z0-9_])(?!\.)
         | 
| 222 | 
            +
                          name: meta.inherited-class.matlab
         | 
| 223 | 
            +
                          patterns:
         | 
| 224 | 
            +
                          - match: (?<=[\s.<])[a-zA-Z][a-zA-Z0-9_]*(?=\s|$)
         | 
| 225 | 
            +
                            name: entity.other.inherited-class.matlab
         | 
| 226 | 
            +
                          - match: '[a-zA-Z][a-zA-Z0-9_]*'
         | 
| 227 | 
            +
                            name: entity.name.namespace.matlab
         | 
| 228 | 
            +
                          - match: \.
         | 
| 229 | 
            +
                            name: punctuation.accessor.dot.matlab
         | 
| 230 | 
            +
                        - comment: Multiple superclass operator
         | 
| 231 | 
            +
                          match: '&'
         | 
| 232 | 
            +
                          name: keyword.operator.type.matlab
         | 
| 233 | 
            +
                        - include: '#comments'
         | 
| 234 | 
            +
                        - include: '#line_continuation'
         | 
| 235 | 
            +
                      - include: '#comments'
         | 
| 236 | 
            +
                      - include: '#line_continuation'
         | 
| 237 | 
            +
                  - begin: "(?x)\n\t\t\t\t\t\t\t\t\t(^\\s*)\t\t\t\t\t\t\t\t# Leading whitespace\n\
         | 
| 238 | 
            +
                      \t\t\t\t\t\t\t\t\t(properties)\\b([^%]*)\n\t\t\t\t\t\t\t\t\t\\s*\n\t\t\t\
         | 
| 239 | 
            +
                      \t\t\t\t\t\t(\t\t\t\t\t\t\t\t\t# Optional attributes\n\t\t\t\t\t\t\t\t\t\
         | 
| 240 | 
            +
                      \t\\( [^)]* \\)\n\t\t\t\t\t\t\t\t\t)?\n\t\t\t\t\t\t\t\t\t\\s*($|(?=%))\n\
         | 
| 241 | 
            +
                      \t\t\t\t\t\t\t"
         | 
| 242 | 
            +
                    beginCaptures:
         | 
| 243 | 
            +
                      '2':
         | 
| 244 | 
            +
                        name: keyword.control.properties.matlab
         | 
| 245 | 
            +
                      '3':
         | 
| 246 | 
            +
                        patterns:
         | 
| 247 | 
            +
                        - match: '[a-zA-Z][a-zA-Z0-9_]*'
         | 
| 248 | 
            +
                          name: storage.modifier.properties.matlab
         | 
| 249 | 
            +
                        - begin: (=)\s*
         | 
| 250 | 
            +
                          beginCaptures:
         | 
| 251 | 
            +
                            '1':
         | 
| 252 | 
            +
                              name: keyword.operator.assignment.matlab
         | 
| 253 | 
            +
                          end: ',|(?=\))'
         | 
| 254 | 
            +
                          patterns:
         | 
| 255 | 
            +
                          - match: true|false
         | 
| 256 | 
            +
                            name: constant.language.boolean.matlab
         | 
| 257 | 
            +
                          - match: public|protected|private
         | 
| 258 | 
            +
                            name: storage.modifier.access.matlab
         | 
| 259 | 
            +
                    end: \s*(?<=^|[\s,;])(end)\b
         | 
| 260 | 
            +
                    endCaptures:
         | 
| 261 | 
            +
                      '1':
         | 
| 262 | 
            +
                        name: keyword.control.end.properties.matlab
         | 
| 263 | 
            +
                    name: meta.properties.matlab
         | 
| 264 | 
            +
                    patterns:
         | 
| 265 | 
            +
                    - include: $self
         | 
| 266 | 
            +
                  - begin: "(?x)\n\t\t\t\t\t\t\t\t\t(^\\s*)\t\t\t\t\t\t\t\t# Leading whitespace\n\
         | 
| 267 | 
            +
                      \t\t\t\t\t\t\t\t\t(methods)\\b([^%]*)\n\t\t\t\t\t\t\t\t\t\\s*\n\t\t\t\t\t\
         | 
| 268 | 
            +
                      \t\t\t\t(\t\t\t\t\t\t\t\t\t# Optional attributes\n\t\t\t\t\t\t\t\t\t\t\\\
         | 
| 269 | 
            +
                      ( [^)]* \\)\n\t\t\t\t\t\t\t\t\t)?\n\t\t\t\t\t\t\t\t\t\\s*($|(?=%))\n\t\t\
         | 
| 270 | 
            +
                      \t\t\t\t\t"
         | 
| 271 | 
            +
                    beginCaptures:
         | 
| 272 | 
            +
                      '2':
         | 
| 273 | 
            +
                        name: keyword.control.methods.matlab
         | 
| 274 | 
            +
                      '3':
         | 
| 275 | 
            +
                        patterns:
         | 
| 276 | 
            +
                        - match: '[a-zA-Z][a-zA-Z0-9_]*'
         | 
| 277 | 
            +
                          name: storage.modifier.methods.matlab
         | 
| 278 | 
            +
                        - begin: =\s*
         | 
| 279 | 
            +
                          end: ',|(?=\))'
         | 
| 280 | 
            +
                          patterns:
         | 
| 281 | 
            +
                          - match: true|false
         | 
| 282 | 
            +
                            name: constant.language.boolean.matlab
         | 
| 283 | 
            +
                          - match: public|protected|private
         | 
| 284 | 
            +
                            name: storage.modifier.access.matlab
         | 
| 285 | 
            +
                    end: \s*(?<=^|[\s,;])(end)\b
         | 
| 286 | 
            +
                    endCaptures:
         | 
| 287 | 
            +
                      '1':
         | 
| 288 | 
            +
                        name: keyword.control.end.methods.matlab
         | 
| 289 | 
            +
                    name: meta.methods.matlab
         | 
| 290 | 
            +
                    patterns:
         | 
| 291 | 
            +
                    - include: $self
         | 
| 292 | 
            +
                  - begin: "(?x)\n\t\t\t\t\t\t\t\t\t(^\\s*)\t\t\t\t\t\t\t\t# Leading whitespace\n\
         | 
| 293 | 
            +
                      \t\t\t\t\t\t\t\t\t(events)\\b([^%]*)\n\t\t\t\t\t\t\t\t\t\\s*\n\t\t\t\t\t\
         | 
| 294 | 
            +
                      \t\t\t\t(\t\t\t\t\t\t\t\t\t# Optional attributes\n\t\t\t\t\t\t\t\t\t\t\\\
         | 
| 295 | 
            +
                      ( [^)]* \\)\n\t\t\t\t\t\t\t\t\t)?\n\t\t\t\t\t\t\t\t\t\\s*($|(?=%))\n\t\t\
         | 
| 296 | 
            +
                      \t\t\t\t\t"
         | 
| 297 | 
            +
                    beginCaptures:
         | 
| 298 | 
            +
                      '2':
         | 
| 299 | 
            +
                        name: keyword.control.events.matlab
         | 
| 300 | 
            +
                      '3':
         | 
| 301 | 
            +
                        patterns:
         | 
| 302 | 
            +
                        - match: '[a-zA-Z][a-zA-Z0-9_]*'
         | 
| 303 | 
            +
                          name: variable.parameter.events.matlab
         | 
| 304 | 
            +
                        - begin: =\s*
         | 
| 305 | 
            +
                          end: ',|(?=\))'
         | 
| 306 | 
            +
                          patterns:
         | 
| 307 | 
            +
                          - match: true|false
         | 
| 308 | 
            +
                            name: constant.language.boolean.matlab
         | 
| 309 | 
            +
                          - match: public|protected|private
         | 
| 310 | 
            +
                            name: storage.modifier.access.matlab
         | 
| 311 | 
            +
                    end: \s*(?<=^|[\s,;])(end)\b
         | 
| 312 | 
            +
                    endCaptures:
         | 
| 313 | 
            +
                      '1':
         | 
| 314 | 
            +
                        name: keyword.control.end.events.matlab
         | 
| 315 | 
            +
                    name: meta.events.matlab
         | 
| 316 | 
            +
                    patterns:
         | 
| 317 | 
            +
                    - captures:
         | 
| 318 | 
            +
                        '1':
         | 
| 319 | 
            +
                          name: entity.name.type.event.matlab
         | 
| 320 | 
            +
                      match: (?:^\s*|,\s*)([a-zA-Z0-9_]+)
         | 
| 321 | 
            +
                      name: meta.assignment.definition.event.matlab
         | 
| 322 | 
            +
                    - include: $self
         | 
| 323 | 
            +
                  - begin: "(?x)\n\t\t\t\t\t\t\t\t\t(^\\s*)\t\t\t\t\t\t\t\t# Leading whitespace\n\
         | 
| 324 | 
            +
                      \t\t\t\t\t\t\t\t\t(enumeration)\\b([^%]*)\n\t\t\t\t\t\t\t\t\t\\s*($|(?=%))\n\
         | 
| 325 | 
            +
                      \t\t\t\t\t\t\t"
         | 
| 326 | 
            +
                    beginCaptures:
         | 
| 327 | 
            +
                      '2':
         | 
| 328 | 
            +
                        name: keyword.control.enum.matlab
         | 
| 329 | 
            +
                    end: \s*(?<=^|[\s,;])(end)\b
         | 
| 330 | 
            +
                    endCaptures:
         | 
| 331 | 
            +
                      '1':
         | 
| 332 | 
            +
                        name: keyword.control.end.enum.matlab
         | 
| 333 | 
            +
                    name: meta.enum.matlab
         | 
| 334 | 
            +
                    patterns:
         | 
| 335 | 
            +
                    - captures:
         | 
| 336 | 
            +
                        '1':
         | 
| 337 | 
            +
                          name: variable.other.enummember.matlab
         | 
| 338 | 
            +
                      match: (?:^\s*|,\s*)([a-zA-Z0-9_]+)
         | 
| 339 | 
            +
                      name: meta.assignment.definition.enummember.matlab
         | 
| 340 | 
            +
                    - match: ','
         | 
| 341 | 
            +
                      name: punctuation.separator.comma.matlab
         | 
| 342 | 
            +
                    - include: '#comments'
         | 
| 343 | 
            +
                  - include: '#comments'
         | 
| 344 | 
            +
              command_dual:
         | 
| 345 | 
            +
                captures:
         | 
| 346 | 
            +
                  '2':
         | 
| 347 | 
            +
                    name: entity.name.function.command.matlab
         | 
| 348 | 
            +
                    patterns:
         | 
| 349 | 
            +
                    - comment: Embed MATLAB into command syntax to allow keyword grammar injection.
         | 
| 350 | 
            +
                      include: $self
         | 
| 351 | 
            +
                  '4':
         | 
| 352 | 
            +
                    name: string.unquoted.matlab
         | 
| 353 | 
            +
                    patterns:
         | 
| 354 | 
            +
                    - include: '#string_quoted_single'
         | 
| 355 | 
            +
                comment: "\t\t\t\t\t  1 \t\t\t\t   2\t\t3 \t\t\t\t   4\t\t\t\t\t\t\t\t\t\t\t\t\
         | 
| 356 | 
            +
                  \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   "
         | 
| 357 | 
            +
                match: (?<=^|[^.]\n|;|,|=)([^\S\n]*)(?# A> )(\b\w+\b)([^\S\n]+)(?# B> )((?!(\+|-|\*|\.\*|\/|\.\/|\\|\.\\|\^|\.\^|==|~=|&|&&|\||\|\||=|:|>|>=|<|<=|\.{3})[^\S\n]?)[^\s({=;%][^\n;%]*)
         | 
| 358 | 
            +
                name: meta.function-call.command.matlab
         | 
| 359 | 
            +
              comment_block:
         | 
| 360 | 
            +
                begin: (^[\s]*)(%\{)[^\S\n]*+\n
         | 
| 361 | 
            +
                beginCaptures:
         | 
| 362 | 
            +
                  '1':
         | 
| 363 | 
            +
                    name: punctuation.whitespace.comment.leading.matlab
         | 
| 364 | 
            +
                  '2':
         | 
| 365 | 
            +
                    name: punctuation.definition.comment.begin.matlab
         | 
| 366 | 
            +
                end: (^[\s]*)(%\})[^\S\n]*+(?:\n|$)
         | 
| 367 | 
            +
                endCaptures:
         | 
| 368 | 
            +
                  '1':
         | 
| 369 | 
            +
                    name: punctuation.whitespace.comment.leading.matlab
         | 
| 370 | 
            +
                  '2':
         | 
| 371 | 
            +
                    name: punctuation.definition.comment.end.matlab
         | 
| 372 | 
            +
                name: comment.block.percentage.matlab
         | 
| 373 | 
            +
                patterns:
         | 
| 374 | 
            +
                - include: '#comment_block'
         | 
| 375 | 
            +
                - match: ^[^\n]*\n
         | 
| 376 | 
            +
              comments:
         | 
| 377 | 
            +
                patterns:
         | 
| 378 | 
            +
                - begin: (^[ \t]+)?(?=%%\s)
         | 
| 379 | 
            +
                  beginCaptures:
         | 
| 380 | 
            +
                    '1':
         | 
| 381 | 
            +
                      name: punctuation.whitespace.comment.leading.matlab
         | 
| 382 | 
            +
                  comment: Section comment
         | 
| 383 | 
            +
                  end: \Z
         | 
| 384 | 
            +
                  patterns:
         | 
| 385 | 
            +
                  - begin: '%%'
         | 
| 386 | 
            +
                    beginCaptures:
         | 
| 387 | 
            +
                      '0':
         | 
| 388 | 
            +
                        name: punctuation.definition.comment.matlab
         | 
| 389 | 
            +
                    end: \n
         | 
| 390 | 
            +
                    name: comment.line.double-percentage.matlab
         | 
| 391 | 
            +
                    patterns:
         | 
| 392 | 
            +
                    - begin: \G[^\S\n]*(?![\n\s])
         | 
| 393 | 
            +
                      beginCaptures:
         | 
| 394 | 
            +
                        '0':
         | 
| 395 | 
            +
                          name: punctuation.whitespace.comment.leading.matlab
         | 
| 396 | 
            +
                      contentName: entity.name.section.matlab
         | 
| 397 | 
            +
                      end: (?=\n)
         | 
| 398 | 
            +
                - include: '#comment_block'
         | 
| 399 | 
            +
                - begin: (^[ \t]+)?(?=%)
         | 
| 400 | 
            +
                  beginCaptures:
         | 
| 401 | 
            +
                    '1':
         | 
| 402 | 
            +
                      name: punctuation.whitespace.comment.leading.matlab
         | 
| 403 | 
            +
                  comment: Inline comment
         | 
| 404 | 
            +
                  end: \Z
         | 
| 405 | 
            +
                  patterns:
         | 
| 406 | 
            +
                  - begin: '%'
         | 
| 407 | 
            +
                    beginCaptures:
         | 
| 408 | 
            +
                      '0':
         | 
| 409 | 
            +
                        name: punctuation.definition.comment.matlab
         | 
| 410 | 
            +
                    end: \Z
         | 
| 411 | 
            +
                    name: comment.line.percentage.matlab
         | 
| 412 | 
            +
              function:
         | 
| 413 | 
            +
                patterns:
         | 
| 414 | 
            +
                - begin: "(?x)\n\t\t\t\t\t\t\t(^\\s*)\t\t\t\t\t\t\t\t\t\t\t# Leading whitespace\n\
         | 
| 415 | 
            +
                    \t\t\t\t\t\t\t(function)\n\t\t\t\t\t\t\t\\s+\n\t\t\t\t\t"
         | 
| 416 | 
            +
                  beginCaptures:
         | 
| 417 | 
            +
                    '2':
         | 
| 418 | 
            +
                      name: storage.type.function.matlab
         | 
| 419 | 
            +
                  comment: Function definition
         | 
| 420 | 
            +
                  end: \s*(?<=^|[\s,;])(end)\b(\s*\n)?
         | 
| 421 | 
            +
                  endCaptures:
         | 
| 422 | 
            +
                    '1':
         | 
| 423 | 
            +
                      name: storage.type.function.end.matlab
         | 
| 424 | 
            +
                  name: meta.function.matlab
         | 
| 425 | 
            +
                  patterns:
         | 
| 426 | 
            +
                  - begin: \G
         | 
| 427 | 
            +
                    end: (?<=\))|(?>(?<!\.{3}.*)\n)
         | 
| 428 | 
            +
                    name: meta.function.declaration.matlab
         | 
| 429 | 
            +
                    patterns:
         | 
| 430 | 
            +
                    - begin: \G(?=[^\(]*?(?:=|\[|\.{3}))
         | 
| 431 | 
            +
                      comment: Function output
         | 
| 432 | 
            +
                      contentName: meta.assignment.variable.output.matlab
         | 
| 433 | 
            +
                      end: \s*(=)\s*
         | 
| 434 | 
            +
                      endCaptures:
         | 
| 435 | 
            +
                        '1':
         | 
| 436 | 
            +
                          name: keyword.operator.assignment.matlab
         | 
| 437 | 
            +
                      patterns:
         | 
| 438 | 
            +
                      - match: \G\[
         | 
| 439 | 
            +
                        name: punctuation.section.assignment.group.begin.matlab
         | 
| 440 | 
            +
                      - captures:
         | 
| 441 | 
            +
                          '1':
         | 
| 442 | 
            +
                            name: punctuation.section.assignment.group.end.matlab
         | 
| 443 | 
            +
                        match: (\])\s*
         | 
| 444 | 
            +
                      - match: '[a-zA-Z][a-zA-Z0-9_]*'
         | 
| 445 | 
            +
                        name: variable.parameter.output.matlab
         | 
| 446 | 
            +
                      - match: ','
         | 
| 447 | 
            +
                        name: punctuation.separator.parameter.comma.matlab
         | 
| 448 | 
            +
                      - include: '#line_continuation'
         | 
| 449 | 
            +
                      - include: '#comments'
         | 
| 450 | 
            +
                    - comment: Function name
         | 
| 451 | 
            +
                      match: '[a-zA-Z][a-zA-Z0-9_]*(?>\.[a-zA-Z0-9_]+)*'
         | 
| 452 | 
            +
                      name: entity.name.function.matlab
         | 
| 453 | 
            +
                      patterns:
         | 
| 454 | 
            +
                      - match: \.
         | 
| 455 | 
            +
                        name: punctuation.accessor.dot.matlab
         | 
| 456 | 
            +
                      - include: '#line_continuation'
         | 
| 457 | 
            +
                    - begin: \s*\(
         | 
| 458 | 
            +
                      beginCaptures:
         | 
| 459 | 
            +
                        '0':
         | 
| 460 | 
            +
                          name: punctuation.definition.parameters.begin.matlab
         | 
| 461 | 
            +
                      comment: Function arguments
         | 
| 462 | 
            +
                      end: \)
         | 
| 463 | 
            +
                      endCaptures:
         | 
| 464 | 
            +
                        '0':
         | 
| 465 | 
            +
                          name: punctuation.definition.parameters.end.matlab
         | 
| 466 | 
            +
                      name: meta.parameters.matlab
         | 
| 467 | 
            +
                      patterns:
         | 
| 468 | 
            +
                      - match: '[a-zA-Z][a-zA-Z0-9_]*'
         | 
| 469 | 
            +
                        name: variable.parameter.input.matlab
         | 
| 470 | 
            +
                      - match: '~'
         | 
| 471 | 
            +
                        name: variable.language.anonymous.matlab
         | 
| 472 | 
            +
                      - match: ','
         | 
| 473 | 
            +
                        name: punctuation.separator.parameter.comma.matlab
         | 
| 474 | 
            +
                      - include: '#comments'
         | 
| 475 | 
            +
                      - include: '#line_continuation'
         | 
| 476 | 
            +
                    - include: '#line_continuation'
         | 
| 477 | 
            +
                    - include: '#comments'
         | 
| 478 | 
            +
                  - begin: "(?x)\n\t\t\t\t\t\t\t\t\t(^\\s*)\t\t\t\t\t\t\t\t# Leading whitespace\n\
         | 
| 479 | 
            +
                      \t\t\t\t\t\t\t\t\t(arguments)\\b([^%]*)\n\t\t\t\t\t\t\t\t\t\\s*\n\t\t\t\t\
         | 
| 480 | 
            +
                      \t\t\t\t\t(\t\t\t\t\t\t\t\t\t# Optional attributes\n\t\t\t\t\t\t\t\t\t\t\
         | 
| 481 | 
            +
                      \\( [^)]* \\)\n\t\t\t\t\t\t\t\t\t)?\n\t\t\t\t\t\t\t\t\t\\s*($|(?=%))\n\t\
         | 
| 482 | 
            +
                      \t\t\t\t\t\t\t"
         | 
| 483 | 
            +
                    end: \s*(?<=^|[\s,;])(end)\b
         | 
| 484 | 
            +
                    endCaptures:
         | 
| 485 | 
            +
                      '1':
         | 
| 486 | 
            +
                        name: keyword.control.end.arguments.matlab
         | 
| 487 | 
            +
                    name: meta.arguments.matlab
         | 
| 488 | 
            +
                    patterns:
         | 
| 489 | 
            +
                    - comment: Class property name-value arguments
         | 
| 490 | 
            +
                      match: (?<=\w)\.\?(?=\w)
         | 
| 491 | 
            +
                      name: keyword.operator.other.matlab
         | 
| 492 | 
            +
                    - include: $self
         | 
| 493 | 
            +
                  - include: $self
         | 
| 494 | 
            +
              line_continuation:
         | 
| 495 | 
            +
                captures:
         | 
| 496 | 
            +
                  '1':
         | 
| 497 | 
            +
                    name: punctuation.separator.continuation.line.matlab
         | 
| 498 | 
            +
                  '2':
         | 
| 499 | 
            +
                    name: comment.continuation.line.matlab
         | 
| 500 | 
            +
                comment: Line continuations
         | 
| 501 | 
            +
                match: (\.{3})(.*)$
         | 
| 502 | 
            +
                name: meta.continuation.line.matlab
         | 
| 503 | 
            +
              rules_after_command_dual:
         | 
| 504 | 
            +
                patterns:
         | 
| 505 | 
            +
                - include: '#string'
         | 
| 506 | 
            +
                - include: '#line_continuation'
         | 
| 507 | 
            +
                - include: '#comments'
         | 
| 508 | 
            +
              rules_before_command_dual:
         | 
| 509 | 
            +
                patterns:
         | 
| 510 | 
            +
                - include: '#classdef'
         | 
| 511 | 
            +
                - include: '#function'
         | 
| 512 | 
            +
                - include: '#blocks'
         | 
| 513 | 
            +
              shell_string:
         | 
| 514 | 
            +
                captures:
         | 
| 515 | 
            +
                  '1':
         | 
| 516 | 
            +
                    name: meta.interpolation.shell.matlab
         | 
| 517 | 
            +
                  '2':
         | 
| 518 | 
            +
                    name: punctuation.section.interpolation.begin.matlab
         | 
| 519 | 
            +
                  '3':
         | 
| 520 | 
            +
                    name: source.shell.embedded.matlab
         | 
| 521 | 
            +
                    patterns:
         | 
| 522 | 
            +
                    - include: source.shell
         | 
| 523 | 
            +
                comment: Shell command
         | 
| 524 | 
            +
                match: ^\s*((!)(.*)$\n?)
         | 
| 525 | 
            +
              string:
         | 
| 526 | 
            +
                patterns:
         | 
| 527 | 
            +
                - include: '#shell_string'
         | 
| 528 | 
            +
                - include: '#string_quoted_single'
         | 
| 529 | 
            +
                - include: '#string_quoted_double'
         | 
| 530 | 
            +
              string_quoted_double:
         | 
| 531 | 
            +
                begin: ((?<=(\[|\(|\{|=|\s|;|:|,|~|<|>|&|\||-|\+|\*|\/|\\|\.|\^))|^)"
         | 
| 532 | 
            +
                beginCaptures:
         | 
| 533 | 
            +
                  '0':
         | 
| 534 | 
            +
                    name: punctuation.definition.string.begin.matlab
         | 
| 535 | 
            +
                comment: String literal (double-quoted)
         | 
| 536 | 
            +
                end: '"(?=(\[|\(|\{|\]|\)|\}|=|~|<|>|&|\||-|\+|\*|\/|\\|\.|\^|\||\s|;|:|,)|$)'
         | 
| 537 | 
            +
                endCaptures:
         | 
| 538 | 
            +
                  '0':
         | 
| 539 | 
            +
                    name: punctuation.definition.string.end.matlab
         | 
| 540 | 
            +
                name: string.quoted.double.matlab
         | 
| 541 | 
            +
                patterns:
         | 
| 542 | 
            +
                - match: '""'
         | 
| 543 | 
            +
                  name: constant.character.escape.matlab
         | 
| 544 | 
            +
                - match: '"(?=.)'
         | 
| 545 | 
            +
                  name: invalid.illegal.unescaped-quote.matlab
         | 
| 546 | 
            +
              string_quoted_single:
         | 
| 547 | 
            +
                begin: ((?<=(\[|\(|\{|=|\s|;|:|,|~|<|>|&|\||-|\+|\*|/|\\|\.|\^))|^)'
         | 
| 548 | 
            +
                beginCaptures:
         | 
| 549 | 
            +
                  '0':
         | 
| 550 | 
            +
                    name: punctuation.definition.string.begin.matlab
         | 
| 551 | 
            +
                comment: Character vector literal (single-quoted)
         | 
| 552 | 
            +
                end: '''(?=(\[|\(|\{|\]|\)|\}|=|~|<|>|&|\||-|\+|\*|/|\\|\.|\^|\s|;|:|,)|$)'
         | 
| 553 | 
            +
                endCaptures:
         | 
| 554 | 
            +
                  '0':
         | 
| 555 | 
            +
                    name: punctuation.definition.string.end.matlab
         | 
| 556 | 
            +
                name: string.quoted.single.matlab
         | 
| 557 | 
            +
                patterns:
         | 
| 558 | 
            +
                - match: ''''''
         | 
| 559 | 
            +
                  name: constant.character.escape.matlab
         | 
| 560 | 
            +
                - match: '''(?=.)'
         | 
| 561 | 
            +
                  name: invalid.illegal.unescaped-quote.matlab
         | 
| 562 | 
            +
                - comment: Operator symbols
         | 
| 563 | 
            +
                  match: ((\%([\+\-0]?\d{0,3}(\.\d{1,3})?)(c|d|e|E|f|g|i|G|s|((b|t)?(o|u|x|X))))|\%\%|\\(b|f|n|r|t|\\))
         | 
| 564 | 
            +
                  name: constant.character.escape.matlab
         | 
| 565 | 
            +
            scopeName: source.matlab.minimal
         | 
| 566 | 
            +
            uuid: e1aee587-e622-4ace-9c88-d4b94de0b168
         | 
| @@ -1,15 +1,17 @@ | |
| 1 1 | 
             
            Metadata-Version: 2.3
         | 
| 2 2 | 
             
            Name: mkdocstrings-matlab
         | 
| 3 | 
            -
            Version: 0.1. | 
| 3 | 
            +
            Version: 0.1.5
         | 
| 4 4 | 
             
            Summary: Add your description here
         | 
| 5 | 
            -
            Author-email: Mark Hu < | 
| 5 | 
            +
            Author-email: Mark Hu <watermarkhu@gmail.com>
         | 
| 6 6 | 
             
            License-File: LICENSE
         | 
| 7 | 
            +
            Requires-Dist: charset-normalizer>=3.3.2
         | 
| 7 8 | 
             
            Requires-Dist: griffe>=1.2.0
         | 
| 8 9 | 
             
            Requires-Dist: markdown>=3.7
         | 
| 9 10 | 
             
            Requires-Dist: mkdocs-material>=9.5.33
         | 
| 10 11 | 
             
            Requires-Dist: mkdocs>=1.6.0
         | 
| 11 12 | 
             
            Requires-Dist: mkdocstrings>=0.25.2
         | 
| 12 13 | 
             
            Requires-Dist: mkdocstrings[python]>=0.18
         | 
| 14 | 
            +
            Requires-Dist: textmate-grammar-python>=0.6.1
         | 
| 13 15 | 
             
            Description-Content-Type: text/markdown
         | 
| 14 16 |  | 
| 15 17 | 
             
            # mkdocstrings-matlab
         | 
| @@ -1,25 +1,28 @@ | |
| 1 1 | 
             
            mkdocstrings_handlers/matlab/__init__.py,sha256=laA2bEP5rxdIWBLmfLiKKu7ChZ_HzCe-VeRvxmUTqww,128
         | 
| 2 | 
            -
            mkdocstrings_handlers/matlab/ | 
| 3 | 
            -
            mkdocstrings_handlers/matlab/ | 
| 2 | 
            +
            mkdocstrings_handlers/matlab/collections.py,sha256=oiDK4nwIUXroIPxw6Cu13WcBxmCyAHjPn7naaW_Yhjs,445
         | 
| 3 | 
            +
            mkdocstrings_handlers/matlab/handler.py,sha256=WPfsvlGTZcAYgep6rpRjESPJdXU2QbVm31cf5v9ob0c,16959
         | 
| 4 | 
            +
            mkdocstrings_handlers/matlab/models.py,sha256=n1l1Gr5Wq7nsrsP4PSePGfnGcln0NI-zSrkijGJBf80,5644
         | 
| 5 | 
            +
            mkdocstrings_handlers/matlab/parser.py,sha256=bA3KRNnYjSewqyJI8OmLKATk3AZOq9-28UQg0L6f9os,843
         | 
| 4 6 | 
             
            mkdocstrings_handlers/matlab/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
         | 
| 5 7 | 
             
            mkdocstrings_handlers/matlab/matlab/matlab_startup.m,sha256=rGXiR8fI2GW7yWmHxgzE5Un66n5ws3ogYnMvS2oWO8U,464
         | 
| 6 8 | 
             
            mkdocstrings_handlers/matlab/matlab/+docstring/exception.m,sha256=sj2ycqMpknn_OG5A5X_b5e4WcAoR2oPoqNnDEHJsi7c,222
         | 
| 7 | 
            -
            mkdocstrings_handlers/matlab/matlab/+docstring/resolve.m,sha256= | 
| 9 | 
            +
            mkdocstrings_handlers/matlab/matlab/+docstring/resolve.m,sha256=GZ7-NC79CVBVHjNJNublosAsGNhLy8dX4uyT4cznl4U,2800
         | 
| 8 10 | 
             
            mkdocstrings_handlers/matlab/matlab/+docstring/+case/builtin.m,sha256=IioiokiaLnsi_6VXraaGdU2AgjCNApYhgVEmp2Lg1eA,245
         | 
| 9 11 | 
             
            mkdocstrings_handlers/matlab/matlab/+docstring/+case/class.m,sha256=kVQxUEk8iOfHK2_NnN0HjHVhFnPgUqsf9PzyKC93y0g,276
         | 
| 10 12 | 
             
            mkdocstrings_handlers/matlab/matlab/+docstring/+case/func.m,sha256=QneDYSICtXqdPNq8sYNieirXUisuDKRM9rxPx-0osDU,137
         | 
| 11 13 | 
             
            mkdocstrings_handlers/matlab/matlab/+docstring/+case/method.m,sha256=Bw8Mb96OP7-AnbGnvRMySOIbYSTtEC1BGBnqHMEIhsM,165
         | 
| 12 14 | 
             
            mkdocstrings_handlers/matlab/matlab/+docstring/+case/namespace.m,sha256=ZpYrgZHLIdGvgg3F6210gDTska9YyASn63ZVYkBq41A,667
         | 
| 13 | 
            -
            mkdocstrings_handlers/matlab/matlab/+docstring/+metadata/argument.m,sha256= | 
| 15 | 
            +
            mkdocstrings_handlers/matlab/matlab/+docstring/+metadata/argument.m,sha256=yE1sywrr6Q0YjEkPkdBTjjkLeUrPv0jV-degM_EE_iE,1905
         | 
| 14 16 | 
             
            mkdocstrings_handlers/matlab/matlab/+docstring/+metadata/class.m,sha256=n7qDJACSybOGjrQJPR8EzoMxkw2WOPMvPflvshkLz3Q,1673
         | 
| 15 17 | 
             
            mkdocstrings_handlers/matlab/matlab/+docstring/+metadata/func.m,sha256=k1gz4kjEQX5DCIfzCs1lee5jjAL4fg6A7LnwcUF8kRE,424
         | 
| 16 18 | 
             
            mkdocstrings_handlers/matlab/matlab/+docstring/+metadata/namespace.m,sha256=kMzfAoWIpMXH76rrkyUqauJSRIaylsfnu0Cds4pYnJc,481
         | 
| 17 19 | 
             
            mkdocstrings_handlers/matlab/matlab/+docstring/+metadata/property.m,sha256=rH3cHz66ZG9sUvDU2fhlyASSB_yp0SiHlbpB44fcFiY,1560
         | 
| 18 20 | 
             
            mkdocstrings_handlers/matlab/matlab/+docstring/+metadata/script.m,sha256=pmuazWBqlugNEEojfQFkAg1ioErizoiEZ9RcFXecCP4,329
         | 
| 19 | 
            -
            mkdocstrings_handlers/matlab/matlab/+docstring/+utils/dedent.m,sha256= | 
| 21 | 
            +
            mkdocstrings_handlers/matlab/matlab/+docstring/+utils/dedent.m,sha256=IsqIZKyaBUeDihtxJOgIcCcV0Ju8Lv4oG-w4f7Iiu2s,668
         | 
| 20 22 | 
             
            mkdocstrings_handlers/matlab/matlab/+docstring/+utils/get_namespace_path.m,sha256=4NlQ7-RjqIFZAn6P-9JzCrm2FvfGRKiM2M_leINj9i4,835
         | 
| 21 23 | 
             
            mkdocstrings_handlers/matlab/matlab/+docstring/+utils/parse_doc.m,sha256=iFNpbnOr9FAv-3Zn8ksJHIthXAB7XKYVfH2NGFinzHs,499
         | 
| 22 | 
            -
             | 
| 23 | 
            -
            mkdocstrings_matlab-0.1. | 
| 24 | 
            -
            mkdocstrings_matlab-0.1. | 
| 25 | 
            -
            mkdocstrings_matlab-0.1. | 
| 24 | 
            +
            mkdocstrings_handlers/matlab/resources/grammar.yml,sha256=GLI4xdATiB70bzRscXOVwMlw0YFlA-3GJzuzqWeBKJU,19511
         | 
| 25 | 
            +
            mkdocstrings_matlab-0.1.5.dist-info/METADATA,sha256=KBhx1cJar_HMRP4xPomOvIBl_7Y-pITgSuLU0_Ra_rE,549
         | 
| 26 | 
            +
            mkdocstrings_matlab-0.1.5.dist-info/WHEEL,sha256=fl6v0VwpzfGBVsGtkAkhILUlJxROXbA3HvRL6Fe3140,105
         | 
| 27 | 
            +
            mkdocstrings_matlab-0.1.5.dist-info/licenses/LICENSE,sha256=14xA0OIYNpfmdeuq8-Yyqg7-3IJ4qhu3BJhknent-cY,1069
         | 
| 28 | 
            +
            mkdocstrings_matlab-0.1.5.dist-info/RECORD,,
         | 
| 
            File without changes
         | 
    
        {mkdocstrings_matlab-0.1.3.dist-info → mkdocstrings_matlab-0.1.5.dist-info}/licenses/LICENSE
    RENAMED
    
    | 
            File without changes
         |