diff --git a/5-testing-components/examples/3-list-loop/list.js b/5-testing-components/examples/3-list-loop/list.js index 31c247d7..d984b1dd 100644 --- a/5-testing-components/examples/3-list-loop/list.js +++ b/5-testing-components/examples/3-list-loop/list.js @@ -13,6 +13,6 @@ export const list = (arr, startNum = 1) => { liEl.innerText = string; olEl.appendChild(liEl); } - + return olEl; }; diff --git a/6-refactoring/exercises/dom-and-events/type-caster/data/constants.js b/6-refactoring/exercises/dom-and-events/type-caster/data/constants.js index e69de29b..d5964c44 100644 --- a/6-refactoring/exercises/dom-and-events/type-caster/data/constants.js +++ b/6-refactoring/exercises/dom-and-events/type-caster/data/constants.js @@ -0,0 +1,2 @@ +export const TYPE_USER_ACTION = 'user-action'; +export const TYPE_CASTED_VALUE = 'casted-value'; diff --git a/6-refactoring/exercises/dom-and-events/type-caster/src/handler.js b/6-refactoring/exercises/dom-and-events/type-caster/src/handler.js index c4092334..0c68c778 100644 --- a/6-refactoring/exercises/dom-and-events/type-caster/src/handler.js +++ b/6-refactoring/exercises/dom-and-events/type-caster/src/handler.js @@ -1,3 +1,22 @@ -import { typeCaster } from './utils.js'; +import { typeCaster } from './util.js'; +import { TYPE_USER_ACTION, TYPE_CASTED_VALUE } from '../data/constants.js'; +export const castTheValue = (event) => { + debugger; + // read & process user input + const form = event.target.form; + const intendedType = form.type.value; + const stringToCast = form.value.value; -export const castTheValue = () => {}; + // execute core logic + let newValue = typeCaster(stringToCast, intendedType); + + // communicate result to user + document.getElementById(TYPE_CASTED_VALUE).innerHTML = + typeof newValue + ': ' + newValue; + + // log action for developers + console.log('\n-- user action --'); + console.log('stringToCast:', stringToCast); + console.log('intendedType:', intendedType); + console.log('newValue:', newValue); +}; diff --git a/6-refactoring/exercises/dom-and-events/type-caster/src/init.js b/6-refactoring/exercises/dom-and-events/type-caster/src/init.js index e21ddf80..ce99ab24 100644 --- a/6-refactoring/exercises/dom-and-events/type-caster/src/init.js +++ b/6-refactoring/exercises/dom-and-events/type-caster/src/init.js @@ -1,4 +1,9 @@ -document.getElementById('user-action').addEventListener('click', (event) => { +import { listeners } from './listener.js'; + +listeners(); + +/*document.getElementById(TYPE_USER_ACTION ).addEventListener('click', +(event) => { debugger; // read & process user input const form = event.target.form; @@ -18,7 +23,7 @@ document.getElementById('user-action').addEventListener('click', (event) => { } // communicate result to user - document.getElementById('casted-value').innerHTML = + document.getElementById(TYPE_CASTED_VALUE).innerHTML = typeof newValue + ': ' + newValue; // log action for developers @@ -26,4 +31,4 @@ document.getElementById('user-action').addEventListener('click', (event) => { console.log('stringToCast:', stringToCast); console.log('intendedType:', intendedType); console.log('newValue:', newValue); -}); +});*/ diff --git a/6-refactoring/exercises/dom-and-events/type-caster/src/listener.js b/6-refactoring/exercises/dom-and-events/type-caster/src/listener.js index b3325b31..4f81697b 100644 --- a/6-refactoring/exercises/dom-and-events/type-caster/src/listener.js +++ b/6-refactoring/exercises/dom-and-events/type-caster/src/listener.js @@ -1 +1,7 @@ import { castTheValue } from './handler.js'; +import { TYPE_USER_ACTION, TYPE_CASTED_VALUE } from '../data/constants.js'; +export const listeners = () => { + document + .getElementById(TYPE_USER_ACTION) + .addEventListener('click', castTheValue); +}; diff --git a/6-refactoring/exercises/dom-and-events/type-caster/src/util.js b/6-refactoring/exercises/dom-and-events/type-caster/src/util.js index 30bec8d5..c0d4fab1 100644 --- a/6-refactoring/exercises/dom-and-events/type-caster/src/util.js +++ b/6-refactoring/exercises/dom-and-events/type-caster/src/util.js @@ -1,4 +1,17 @@ /** * */ -export const typeCaster = () => {}; + +export const typeCaster = (stringToCast, intendedType) => { + let newValue; + if (intendedType === 'string') { + newValue = String(stringToCast); + } else if (intendedType === 'number') { + newValue = Number(stringToCast); + } else if (intendedType === 'boolean') { + newValue = Boolean(stringToCast); + } else { + newValue = undefined; + } + return newValue; +}; diff --git a/6-refactoring/exercises/dom-and-events/type-caster/src/util.spec.js b/6-refactoring/exercises/dom-and-events/type-caster/src/util.spec.js index 00b34574..cdf2ea19 100644 --- a/6-refactoring/exercises/dom-and-events/type-caster/src/util.spec.js +++ b/6-refactoring/exercises/dom-and-events/type-caster/src/util.spec.js @@ -1,4 +1,4 @@ -import { typeCaster } from './utils.js'; +import { typeCaster } from './util.js'; describe('typeCaster: converts values to string, number or boolean', () => { describe('correctly casts valid types', () => { diff --git a/6-refactoring/exercises/state/list-items/data/state.js b/6-refactoring/exercises/state/list-items/data/state.js index b6e03096..cb4be31b 100644 --- a/6-refactoring/exercises/state/list-items/data/state.js +++ b/6-refactoring/exercises/state/list-items/data/state.js @@ -1 +1,3 @@ -export const state = _; +export const state = { + bulletPoint: '*', +}; diff --git a/6-refactoring/exercises/state/list-items/src/handler.js b/6-refactoring/exercises/state/list-items/src/handler.js index 911a1c5d..a7d5a6b7 100644 --- a/6-refactoring/exercises/state/list-items/src/handler.js +++ b/6-refactoring/exercises/state/list-items/src/handler.js @@ -1,4 +1,28 @@ -import { list } from './utils.js'; +import { list } from './util.js'; import { bulletPoint } from '../data/constants.js'; -export const listHandler = () => {}; +export const listHandler = () => { + () => { + // read & process user input + const allInputs = []; + let acceptingInput = true; + while (acceptingInput) { + const nextInput = prompt('enter a list item'); + if (nextInput !== null) { + allInputs.push(nextInput); + } else { + acceptingInput = false; + } + } + + // execute core logic + let stringList = ''; + for (const input of allInputs) { + stringList += `\n${bulletPoint} ${input}`; + } + + // communicate result to user + const message = `all items:${stringList}`; + alert(message); + }; +}; diff --git a/6-refactoring/exercises/state/list-items/src/init.js b/6-refactoring/exercises/state/list-items/src/init.js index f7e55374..ed212513 100644 --- a/6-refactoring/exercises/state/list-items/src/init.js +++ b/6-refactoring/exercises/state/list-items/src/init.js @@ -1,4 +1,8 @@ -const bulletPoint = '*'; // data to refactor out of this file +import './listener'; + +//console.log(state.bulletPoint); // Output: '*' + +/*const bulletPoint = '*'; // data to refactor out of this file document.getElementById('list-them').addEventListener('click', () => { // read & process user input @@ -22,4 +26,4 @@ document.getElementById('list-them').addEventListener('click', () => { // communicate result to user const message = `all items:${stringList}`; alert(message); -}); +});*/ diff --git a/6-refactoring/exercises/state/list-items/src/listener.js b/6-refactoring/exercises/state/list-items/src/listener.js index 10f33d91..f13d2fc1 100644 --- a/6-refactoring/exercises/state/list-items/src/listener.js +++ b/6-refactoring/exercises/state/list-items/src/listener.js @@ -1 +1,3 @@ import { listHandler } from './handler.js'; + +document.getElementById('list-them').addEventListener('click', listHandler); diff --git a/6-refactoring/exercises/state/list-items/src/util.js b/6-refactoring/exercises/state/list-items/src/util.js index d8b1127b..4e793d7c 100644 --- a/6-refactoring/exercises/state/list-items/src/util.js +++ b/6-refactoring/exercises/state/list-items/src/util.js @@ -1,4 +1,12 @@ /** * */ -export const list = () => {}; +import { state } from '../data/state.js'; + +export const listItems = (allInputs) => { + let stringList = ''; + for (const input of allInputs) { + stringList += `\n${state.bulletPoint} ${input}`; + } + return stringList; +}; diff --git a/6-refactoring/exercises/state/list-items/src/util.spec.js b/6-refactoring/exercises/state/list-items/src/util.spec.js index 22adc8cb..e96a2c08 100644 --- a/6-refactoring/exercises/state/list-items/src/util.spec.js +++ b/6-refactoring/exercises/state/list-items/src/util.spec.js @@ -26,7 +26,7 @@ describe('list: generates a list string from an array of strings', () => { describe('list: uses arguments correctly', () => { it('does not modify the array argument', () => { const arg = ['a', 'b', 'c', 'd']; - list(arg); + list(arg, ','); expect(arg).toEqual(['a', 'b', 'c', 'd']); }); });