forked from dsherret/ts-morph
-
Notifications
You must be signed in to change notification settings - Fork 0
/
JsxSpreadAttribute.ts
60 lines (53 loc) · 1.9 KB
/
JsxSpreadAttribute.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
import { removeChildren } from "../../../manipulation";
import { JsxSpreadAttributeStructure, JsxSpreadAttributeSpecificStructure, StructureKind } from "../../../structures";
import { WriterFunction } from "../../../types";
import { ts } from "../../../typescript";
import { callBaseSet } from "../callBaseSet";
import { callBaseGetStructure } from "../callBaseGetStructure";
import { Node } from "../common";
export const JsxSpreadAttributeBase = Node;
export class JsxSpreadAttribute extends JsxSpreadAttributeBase<ts.JsxSpreadAttribute> {
/**
* Gets the JSX spread attribute's expression.
*/
getExpression() {
return this._getNodeFromCompilerNode(this.compilerNode.expression);
}
/**
* Sets the expression.
* @param textOrWriterFunction - Text to set the expression with.
*/
setExpression(textOrWriterFunction: string | WriterFunction) {
this.getExpression().replaceWithText(textOrWriterFunction);
return this;
}
/**
* Removes the JSX spread attribute.
*/
remove() {
removeChildren({
children: [this],
removePrecedingNewLines: true,
removePrecedingSpaces: true
});
}
/**
* Sets the node from a structure.
* @param structure - Structure to set the node with.
*/
set(structure: Partial<JsxSpreadAttributeStructure>) {
callBaseSet(JsxSpreadAttributeBase.prototype, this, structure);
if (structure.expression != null)
this.setExpression(structure.expression);
return this;
}
/**
* Gets the structure equivalent to this node.
*/
getStructure(): JsxSpreadAttributeStructure {
return callBaseGetStructure<JsxSpreadAttributeSpecificStructure>(JsxSpreadAttributeBase.prototype, this, {
kind: StructureKind.JsxSpreadAttribute,
expression: this.getExpression().getText()
});
}
}