|
@@ -0,0 +1,69 @@
|
|
|
+const fs = require('fs');
|
|
|
+
|
|
|
+function getVariableType(value) {
|
|
|
+ if (value.startsWith('hsl')) {
|
|
|
+ return 'color';
|
|
|
+ } else if (value.startsWith('$')) {
|
|
|
+ return 'variable';
|
|
|
+ } else if (value.startsWith('BlinkMacSystemFont') || value == 'monospace') {
|
|
|
+ return 'font-family';
|
|
|
+ } else if (value == 'true' || value == 'false') {
|
|
|
+ return 'boolean';
|
|
|
+ } else if (value.includes('+')) {
|
|
|
+ return 'computed';
|
|
|
+ } else if (value.endsWith('px') || value.endsWith('rem')) {
|
|
|
+ return 'size';
|
|
|
+ }
|
|
|
+
|
|
|
+ return 'string';
|
|
|
+}
|
|
|
+
|
|
|
+function parseLine(line) {
|
|
|
+ if (line.startsWith('$') && line.endsWith('!default')) {
|
|
|
+ const colon_index = line.indexOf(':');
|
|
|
+ const variable_name = line.substring(0, colon_index).trim();
|
|
|
+
|
|
|
+ const default_index = line.indexOf('!default');
|
|
|
+ const variable_value = line.substring(colon_index + 1, default_index).trim();
|
|
|
+
|
|
|
+ return variable = {
|
|
|
+ name: variable_name,
|
|
|
+ value: variable_value,
|
|
|
+ type: getVariableType(variable_value),
|
|
|
+ };
|
|
|
+ }
|
|
|
+
|
|
|
+ return false;
|
|
|
+}
|
|
|
+
|
|
|
+function getLines(files, file_path) {
|
|
|
+ const file = files[file_path];
|
|
|
+ const slash_index = file_path.lastIndexOf('/');
|
|
|
+ const dot_index = file_path.lastIndexOf('.');
|
|
|
+ const file_name = file_path.substring(slash_index + 1, dot_index);
|
|
|
+
|
|
|
+ return {
|
|
|
+ file_name,
|
|
|
+ lines: file.contents.toString().split(/(?:\r\n|\r|\n)/g),
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+function writeFile(file_path, data) {
|
|
|
+ const json_data = JSON.stringify(data, null, ' ');
|
|
|
+
|
|
|
+ fs.writeFile(file_path, json_data, err => {
|
|
|
+ if (err) {
|
|
|
+ return console.log(err);
|
|
|
+ }
|
|
|
+
|
|
|
+ console.log('The file was saved!');
|
|
|
+ });
|
|
|
+}
|
|
|
+
|
|
|
+let plugin = {};
|
|
|
+plugin.getVariableType = getVariableType;
|
|
|
+plugin.getLines = getLines;
|
|
|
+plugin.parseLine = parseLine;
|
|
|
+plugin.writeFile = writeFile;
|
|
|
+
|
|
|
+module.exports = plugin;
|