--- /dev/null
+function run(code) {
+ processedCode = code
+ .replace(/\<\!--\s*?[^\s?\[][\s\S]*?--\>/g,'')
+ .replace(/\>\s*\</g,'><')
+ .replace(/\/\*.*\*\/|\/\*[\s\S]*?\*\/|\n|\t|\v|\s{2,}/g,'')
+ .replace(/\s*\{\s*/g,'{')
+ .replace(/\s*\}\s*/g,'}')
+ .replace(/\s*\:\s*/g,':')
+ .replace(/\s*\;\s*/g,';')
+ .replace(/\s*\,\s*/g,',')
+ .replace(/\s*\~\s*/g,'~')
+ .replace(/\s*\>\s*/g,'>')
+ .replace(/\s*\+\s*/g,'+')
+ .replace(/\s*\!\s*/g,'!')
+
+ return processedCode;
+}
\ No newline at end of file
--- /dev/null
+// 1ch -> 8px
+// 1pc -> 12pt -> 1/6in -> 16px
+// 1vw -> 4px
+// 1vh -> 3px
+// 1in -> 96px
+// 1ex -> 7.16px (useful, right?!)
+// 1em -> 16px - we'll just use pc for this instead
+// 1q -> 100/106 px <-- this is a bad bad number, so, if we've already got q, we probably won't do anything with 'em'
+
+pixel_lengths = {
+ "ch": 8,
+ "pc": 16,
+ "vw":4,
+ "vh":3,
+ "in": 96,
+ "ex":7.16,
+ "em":16,
+ "px":1
+};
+
+function getShortestUnit(length,unit) {
+ cur_string = `${length}${unit}`;
+ pixel_length = 0;
+ if (pixel_lengths.hasOwnProperty(unit)) {
+ pixel_length = length * pixel_lengths[unit];
+ }
+ else {
+ return cur_string;
+ }
+ for (unit in pixel_lengths) {
+ if (pixel_lengths.hasOwnProperty(unit)) {
+ new_len = pixel_length / pixel_lengths[unit];
+ new_string = `${new_len}${unit}`;
+ if (new_string.length < cur_string.length) {
+ cur_string = new_string;
+ }
+ }
+ }
+ return cur_string;
+}
+
+// REQUIRED: A `run` function thats takes in current code and returns processed code.
+function run(code) {
+ // `code` is your current code in the editor
+ var processedCode = code.replace(/(\d+)(vw|vh|pc|px|in|ex|em)/g, (match, $1,$2) => {
+ return getShortestUnit($1,$2);
+ });
+
+ // Return the final code
+ return processedCode;
+}
\ No newline at end of file