xml.js 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. /*!-----------------------------------------------------------------------------
  2. * Copyright (c) Microsoft Corporation. All rights reserved.
  3. * Version: 0.31.1(337587859b1c171314b40503171188b6cea6a32a)
  4. * Released under the MIT license
  5. * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt
  6. *-----------------------------------------------------------------------------*/
  7. var __defProp = Object.defineProperty;
  8. var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
  9. var __getOwnPropNames = Object.getOwnPropertyNames;
  10. var __hasOwnProp = Object.prototype.hasOwnProperty;
  11. var __markAsModule = (target) => __defProp(target, "__esModule", { value: true });
  12. var __reExport = (target, module, desc) => {
  13. if (module && typeof module === "object" || typeof module === "function") {
  14. for (let key of __getOwnPropNames(module))
  15. if (!__hasOwnProp.call(target, key) && key !== "default")
  16. __defProp(target, key, { get: () => module[key], enumerable: !(desc = __getOwnPropDesc(module, key)) || desc.enumerable });
  17. }
  18. return target;
  19. };
  20. // src/fillers/monaco-editor-core.ts
  21. var monaco_editor_core_exports = {};
  22. __markAsModule(monaco_editor_core_exports);
  23. __reExport(monaco_editor_core_exports, monaco_editor_core_star);
  24. import * as monaco_editor_core_star from "../../editor/editor.api.js";
  25. // src/basic-languages/xml/xml.ts
  26. var conf = {
  27. comments: {
  28. blockComment: ["<!--", "-->"]
  29. },
  30. brackets: [["<", ">"]],
  31. autoClosingPairs: [
  32. { open: "<", close: ">" },
  33. { open: "'", close: "'" },
  34. { open: '"', close: '"' }
  35. ],
  36. surroundingPairs: [
  37. { open: "<", close: ">" },
  38. { open: "'", close: "'" },
  39. { open: '"', close: '"' }
  40. ],
  41. onEnterRules: [
  42. {
  43. beforeText: new RegExp(`<([_:\\w][_:\\w-.\\d]*)([^/>]*(?!/)>)[^<]*$`, "i"),
  44. afterText: /^<\/([_:\w][_:\w-.\d]*)\s*>$/i,
  45. action: {
  46. indentAction: monaco_editor_core_exports.languages.IndentAction.IndentOutdent
  47. }
  48. },
  49. {
  50. beforeText: new RegExp(`<(\\w[\\w\\d]*)([^/>]*(?!/)>)[^<]*$`, "i"),
  51. action: { indentAction: monaco_editor_core_exports.languages.IndentAction.Indent }
  52. }
  53. ]
  54. };
  55. var language = {
  56. defaultToken: "",
  57. tokenPostfix: ".xml",
  58. ignoreCase: true,
  59. qualifiedName: /(?:[\w\.\-]+:)?[\w\.\-]+/,
  60. tokenizer: {
  61. root: [
  62. [/[^<&]+/, ""],
  63. { include: "@whitespace" },
  64. [/(<)(@qualifiedName)/, [{ token: "delimiter" }, { token: "tag", next: "@tag" }]],
  65. [
  66. /(<\/)(@qualifiedName)(\s*)(>)/,
  67. [{ token: "delimiter" }, { token: "tag" }, "", { token: "delimiter" }]
  68. ],
  69. [/(<\?)(@qualifiedName)/, [{ token: "delimiter" }, { token: "metatag", next: "@tag" }]],
  70. [/(<\!)(@qualifiedName)/, [{ token: "delimiter" }, { token: "metatag", next: "@tag" }]],
  71. [/<\!\[CDATA\[/, { token: "delimiter.cdata", next: "@cdata" }],
  72. [/&\w+;/, "string.escape"]
  73. ],
  74. cdata: [
  75. [/[^\]]+/, ""],
  76. [/\]\]>/, { token: "delimiter.cdata", next: "@pop" }],
  77. [/\]/, ""]
  78. ],
  79. tag: [
  80. [/[ \t\r\n]+/, ""],
  81. [/(@qualifiedName)(\s*=\s*)("[^"]*"|'[^']*')/, ["attribute.name", "", "attribute.value"]],
  82. [
  83. /(@qualifiedName)(\s*=\s*)("[^">?\/]*|'[^'>?\/]*)(?=[\?\/]\>)/,
  84. ["attribute.name", "", "attribute.value"]
  85. ],
  86. [/(@qualifiedName)(\s*=\s*)("[^">]*|'[^'>]*)/, ["attribute.name", "", "attribute.value"]],
  87. [/@qualifiedName/, "attribute.name"],
  88. [/\?>/, { token: "delimiter", next: "@pop" }],
  89. [/(\/)(>)/, [{ token: "tag" }, { token: "delimiter", next: "@pop" }]],
  90. [/>/, { token: "delimiter", next: "@pop" }]
  91. ],
  92. whitespace: [
  93. [/[ \t\r\n]+/, ""],
  94. [/<!--/, { token: "comment", next: "@comment" }]
  95. ],
  96. comment: [
  97. [/[^<\-]+/, "comment.content"],
  98. [/-->/, { token: "comment", next: "@pop" }],
  99. [/<!--/, "comment.content.invalid"],
  100. [/[<\-]/, "comment.content"]
  101. ]
  102. }
  103. };
  104. export {
  105. conf,
  106. language
  107. };