1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- // CodeMirror, copyright (c) by Marijn Haverbeke and others
- // Distributed under an MIT license: https://codemirror.net/LICENSE
- ;(function (mod) {
- if (typeof exports == 'object' && typeof module == 'object')
- // CommonJS
- mod(require('../../lib/codemirror'))
- else if (typeof define == 'function' && define.amd)
- // AMD
- define(['../../lib/codemirror'], mod)
- // Plain browser env
- else mod(CodeMirror)
- })(function (CodeMirror) {
- 'use strict'
- CodeMirror.defineMode('properties', function () {
- return {
- token: function (stream, state) {
- var sol = stream.sol() || state.afterSection
- var eol = stream.eol()
- state.afterSection = false
- if (sol) {
- if (state.nextMultiline) {
- state.inMultiline = true
- state.nextMultiline = false
- } else {
- state.position = 'def'
- }
- }
- if (eol && !state.nextMultiline) {
- state.inMultiline = false
- state.position = 'def'
- }
- if (sol) {
- while (stream.eatSpace()) {}
- }
- var ch = stream.next()
- if (sol && (ch === '#' || ch === '!' || ch === ';')) {
- state.position = 'comment'
- stream.skipToEnd()
- return 'comment'
- } else if (sol && ch === '[') {
- state.afterSection = true
- stream.skipTo(']')
- stream.eat(']')
- return 'header'
- } else if (ch === '=' || ch === ':') {
- state.position = 'quote'
- return null
- } else if (ch === '\\' && state.position === 'quote') {
- if (stream.eol()) {
- // end of line?
- // Multiline value
- state.nextMultiline = true
- }
- }
- return state.position
- },
- startState: function () {
- return {
- position: 'def', // Current position, "def", "quote" or "comment"
- nextMultiline: false, // Is the next line multiline value
- inMultiline: false, // Is the current line a multiline value
- afterSection: false, // Did we just open a section
- }
- },
- }
- })
- CodeMirror.defineMIME('text/x-properties', 'properties')
- CodeMirror.defineMIME('text/x-ini', 'properties')
- })
|