diff --git a/app.js b/app.js
index e0d47a9..0d03661 100644
--- a/app.js
+++ b/app.js
@@ -53,11 +53,29 @@ var App = new Vue({
/**
* Converts Integer to Roman Numerals
+ * Inspired by many stackOverflow roman numeral conversions
* @param {[number]} n [whole number to be converted]
* @return {[string]} [roman numeral conversion of provided whole number]
*/
function intToRoman(n) {
- return n + 'TODO';
+ // Set up mapping to compare crucial roman numerals to their integet values
+ var mapping = {
+ 'M': 1000, 'CM': 900, 'D': 500, 'CD': 400, 'C': 100,
+ 'XC': 90, 'L': 50, 'XL': 40, 'X': 10, 'IX': 9, 'V': 5, 'IV': 4, 'I': 1
+ },
+ // Placeholder result array. Could also just be a string we append too, but it feels nicer to work with an object and an array
+ result = [];
+ // Loop through each roman numeral
+ _.forEach(mapping, function(int, rom) {
+ // So long as the intToRoman (n) param is greater than the current symbol's matching int...
+ while(n >= int) {
+ // Add the current symbol to our results array
+ result.push(rom);
+ // Take the value of the current symbol's int and subtract it from 'n'. This may happen multiple times, such as "20" becoming "XX"
+ n -= int;
+ }
+ });
+ return result.join('');
}
/**
diff --git a/bower.json b/bower.json
index 1c0291e..235189e 100644
--- a/bower.json
+++ b/bower.json
@@ -19,6 +19,7 @@
"dependencies": {
"vue": "~1.0.4",
"bootstrap": "~3.3.5",
- "bootstrap-material-design": "~0.3.0"
+ "bootstrap-material-design": "~0.3.0",
+ "lodash": "~3.10.1"
}
}
diff --git a/index.html b/index.html
index c569237..cde8a33 100644
--- a/index.html
+++ b/index.html
@@ -68,6 +68,7 @@
+