sample.js 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. function validate(model) {
  2. const markers = [];
  3. // lines start at 1
  4. for (let i = 1; i < model.getLineCount() + 1; i++) {
  5. const range = {
  6. startLineNumber: i,
  7. startColumn: 1,
  8. endLineNumber: i,
  9. endColumn: model.getLineLength(i) + 1
  10. };
  11. const content = model.getValueInRange(range).trim();
  12. const number = Number(content);
  13. if (Number.isNaN(number)) {
  14. markers.push({
  15. message: 'not a number',
  16. severity: monaco.MarkerSeverity.Error,
  17. startLineNumber: range.startLineNumber,
  18. startColumn: range.startColumn,
  19. endLineNumber: range.endLineNumber,
  20. endColumn: range.endColumn
  21. });
  22. } else if (!Number.isInteger(number)) {
  23. markers.push({
  24. message: 'not an integer',
  25. severity: monaco.MarkerSeverity.Warning,
  26. startLineNumber: range.startLineNumber,
  27. startColumn: range.startColumn,
  28. endLineNumber: range.endLineNumber,
  29. endColumn: range.endColumn
  30. });
  31. }
  32. }
  33. monaco.editor.setModelMarkers(model, 'owner', markers);
  34. }
  35. const value = `12345
  36. abcd
  37. 234.56
  38. 12345
  39. abcd
  40. 234.56`;
  41. const uri = monaco.Uri.parse('inmemory://test');
  42. const model = monaco.editor.createModel(value, 'demoLanguage', uri);
  43. editor = monaco.editor.create(document.getElementById('container'), { model });
  44. validate(model);
  45. model.onDidChangeContent(() => {
  46. validate(model);
  47. });