Skip to content

Instantly share code, notes, and snippets.

@berkeleycole
Created December 11, 2018 03:34
Show Gist options
  • Save berkeleycole/8f55e1d7fc458a709d92d785c173645d to your computer and use it in GitHub Desktop.
Save berkeleycole/8f55e1d7fc458a709d92d785c173645d to your computer and use it in GitHub Desktop.
function pigLatinify() {
// take in words to be translated
var longstring = document.getElementById('input').value
var pigLatin = function(string) {
let newArray = []
let lowerString = string.toLowerCase()
//split string into individual words
let splitString = lowerString.split(" ")
//run the following on each member of lowerString
splitString.forEach(function(string) {
//create variables for each vowel with the value of that vowel's indexOf
let a = string.indexOf('a')
let e = string.indexOf('e')
let i = string.indexOf('i')
let o = string.indexOf('o')
let u = string.indexOf('u')
//if the first letter is not a y, but the first vowel is a y, include its indexOf
if (string.indexOf('y') != 0) {
var y = string.indexOf('y')
//otherwise assign a -1 to keep it from actualVowels
} else {
var y = -1
}
let vowels = [a, e, i, o, u, y]
//remove vowels (index) that don't exist
let actualVowels = vowels.filter(vowel => {
return vowel >= 0
})
//sort actual vowels (index)
let sortedVowels = actualVowels.sort()
//assign the first vowel's index and the previous index for ease of use in writing logic
let sliceVowel = actualVowels[0]
let qCheck = actualVowels[0] - 1
//create rules
//if the first vowel is the first letter of the word, just add "way" to the end
if (sliceVowel === 0) {
var transformed = string.concat('way')
} else if (string.charAt(sliceVowel) === 'u' && string.charAt(qCheck) === 'q') {
var transformed = string.slice(sliceVowel + 1).concat(string.slice(0, sliceVowel + 1)).concat('ay')
} else {
var transformed = string.slice(sliceVowel).concat(string.slice(0, sliceVowel)).concat('ay')
}
//make sure punctuation remain at end of words
if (transformed.includes(".")) {
let period = transformed.indexOf(".")
// split the word into an array of letters
let splitWord = transformed.split("")
// use the splice array method to remove period
splitWord.splice(period, 1)
// add a period to the end of the array
let fixedPeriod = splitWord.concat(".")
//join the array
let joinedFix = fixedPeriod.join("")
newArray.push(joinedFix)
} else if (transformed.includes(",")) {
let comma = transformed.indexOf(",")
let splitWord = transformed.split("")
splitWord.splice(comma, 1)
let fixedComma = splitWord.concat(",")
let joinedFix = fixedComma.join("")
newArray.push(joinedFix)
} else if (transformed.includes("?")) {
let question = transformed.indexOf("?")
let splitWord = transformed.split("")
splitWord.splice(question, 1)
let fixedQuestion = splitWord.concat("?")
let joinedFix = fixedQuestion.join("")
newArray.push(joinedFix)
} else if (transformed.includes("!")) {
let exclaim = transformed.indexOf("!")
let splitWord = transformed.split("")
splitWord.splice(exclaim, 1)
let fixedExclaim = splitWord.concat("!")
let joinedFix = fixedExclaim.join("")
newArray.push(joinedFix)
} else {
newArray.push(transformed)
}
})
// if the first letter is a consonant we wanna push it to a new array. if the first letter of the index, or however many are consonant, push them to a new array, else if its a vowel, then stop.
//
// and then join the two arrays.
// so we need an empty array. and we write the if loop, so that it checks for consonants, if its a consonant, push it
// to the limit.
// cycle thrugh NOT VOWELS until you get to a vowel and then slice the
// console.log(arr[i][0] + " " +vowelReg.test(arr[i][0]))
// console.log(arr[i].includes(vowels[i]))
// function test(arr) {
// let emptyArr = []
// for(var w=0; w < arr.length; w++) {
// emptyArr.push(arr[w].split(""))
// // for(var l=0, l < arr[w].length; )
// }
// return emptyArr
// }
//Capitalize the first letter of the supplied string
//split the first word into an array of individual letters
let firstWord = newArray[0].split("")
//replace the first letter with its capital
firstWord[0] = firstWord[0].toUpperCase()
//replace the first word of newArray with its capitalized vesion
newArray[0] = firstWord.join("")
//Check for words that finish with a period and capitalize the next word (see above code)
for (i = 0; i < newArray.length - 1; i++) {
if (newArray[i].includes(".") || newArray[i].includes("?") || newArray[i].includes("!")) {
let letters = newArray[i + 1].split("")
letters[0] = letters[0].toUpperCase()
newArray[i + 1] = letters.join("")
}
}
var joinedString = newArray.join(" ")
var firstCapString = joinedString.charAt(0).toUpperCase() + joinedString.substr(1);
return firstCapString
}
return pigLatin(string)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment