MCPcopy Index your code
hub / github.com/skip2/go-qrcode / encode

Method encode

encoder.go:165–209  ·  view source on GitHub ↗

encode data as one or more segments and return the encoded data. The returned data does not include the terminator bit sequence.

(data []byte)

Source from the content-addressed store, hash-verified

163//
164// The returned data does not include the terminator bit sequence.
165func (d *dataEncoder) encode(data []byte) (*bitset.Bitset, error) {
166 d.data = data
167 d.actual = nil
168 d.optimised = nil
169
170 if len(data) == 0 {
171 return nil, errors.New("no data to encode")
172 }
173
174 // Classify data into unoptimised segments.
175 highestRequiredMode := d.classifyDataModes()
176
177 // Optimise segments.
178 err := d.optimiseDataModes()
179 if err != nil {
180 return nil, err
181 }
182
183 // Check if a single byte encoded segment would be more efficient.
184 optimizedLength := 0
185 for _, s := range d.optimised {
186 length, err := d.encodedLength(s.dataMode, len(s.data))
187 if err != nil {
188 return nil, err
189 }
190 optimizedLength += length
191 }
192
193 singleByteSegmentLength, err := d.encodedLength(highestRequiredMode, len(d.data))
194 if err != nil {
195 return nil, err
196 }
197
198 if singleByteSegmentLength <= optimizedLength {
199 d.optimised = []segment{segment{dataMode: highestRequiredMode, data: d.data}}
200 }
201
202 // Encode data.
203 encoded := bitset.New()
204 for _, s := range d.optimised {
205 d.encodeDataRaw(s.data, s.dataMode, encoded)
206 }
207
208 return encoded, nil
209}
210
211// classifyDataModes classifies the raw data into unoptimised segments.
212// e.g. "123ZZ#!#!" =>

Callers 2

NewFunction · 0.95
NewWithForcedVersionFunction · 0.95

Calls 5

classifyDataModesMethod · 0.95
optimiseDataModesMethod · 0.95
encodedLengthMethod · 0.95
encodeDataRawMethod · 0.95
NewFunction · 0.92

Tested by

no test coverage detected