MCPcopy Create free account
hub / github.com/Easy-Editor/EasyEditor / valueToSource

Function valueToSource

packages/core/src/document/prop/value-to-source.ts:26–225  ·  view source on GitHub ↗
(
  value: any,
  {
    circularReferenceToken = 'CIRCULAR_REFERENCE',
    doubleQuote = true,
    includeFunctions = true,
    includeUndefinedProperties = false,
    indentLevel = 0,
    indentString = '  ',
    lineEnding = '\n',
    visitedObjects = new Set(),
  }: any = {},
)

Source from the content-addressed store, hash-verified

24 * @returns
25 */
26export const valueToSource = (
27 value: any,
28 {
29 circularReferenceToken = 'CIRCULAR_REFERENCE',
30 doubleQuote = true,
31 includeFunctions = true,
32 includeUndefinedProperties = false,
33 indentLevel = 0,
34 indentString = ' ',
35 lineEnding = '\n',
36 visitedObjects = new Set(),
37 }: any = {},
38): any => {
39 switch (typeof value) {
40 case 'boolean':
41 return value ? `${indentString.repeat(indentLevel)}true` : `${indentString.repeat(indentLevel)}false`
42 case 'function':
43 if (includeFunctions) {
44 return `${indentString.repeat(indentLevel)}${value}`
45 }
46 return null
47 case 'number':
48 return `${indentString.repeat(indentLevel)}${value}`
49 case 'object':
50 if (!value) {
51 return `${indentString.repeat(indentLevel)}null`
52 }
53
54 if (visitedObjects.has(value)) {
55 return `${indentString.repeat(indentLevel)}${circularReferenceToken}`
56 }
57
58 if (value instanceof Date) {
59 return `${indentString.repeat(indentLevel)}new Date(${quoteString(value.toISOString(), {
60 doubleQuote,
61 })})`
62 }
63
64 if (value instanceof Map) {
65 return value.size
66 ? `${indentString.repeat(indentLevel)}new Map(${valueToSource([...value], {
67 circularReferenceToken,
68 doubleQuote,
69 includeFunctions,
70 includeUndefinedProperties,
71 indentLevel,
72 indentString,
73 lineEnding,
74 visitedObjects: new Set([value, ...visitedObjects]),
75 }).slice(indentLevel * indentString.length)})`
76 : `${indentString.repeat(indentLevel)}new Map()`
77 }
78
79 if (value instanceof RegExp) {
80 return `${indentString.repeat(indentLevel)}/${value.source}/${value.flags}`
81 }
82
83 if (value instanceof Set) {

Callers 2

setValueMethod · 0.90
getSourceFunction · 0.85

Calls 6

quoteStringFunction · 0.85
everyMethod · 0.80
reduceMethod · 0.80
toStringMethod · 0.80
hasMethod · 0.65

Tested by

no test coverage detected