MCPcopy
hub / github.com/svg/svgo / stringifyElement

Function stringifyElement

lib/stringifier.js:199–263  ·  view source on GitHub ↗
(node, config, state)

Source from the content-addressed store, hash-verified

197 * @returns {string}
198 */
199const stringifyElement = (node, config, state) => {
200 // empty element and short tag
201 if (node.children.length === 0) {
202 if (config.useShortTags) {
203 return (
204 createIndent(config, state) +
205 config.tagShortStart +
206 node.name +
207 stringifyAttributes(node, config) +
208 config.tagShortEnd
209 );
210 }
211
212 return (
213 createIndent(config, state) +
214 config.tagShortStart +
215 node.name +
216 stringifyAttributes(node, config) +
217 config.tagOpenEnd +
218 config.tagCloseStart +
219 node.name +
220 config.tagCloseEnd
221 );
222 }
223
224 // non-empty element
225 let tagOpenStart = config.tagOpenStart;
226 let tagOpenEnd = config.tagOpenEnd;
227 let tagCloseStart = config.tagCloseStart;
228 let tagCloseEnd = config.tagCloseEnd;
229 let openIndent = createIndent(config, state);
230 let closeIndent = createIndent(config, state);
231
232 if (state.textContext) {
233 tagOpenStart = defaults.tagOpenStart;
234 tagOpenEnd = defaults.tagOpenEnd;
235 tagCloseStart = defaults.tagCloseStart;
236 tagCloseEnd = defaults.tagCloseEnd;
237 openIndent = '';
238 } else if (textElems.has(node.name)) {
239 tagOpenEnd = defaults.tagOpenEnd;
240 tagCloseStart = defaults.tagCloseStart;
241 closeIndent = '';
242 state.textContext = node;
243 }
244
245 const children = stringifyNode(node, config, state);
246
247 if (state.textContext === node) {
248 state.textContext = null;
249 }
250
251 return (
252 openIndent +
253 tagOpenStart +
254 node.name +
255 stringifyAttributes(node, config) +
256 tagOpenEnd +

Callers 1

stringifyNodeFunction · 0.85

Calls 3

createIndentFunction · 0.85
stringifyAttributesFunction · 0.85
stringifyNodeFunction · 0.85

Tested by

no test coverage detected