gdpr audit implemented, email log, vollmachten, pdf delete cancel data privacy and vollmachten, removed message no id card in engergy car, and other contracts that are not telecom contracts, added insert counter for engery
This commit is contained in:
+11
@@ -0,0 +1,11 @@
|
||||
// Just a shortcut for bulk export
|
||||
|
||||
import parseLinkLabel from './parse_link_label.mjs'
|
||||
import parseLinkDestination from './parse_link_destination.mjs'
|
||||
import parseLinkTitle from './parse_link_title.mjs'
|
||||
|
||||
export {
|
||||
parseLinkLabel,
|
||||
parseLinkDestination,
|
||||
parseLinkTitle
|
||||
}
|
||||
+77
@@ -0,0 +1,77 @@
|
||||
// Parse link destination
|
||||
//
|
||||
|
||||
import { unescapeAll } from '../common/utils.mjs'
|
||||
|
||||
export default function parseLinkDestination (str, start, max) {
|
||||
let code
|
||||
let pos = start
|
||||
|
||||
const result = {
|
||||
ok: false,
|
||||
pos: 0,
|
||||
str: ''
|
||||
}
|
||||
|
||||
if (str.charCodeAt(pos) === 0x3C /* < */) {
|
||||
pos++
|
||||
while (pos < max) {
|
||||
code = str.charCodeAt(pos)
|
||||
if (code === 0x0A /* \n */) { return result }
|
||||
if (code === 0x3C /* < */) { return result }
|
||||
if (code === 0x3E /* > */) {
|
||||
result.pos = pos + 1
|
||||
result.str = unescapeAll(str.slice(start + 1, pos))
|
||||
result.ok = true
|
||||
return result
|
||||
}
|
||||
if (code === 0x5C /* \ */ && pos + 1 < max) {
|
||||
pos += 2
|
||||
continue
|
||||
}
|
||||
|
||||
pos++
|
||||
}
|
||||
|
||||
// no closing '>'
|
||||
return result
|
||||
}
|
||||
|
||||
// this should be ... } else { ... branch
|
||||
|
||||
let level = 0
|
||||
while (pos < max) {
|
||||
code = str.charCodeAt(pos)
|
||||
|
||||
if (code === 0x20) { break }
|
||||
|
||||
// ascii control characters
|
||||
if (code < 0x20 || code === 0x7F) { break }
|
||||
|
||||
if (code === 0x5C /* \ */ && pos + 1 < max) {
|
||||
if (str.charCodeAt(pos + 1) === 0x20) { break }
|
||||
pos += 2
|
||||
continue
|
||||
}
|
||||
|
||||
if (code === 0x28 /* ( */) {
|
||||
level++
|
||||
if (level > 32) { return result }
|
||||
}
|
||||
|
||||
if (code === 0x29 /* ) */) {
|
||||
if (level === 0) { break }
|
||||
level--
|
||||
}
|
||||
|
||||
pos++
|
||||
}
|
||||
|
||||
if (start === pos) { return result }
|
||||
if (level !== 0) { return result }
|
||||
|
||||
result.str = unescapeAll(str.slice(start, pos))
|
||||
result.pos = pos
|
||||
result.ok = true
|
||||
return result
|
||||
}
|
||||
+49
@@ -0,0 +1,49 @@
|
||||
// Parse link label
|
||||
//
|
||||
// this function assumes that first character ("[") already matches;
|
||||
// returns the end of the label
|
||||
//
|
||||
|
||||
export default function parseLinkLabel (state, start, disableNested) {
|
||||
let level, found, marker, prevPos
|
||||
|
||||
const max = state.posMax
|
||||
const oldPos = state.pos
|
||||
|
||||
state.pos = start + 1
|
||||
level = 1
|
||||
|
||||
while (state.pos < max) {
|
||||
marker = state.src.charCodeAt(state.pos)
|
||||
if (marker === 0x5D /* ] */) {
|
||||
level--
|
||||
if (level === 0) {
|
||||
found = true
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
prevPos = state.pos
|
||||
state.md.inline.skipToken(state)
|
||||
if (marker === 0x5B /* [ */) {
|
||||
if (prevPos === state.pos - 1) {
|
||||
// increase level if we find text `[`, which is not a part of any token
|
||||
level++
|
||||
} else if (disableNested) {
|
||||
state.pos = oldPos
|
||||
return -1
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
let labelEnd = -1
|
||||
|
||||
if (found) {
|
||||
labelEnd = state.pos
|
||||
}
|
||||
|
||||
// restore old state
|
||||
state.pos = oldPos
|
||||
|
||||
return labelEnd
|
||||
}
|
||||
+66
@@ -0,0 +1,66 @@
|
||||
// Parse link title
|
||||
//
|
||||
|
||||
import { unescapeAll } from '../common/utils.mjs'
|
||||
|
||||
// Parse link title within `str` in [start, max] range,
|
||||
// or continue previous parsing if `prev_state` is defined (equal to result of last execution).
|
||||
//
|
||||
export default function parseLinkTitle (str, start, max, prev_state) {
|
||||
let code
|
||||
let pos = start
|
||||
|
||||
const state = {
|
||||
// if `true`, this is a valid link title
|
||||
ok: false,
|
||||
// if `true`, this link can be continued on the next line
|
||||
can_continue: false,
|
||||
// if `ok`, it's the position of the first character after the closing marker
|
||||
pos: 0,
|
||||
// if `ok`, it's the unescaped title
|
||||
str: '',
|
||||
// expected closing marker character code
|
||||
marker: 0
|
||||
}
|
||||
|
||||
if (prev_state) {
|
||||
// this is a continuation of a previous parseLinkTitle call on the next line,
|
||||
// used in reference links only
|
||||
state.str = prev_state.str
|
||||
state.marker = prev_state.marker
|
||||
} else {
|
||||
if (pos >= max) { return state }
|
||||
|
||||
let marker = str.charCodeAt(pos)
|
||||
if (marker !== 0x22 /* " */ && marker !== 0x27 /* ' */ && marker !== 0x28 /* ( */) { return state }
|
||||
|
||||
start++
|
||||
pos++
|
||||
|
||||
// if opening marker is "(", switch it to closing marker ")"
|
||||
if (marker === 0x28) { marker = 0x29 }
|
||||
|
||||
state.marker = marker
|
||||
}
|
||||
|
||||
while (pos < max) {
|
||||
code = str.charCodeAt(pos)
|
||||
if (code === state.marker) {
|
||||
state.pos = pos + 1
|
||||
state.str += unescapeAll(str.slice(start, pos))
|
||||
state.ok = true
|
||||
return state
|
||||
} else if (code === 0x28 /* ( */ && state.marker === 0x29 /* ) */) {
|
||||
return state
|
||||
} else if (code === 0x5C /* \ */ && pos + 1 < max) {
|
||||
pos++
|
||||
}
|
||||
|
||||
pos++
|
||||
}
|
||||
|
||||
// no closing marker found, but this link title may continue on the next line (for references)
|
||||
state.can_continue = true
|
||||
state.str += unescapeAll(str.slice(start, pos))
|
||||
return state
|
||||
}
|
||||
Reference in New Issue
Block a user