MCPcopy Create free account
hub / github.com/cryptii/cryptii / performEncode

Method performEncode

src/Encoder/Integer.js:95–147  ·  view source on GitHub ↗

* Performs encode on given content. * @protected * @param {Chain} content * @return {number[]|string|Uint8Array|Chain|Promise} Encoded content

(content)

Source from the content-addressed store, hash-verified

93 * @return {number[]|string|Uint8Array|Chain|Promise} Encoded content
94 */
95 performEncode (content) {
96 const typeName = this.getSettingValue('type')
97 const typeIndex = typeNames.indexOf(typeName)
98 const bytesPerInteger = typeBytes[typeIndex]
99 const isBigEndian = this.getSettingValue('byteOrder') === 'big-endian'
100
101 let size = content.getSize()
102 if (size % bytesPerInteger !== 0) {
103 size += bytesPerInteger - size % bytesPerInteger
104 }
105
106 const bytes = new Uint8Array(size)
107 bytes.set(content.getBytes())
108
109 // Collect integers
110 const integers = this.createIntegerTypeArray(
111 size / bytesPerInteger, typeName)
112 let integer = 0
113 let i = 0
114 while (i < bytes.length) {
115 if (isBigEndian) {
116 integer = (integer << 8) | bytes[i]
117 } else {
118 integer = integer | bytes[i] << (i % bytesPerInteger * 8)
119 }
120 if (++i % bytesPerInteger === 0) {
121 integers[i / bytesPerInteger - 1] = integer
122 integer = 0
123 }
124 }
125
126 // Convert integers to strings
127 const format = this.getSettingValue('format')
128 const integerStrings = []
129
130 for (i = 0; i < integers.length; i++) {
131 switch (format) {
132 case 'binary':
133 integerStrings.push(integers[i].toString(2))
134 break
135 case 'octal':
136 integerStrings.push(integers[i].toString(8))
137 break
138 case 'decimal':
139 integerStrings.push(integers[i].toString(10))
140 break
141 default:
142 integerStrings.push(integers[i].toString(16))
143 }
144 }
145
146 return integerStrings.join(' ')
147 }
148
149 /**
150 * Performs decode on given content.

Callers

nothing calls this directly

Calls 7

getSettingValueMethod · 0.80
indexOfMethod · 0.80
getSizeMethod · 0.80
getBytesMethod · 0.80
toStringMethod · 0.80
joinMethod · 0.80

Tested by

no test coverage detected