xml.js 3.8 KB

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