MCPcopy
hub / github.com/figma/plugin-samples / traverseToken

Function traverseToken

variables-import-export/code.js:62–125  ·  view source on GitHub ↗
({
  collection,
  modeId,
  type,
  key,
  object,
  tokens,
  aliases,
})

Source from the content-addressed store, hash-verified

60}
61
62function traverseToken({
63 collection,
64 modeId,
65 type,
66 key,
67 object,
68 tokens,
69 aliases,
70}) {
71 type = type || object.$type;
72 // if key is a meta field, move on
73 if (key.charAt(0) === "$") {
74 return;
75 }
76 if (object.$value !== undefined) {
77 if (isAlias(object.$value)) {
78 const valueKey = object.$value
79 .trim()
80 .replace(/\./g, "/")
81 .replace(/[\{\}]/g, "");
82 if (tokens[valueKey]) {
83 tokens[key] = createVariable(collection, modeId, key, valueKey, tokens);
84 } else {
85 aliases[key] = {
86 key,
87 type,
88 valueKey,
89 };
90 }
91 } else if (type === "color") {
92 tokens[key] = createToken(
93 collection,
94 modeId,
95 "COLOR",
96 key,
97 parseColor(object.$value)
98 );
99 } else if (type === "number") {
100 tokens[key] = createToken(
101 collection,
102 modeId,
103 "FLOAT",
104 key,
105 object.$value
106 );
107 } else {
108 console.log("unsupported type", type, object);
109 }
110 } else {
111 Object.entries(object).forEach(([key2, object2]) => {
112 if (key2.charAt(0) !== "$") {
113 traverseToken({
114 collection,
115 modeId,
116 type,
117 key: `${key}/${key2}`,
118 object: object2,
119 tokens,

Callers 1

importJSONFileFunction · 0.85

Calls 4

isAliasFunction · 0.85
createVariableFunction · 0.85
createTokenFunction · 0.85
parseColorFunction · 0.85

Tested by

no test coverage detected