From 260b4b2bb72912ab45b0b92f9cc859c09b68fae8 Mon Sep 17 00:00:00 2001 From: ahstro Date: Thu, 6 Aug 2015 22:22:58 +0200 Subject: [PATCH 01/15] Updated test case comment in 'fluid containers' --- challenges/bootstrap.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/challenges/bootstrap.json b/challenges/bootstrap.json index def874e2070..c921a15573b 100644 --- a/challenges/bootstrap.json +++ b/challenges/bootstrap.json @@ -15,7 +15,7 @@ "To get started, we should nest all of our HTML in a div element with the class \"container-fluid\"." ], "tests": [ - "assert($('div').hasClass('container-fluid'), 'Your div element should have the class \"row\"')", + "assert($('div').hasClass('container-fluid'), 'Your div element should have the class \"container-fluid\"')", "assert(editor.match(/<\\/div>/g) && editor.match(/
/g).length === editor.match(/
div elements has a closing tag.')" ], "challengeSeed": [ From 75919c63f344a72ef573e59900c559b647e79429 Mon Sep 17 00:00:00 2001 From: ahstro Date: Sat, 8 Aug 2015 02:38:16 +0200 Subject: [PATCH 02/15] Everything is horrible --- challenges/advanced-bonfires.json | 11 +- challenges/angularjs.json | 17 +- .../automated-testing-and-debugging.json | 2 +- challenges/basejumps.json | 20 +- challenges/basic-bonfires.json | 56 ++--- challenges/basic-javascript.json | 124 ++++------- challenges/basic-ziplines.json | 20 +- challenges/bootstrap.json | 92 +++----- challenges/expert-bonfires.json | 20 +- challenges/get-set-for-free-code-camp.json | 29 +-- challenges/git.json | 5 +- challenges/hikes.json | 65 ++---- challenges/html5-and-css.json | 210 ++++++------------ challenges/intermediate-bonfires.json | 63 ++---- challenges/intermediate-ziplines.json | 17 +- challenges/jquery-ajax-and-json.json | 65 ++---- challenges/json-apis-and-ajax.json | 3 +- challenges/mongodb.json | 5 +- challenges/nodejs-and-expressjs.json | 17 +- ...t-oriented-and-functional-programming.json | 11 +- index.js | 4 +- 21 files changed, 288 insertions(+), 568 deletions(-) diff --git a/challenges/advanced-bonfires.json b/challenges/advanced-bonfires.json index c071bfb8b74..86b0c3fc320 100644 --- a/challenges/advanced-bonfires.json +++ b/challenges/advanced-bonfires.json @@ -1,11 +1,10 @@ { - "name": "Advanced Algorithm Scripting", + "title": "Advanced Algorithm Scripting", "order": 0.011, "challenges": [ { "id": "a2f1d72d9b908d0bd72bb9f6", - "name": "Bonfire: Make a Person", - "dashedName": "bonfire-make-a-person", + "title": "Bonfire: Make a Person", "difficulty": "3.01", "description": [ "Fill in the object constructor with the methods specified in the tests.", @@ -56,8 +55,7 @@ }, { "id": "af4afb223120f7348cdfc9fd", - "name": "Bonfire: Map the Debris", - "dashedName": "bonfire-map-the-debris", + "title": "Bonfire: Map the Debris", "difficulty": "3.02", "description": [ "Return a new array that transforms the element's average altitude into their orbital periods.", @@ -97,8 +95,7 @@ }, { "id": "a3f503de51cfab748ff001aa", - "name": "Bonfire: Pairwise", - "dashedName": "bonfire-pairwise", + "title": "Bonfire: Pairwise", "difficulty": "3.03", "description": [ "Return the sum of all indices of elements of 'arr' that can be paired with one other element to form a sum that equals the value in the second argument 'arg'. If multiple sums are possible, return the smallest sum. Once an element has been used, it cannot be reused to pair with another.", diff --git a/challenges/angularjs.json b/challenges/angularjs.json index 910a744bc7b..48ad0480522 100644 --- a/challenges/angularjs.json +++ b/challenges/angularjs.json @@ -1,11 +1,10 @@ { - "name": "AngularJS", + "title": "AngularJS", "order": 0.017, "challenges": [ { "id": "bd7154d8c441eddfaeb5bdef", - "name": "Waypoint: Get Started with Angular.js", - "dashedName": "waypoint-get-started-with-angularjs", + "title": "Waypoint: Get Started with Angular.js", "difficulty": 0.34, "challengeSeed": ["114684726"], "description": [ @@ -28,8 +27,7 @@ }, { "id": "bd7155d8c441eddfaeb5bdef", - "name": "Waypoint: Apply Angular.js Directives", - "dashedName": "waypoint-apply-angularjs-directives", + "title": "Waypoint: Apply Angular.js Directives", "difficulty": 0.35, "challengeSeed": ["114684727"], "description": [ @@ -52,8 +50,7 @@ }, { "id": "bd7156d8c441eddfaeb5bdef", - "name": "Waypoint: Power Forms with Angular.js", - "dashedName": "waypoint-power-forms-with-angularjs", + "title": "Waypoint: Power Forms with Angular.js", "difficulty": 0.36, "challengeSeed": ["114684729"], "description": [ @@ -76,8 +73,7 @@ }, { "id": "bd7157d8c441eddfaeb5bdef", - "name": "Waypoint: Customize Angular.js Directives", - "dashedName": "waypoint-customize-angularjs-directives", + "title": "Waypoint: Customize Angular.js Directives", "difficulty": 0.37, "challengeSeed": ["114685062"], "description": [ @@ -99,8 +95,7 @@ }, { "id": "bd7158d8c441eddfaeb5bdef", - "name": "Waypoint: Create Angular.js Services", - "dashedName": "waypoint-create-angularjs-services", + "title": "Waypoint: Create Angular.js Services", "difficulty": 0.38, "challengeSeed": ["114685060"], "description": [ diff --git a/challenges/automated-testing-and-debugging.json b/challenges/automated-testing-and-debugging.json index 2755fd75ff6..00181f0beca 100644 --- a/challenges/automated-testing-and-debugging.json +++ b/challenges/automated-testing-and-debugging.json @@ -1,5 +1,5 @@ { - "name": "Automated Testing and Debugging - Coming Soon", + "title": "Automated Testing and Debugging - Coming Soon", "order": 0.012, "challenges": [ ] diff --git a/challenges/basejumps.json b/challenges/basejumps.json index 137e679eea6..67c90232f70 100644 --- a/challenges/basejumps.json +++ b/challenges/basejumps.json @@ -1,11 +1,10 @@ { - "name": "Full Stack JavaScript Projects", + "title": "Full Stack JavaScript Projects", "order": 0.019, "challenges": [ { "id": "bd7158d8c443eddfaeb5bcef", - "name": "Waypoint: Get Set for Basejumps", - "dashedName": "waypoint-get-set-for-basejumps", + "title": "Waypoint: Get Set for Basejumps", "difficulty": 2.00, "challengeSeed": ["128451852"], "description": [ @@ -65,8 +64,7 @@ }, { "id": "bd7158d8c443eddfaeb5bdef", - "name": "Basejump: Build a Voting App", - "dashedName": "basejump-build-a-voting-app", + "title": "Basejump: Build a Voting App", "difficulty": 2.01, "challengeSeed": ["133315786"], "description": [ @@ -102,8 +100,7 @@ }, { "id": "bd7158d8c443eddfaeb5bdff", - "name": "Basejump: Build a Nightlife Coordination App", - "dashedName": "basejump-build-a-nightlife-coordination-app", + "title": "Basejump: Build a Nightlife Coordination App", "difficulty": 2.02, "challengeSeed": ["133315781"], "description": [ @@ -136,8 +133,7 @@ }, { "id": "bd7158d8c443eddfaeb5bd0e", - "name": "Basejump: Chart the Stock Market", - "dashedName": "basejump-chart-the-stock-market", + "title": "Basejump: Chart the Stock Market", "difficulty": 2.03, "challengeSeed": ["133315787"], "description": [ @@ -169,8 +165,7 @@ }, { "id": "bd7158d8c443eddfaeb5bd0f", - "name": "Basejump: Manage a Book Trading Club", - "dashedName": "basejump-manage-a-book-trading-club", + "title": "Basejump: Manage a Book Trading Club", "difficulty": 2.04, "challengeSeed": ["133316032"], "description": [ @@ -202,8 +197,7 @@ }, { "id": "bd7158d8c443eddfaeb5bdee", - "name": "Basejump: Build a Pinterest Clone", - "dashedName": "basejump-build-a-pinterest-clone", + "title": "Basejump: Build a Pinterest Clone", "difficulty": 2.05, "challengeSeed": ["133315784"], "description": [ diff --git a/challenges/basic-bonfires.json b/challenges/basic-bonfires.json index af9c9a3bd3d..4c2c7d8eaca 100644 --- a/challenges/basic-bonfires.json +++ b/challenges/basic-bonfires.json @@ -1,11 +1,10 @@ { - "name": "Basic Algorithm Scripting", + "title": "Basic Algorithm Scripting", "order": 0.006, "challenges": [ { "id": "bd7139d8c441eddfaeb5bdef", - "name": "Waypoint: Pair Program on Bonfires", - "dashedName": "waypoint-pair-program-on-bonfires", + "title": "Waypoint: Pair Program on Bonfires", "difficulty": 0.44, "challengeSeed": [ "119657641" @@ -44,8 +43,7 @@ }, { "id": "ad7123c8c441eddfaeb5bdef", - "name": "Bonfire: Meet Bonfire", - "dashedName": "bonfire-meet-bonfire", + "title": "Bonfire: Meet Bonfire", "difficulty": "0", "description": [ "Your goal is to fix the failing test.", @@ -83,8 +81,7 @@ }, { "id": "a202eed8fc186c8434cb6d61", - "name": "Bonfire: Reverse a String", - "dashedName": "bonfire-reverse-a-string", + "title": "Bonfire: Reverse a String", "difficulty": "1.01", "tests": [ "expect(reverseString('hello')).to.be.a('String');", @@ -125,8 +122,7 @@ }, { "id": "a302f7aae1aa3152a5b413bc", - "name": "Bonfire: Factorialize a Number", - "dashedName": "bonfire-factorialize-a-number", + "title": "Bonfire: Factorialize a Number", "tests": [ "expect(factorialize(5)).to.be.a(\"Number\");", "expect(factorialize(5)).to.equal(120);", @@ -165,8 +161,7 @@ }, { "id": "aaa48de84e1ecc7c742e1124", - "name": "Bonfire: Check for Palindromes", - "dashedName": "bonfire-check-for-palindromes", + "title": "Bonfire: Check for Palindromes", "difficulty": "1.03", "description": [ "Return true if the given string is a palindrome. Otherwise, return false.", @@ -213,8 +208,7 @@ }, { "id": "a26cbbe9ad8655a977e1ceb5", - "name": "Bonfire: Find the Longest Word in a String", - "dashedName": "bonfire-find-the-longest-word-in-a-string", + "title": "Bonfire: Find the Longest Word in a String", "difficulty": "1.04", "description": [ "Return the length of the longest word in the provided sentence.", @@ -253,8 +247,7 @@ }, { "id": "ab6137d4e35944e21037b769", - "name": "Bonfire: Title Case a Sentence", - "dashedName": "bonfire-title-case-a-sentence", + "title": "Bonfire: Title Case a Sentence", "difficulty": "1.05", "description": [ "Return the provided string with the first letter of each word capitalized.", @@ -291,8 +284,7 @@ }, { "id": "a789b3483989747d63b0e427", - "name": "Bonfire: Return Largest Numbers in Arrays", - "dashedName": "bonfire-return-largest-numbers-in-arrays", + "title": "Bonfire: Return Largest Numbers in Arrays", "difficulty": "1.06", "description": [ "Return an array consisting of the largest number from each provided sub-array. For simplicity, the provided array will contain exactly 4 sub-arrays.", @@ -330,8 +322,7 @@ }, { "id": "acda2fb1324d9b0fa741e6b5", - "name": "Bonfire: Confirm the Ending", - "dashedName": "bonfire-confirm-the-ending", + "title": "Bonfire: Confirm the Ending", "difficulty": "1.07", "description": [ "Check if a string (first argument) ends with the given target string (second argument).", @@ -370,8 +361,7 @@ }, { "id": "afcc8d540bea9ea2669306b6", - "name": "Bonfire: Repeat a string repeat a string", - "dashedName": "bonfire-repeat-a-string-repeat-a-string", + "title": "Bonfire: Repeat a string repeat a string", "difficulty": "1.08", "description": [ "Repeat a given string (first argument) n times (second argument). Return an empty string if n is a negative number.", @@ -407,8 +397,7 @@ }, { "id": "ac6993d51946422351508a41", - "name": "Bonfire: Truncate a string", - "dashedName": "bonfire-truncate-a-string", + "title": "Bonfire: Truncate a string", "difficulty": "1.09", "description": [ "Truncate a string (first argument) if it is longer than the given maximum string length (second argument). Return the truncated string with a '...' ending.", @@ -446,8 +435,7 @@ }, { "id": "a9bd25c716030ec90084d8a1", - "name": "Bonfire: Chunky Monkey", - "dashedName": "bonfire-chunky-monkey", + "title": "Bonfire: Chunky Monkey", "difficulty": "1.10", "description": [ "Write a function that splits an array (first argument) into groups the length of size (second argument) and returns them as a multidimensional array.", @@ -484,8 +472,7 @@ }, { "id": "ab31c21b530c0dafa9e241ee", - "name": "Bonfire: Slasher Flick", - "dashedName": "bonfire-slasher-flick", + "title": "Bonfire: Slasher Flick", "difficulty": "1.11", "description": [ "Return the remaining elements of an array after chopping off n elements from the head.", @@ -522,8 +509,7 @@ }, { "id": "af2170cad53daa0770fabdea", - "name": "Bonfire: Mutations", - "dashedName": "bonfire-mutations", + "title": "Bonfire: Mutations", "difficulty": "1.12", "description": [ "Return true if the string in the first element of the array contains all of the letters of the string in the second element of the array.", @@ -565,8 +551,7 @@ }, { "id": "adf08ec01beb4f99fc7a68f2", - "name": "Bonfire: Falsey Bouncer", - "dashedName": "bonfire-falsey-bouncer", + "title": "Bonfire: Falsey Bouncer", "difficulty": "1.50", "description": [ "Remove all falsey values from an array.", @@ -604,8 +589,7 @@ }, { "id": "a8e512fbe388ac2f9198f0fa", - "name": "Bonfire: Where art thou", - "dashedName": "bonfire-where-art-thou", + "title": "Bonfire: Where art thou", "difficulty": "1.55", "description": [ "Make a function that looks through an array (first argument) and returns an array of all objects that have equivalent property values (second argument).", @@ -643,8 +627,7 @@ }, { "id": "a39963a4c10bc8b4d4f06d7e", - "name": "Bonfire: Seek and Destroy", - "dashedName": "bonfire-seek-and-destroy", + "title": "Bonfire: Seek and Destroy", "difficulty": "1.60", "description": [ "You will be provided with an initial array (the first argument in the destroyer function), followed by one or more arguments. Remove all elements from the initial array that are of the same value as these arguments.", @@ -683,8 +666,7 @@ }, { "id": "a24c1a4622e3c05097f71d67", - "name": "Bonfire: Where do I belong", - "dashedName": "bonfire-where-do-i-belong", + "title": "Bonfire: Where do I belong", "difficulty": "1.61", "description": [ "Return the lowest index at which a value (second argument) should be inserted into a sorted array (first argument).", diff --git a/challenges/basic-javascript.json b/challenges/basic-javascript.json index b8e088adc01..4566d483c62 100644 --- a/challenges/basic-javascript.json +++ b/challenges/basic-javascript.json @@ -1,11 +1,10 @@ { - "name": "Basic JavaScript", + "title": "Basic JavaScript", "order": 0.005, "challenges": [ { "id":"bd7123c9c441eddfaeb4bdef", - "name": "Waypoint: Comment your JavaScript Code", - "dashedName": "waypoint-comment-your-javascript-code", + "title": "Waypoint: Comment your JavaScript Code", "difficulty":"9.98", "description":[ "A comment is a very useful line of code that is not actually ran by the machine executing it. With this property comments are the perfect way of creating notes to yourself or anyone else who reads your code describing what the code does", @@ -23,14 +22,12 @@ "assert(editor.getValue().match(/(\\/\\/)...../g), 'Make sure that there is at least one \\/\\/ style comment with at least five letters in it');" ], "challengeSeed":[ - ], "challengeType": 1 }, { "id": "bd7123c9c441eddfaeb5bdef", - "name": "Waypoint: Understand Boolean Values", - "dashedName": "waypoint-understand-boolean-values", + "title": "Waypoint: Understand Boolean Values", "difficulty": "9.98001", "description": [ "Return true", @@ -55,8 +52,7 @@ }, { "id": "bd7123c9c443eddfaeb5bdef", - "name": "Waypoint: Declare JavaScript Variables", - "dashedName": "waypoint-declare-javascript-variables", + "title": "Waypoint: Declare JavaScript Variables", "difficulty": "9.9801", "description": [ "Now, use the var keyword to create a variable called myName. Set its value to your name.", @@ -82,8 +78,7 @@ }, { "id": "bd7123c9c444eddfaeb5bdef", - "name": "Waypoint: Declare String Variables", - "dashedName": "waypoint-declare-string-variables", + "title": "Waypoint: Declare String Variables", "difficulty": "9.9802", "description": [ "Programs will almost always have several different variables that are used to keep track of several different pieces of data", @@ -109,8 +104,7 @@ }, { "id": "bd7123c9c448eddfaeb5bdef", - "name": "Waypoint: Check the Length Property of a String Variable", - "dashedName": "waypoint-check-the-length-property-of-a-string-variable", + "title": "Waypoint: Check the Length Property of a String Variable", "difficulty": "9.9809", "description": [ "Use the .length property to count the number of characters in the lastNameLength variable.", @@ -142,8 +136,7 @@ }, { "id": "bd7123c9c549eddfaeb5bdef", - "name": "Waypoint: Use Bracket Notation to Find the First Character in a String", - "dashedName": "waypoint-use-bracket-notation-to-find-the-first-character-in-a-string", + "title": "Waypoint: Use Bracket Notation to Find the First Character in a String", "difficulty": "9.9810", "description": [ "Use bracket notation to find the first character in a the firstLetterOfLastName variable.", @@ -177,8 +170,7 @@ }, { "id": "bd7123c9c450eddfaeb5bdef", - "name": "Waypoint: Use Bracket Notation to Find the Nth Character in a String", - "dashedName": "waypoint-use-bracket-notation-to-find-the-nth-character-in-a-string", + "title": "Waypoint: Use Bracket Notation to Find the Nth Character in a String", "difficulty": "9.9811", "description": [ "Just like the last lesson where we used Bracket Notationto access the first letter we can use the same method to get the letters ar other positions", @@ -208,8 +200,7 @@ }, { "id": "bd7123c9c451eddfaeb5bdef", - "name": "Waypoint: Use Bracket Notation to Find the Last Character in a String", - "dashedName": "waypoint-use-bracket-notation-to-find-the-last-character-in-a-string", + "title": "Waypoint: Use Bracket Notation to Find the Last Character in a String", "difficulty": "9.9812", "description": [ "Use bracket notation to find the last character in the lastName variable.", @@ -238,8 +229,7 @@ }, { "id": "bd7123c9c452eddfaeb5bdef", - "name": "Waypoint: Use Bracket Notation to Find the Nth-to-Last Character in a String", - "dashedName": "waypoint-use-bracket-notation-to-find-the-nth-to-last-character-in-a-string", + "title": "Waypoint: Use Bracket Notation to Find the Nth-to-Last Character in a String", "difficulty": "9.9813", "description": [ "Use bracket notation to find the second-to-last character in the lastName variable.", @@ -268,8 +258,7 @@ }, { "id": "cf1111c1c11feddfaeb3bdef", - "name": "Waypoint: Add Two Numbers with JavaScript", - "dashedName": "waypoint-add-two-numbers-with-javascript", + "title": "Waypoint: Add Two Numbers with JavaScript", "difficulty": "9.98141", "description": [ "In JavaScript whole numbers (called integers) can be easily used to preform mathematical functions", @@ -291,8 +280,7 @@ }, { "id": "cf1111c1c11feddfaeb4bdef", - "name": "Waypoint: Subtract One Number from Another with JavaScript", - "dashedName": "waypoint-subtract-one-number-from-another-with-javascript", + "title": "Waypoint: Subtract One Number from Another with JavaScript", "difficulty": "9.98142", "description": [ "In JavaScript whole numbers (called integers) can be easily used to preform mathematical functions", @@ -314,8 +302,7 @@ }, { "id": "cf1231c1c11feddfaeb5bdef", - "name": "Waypoint: Multiply Two Numbers with JavaScript", - "dashedName": "waypoint-multiply-two-numbers-with-javascript", + "title": "Waypoint: Multiply Two Numbers with JavaScript", "difficulty": "9.98143", "description": [ "In JavaScript whole numbers (called integers) can be easily used to preform mathematical functions", @@ -337,8 +324,7 @@ }, { "id": "cf1111c1c11feddfaeb6bdef", - "name": "Waypoint: Divide One Number by Another with JavaScript", - "dashedName": "waypoint-divide-one-number-by-another-with-javascript", + "title": "Waypoint: Divide One Number by Another with JavaScript", "difficulty": "9.9814", "description": [ "In JavaScript whole numbers (called integers) can be easily used to preform mathematical functions", @@ -360,8 +346,7 @@ }, { "id": "cf1391c1c11feddfaeb4bdef", - "name": "Waypoint: Create Decimal Numbers with JavaScript", - "dashedName": "waypoint-create-decimal-numbers-with-javascript", + "title": "Waypoint: Create Decimal Numbers with JavaScript", "difficulty": "9.9815", "description": [ "in JavaScript we can can work with decimal numbers", @@ -383,8 +368,7 @@ }, { "id": "bd7993c9c69feddfaeb7bdef", - "name": "Waypoint: Perform Arithmetic Operations on Decimals with JavaScript", - "dashedName": "waypoint-perform-arithmetic-operations-on-decimals-with-javascript", + "title": "Waypoint: Perform Arithmetic Operations on Decimals with JavaScript", "difficulty": "9.98151", "description": [ "In JavaScript we can can work with decimal numbers." @@ -405,8 +389,7 @@ }, { "id": "bd7993c9c69feddfaeb8bdef", - "name": "Waypoint: Store Multiple Values in one Variable using JavaScript Arrays", - "dashedName": "waypoint-store-multiple-values-in-one-variable-using-javascript-arrays", + "title": "Waypoint: Store Multiple Values in one Variable using JavaScript Arrays", "difficulty": "9.9816", "description": [ "In JavaScript we can store lists or collections of data in what are called arrays", @@ -432,8 +415,7 @@ }, { "id":"cf1111c1c11feddfaeb7bdef", - "name": "Waypoint: Nest one Array within Another Array", - "dashedName": "waypoint-nest-one-array-within-another-array", + "title": "Waypoint: Nest one Array within Another Array", "difficulty":"9.98161", "description":[ "We are also able to create arrays within arrays. This technique is called nesting.", @@ -452,8 +434,7 @@ }, { "id":"bg9997c9c79feddfaeb9bdef", - "name": "Waypoint: Access Array Data with Indexes", - "dashedName": "waypoint-access-array-data-with-indexes", + "title": "Waypoint: Access Array Data with Indexes", "difficulty":"9.9817", "description":[ "Once an array has been created we can access the data we have stored in them using indexes", @@ -483,8 +464,7 @@ }, { "id":"cf1111c1c11feddfaeb8bdef", - "name": "Waypoint: Modify Array Data With Indexes", - "dashedName": "waypoint-modify-array-data-with-indexes", + "title": "Waypoint: Modify Array Data With Indexes", "difficulty":"9.98171", "description":[ "We are able to modify the data stored in an array by using indexes", @@ -515,8 +495,7 @@ }, { "id": "bg9994c9c69feddfaeb9bdef", - "name": "Waypoint: Manipulate Arrays With pop()", - "dashedName": "waypoint-manipulate-arrays-with-pop", + "title": "Waypoint: Manipulate Arrays With pop()", "difficulty": "9.9818", "description": [ "When an array has been defined we still have the ability to make changes to it afterwards", @@ -546,8 +525,7 @@ }, { "id": "bg9995c9c69feddfaeb9bdef", - "name": "Waypoint: Manipulate Arrays With push()", - "dashedName": "waypoint-manipulate-arrays-with-push", + "title": "Waypoint: Manipulate Arrays With push()", "difficulty": "9.9818", "description": [ "Now that we've learned how to popthings from the end of the array, we need to learn how to pushstuff back to the end", @@ -568,8 +546,7 @@ }, { "id": "bg9996c9c69feddfaeb9bdef", - "name": "Waypoint: Manipulate Arrays With shift()", - "dashedName": "waypoint-manipulate-arrays-with-shift", + "title": "Waypoint: Manipulate Arrays With shift()", "difficulty": "9.9817", "description": [ "Another common way in which we can manipulate the data in an array is through .shift() ", @@ -591,8 +568,7 @@ }, { "id": "bg9997c9c69feddfaeb9bdef", - "name": "Waypoint: Manipulate Arrays With unshift()", - "dashedName": "waypoint-manipulate-arrays-with-unshift", + "title": "Waypoint: Manipulate Arrays With unshift()", "difficulty": "9.9818", "description": [ "Now that we've learned how to shiftthings from the start of the array, we need to learn how to unshiftstuff back to the start", @@ -613,8 +589,7 @@ }, { "id":"bg9997c9c89feddfaeb9bdef", - "name": "Waypoint: Write Reusable JavaScript with Functions", - "dashedName": "waypoint-write-reusable-javascript-with-functions", + "title": "Waypoint: Write Reusable JavaScript with Functions", "difficulty":"9.9819", "description":[ "In JavaScript we can divide up our code into separate and reusable parts called functions", @@ -650,8 +625,7 @@ }, { "id":"bg9998c9c99feddfaeb9bdef", - "name": "Waypoint: Build JavaScript Objects", - "dashedName": "waypoint-build-javascript-objects", + "title": "Waypoint: Build JavaScript Objects", "difficulty":"9.9822", "description":[ "A very important data type in javascript is the Object", @@ -667,7 +641,6 @@ "", "Objects are useful for storing data in a structured way or in a way that represents a real world object like a cat.", "Let's try to make an Object that represents a dog called myDog!" - ], "tests":[ "assert((function(z){if(z.hasOwnProperty('name') && z.name != undefined && typeof(z.name) == 'string'){return(true);}else{return(false);}})(myDog), 'myDog should contain the property name and it should be a string');", @@ -696,8 +669,7 @@ }, { "id":"bg9999c9c99feddfaeb9bdef", - "name": "Waypoint: Manipulate JavaScript Objects", - "dashedName": "waypoint-manipulate-javascript-objects", + "title": "Waypoint: Manipulate JavaScript Objects", "difficulty":"9.9823", "description":[ "Now that we have an objects we need to know how to add and remove properties from it", @@ -741,8 +713,7 @@ }, { "id":"cf1111c1c11feddfaeb5bdef", - "name": "Waypoint: Iterate with JavaScript For Loops", - "dashedName": "waypoint-iterate-with-javascript-for-loops", + "title": "Waypoint: Iterate with JavaScript For Loops", "difficulty":"9.9824", "description":[ "Loops are a critical part of any program! The next few challenges", @@ -770,8 +741,7 @@ }, { "id":"cf1111c1c11feddfaeb1bdef", - "name": "Waypoint: Iterate with JavaScript While Loops", - "dashedName": "waypoint-iterate-with-javascript-while-loops", + "title": "Waypoint: Iterate with JavaScript While Loops", "difficulty":"9.9825", "description":[ "Loops are a critical part of any program! The next few challenges", @@ -800,8 +770,7 @@ }, { "id":"cf1111c1c11feddfaeb2bdef", - "name": "Waypoint: Iterate with JavaScript Do-While Loops", - "dashedName": "waypoint-iterate-with-javascript-do-while-loops", + "title": "Waypoint: Iterate with JavaScript Do-While Loops", "difficulty":"9.9826", "description":[ "Let's now take a look at the do - while loop", @@ -830,8 +799,7 @@ }, { "id":"cf1111c1c11feddfaeb9bdef", - "name": "Waypoint: Generate Random Fractions with JavaScript", - "dashedName": "waypoint-generate-random-fractions-with-javascript", + "title": "Waypoint: Generate Random Fractions with JavaScript", "difficulty":"9.9827", "description":[ "Random numbers are very useful for creating random behaviours and games", @@ -856,8 +824,7 @@ }, { "id":"cf1111c1c12feddfaeb1bdef", - "name": "Waypoint: Generate Random Whole Numbers with JavaScript", - "dashedName": "waypoint-generate-random-whole-numbers-with-javascript", + "title": "Waypoint: Generate Random Whole Numbers with JavaScript", "difficulty":"9.9828", "description":[ "While it's great that we can create random decimal numbers it's a lot more useful to generate a random whole number", @@ -885,8 +852,7 @@ }, { "id":"cf1111c1c12feddfaeb2bdef", - "name": "Waypoint: Generate Random Whole Numbers within a Range", - "dashedName": "waypoint-generate-random-whole-numbers-within-a-range", + "title": "Waypoint: Generate Random Whole Numbers within a Range", "difficulty":"9.9829", "description":[ "We can use a certain mathematical expression to get a random number between between twp numbers.", @@ -913,8 +879,7 @@ }, { "id":"cf1111c1c12feddfaeb3bdef", - "name": "Waypoint: Use Conditional Logic with If-Else Statements", - "dashedName": "waypoint-use-conditional-logic-with-if-else-statements", + "title": "Waypoint: Use Conditional Logic with If-Else Statements", "difficulty":"9.983", "description":[ "We can use if statements in JavaScript to only execute code if a certain condition is met", @@ -947,8 +912,7 @@ }, { "id":"cf1111c1c12feddfaeb6bdef", - "name": "Waypoint: Sift through Text with Regular Expressions", - "dashedName": "waypoint-sift-through-text-with-regular-expressions", + "title": "Waypoint: Sift through Text with Regular Expressions", "difficulty":"9.984", "description":[ "RegEx is a powerful tool we can use to find certain words or patterns in strings", @@ -983,8 +947,7 @@ }, { "id":"cf1111c1c12feddfaeb7bdef", - "name": "Waypoint: Find Numbers with Regular Expressions", - "dashedName": "waypoint-find-numbers-with-regular-expressions", + "title": "Waypoint: Find Numbers with Regular Expressions", "difficulty":"9.985", "description":[ "We can use special selectors in RegEx to select a particular type of value", @@ -1013,8 +976,7 @@ }, { "id":"cf1111c1c12feddfaeb8bdef", - "name": "Waypoint: Find White Space with Regular Expressions", - "dashedName": "waypoint-find-white-space-with-regular-expressions", + "title": "Waypoint: Find White Space with Regular Expressions", "difficulty":"9.986", "description":[ "We can also use selectors like \\s to find spaces in a string", @@ -1042,8 +1004,7 @@ }, { "id":"cf1111c1c13feddfaeb3bdef", - "name": "Waypoint: Invert Regular Expression Matches with JavaScript", - "dashedName": "waypoint-invert-regular-expression-matches-with-javaScript", + "title": "Waypoint: Invert Regular Expression Matches with JavaScript", "difficulty":"9.987", "description":[ "Use /\\S/gi; to match everything that isn't a space in the string", @@ -1070,8 +1031,7 @@ }, { "id":"cf1111c1c12feddfaeb9bdef", - "name": "Waypoint: Create a JavaScript Slot Machine", - "dashedName": "waypoint-create-a-javascript-slot-machine", + "title": "Waypoint: Create a JavaScript Slot Machine", "difficulty":"9.988", "description":[ "We are now going to try and combine some of the stuff we've just learnt abd create the logic for a slot machine game", @@ -1224,8 +1184,7 @@ }, { "id":"cf1111c1c13feddfaeb1bdef", - "name": "Waypoint: Add your JavaScript Slot Machine Slots", - "dashedName": "waypoint-add-your-javascript-slot-machine-slots", + "title": "Waypoint: Add your JavaScript Slot Machine Slots", "difficulty":"9.989", "description":[ "Now that we have our random numbers we need to go and check for when they are all the same that means we should count it as a win", @@ -1383,8 +1342,7 @@ }, { "id":"cf1111c1c13feddfaeb2bdef", - "name": "Waypoint: Bring your JavaScript Slot Machine to Life", - "dashedName": "waypoint-bring-your-javascript-slot-machine-to-life", + "title": "Waypoint: Bring your JavaScript Slot Machine to Life", "difficulty":"9.990", "description":[ "Now we can detect a win let's get the slot machine to look like it works", diff --git a/challenges/basic-ziplines.json b/challenges/basic-ziplines.json index e6418a32dc4..5a9efb92699 100644 --- a/challenges/basic-ziplines.json +++ b/challenges/basic-ziplines.json @@ -1,11 +1,10 @@ { - "name": "Basic Front End Development Projects", + "title": "Basic Front End Development Projects", "order": 0.008, "challenges": [ { "id": "bd7158d8c442eddfbeb5bd1f", - "name": "Waypoint: Get Set for Ziplines", - "dashedName": "waypoint-get-set-for-ziplines", + "title": "Waypoint: Get Set for Ziplines", "difficulty": 1.00, "challengeSeed": ["125658022"], "description": [ @@ -39,8 +38,7 @@ }, { "id": "bd7158d8c242eddfaeb5bd13", - "name": "Zipline: Build a Personal Portfolio Webpage", - "dashedName": "zipline-build-a-personal-portfolio-webpage", + "title": "Zipline: Build a Personal Portfolio Webpage", "difficulty": 1.01, "challengeSeed": ["133315782"], "description": [ @@ -75,8 +73,7 @@ }, { "id": "bd7158d8c442eddfaeb5bd13", - "name": "Zipline: Build a Random Quote Machine", - "dashedName": "zipline-build-a-random-quote-machine", + "title": "Zipline: Build a Random Quote Machine", "difficulty": 1.02, "challengeSeed": ["126415122"], "description": [ @@ -107,8 +104,7 @@ }, { "id": "bd7158d8c442eddfaeb5bd10", - "name": "Zipline: Show the Local Weather", - "dashedName": "zipline-show-the-local-weather", + "title": "Zipline: Show the Local Weather", "difficulty": 1.03, "challengeSeed": ["126415127"], "description": [ @@ -140,8 +136,7 @@ }, { "id": "bd7158d8c442eddfaeb5bd0f", - "name": "Zipline: Build a Pomodoro Clock", - "dashedName": "zipline-build-a-pomodoro-clock", + "title": "Zipline: Build a Pomodoro Clock", "difficulty": 1.04, "challengeSeed": ["126411567"], "description": [ @@ -172,8 +167,7 @@ }, { "id": "bd7158d8c442eddfaeb5bd1f", - "name": "Zipline: Use the Twitch.tv JSON API", - "dashedName": "zipline-use-the-twitchtv-json-api", + "title": "Zipline: Use the Twitch.tv JSON API", "difficulty": 1.05, "challengeSeed": ["126411564"], "description": [ diff --git a/challenges/bootstrap.json b/challenges/bootstrap.json index 800f64d113e..146857afff7 100644 --- a/challenges/bootstrap.json +++ b/challenges/bootstrap.json @@ -1,11 +1,10 @@ { - "name": "Responsive Design with Bootstrap", + "title": "Responsive Design with Bootstrap", "order": 0.003, "challenges": [ { "id": "bad87fee1348bd9acde08712", - "name": "Waypoint: Use Responsive Design with Bootstrap Fluid Containers", - "dashedName": "waypoint-use-responsive-design-with-bootstrap-fluid-containers", + "title": "Waypoint: Use Responsive Design with Bootstrap Fluid Containers", "difficulty": 2.01, "description": [ "Now let's go back to our Cat Photo App. This time, we'll style it using the popular Bootstrap responsive CSS framework.", @@ -88,8 +87,7 @@ }, { "id": "bad87fee1348bd9acde08812", - "name": "Waypoint: Make Images Mobile Responsive", - "dashedName": "waypoint-make-images-mobile-responsive", + "title": "Waypoint: Make Images Mobile Responsive", "difficulty": 2.02, "description": [ "First, Add a new image with the src attribute of \"http://bit.ly/fcc-kittens2\".", @@ -173,8 +171,7 @@ }, { "id": "bad87fee1348bd8acde08812", - "name": "Waypoint: Center Text with Bootstrap", - "dashedName": "waypoint-center-text-with-bootstrap", + "title": "Waypoint: Center Text with Bootstrap", "difficulty": 2.03, "description": [ "Now that we're using Bootstrap, we can center our heading elements to make them look better. All we need to do is add the class text-center to our h1 and h2 elements.", @@ -256,8 +253,7 @@ }, { "id": "bad87fee1348cd8acdf08812", - "name": "Waypoint: Create a Bootstrap Button", - "dashedName": "waypoint-create-a-bootstrap-button", + "title": "Waypoint: Create a Bootstrap Button", "difficulty": 2.04, "description": [ "Bootstrap has its own styles for button elements, which look much better than the plain HTML ones.", @@ -341,8 +337,7 @@ }, { "id": "bad87fee1348cd8acef08812", - "name": "Waypoint: Create a Block Element Bootstrap Button", - "dashedName": "waypoint-create-a-block-element-bootstrap-button", + "title": "Waypoint: Create a Block Element Bootstrap Button", "difficulty": 2.05, "description": [ "Normally, your button elements are only as wide as the text that they contain. By making them block elements, your button will stretch to fill your page's entire horizontal space.", @@ -430,8 +425,7 @@ }, { "id": "bad87fee1348cd8acef08811", - "name": "Waypoint: Taste the Bootstrap Button Color Rainbow", - "dashedName": "waypoint-taste-the-bootstrap-button-color-rainbow", + "title": "Waypoint: Taste the Bootstrap Button Color Rainbow", "difficulty": 2.06, "description": [ "The \"btn-primary\" class is the main color you'll use in your app. It is useful for highlighting actions you want your user to take.", @@ -517,8 +511,7 @@ }, { "id": "bad87fee1348cd8acef08813", - "name": "Waypoint: Call out Optional Actions with Button Info", - "dashedName": "waypoint-call-out-optional-actions-with-button-info", + "title": "Waypoint: Call out Optional Actions with Button Info", "difficulty": 2.07, "description": [ "Bootstrap comes with several pre-defined colors for buttons. The \"btn-info\" class is used to call attention to optional actions that the user can take.", @@ -605,8 +598,7 @@ }, { "id": "bad87fee1348ce8acef08814", - "name": "Waypoint: Warn your Users of a Dangerous Action", - "dashedName": "waypoint-warn-your-users-of-a-dangerous-action", + "title": "Waypoint: Warn your Users of a Dangerous Action", "difficulty": 2.08, "description": [ "Bootstrap comes with several pre-defined colors for buttons. The \"btn-danger\" class is the button color you'll use to notify users that the button performs a destructive action, such as deleting a cat photo.", @@ -694,8 +686,7 @@ }, { "id": "bad88fee1348ce8acef08815", - "name": "Waypoint: Use the Bootstrap Grid to Put Elements Side By Side", - "dashedName": "waypoint-use-the-bootstrap-grid-to-put-elements-side-by-side", + "title": "Waypoint: Use the Bootstrap Grid to Put Elements Side By Side", "difficulty": 2.09, "description": [ "Bootstrap uses a responsive grid system, which makes it easy to put elements into rows and specify each element's relative width. Most of Bootstrap's classes can be applied to a div element.", @@ -788,8 +779,7 @@ }, { "id": "bad87fee1348bd9aedf08845", - "name": "Waypoint: Ditch Custom CSS for Bootstrap", - "dashedName": "waypoint-ditch-custom-css-for-bootstrap", + "title": "Waypoint: Ditch Custom CSS for Bootstrap", "difficulty": 2.10, "description": [ "We can clean up our code and make our Cat Photo App look more conventional by using Bootstrap's built-in styles instead of the custom styles we created earlier.", @@ -887,8 +877,7 @@ }, { "id": "bad87fee1348bd9aede08845", - "name": "Waypoint: Create a Custom Heading", - "dashedName": "waypoint-create-a-custom-heading", + "title": "Waypoint: Create a Custom Heading", "difficulty": 2.11, "description": [ "We will make a simple heading for our Cat Photo App by putting them in the same row.", @@ -976,8 +965,7 @@ }, { "id": "bad87fee1348bd9aedd08845", - "name": "Waypoint: Add Font Awesome Icons to our Buttons", - "dashedName": "waypoint-add-font-awesome-icons-to-our-buttons", + "title": "Waypoint: Add Font Awesome Icons to our Buttons", "difficulty": 2.12, "description": [ "Font Awesome is a convenient library of icons. These icons are vector graphics, stored in the \".svg\" file format. These icons are treated just like fonts. You can specify their size using pixels, and they will assume the font size of their parent HTML elements.", @@ -1061,8 +1049,7 @@ }, { "id": "bad87fee1348bd9aedc08845", - "name": "Waypoint: Add Font Awesome Icons to all of our Buttons", - "dashedName": "waypoint-add-font-awesome-icons-to-all-of-our-Buttons", + "title": "Waypoint: Add Font Awesome Icons to all of our Buttons", "difficulty": 2.13, "description": [ "Font Awesome is a convenient library of icons. These icons are vector graphics, stored in the \".svg\" file format. These icons are treated just like fonts. You can specify their size using pixels, and they will assume the font size of their parent HTML elements.", @@ -1146,8 +1133,7 @@ }, { "id": "bad87fee1348bd9aedb08845", - "name": "Waypoint: Responsively Style Radio Buttons", - "dashedName": "waypoint-responsively-style-radio-buttons", + "title": "Waypoint: Responsively Style Radio Buttons", "difficulty": 2.14, "description": [ "You can use Bootstrap's \"col-xs-*\" classes on form elements, too! This way, our radio buttons will be evenly spread out across the page, regardless of how wide the screen resolution is.", @@ -1231,8 +1217,7 @@ }, { "id": "bad87fee1348bd9aeda08845", - "name": "Waypoint: Responsively Style Checkboxes", - "dashedName": "waypoint-responsively-style-checkboxes", + "title": "Waypoint: Responsively Style Checkboxes", "difficulty": 2.15, "description": [ "You can use Bootstrap's \"col-xs-*\" classes on form elements, too! This way, our checkboxes will be evenly spread out across the page, regardless of how wide the screen resolution is.", @@ -1323,8 +1308,7 @@ }, { "id": "bad87fee1348bd9aed908845", - "name": "Waypoint: Style Text Inputs as Form Controls", - "dashedName": "waypoint-style-text-inputs-as-form-controls", + "title": "Waypoint: Style Text Inputs as Form Controls", "difficulty": 2.16, "description": [ "You can add the \"fa-paper-plane\" Font Awesome icon by adding <i class=\"fa fa-paper-plane\"></i> within your submit button element.", @@ -1424,8 +1408,7 @@ }, { "id": "bad87fee1348bd9aec908845", - "name": "Waypoint: Line up Form Elements Responsively with Bootstrap", - "dashedName": "waypoint-line-up-form-elements-responsively-with-bootstrap", + "title": "Waypoint: Line up Form Elements Responsively with Bootstrap", "difficulty": 2.17, "description": [ "Now let's get your form input and your submission button on the same line. We'll do this the same way we have previously: by using a div element with the class \"row\", and other div elements within it using the \"col-xs-*\" class.", @@ -1526,8 +1509,7 @@ }, { "id": "bad87fee1348bd9aec908846", - "name": "Waypoint: Create a Bootstrap Headline", - "dashedName": "waypoint-create-a-bootstrap-headline", + "title": "Waypoint: Create a Bootstrap Headline", "difficulty": 2.18, "description": [ "Now let's build something from scratch to practice our HTML, CSS and Bootstrap skills.", @@ -1561,8 +1543,7 @@ }, { "id": "bad87fee1348bd9aec908746", - "name": "Waypoint: House our page within a Bootstrap Container Fluid Div", - "dashedName": "waypoint-house-our-page-within-a-bootstrap-container-fluid-div", + "title": "Waypoint: House our page within a Bootstrap Container Fluid Div", "difficulty": 2.18, "description": [ "Now let's make sure all the content on your page is mobile-responsive.", @@ -1591,8 +1572,7 @@ }, { "id": "bad87fee1348bd9bec908846", - "name": "Waypoint: Create a Bootstrap Row", - "dashedName": "waypoint-create-a-bootstrap-row", + "title": "Waypoint: Create a Bootstrap Row", "difficulty": 2.19, "description": [ "Now we'll create a Bootstrap row for our inline elements.", @@ -1624,8 +1604,7 @@ }, { "id": "bad87fee1348bd9aec908847", - "name": "Waypoint: Split your Bootstrap Row", - "dashedName": "waypoint-split-your-bootstrap-row", + "title": "Waypoint: Split your Bootstrap Row", "difficulty": 2.20, "description": [ "Now that we have a Bootstrap Row, let's split it into two columns to house our elements.", @@ -1656,8 +1635,7 @@ }, { "id": "bad87fee1348bd9aec908848", - "name": "Waypoint: Create Bootstrap Wells", - "dashedName": "waypoint-create-bootstrap-wells", + "title": "Waypoint: Create Bootstrap Wells", "difficulty": 2.21, "description": [ "Bootstrap has a class called \"well\" that can create a visual sense of depth for your columns.", @@ -1694,8 +1672,7 @@ }, { "id": "bad87fee1348bd9aec908849", - "name": "Waypoint: Add Elements within your Bootstrap Wells", - "dashedName": "waypoint-add-elements-within-your-bootstrap-wells", + "title": "Waypoint: Add Elements within your Bootstrap Wells", "difficulty": 2.22, "description": [ "Now we're several div elements deep on each column of our row. This is as deep as we'll need to go. Now we can add our button elements.", @@ -1734,8 +1711,7 @@ }, { "id": "bad87fee1348bd9aec908850", - "name": "Waypoint: Apply the Default Bootstrap Button Style", - "dashedName": "waypoint-apply-the-default-bootstrap-button-style", + "title": "Waypoint: Apply the Default Bootstrap Button Style", "difficulty": 2.23, "description": [ "Bootstrap has another button class called \"btn-default\"", @@ -1780,8 +1756,7 @@ }, { "id": "bad87fee1348bd9aec908852", - "name": "Waypoint: Create a Class to Target with jQuery Selectors", - "dashedName": "waypoint-create-a-class-to-target-with-jquery-selectors", + "title": "Waypoint: Create a Class to Target with jQuery Selectors", "difficulty": 2.24, "description": [ "Not every class needs to have corresponding CSS. Sometimes we create classes just for the purpose of selecting these elements more easily using jQuery.", @@ -1825,8 +1800,7 @@ }, { "id": "bad87fee1348bd9aec908853", - "name": "Waypoint: Add ID Attributes to Bootstrap Elements", - "dashedName": "waypoint-add-id-attributes-to-bootstrap-elements", + "title": "Waypoint: Add ID Attributes to Bootstrap Elements", "difficulty": 2.25, "description": [ "Recall that in addition to class attributes, you can give each of your elements an id attribute.", @@ -1874,8 +1848,7 @@ }, { "id": "bad87fee1348bd9aec908854", - "name": "Waypoint: Label Bootstrap Wells", - "dashedName": "waypoint-label-bootstrap-wells", + "title": "Waypoint: Label Bootstrap Wells", "difficulty": 2.26, "description": [ "For the sake of clarity, let's label both of our wells with their ids.", @@ -1922,8 +1895,7 @@ }, { "id": "bad87fee1348bd9aec908855", - "name": "Waypoint: Give Each Element a Unique ID", - "dashedName": "waypoint-give-each-element-a-unique-id", + "title": "Waypoint: Give Each Element a Unique ID", "difficulty": 2.27, "description": [ "We will also want to be able to use jQuery to target each button by its unique id.", @@ -1974,8 +1946,7 @@ }, { "id": "bad87fee1348bd9aec908856", - "name": "Waypoint: Label Bootstrap Buttons", - "dashedName": "waypoint-label-bootstrap-buttons", + "title": "Waypoint: Label Bootstrap Buttons", "difficulty": 2.28, "description": [ "Just like we labled our wells, we want to label our buttons.", @@ -2026,8 +1997,7 @@ }, { "id": "bad87fee1348bd9aec908857", - "name": "Waypoint: Use Comments to Clarify Code", - "dashedName": "waypoint-use-comments-to-clarify-code", + "title": "Waypoint: Use Comments to Clarify Code", "difficulty": 2.29, "description": [ "When we start using jQuery, we will modify HTML elements without needing to actually change them in HTML.", diff --git a/challenges/expert-bonfires.json b/challenges/expert-bonfires.json index 50bbe89de29..6709b243f22 100644 --- a/challenges/expert-bonfires.json +++ b/challenges/expert-bonfires.json @@ -1,11 +1,10 @@ { - "name": "Expert Algorithm Scripting", + "title": "Expert Algorithm Scripting", "order": 0.013, "challenges": [ { "id": "aff0395860f5d3034dc0bfc9", - "name": "Bonfire: Validate US Telephone Numbers", - "dashedName": "bonfire-validate-us-telephone-numbers", + "title": "Bonfire: Validate US Telephone Numbers", "difficulty": "4.01", "description": [ "Return true if the passed string is a valid US phone number", @@ -65,8 +64,7 @@ }, { "id": "a3f503de51cf954ede28891d", - "name": "Bonfire: Symmetric Difference", - "dashedName": "bonfire-symmetric-difference", + "title": "Bonfire: Symmetric Difference", "difficulty": "4.02", "description": [ "Create a function that takes two or more arrays and returns an array of the symmetric difference of the provided arrays.", @@ -104,8 +102,7 @@ }, { "id": "aa2e6f85cab2ab736c9a9b24", - "name": "Bonfire: Exact Change", - "dashedName": "bonfire-exact-change", + "title": "Bonfire: Exact Change", "difficulty": "4.03", "description": [ "Design a cash register drawer function that accepts purchase price as the first argument, payment as the second argument, and cash-in-drawer (cid) as the third argument.", @@ -160,8 +157,7 @@ }, { "id": "a56138aff60341a09ed6c480", - "name": "Bonfire: Inventory Update", - "dashedName": "bonfire-inventory-update", + "title": "Bonfire: Inventory Update", "difficulty": "4.04", "description": [ "Compare and update inventory stored in a 2d array against a second 2d array of a fresh delivery. Update current inventory item quantity, and if an item cannot be found, add the new item and quantity into the inventory array in alphabetical order.", @@ -215,8 +211,7 @@ }, { "id": "a7bf700cd123b9a54eef01d5", - "name": "Bonfire: No repeats please", - "dashedName": "bonfire-no-repeats-please", + "title": "Bonfire: No repeats please", "difficulty": "4.05", "description": [ "Return the number of total permutations of the provided string that don't have repeated consecutive letters.", @@ -257,8 +252,7 @@ }, { "id": "a19f0fbe1872186acd434d5a", - "name": "Bonfire: Friendly Date Ranges", - "dashedName": "bonfire-friendly-date-ranges", + "title": "Bonfire: Friendly Date Ranges", "difficulty": "4.06", "description": [ "Implement a way of converting two dates into a more friendly date range that could be presented to a user.", diff --git a/challenges/get-set-for-free-code-camp.json b/challenges/get-set-for-free-code-camp.json index ae22da999b2..7be7730622a 100644 --- a/challenges/get-set-for-free-code-camp.json +++ b/challenges/get-set-for-free-code-camp.json @@ -1,11 +1,10 @@ { - "name": "Get Set for Free Code Camp", + "title": "Get Set for Free Code Camp", "order": 0.001, "challenges": [ { "id": "bd7124d8c441eddfaeb5bdef", - "name": "Waypoint: Learn how Free Code Camp Works", - "dashedName": "waypoint-learn-how-free-code-camp-works", + "title": "Waypoint: Learn how Free Code Camp Works", "difficulty": 0.01, "challengeSeed": ["125407438"], "description": [ @@ -56,8 +55,7 @@ }, { "id": "bd7125d8c441eddfaeb5bd0f", - "name": "Waypoint: Join Our Chat Room", - "dashedName": "waypoint-join-our-chat-room", + "title": "Waypoint: Join Our Chat Room", "difficulty": 0.02, "challengeSeed": ["131574135"], "description": [ @@ -118,8 +116,7 @@ }, { "id": "bd7125d8c441eddfaeb5bdff", - "name": "Waypoint: Preview our Challenge Map", - "dashedName": "waypoint-preview-our-challenge-map", + "title": "Waypoint: Preview our Challenge Map", "difficulty": 0.03, "challengeSeed": ["125407437"], "description": [ @@ -160,8 +157,7 @@ }, { "id": "bd7125d8c441eddfaeb5bd1f", - "name": "Waypoint: Browse our Wiki", - "dashedName": "waypoint-browse-our-wiki", + "title": "Waypoint: Browse our Wiki", "difficulty": 0.04, "challengeSeed": ["125407435"], "description": [ @@ -200,8 +196,7 @@ }, { "id": "bd7125d8c441eddfaeb5bd2f", - "name": "Waypoint: Customize your Portfolio Page", - "dashedName": "waypoint-customize-your-portfolio-page", + "title": "Waypoint: Customize your Portfolio Page", "difficulty": 0.05, "challengeSeed": ["125407433"], "description": [ @@ -246,8 +241,7 @@ }, { "id": "bd7126d8c441eddfaeb5bd3f", - "name": "Waypoint: Try Camper News", - "dashedName": "waypoint-try-camper-news", + "title": "Waypoint: Try Camper News", "difficulty": 0.06, "challengeSeed": ["124553410"], "description": [ @@ -297,8 +291,7 @@ }, { "id": "bd7126d8c441eddfaeb5bd3e", - "name": "Waypoint: Meet Other Campers in your City", - "dashedName": "waypoint-meet-other-campers-in-your-city", + "title": "Waypoint: Meet Other Campers in your City", "difficulty": 0.07, "challengeSeed": ["127358841"], "description": [ @@ -345,8 +338,7 @@ }, { "id": "bd7126d8c431eddfaeb5bd3e", - "name": "Waypoint: Add Free Code Camp to your LinkedIn Profile", - "dashedName": "waypoint-add-free-code-camp-to-your-linkedin-profile", + "title": "Waypoint: Add Free Code Camp to your LinkedIn Profile", "difficulty": 0.08, "challengeSeed": ["131574134"], "description": [ @@ -376,8 +368,7 @@ }, { "id": "bd7137d8c441eddfaeb5bdef", - "name": "Waypoint: Get Help the Hacker Way with RSAP", - "dashedName": "waypoint-get-help-the-hacker-way-with-rsap", + "title": "Waypoint: Get Help the Hacker Way with RSAP", "difficulty": 0.09, "challengeSeed": ["125407432"], "description": [ diff --git a/challenges/git.json b/challenges/git.json index f20d01fdfb1..cafffcd2e0d 100644 --- a/challenges/git.json +++ b/challenges/git.json @@ -1,11 +1,10 @@ { - "name": "Git", + "title": "Git", "order" : 0.014, "challenges": [ { "id": "bd7353d8c341eddeaeb5bd0f", - "name": "Waypoint: Save your Code Revisions Forever with Git", - "dashedName": "waypoint-save-your-code-revisions-forever-with-git", + "title": "Waypoint: Save your Code Revisions Forever with Git", "difficulty": 0.01, "challengeSeed": ["133316034"], "description": [ diff --git a/challenges/hikes.json b/challenges/hikes.json index 2b67379083b..bb80106e8df 100644 --- a/challenges/hikes.json +++ b/challenges/hikes.json @@ -1,11 +1,10 @@ { - "name": "Hikes", + "title": "Hikes", "order": 0.050, "challenges": [ { "id": "bd7128d8c441eddfbeb5bddf", - "name": "Hike: Computer Basics 1: The 4 Basic Parts of a Computer", - "dashedName": "hike-computer-basics-1-the-4-basic-parts-of-a-computer", + "title": "Hike: Computer Basics 1: The 4 Basic Parts of a Computer", "difficulty": 9.01, "challengeSeed": [ "132542064" @@ -44,8 +43,7 @@ }, { "id": "bd7127d8c441eddfbeb5bddf", - "name": "Hike: Computer Basics 2: More Computer Hardware", - "dashedName": "hike-computer-basics-2-more-computer-hardware", + "title": "Hike: Computer Basics 2: More Computer Hardware", "difficulty": 9.02, "challengeSeed": [ "132542458" @@ -83,8 +81,7 @@ }, { "id": "bd7126d8c441eddfbeb5bddf", - "name": "Hike: Computer Basics 3: Intro to Binary Code", - "dashedName": "hike-computer-basics-3-intro-to-binary-code", + "title": "Hike: Computer Basics 3: Intro to Binary Code", "difficulty": 9.03, "challengeSeed": [ "132542757" @@ -117,8 +114,7 @@ }, { "id": "bd7125d8c441eddfbeb5bddf", - "name": "Hike: Computer Basics 4: Decoding a Binary Number", - "dashedName": "hike-computer-basics-4-decoding-a-binary-number", + "title": "Hike: Computer Basics 4: Decoding a Binary Number", "difficulty": 9.04, "challengeSeed": [ "132543332" @@ -153,8 +149,7 @@ }, { "id": "bd7124d8c441eddfbeb5bddf", - "name": "Hike: Computer Basics 5: How To Measure Data Size", - "dashedName": "hike-computer-basics-5-how-to-measure-data-size", + "title": "Hike: Computer Basics 5: How To Measure Data Size", "difficulty": 9.05, "challengeSeed": [ "132543959" @@ -192,8 +187,7 @@ }, { "id": "bd7123d8c441eddfbeb5bddf", - "name": "Hike: Computer Basics 6: Measuring Data Speed", - "dashedName": "hike-computer-basics-6-measuring-data-speed", + "title": "Hike: Computer Basics 6: Measuring Data Speed", "difficulty": 9.06, "challengeSeed": [ "132545171" @@ -229,8 +223,7 @@ }, { "id": "bd7122d8c441eddfbeb5bddf", - "name": "Hike: Computer Basics 7: Binary Bytes", - "dashedName": "hike-computer-basics-7-binary-bytes", + "title": "Hike: Computer Basics 7: Binary Bytes", "difficulty": 9.07, "challengeSeed": [ "132545417" @@ -263,8 +256,7 @@ }, { "id": "bd7121d8c441eddfbeb5bddf", - "name": "Hike: Computer Basics 8: Types of Computers", - "dashedName": "hike-computer-basics-8-types-of-computers", + "title": "Hike: Computer Basics 8: Types of Computers", "difficulty": 9.08, "challengeSeed": [ "132546182" @@ -302,8 +294,7 @@ }, { "id": "bd7120d8c441eddfbeb5bddf", - "name": "Hike: Computer Basics 9: More on the Motherboard", - "dashedName": "hike-computer-basics-9-more-on-the-motherboard", + "title": "Hike: Computer Basics 9: More on the Motherboard", "difficulty": 9.09, "challengeSeed": [ "132547285" @@ -343,8 +334,7 @@ }, { "id": "bd712fd8c441eddfbeb5bddf", - "name": "Hike: Computer Basics 10: Data Networks", - "dashedName": "hike-computer-basics-10-data-networks", + "title": "Hike: Computer Basics 10: Data Networks", "difficulty": 9.10, "challengeSeed": [ "132547590" @@ -383,8 +373,7 @@ }, { "id": "bd712ed8c441eddfbeb5bddf", - "name": "Hike: Computer Basics 11: IP Addresses", - "dashedName": "hike-computer-basics-11-ip-addresses", + "title": "Hike: Computer Basics 11: IP Addresses", "difficulty": 9.11, "challengeSeed": [ "132548071" @@ -422,8 +411,7 @@ }, { "id": "bd712dd8c441eddfbeb5bddf", - "name": "Hike: Computer Basics 12: How the Internet Works", - "dashedName": "hike-computer-basics-12-how-the-internet-works", + "title": "Hike: Computer Basics 12: How the Internet Works", "difficulty": 9.12, "challengeSeed": [ "132548579" @@ -461,8 +449,7 @@ }, { "id": "bd712cd8c441eddfbeb5bddf", - "name": "Hike: Computer Basics 13: Software", - "dashedName": "hike-computer-basics-13-software", + "title": "Hike: Computer Basics 13: Software", "difficulty": 9.13, "challengeSeed": [ "132548908" @@ -494,8 +481,7 @@ }, { "id": "bd712bd8c441eddfbeb5bddf", - "name": "Hike: What Do Programmers Do?", - "dashedName": "hike-what-do-programmers-do", + "title": "Hike: What Do Programmers Do?", "difficulty": 9.14, "challengeSeed": [ "133166912" @@ -531,8 +517,7 @@ }, { "id": "bd712ad8c441eddfbeb5bddf", - "name": "Hike: Console and Logging", - "dashedName": "hike-console-and-logging", + "title": "Hike: Console and Logging", "difficulty": 9.15, "challengeSeed": [ "133170880" @@ -568,8 +553,7 @@ }, { "id": "bd7119d8c441eddfbeb5bddf", - "name": "Hike: Variables In Code", - "dashedName": "hike-variables-in-code", + "title": "Hike: Variables In Code", "difficulty": 9.16, "challengeSeed": [ "133172920" @@ -601,8 +585,7 @@ }, { "id": "bd7029d8c441eddfbeb5bddf", - "name": "Hike: Source Code", - "dashedName": "hike-source-code", + "title": "Hike: Source Code", "difficulty": 9.17, "challengeSeed": [ "133177129" @@ -646,8 +629,7 @@ }, { "id": "bd7129d8b441eddfbeb5bddf", - "name": "Hike: Routers and Packets", - "dashedName": "hike-routers-and-packets", + "title": "Hike: Routers and Packets", "difficulty": 9.18, "challengeSeed": [ "133181251" @@ -697,8 +679,7 @@ }, { "id": "bd7129d8a441eddfbeb5bddf", - "name": "Hike: Hardware: Chips and Moore's Law", - "dashedName": "hike-chips-and-moores-law", + "title": "Hike: Hardware: Chips and Moore's Law", "difficulty": 9.19, "challengeSeed": [ "133182057" @@ -734,8 +715,7 @@ }, { "id": "bd7129d80441eddfbeb5bddf", - "name": "Hike: Analog vs Digital and File Compression", - "dashedName": "hike-analog-vs-digital-and-file-compression", + "title": "Hike: Analog vs Digital and File Compression", "difficulty": 9.20, "challengeSeed": [ "133182587" @@ -773,8 +753,7 @@ }, { "id": "bd7129d89441eddfbeb5bddf", - "name": "Hike: Computer Security", - "dashedName": "hike-computer-security", + "title": "Hike: Computer Security", "difficulty": 9.21, "challengeSeed": [ "133186284" diff --git a/challenges/html5-and-css.json b/challenges/html5-and-css.json index 3896334683a..69236fd0216 100644 --- a/challenges/html5-and-css.json +++ b/challenges/html5-and-css.json @@ -1,11 +1,10 @@ { - "name": "HTML5 and CSS", + "title": "HTML5 and CSS", "order": 0.002, "challenges": [ { "id": "bd7123c8c441eddfaeb5bdef", - "name": "Waypoint: Say Hello to HTML Elements", - "dashedName": "waypoint-say-hello-to-html-elements", + "title": "Waypoint: Say Hello to HTML Elements", "difficulty": 1.01, "description": [ "Welcome to Free Code Camp's first coding challenge!", @@ -53,8 +52,7 @@ }, { "id": "bad87fee1348bd9aedf0887a", - "name": "Waypoint: Headline with the h2 Element", - "dashedName": "waypoint-headline-with-the-h2-element", + "title": "Waypoint: Headline with the h2 Element", "difficulty": 1.02, "description": [ "Add an h2 tag that says \"CatPhotoApp\" to create a second HTML element below your \"Hello World\" h1 element.", @@ -97,8 +95,7 @@ }, { "id": "bad87fee1348bd9aedf08801", - "name": "Waypoint: Inform with the Paragraph Element", - "dashedName": "waypoint-inform-with-the-paragraph-element", + "title": "Waypoint: Inform with the Paragraph Element", "difficulty": 1.03, "description": [ "Create a p element below your h2 element, and give it the text \"Hello Paragraph\".", @@ -138,8 +135,7 @@ }, { "id": "bad87fee1348bd9aedf08802", - "name": "Waypoint: Uncomment HTML", - "dashedName": "waypoint-uncomment-html", + "title": "Waypoint: Uncomment HTML", "difficulty": 1.04, "description": [ "Uncomment your h1, h2 and p elements.", @@ -188,8 +184,7 @@ }, { "id": "bad87fee1348bd9aedf08804", - "name": "Waypoint: Comment out HTML", - "dashedName": "waypoint-comment-out-html", + "title": "Waypoint: Comment out HTML", "difficulty": 1.05, "description": [ "Comment out your h1 element and your p element, but leave your h2 element uncommented.", @@ -235,8 +230,7 @@ }, { "id": "bad87fee1348bd9aedf08833", - "name": "Waypoint: Fill in the Blank with Placeholder Text", - "dashedName": "waypoint-fill-in-the-blank-with-placeholder-text", + "title": "Waypoint: Fill in the Blank with Placeholder Text", "difficulty": 1.06, "description": [ "Web developers traditionally use \"Lorem Ipsum\" text as placeholder text. It's called \"Lorem Ipsum\" text because those are the first two words of a famous passage by Cicero of Ancient Rome.", @@ -282,8 +276,7 @@ }, { "id": "bad87fed1348bd9aedf08833", - "name": "Waypoint: Delete HTML Elements", - "dashedName": "waypoint-delete-html-elements", + "title": "Waypoint: Delete HTML Elements", "difficulty": 1.07, "description": [ "Delete your h1 element so we can simplify our view.", @@ -326,8 +319,7 @@ }, { "id": "bad87fee1348bd9aedf08803", - "name": "Waypoint: Change the Color of Text", - "dashedName": "waypoint-change-the-color-of-text", + "title": "Waypoint: Change the Color of Text", "difficulty": 1.08, "description": [ "Change your h2 element's style so that its text color is red.", @@ -368,8 +360,7 @@ }, { "id": "bad87fee1348bd9aedf08805", - "name": "Waypoint: Use CSS Selectors to Style Elements", - "dashedName": "waypoint-use-css-selectors-to-style-elements", + "title": "Waypoint: Use CSS Selectors to Style Elements", "difficulty": 1.09, "description": [ "Delete your h2 element's style attribute and instead create a CSS style element. Add the necessary CSS to turn all h2 elements blue.", @@ -423,8 +414,7 @@ }, { "id": "bad87fee1348bd9aecf08806", - "name": "Waypoint: Use a CSS Class to Style an Element", - "dashedName": "waypoint-use-a-css-class-to-style-an-element", + "title": "Waypoint: Use a CSS Class to Style an Element", "difficulty": 1.11, "description": [ "Create a CSS class called \"red-text\" and apply it to your h2 element.", @@ -477,8 +467,7 @@ }, { "id": "bad87fee1348bd9aefe08806", - "name": "Waypoint: Style Multiple Elements with a CSS Class", - "dashedName": "waypoint-style-multiple-elements-with-a-css-class", + "title": "Waypoint: Style Multiple Elements with a CSS Class", "difficulty": 1.12, "description": [ "Apply the \"red-text\" class to your h2 and p elements.", @@ -522,8 +511,7 @@ }, { "id": "bad87fee1348bd9aedf08806", - "name": "Waypoint: Change the Font Size of an Element", - "dashedName": "waypoint-change-the-font-size-of-an-element", + "title": "Waypoint: Change the Font Size of an Element", "difficulty": 1.13, "description": [ "Create a second p element with the following Kitty Ipsum text: Purr jump eat the grass rip the couch scratched sunbathe, shed everywhere rip the couch sleep in the sink fluffy fur catnip scratched.", @@ -569,8 +557,7 @@ }, { "id": "bad87fee1348bd9aede08807", - "name": "Waypoint: Set the Font Family of an Element", - "dashedName": "waypoint-set-the-font-family-of-an-element", + "title": "Waypoint: Set the Font Family of an Element", "difficulty": 1.14, "description": [ "Make all of your p elements use the \"Monospace\" font.", @@ -616,8 +603,7 @@ }, { "id": "bad87fee1348bd9aedf08807", - "name": "Waypoint: Import a Google Font", - "dashedName": "waypoint-import-a-google-font", + "title": "Waypoint: Import a Google Font", "difficulty": 1.15, "description": [ "Apply the font-family of \"Lobster\" to your h2 element.", @@ -670,8 +656,7 @@ }, { "id": "bad87fee1348bd9aedf08808", - "name": "Waypoint: Specify How Fonts Should Degrade", - "dashedName": "waypoint-specify-how-fonts-should-degrade", + "title": "Waypoint: Specify How Fonts Should Degrade", "difficulty": 1.16, "description": [ "There are several default fonts that are available in all browsers. These include \"Monospace\", \"Serif\" and \"Sans-Serif\". Leave \"Lobster\" as the font-family for your h2 elements. Make them \"degrade\" to \"Monospace\" when \"Lobster\" isn't available.", @@ -728,8 +713,7 @@ }, { "id": "bad87fee1348bd9aedf08812", - "name": "Waypoint: Add Images to your Website", - "dashedName": "waypoint-add-images-to-your-website", + "title": "Waypoint: Add Images to your Website", "difficulty": 1.17, "description": [ "You can add images to your website by using the img element, and point to an specific image's URL using the src attribute.", @@ -783,8 +767,7 @@ }, { "id": "bad87fee1348bd9acdf08812", - "name": "Waypoint: Size your Images", - "dashedName": "waypoint-size-your-images", + "title": "Waypoint: Size your Images", "difficulty": 1.18, "description": [ "CSS has an attribute called width that controls an element's width. Just like with fonts, we'll use pixels(px) to specify the image's width.", @@ -839,8 +822,7 @@ }, { "id": "bad87fee1348bd9bedf08813", - "name": "Waypoint: Add Borders Around your Elements", - "dashedName": "waypoint-add-borders-around-your-elements", + "title": "Waypoint: Add Borders Around your Elements", "difficulty": 1.19, "description": [ "CSS borders have attributes like style, color and width.", @@ -902,8 +884,7 @@ }, { "id": "bad87fee1348bd9aedf08814", - "name": "Waypoint: Add Rounded Corners with a Border Radius", - "dashedName": "waypoint-add-rounded-corners-with-a-border-radius", + "title": "Waypoint: Add Rounded Corners with a Border Radius", "difficulty": 1.20, "description": [ "Your cat photo currently has sharp corners. We can round out those corners with a CSS attribute called border-radius.", @@ -968,8 +949,7 @@ }, { "id": "bad87fee1348bd9aedf08815", - "name": "Waypoint: Make Circular Images with a Border Radius", - "dashedName": "waypoint-make-circular-images-with-a-border-radius", + "title": "Waypoint: Make Circular Images with a Border Radius", "difficulty": 1.21, "description": [ "In addition to pixels, you can also specify a border-radius using a percentage.", @@ -1033,8 +1013,7 @@ }, { "id": "bad87fee1348bd9aedf08816", - "name": "Waypoint: Link to External Pages with Anchor Elements", - "dashedName": "waypoint-link-to-external-pages-with-anchor-elements", + "title": "Waypoint: Link to External Pages with Anchor Elements", "difficulty": 1.22, "description": [ "a elements or \"anchor\" elements, are used to link to content outside of the current page.", @@ -1104,8 +1083,7 @@ }, { "id": "bad87fee1348bd9aede08817", - "name": "Waypoint: Nest an Anchor Element within a Paragraph", - "dashedName": "waypoint-nest-an-anchor-element-within-a-paragraph", + "title": "Waypoint: Nest an Anchor Element within a Paragraph", "difficulty": 1.23, "description": [ "Again, here's a diagram of an a element for your reference:", @@ -1180,8 +1158,7 @@ }, { "id": "bad87fee1348bd9aedf08817", - "name": "Waypoint: Make Dead Links using the Hash Symbol", - "dashedName": "waypoint-make-dead-links-using-the-hash-symbol", + "title": "Waypoint: Make Dead Links using the Hash Symbol", "difficulty": 1.24, "description": [ "Sometimes you want to add a elements to your website before you know where they will link.", @@ -1249,8 +1226,7 @@ }, { "id": "bad87fee1348bd9aedf08820", - "name": "Waypoint: Turn an Image into a Link", - "dashedName": "waypoint-turn-an-image-into-a-link", + "title": "Waypoint: Turn an Image into a Link", "difficulty": 1.25, "description": [ "You can make elements into links by nesting them within an a element.", @@ -1322,8 +1298,7 @@ }, { "id": "bad87fee1348bd9aedf08818", - "name": "Waypoint: Add Alt Text to an Image for Accessibility", - "dashedName": "waypoint-add-alt-text-to-an-image-for-accessibility", + "title": "Waypoint: Add Alt Text to an Image for Accessibility", "difficulty": 1.26, "description": [ "alt attributes, also known as \"alt text\", are what browsers will display if they fail to load the image. alt attributes are also important for blind or visually impaired users to understand what an image portrays. And search engines also look at alt attributes.", @@ -1393,8 +1368,7 @@ }, { "id": "bad87fee1348bd9aedf08827", - "name": "Waypoint: Create a Bulleted Unordered List", - "dashedName": "waypoint-create-a-bulleted-unordered-list", + "title": "Waypoint: Create a Bulleted Unordered List", "difficulty": 1.27, "description": [ "HTML has a special element for creating unordered lists, or bullet point-style lists.", @@ -1471,8 +1445,7 @@ }, { "id": "bad87fee1348bd9aedf08828", - "name": "Waypoint: Create an Ordered List", - "dashedName": "waypoint-create-an-ordered-list", + "title": "Waypoint: Create an Ordered List", "difficulty": 1.28, "description": [ "HTML has a special element for creating ordered lists, or numbered-style lists.", @@ -1552,8 +1525,7 @@ }, { "id": "bad87fee1348bd9aedf08829", - "name": "Waypoint: Create a Text Field", - "dashedName": "waypoint-create-a-text-field", + "title": "Waypoint: Create a Text Field", "difficulty": 1.29, "description": [ "Now let's create a web form.", @@ -1631,8 +1603,7 @@ }, { "id": "bad87fee1348bd9aedf08830", - "name": "Waypoint: Add Placeholder Text to a Text Field", - "dashedName": "waypoint-add-placeholder-text-to-a-text-field", + "title": "Waypoint: Add Placeholder Text to a Text Field", "difficulty": 1.30, "description": [ "Your placeholder text is what appears in your text input before your user has inputed anything.", @@ -1711,8 +1682,7 @@ }, { "id": "bad87fee1348bd9aede08830", - "name": "Waypoint: Create a Form Element", - "dashedName": "waypoint-create-a-form-element", + "title": "Waypoint: Create a Form Element", "difficulty": 1.31, "description": [ "You can build web forms that actually submit data to a server using nothing more than pure HTML. You can do this by specifying an action on your form element.", @@ -1793,8 +1763,7 @@ }, { "id": "bad87fee1348bd9aedd08830", - "name": "Waypoint: Add a Submit Button to a Form", - "dashedName": "waypoint-add-a-submit-button-to-a-form", + "title": "Waypoint: Add a Submit Button to a Form", "difficulty": 1.32, "description": [ "Let's add a submit button to your form. Clicking this button will send the data from your form to the URL you specified with your form's action attribute.", @@ -1877,8 +1846,7 @@ }, { "id": "bad87fee1348bd9aedc08830", - "name": "Waypoint: Use HTML5 to Require a Field", - "dashedName": "waypoint-use-html5-to-require-a-field", + "title": "Waypoint: Use HTML5 to Require a Field", "difficulty": 1.33, "description": [ "You can require specific form fields so that your user will not be able to submit your form until he or she has filled them out.", @@ -1959,8 +1927,7 @@ }, { "id": "bad87fee1348bd9aedf08834", - "name": "Waypoint: Create a Set of Radio Buttons", - "dashedName": "waypoint-create-a-set-of-radio-buttons", + "title": "Waypoint: Create a Set of Radio Buttons", "difficulty": 1.34, "description": [ "You can use \"radio buttons\" for questions where you want the user to only give you one answer.", @@ -2052,8 +2019,7 @@ }, { "id": "bad87fee1348bd9aedf08835", - "name": "Waypoint: Create a Set of Checkboxes", - "dashedName": "waypoint-create-a-set-of-checkboxes", + "title": "Waypoint: Create a Set of Checkboxes", "difficulty": 1.35, "description": [ "Forms commonly use \"checkboxes\" for questions that may have more than one answer.", @@ -2142,8 +2108,7 @@ }, { "id": "bad87fee1348bd9aedd08835", - "name": "Waypoint: Check Radio Buttons and Checkboxes by Default", - "dashedName": "waypoint-check-radio-buttons-and-checkboxes-by-default", + "title": "Waypoint: Check Radio Buttons and Checkboxes by Default", "difficulty": 1.37, "description": [ "You can set a checkbox or radio button to be checked by default using the checked attribute.", @@ -2230,8 +2195,7 @@ }, { "id": "bad87fee1348bd9aede08835", - "name": "Waypoint: Nest Many Elements within a Single Div Element", - "dashedName": "waypoint-nest-many-elements-within-a-single-div-element", + "title": "Waypoint: Nest Many Elements within a Single Div Element", "difficulty": 1.38, "description": [ "The div element, or \"Division\" element, is a general purpose container for other elements.", @@ -2325,8 +2289,7 @@ }, { "id": "bad87fed1348bd9aede07836", - "name": "Waypoint: Give a Background Color to a Div Element", - "dashedName": "waypoint-give-a-background-color-to-a-div-element", + "title": "Waypoint: Give a Background Color to a Div Element", "difficulty": 1.39, "description": [ "You can set an element's background color with the \"background-color\" attribute.", @@ -2412,8 +2375,7 @@ }, { "id": "bad87eee1348bd9aede07836", - "name": "Waypoint: Set the ID of an Element", - "dashedName": "waypoint-set-the-id-of-an-element", + "title": "Waypoint: Set the ID of an Element", "difficulty": 1.391, "description": [ "In addition to classes, each HTML element can also have an id attribute.", @@ -2500,8 +2462,7 @@ }, { "id": "bad87dee1348bd9aede07836", - "name": "Waypoint: Use an ID Attribute to Style an Element", - "dashedName": "waypoint-use-an-id-attribute-to-style-an-element", + "title": "Waypoint: Use an ID Attribute to Style an Element", "difficulty": 1.392, "description": [ "One cool thing about id attributes is that, like classes, you can style them using CSS.", @@ -2590,8 +2551,7 @@ }, { "id": "bad88fee1348bd9aedf08825", - "name": "Waypoint: Adjusting the Padding of an Element", - "dashedName": "waypoint-adjusting-the-padding-of-an-element", + "title": "Waypoint: Adjusting the Padding of an Element", "difficulty": 1.40, "description": [ "You may have already noticed this, but all HTML elements are essentially little rectangles.", @@ -2661,8 +2621,7 @@ }, { "id": "bad87fee1348bd9aedf08822", - "name": "Waypoint: Adjust the Margin of an Element", - "dashedName": "waypoint-adjust-the-margin-of-an-element", + "title": "Waypoint: Adjust the Margin of an Element", "difficulty": 1.41, "description": [ "An element's margin controls the amount of space between an element's border and surrounding elements.", @@ -2732,8 +2691,7 @@ }, { "id": "bad87fee1348bd9aedf08823", - "name": "Waypoint: Add a Negative Margin to an Element", - "dashedName": "waypoint-add-a-negative-margin-to-an-element", + "title": "Waypoint: Add a Negative Margin to an Element", "difficulty": 1.42, "description": [ "An element's margin controls the amount of space between an element's border and surrounding elements.", @@ -2802,8 +2760,7 @@ }, { "id": "bad87fee1348bd9aedf08824", - "name": "Waypoint: Add Different Padding to Each Side of an Element", - "dashedName": "waypoint-add-different-padding-to-each-side-of-an-element", + "title": "Waypoint: Add Different Padding to Each Side of an Element", "difficulty": 1.43, "description": [ "Sometimes you will want to customize an element so that it has different padding on each of its sides.", @@ -2874,8 +2831,7 @@ }, { "id": "bad87fee1248bd9aedf08824", - "name": "Waypoint: Add Different Margins to Each Side of an Element", - "dashedName": "waypoint-add-different-margins-to-each-side-of-an-element", + "title": "Waypoint: Add Different Margins to Each Side of an Element", "difficulty": 1.44, "description": [ "Give the green box a margin of 40 pixels on its top and left side, but only 20 pixels on its bottom and right side.", @@ -2945,8 +2901,7 @@ }, { "id": "bad87fee1348bd9aedf08826", - "name": "Waypoint: Use Clockwise Notation to Specify the Padding of an Element", - "dashedName": "waypoint-use-clockwise-notation-to-specify-the-padding-of-an-element", + "title": "Waypoint: Use Clockwise Notation to Specify the Padding of an Element", "difficulty": 1.44, "description": [ "Instead of specifying an element's padding-top, padding-right, padding-bottom, and padding-left attributes, you can specify them all in one line, like this: padding: 10px 20px 10px 20px;.", @@ -3014,8 +2969,7 @@ }, { "id": "bad87fee1348bd9afdf08726", - "name": "Waypoint: Use Clockwise Notation to Specify the Margin of an Element", - "dashedName": "waypoint-use-clockwise-notation-to-specify-the-margin-of-an-element", + "title": "Waypoint: Use Clockwise Notation to Specify the Margin of an Element", "difficulty": 1.45, "description": [ "Let's try this again, but with margin this time.", @@ -3028,7 +2982,6 @@ "assert($('.green-box').css('margin-right') === '20px', 'Your green-box class should give the right of elements 20px of margin.')", "assert($('.green-box').css('margin-bottom') === '20px', 'Your green-box class should give the bottom of elements 20px of margin.')", "assert($('.green-box').css('margin-left') === '40px', 'Your green-box class should give the left of elements 40px of margin.')" - ], "challengeSeed": [ "" ], + "type": "waypoint", "challengeType": 0 }, { "id":"cf1111c1c13feddfaeb1bdef", - "title": "Waypoint: Add your JavaScript Slot Machine Slots", + "title": "Add your JavaScript Slot Machine Slots", "difficulty":"9.989", "description":[ "Now that we have our random numbers we need to go and check for when they are all the same that means we should count it as a win", @@ -1338,11 +1376,12 @@ " }", "" ], + "type": "waypoint", "challengeType": 0 }, { "id":"cf1111c1c13feddfaeb2bdef", - "title": "Waypoint: Bring your JavaScript Slot Machine to Life", + "title": "Bring your JavaScript Slot Machine to Life", "difficulty":"9.990", "description":[ "Now we can detect a win let's get the slot machine to look like it works", @@ -1504,6 +1543,7 @@ " }", "" ], + "type": "waypoint", "challengeType": 0 } ] diff --git a/challenges/basic-ziplines.json b/challenges/basic-ziplines.json index ea667f70737..b96619bb780 100644 --- a/challenges/basic-ziplines.json +++ b/challenges/basic-ziplines.json @@ -4,7 +4,7 @@ "challenges": [ { "id": "bd7158d8c442eddfbeb5bd1f", - "title": "Waypoint: Get Set for Ziplines", + "title": "Get Set for Ziplines", "difficulty": 1.00, "challengeSeed": ["125658022"], "description": [ @@ -23,6 +23,7 @@ "You can use this CodePen that you've just created as a starting point for your Ziplines. Just click the \"fork\" button at the top of your CodePen and it will create a duplicate CodePen.", "Now you're ready for your first Zipline. Click the \"I've completed this challenge\" button." ], + "type": "waypoint", "challengeType": 2, "tests": [], "nameCn": "", @@ -38,7 +39,7 @@ }, { "id": "bd7158d8c242eddfaeb5bd13", - "title": "Zipline: Build a Personal Portfolio Webpage", + "title": "Build a Personal Portfolio Webpage", "difficulty": 1.01, "challengeSeed": ["133315782"], "description": [ @@ -58,6 +59,7 @@ "When you are finished, click the \"I've completed this challenge\" button and include a link to your CodePen. If you pair programmed, you should also include the Free Code Camp username of your pair.", "If you'd like immediate feedback on your project, click this button and paste in a link to your CodePen project. Otherwise, we'll review it before you start your nonprofit projects.

Click here then add your link to your tweet's text" ], + "type": "zipline", "challengeType": 3, "tests": [], "nameCn": "", @@ -73,7 +75,7 @@ }, { "id": "bd7158d8c442eddfaeb5bd13", - "title": "Zipline: Build a Random Quote Machine", + "title": "Build a Random Quote Machine", "difficulty": 1.02, "challengeSeed": ["126415122"], "description": [ @@ -89,6 +91,7 @@ "When you are finished, click the \"I've completed this challenge\" button and include a link to your CodePen. If you pair programmed, you should also include the Free Code Camp username of your pair.", "If you'd like immediate feedback on your project, click this button and paste in a link to your CodePen project. Otherwise, we'll review it before you start your nonprofit projects.

Click here then add your link to your tweet's text" ], + "type": "zipline", "challengeType": 3, "tests": [], "nameCn": "", @@ -104,7 +107,7 @@ }, { "id": "bd7158d8c442eddfaeb5bd10", - "title": "Zipline: Show the Local Weather", + "title": "Show the Local Weather", "difficulty": 1.03, "challengeSeed": ["126415127"], "description": [ @@ -121,6 +124,7 @@ "When you are finished, click the \"I've completed this challenge\" button and include a link to your CodePen. If you pair programmed, you should also include the Free Code Camp username of your pair.", "If you'd like immediate feedback on your project, click this button and paste in a link to your CodePen project. Otherwise, we'll review it before you start your nonprofit projects.

Click here then add your link to your tweet's text" ], + "type": "zipline", "challengeType": 3, "tests": [], "nameCn": "", @@ -136,7 +140,7 @@ }, { "id": "bd7158d8c442eddfaeb5bd0f", - "title": "Zipline: Build a Pomodoro Clock", + "title": "Build a Pomodoro Clock", "difficulty": 1.04, "challengeSeed": ["126411567"], "description": [ @@ -152,6 +156,7 @@ "When you are finished, click the \"I've completed this challenge\" button and include a link to your CodePen. If you pair programmed, you should also include the Free Code Camp username of your pair.", "If you'd like immediate feedback on your project, click this button and paste in a link to your CodePen project. Otherwise, we'll review it before you start your nonprofit projects.

Click here then add your link to your tweet's text" ], + "type": "zipline", "challengeType": 3, "tests": [], "nameCn": "", @@ -167,7 +172,7 @@ }, { "id": "bd7158d8c442eddfaeb5bd1f", - "title": "Zipline: Use the Twitch.tv JSON API", + "title": "Use the Twitch.tv JSON API", "difficulty": 1.05, "challengeSeed": ["126411564"], "description": [ @@ -187,6 +192,7 @@ "When you are finished, click the \"I've completed this challenge\" button and include a link to your CodePen. If you pair programmed, you should also include the Free Code Camp username of your pair.", "If you'd like immediate feedback on your project, click this button and paste in a link to your CodePen project. Otherwise, we'll review it before you start your nonprofit projects.

Click here then add your link to your tweet's text" ], + "type": "zipline", "challengeType": 3, "tests": [], "nameCn": "", diff --git a/challenges/bootstrap.json b/challenges/bootstrap.json index d9ac143796c..4efee800991 100644 --- a/challenges/bootstrap.json +++ b/challenges/bootstrap.json @@ -4,7 +4,7 @@ "challenges": [ { "id": "bad87fee1348bd9acde08712", - "title": "Waypoint: Use Responsive Design with Bootstrap Fluid Containers", + "title": "Use Responsive Design with Bootstrap Fluid Containers", "difficulty": 2.01, "description": [ "Now let's go back to our Cat Photo App. This time, we'll style it using the popular Bootstrap responsive CSS framework.", @@ -73,6 +73,7 @@ " ", "" ], + "type": "waypoint", "challengeType": 0, "nameCn": "", "descriptionCn": [], @@ -87,7 +88,7 @@ }, { "id": "bad87fee1348bd9acde08812", - "title": "Waypoint: Make Images Mobile Responsive", + "title": "Make Images Mobile Responsive", "difficulty": 2.02, "description": [ "First, Add a new image with the src attribute of \"http://bit.ly/fcc-kittens2\".", @@ -157,6 +158,7 @@ " ", "
" ], + "type": "waypoint", "challengeType": 0, "nameCn": "", "descriptionCn": [], @@ -171,7 +173,7 @@ }, { "id": "bad87fee1348bd8acde08812", - "title": "Waypoint: Center Text with Bootstrap", + "title": "Center Text with Bootstrap", "difficulty": 2.03, "description": [ "Now that we're using Bootstrap, we can center our heading elements to make them look better. All we need to do is add the class text-center to our h1 and h2 elements.", @@ -239,6 +241,7 @@ " ", "
" ], + "type": "waypoint", "challengeType": 0, "nameCn": "", "descriptionCn": [], @@ -253,7 +256,7 @@ }, { "id": "bad87fee1348cd8acdf08812", - "title": "Waypoint: Create a Bootstrap Button", + "title": "Create a Bootstrap Button", "difficulty": 2.04, "description": [ "Bootstrap has its own styles for button elements, which look much better than the plain HTML ones.", @@ -323,6 +326,7 @@ " ", "" ], + "type": "waypoint", "challengeType": 0, "nameCn": "", "descriptionCn": [], @@ -337,7 +341,7 @@ }, { "id": "bad87fee1348cd8acef08812", - "title": "Waypoint: Create a Block Element Bootstrap Button", + "title": "Create a Block Element Bootstrap Button", "difficulty": 2.05, "description": [ "Normally, your button elements are only as wide as the text that they contain. By making them block elements, your button will stretch to fill your page's entire horizontal space.", @@ -411,6 +415,7 @@ " ", "" ], + "type": "waypoint", "challengeType": 0, "nameCn": "", "descriptionCn": [], @@ -425,7 +430,7 @@ }, { "id": "bad87fee1348cd8acef08811", - "title": "Waypoint: Taste the Bootstrap Button Color Rainbow", + "title": "Taste the Bootstrap Button Color Rainbow", "difficulty": 2.06, "description": [ "The \"btn-primary\" class is the main color you'll use in your app. It is useful for highlighting actions you want your user to take.", @@ -497,6 +502,7 @@ " ", "" ], + "type": "waypoint", "challengeType": 0, "nameCn": "", "descriptionCn": [], @@ -511,7 +517,7 @@ }, { "id": "bad87fee1348cd8acef08813", - "title": "Waypoint: Call out Optional Actions with Button Info", + "title": "Call out Optional Actions with Button Info", "difficulty": 2.07, "description": [ "Bootstrap comes with several pre-defined colors for buttons. The \"btn-info\" class is used to call attention to optional actions that the user can take.", @@ -584,6 +590,7 @@ " ", "" ], + "type": "waypoint", "challengeType": 0, "nameCn": "", "descriptionCn": [], @@ -598,7 +605,7 @@ }, { "id": "bad87fee1348ce8acef08814", - "title": "Waypoint: Warn your Users of a Dangerous Action", + "title": "Warn your Users of a Dangerous Action", "difficulty": 2.08, "description": [ "Bootstrap comes with several pre-defined colors for buttons. The \"btn-danger\" class is the button color you'll use to notify users that the button performs a destructive action, such as deleting a cat photo.", @@ -672,6 +679,7 @@ " ", "" ], + "type": "waypoint", "challengeType": 0, "nameCn": "", "descriptionCn": [], @@ -686,7 +694,7 @@ }, { "id": "bad88fee1348ce8acef08815", - "title": "Waypoint: Use the Bootstrap Grid to Put Elements Side By Side", + "title": "Use the Bootstrap Grid to Put Elements Side By Side", "difficulty": 2.09, "description": [ "Bootstrap uses a responsive grid system, which makes it easy to put elements into rows and specify each element's relative width. Most of Bootstrap's classes can be applied to a div element.", @@ -765,6 +773,7 @@ " ", "" ], + "type": "waypoint", "challengeType": 0, "nameCn": "", "descriptionCn": [], @@ -779,7 +788,7 @@ }, { "id": "bad87fee1348bd9aedf08845", - "title": "Waypoint: Ditch Custom CSS for Bootstrap", + "title": "Ditch Custom CSS for Bootstrap", "difficulty": 2.10, "description": [ "We can clean up our code and make our Cat Photo App look more conventional by using Bootstrap's built-in styles instead of the custom styles we created earlier.", @@ -863,6 +872,7 @@ " ", "" ], + "type": "waypoint", "challengeType": 0, "nameCn": "", "descriptionCn": [], @@ -877,7 +887,7 @@ }, { "id": "bad87fee1348bd9aede08845", - "title": "Waypoint: Create a Custom Heading", + "title": "Create a Custom Heading", "difficulty": 2.11, "description": [ "We will make a simple heading for our Cat Photo App by putting them in the same row.", @@ -951,6 +961,7 @@ " ", "" ], + "type": "waypoint", "challengeType": 0, "nameCn": "", "descriptionCn": [], @@ -965,7 +976,7 @@ }, { "id": "bad87fee1348bd9aedd08845", - "title": "Waypoint: Add Font Awesome Icons to our Buttons", + "title": "Add Font Awesome Icons to our Buttons", "difficulty": 2.12, "description": [ "Font Awesome is a convenient library of icons. These icons are vector graphics, stored in the \".svg\" file format. These icons are treated just like fonts. You can specify their size using pixels, and they will assume the font size of their parent HTML elements.", @@ -1035,6 +1046,7 @@ " ", "" ], + "type": "waypoint", "challengeType": 0, "nameCn": "", "descriptionCn": [], @@ -1049,7 +1061,7 @@ }, { "id": "bad87fee1348bd9aedc08845", - "title": "Waypoint: Add Font Awesome Icons to all of our Buttons", + "title": "Add Font Awesome Icons to all of our Buttons", "difficulty": 2.13, "description": [ "Font Awesome is a convenient library of icons. These icons are vector graphics, stored in the \".svg\" file format. These icons are treated just like fonts. You can specify their size using pixels, and they will assume the font size of their parent HTML elements.", @@ -1119,6 +1131,7 @@ " ", "" ], + "type": "waypoint", "challengeType": 0, "nameCn": "", "descriptionCn": [], @@ -1133,7 +1146,7 @@ }, { "id": "bad87fee1348bd9aedb08845", - "title": "Waypoint: Responsively Style Radio Buttons", + "title": "Responsively Style Radio Buttons", "difficulty": 2.14, "description": [ "You can use Bootstrap's \"col-xs-*\" classes on form elements, too! This way, our radio buttons will be evenly spread out across the page, regardless of how wide the screen resolution is.", @@ -1203,6 +1216,7 @@ " ", "" ], + "type": "waypoint", "challengeType": 0, "nameCn": "", "descriptionCn": [], @@ -1217,7 +1231,7 @@ }, { "id": "bad87fee1348bd9aeda08845", - "title": "Waypoint: Responsively Style Checkboxes", + "title": "Responsively Style Checkboxes", "difficulty": 2.15, "description": [ "You can use Bootstrap's \"col-xs-*\" classes on form elements, too! This way, our checkboxes will be evenly spread out across the page, regardless of how wide the screen resolution is.", @@ -1294,6 +1308,7 @@ " ", "" ], + "type": "waypoint", "challengeType": 0, "nameCn": "", "descriptionCn": [], @@ -1308,7 +1323,7 @@ }, { "id": "bad87fee1348bd9aed908845", - "title": "Waypoint: Style Text Inputs as Form Controls", + "title": "Style Text Inputs as Form Controls", "difficulty": 2.16, "description": [ "You can add the \"fa-paper-plane\" Font Awesome icon by adding <i class=\"fa fa-paper-plane\"></i> within your submit button element.", @@ -1394,6 +1409,7 @@ " ", "" ], + "type": "waypoint", "challengeType": 0, "nameCn": "", "descriptionCn": [], @@ -1408,7 +1424,7 @@ }, { "id": "bad87fee1348bd9aec908845", - "title": "Waypoint: Line up Form Elements Responsively with Bootstrap", + "title": "Line up Form Elements Responsively with Bootstrap", "difficulty": 2.17, "description": [ "Now let's get your form input and your submission button on the same line. We'll do this the same way we have previously: by using a div element with the class \"row\", and other div elements within it using the \"col-xs-*\" class.", @@ -1495,6 +1511,7 @@ " ", "" ], + "type": "waypoint", "challengeType": 0, "nameCn": "", "descriptionCn": [], @@ -1509,7 +1526,7 @@ }, { "id": "bad87fee1348bd9aec908846", - "title": "Waypoint: Create a Bootstrap Headline", + "title": "Create a Bootstrap Headline", "difficulty": 2.18, "description": [ "Now let's build something from scratch to practice our HTML, CSS and Bootstrap skills.", @@ -1529,6 +1546,7 @@ "", "" ], + "type": "waypoint", "challengeType": 0, "nameCn": "", "descriptionCn": [], @@ -1543,7 +1561,7 @@ }, { "id": "bad87fee1348bd9aec908746", - "title": "Waypoint: House our page within a Bootstrap Container Fluid Div", + "title": "House our page within a Bootstrap Container Fluid Div", "difficulty": 2.18, "description": [ "Now let's make sure all the content on your page is mobile-responsive.", @@ -1558,6 +1576,7 @@ "", "" ], + "type": "waypoint", "challengeType": 0, "nameCn": "", "descriptionCn": [], @@ -1572,7 +1591,7 @@ }, { "id": "bad87fee1348bd9bec908846", - "title": "Waypoint: Create a Bootstrap Row", + "title": "Create a Bootstrap Row", "difficulty": 2.19, "description": [ "Now we'll create a Bootstrap row for our inline elements.", @@ -1590,6 +1609,7 @@ "", "" ], + "type": "waypoint", "challengeType": 0, "nameCn": "", "descriptionCn": [], @@ -1604,7 +1624,7 @@ }, { "id": "bad87fee1348bd9aec908847", - "title": "Waypoint: Split your Bootstrap Row", + "title": "Split your Bootstrap Row", "difficulty": 2.20, "description": [ "Now that we have a Bootstrap Row, let's split it into two columns to house our elements.", @@ -1621,6 +1641,7 @@ " ", "" ], + "type": "waypoint", "challengeType": 0, "nameCn": "", "descriptionCn": [], @@ -1635,7 +1656,7 @@ }, { "id": "bad87fee1348bd9aec908848", - "title": "Waypoint: Create Bootstrap Wells", + "title": "Create Bootstrap Wells", "difficulty": 2.21, "description": [ "Bootstrap has a class called \"well\" that can create a visual sense of depth for your columns.", @@ -1658,6 +1679,7 @@ " ", "" ], + "type": "waypoint", "challengeType": 0, "nameCn": "", "descriptionCn": [], @@ -1672,7 +1694,7 @@ }, { "id": "bad87fee1348bd9aec908849", - "title": "Waypoint: Add Elements within your Bootstrap Wells", + "title": "Add Elements within your Bootstrap Wells", "difficulty": 2.22, "description": [ "Now we're several div elements deep on each column of our row. This is as deep as we'll need to go. Now we can add our button elements.", @@ -1697,6 +1719,7 @@ " ", "" ], + "type": "waypoint", "challengeType": 0, "nameCn": "", "descriptionCn": [], @@ -1711,7 +1734,7 @@ }, { "id": "bad87fee1348bd9aec908850", - "title": "Waypoint: Apply the Default Bootstrap Button Style", + "title": "Apply the Default Bootstrap Button Style", "difficulty": 2.23, "description": [ "Bootstrap has another button class called \"btn-default\"", @@ -1742,6 +1765,7 @@ " ", "" ], + "type": "waypoint", "challengeType": 0, "nameCn": "", "descriptionCn": [], @@ -1756,7 +1780,7 @@ }, { "id": "bad87fee1348bd9aec908852", - "title": "Waypoint: Create a Class to Target with jQuery Selectors", + "title": "Create a Class to Target with jQuery Selectors", "difficulty": 2.24, "description": [ "Not every class needs to have corresponding CSS. Sometimes we create classes just for the purpose of selecting these elements more easily using jQuery.", @@ -1786,6 +1810,7 @@ " ", "" ], + "type": "waypoint", "challengeType": 0, "nameCn": "", "descriptionCn": [], @@ -1800,7 +1825,7 @@ }, { "id": "bad87fee1348bd9aec908853", - "title": "Waypoint: Add ID Attributes to Bootstrap Elements", + "title": "Add ID Attributes to Bootstrap Elements", "difficulty": 2.25, "description": [ "Recall that in addition to class attributes, you can give each of your elements an id attribute.", @@ -1834,6 +1859,7 @@ " ", "" ], + "type": "waypoint", "challengeType": 0, "nameCn": "", "descriptionCn": [], @@ -1848,7 +1874,7 @@ }, { "id": "bad87fee1348bd9aec908854", - "title": "Waypoint: Label Bootstrap Wells", + "title": "Label Bootstrap Wells", "difficulty": 2.26, "description": [ "For the sake of clarity, let's label both of our wells with their ids.", @@ -1881,6 +1907,7 @@ " ", "" ], + "type": "waypoint", "challengeType": 0, "nameCn": "", "descriptionCn": [], @@ -1895,7 +1922,7 @@ }, { "id": "bad87fee1348bd9aec908855", - "title": "Waypoint: Give Each Element a Unique ID", + "title": "Give Each Element a Unique ID", "difficulty": 2.27, "description": [ "We will also want to be able to use jQuery to target each button by its unique id.", @@ -1932,6 +1959,7 @@ " ", "" ], + "type": "waypoint", "challengeType": 0, "nameCn": "", "descriptionCn": [], @@ -1946,7 +1974,7 @@ }, { "id": "bad87fee1348bd9aec908856", - "title": "Waypoint: Label Bootstrap Buttons", + "title": "Label Bootstrap Buttons", "difficulty": 2.28, "description": [ "Just like we labled our wells, we want to label our buttons.", @@ -1983,6 +2011,7 @@ " ", "" ], + "type": "waypoint", "challengeType": 0, "nameCn": "", "descriptionCn": [], @@ -1997,7 +2026,7 @@ }, { "id": "bad87fee1348bd9aec908857", - "title": "Waypoint: Use Comments to Clarify Code", + "title": "Use Comments to Clarify Code", "difficulty": 2.29, "description": [ "When we start using jQuery, we will modify HTML elements without needing to actually change them in HTML.", @@ -2033,6 +2062,7 @@ " ", "" ], + "type": "waypoint", "challengeType": 0, "nameCn": "", "descriptionCn": [], diff --git a/challenges/expert-bonfires.json b/challenges/expert-bonfires.json index 8c5af398f0d..06ab698fb1e 100644 --- a/challenges/expert-bonfires.json +++ b/challenges/expert-bonfires.json @@ -4,7 +4,7 @@ "challenges": [ { "id": "aff0395860f5d3034dc0bfc9", - "title": "Bonfire: Validate US Telephone Numbers", + "title": "Validate US Telephone Numbers", "difficulty": "4.01", "description": [ "Return true if the passed string is a valid US phone number", @@ -50,6 +50,7 @@ "MDNlinks": [ "RegExp" ], + "type": "bonfire", "challengeType": 5, "nameCn": "", "descriptionCn": [], @@ -64,7 +65,7 @@ }, { "id": "a3f503de51cf954ede28891d", - "title": "Bonfire: Symmetric Difference", + "title": "Symmetric Difference", "difficulty": "4.02", "description": [ "Create a function that takes two or more arrays and returns an array of the symmetric difference of the provided arrays.", @@ -88,6 +89,7 @@ "Array.reduce()", "Symmetric Difference" ], + "type": "bonfire", "challengeType": 5, "nameCn": "", "descriptionCn": [], @@ -102,7 +104,7 @@ }, { "id": "aa2e6f85cab2ab736c9a9b24", - "title": "Bonfire: Exact Change", + "title": "Exact Change", "difficulty": "4.03", "description": [ "Design a cash register drawer function that accepts purchase price as the first argument, payment as the second argument, and cash-in-drawer (cid) as the third argument.", @@ -143,6 +145,7 @@ "MDNlinks": [ "Global Object" ], + "type": "bonfire", "challengeType": 5, "nameCn": "", "descriptionCn": [], @@ -157,7 +160,7 @@ }, { "id": "a56138aff60341a09ed6c480", - "title": "Bonfire: Inventory Update", + "title": "Inventory Update", "difficulty": "4.04", "description": [ "Compare and update inventory stored in a 2d array against a second 2d array of a fresh delivery. Update current inventory item quantity, and if an item cannot be found, add the new item and quantity into the inventory array in alphabetical order.", @@ -197,6 +200,7 @@ "MDNlinks": [ "Global Array Object" ], + "type": "bonfire", "challengeType": 5, "nameCn": "", "descriptionCn": [], @@ -211,7 +215,7 @@ }, { "id": "a7bf700cd123b9a54eef01d5", - "title": "Bonfire: No repeats please", + "title": "No repeats please", "difficulty": "4.05", "description": [ "Return the number of total permutations of the provided string that don't have repeated consecutive letters.", @@ -238,6 +242,7 @@ "Permutations", "RegExp" ], + "type": "bonfire", "challengeType": 5, "nameCn": "", "descriptionCn": [], @@ -252,7 +257,7 @@ }, { "id": "a19f0fbe1872186acd434d5a", - "title": "Bonfire: Friendly Date Ranges", + "title": "Friendly Date Ranges", "difficulty": "4.06", "description": [ "Implement a way of converting two dates into a more friendly date range that could be presented to a user.", @@ -282,6 +287,7 @@ "String.substr()", "parseInt()" ], + "type": "bonfire", "challengeType": 5, "nameCn": "", "descriptionCn": [], diff --git a/challenges/get-set-for-free-code-camp.json b/challenges/get-set-for-free-code-camp.json index 12763352f88..74a1776d4d1 100644 --- a/challenges/get-set-for-free-code-camp.json +++ b/challenges/get-set-for-free-code-camp.json @@ -4,7 +4,7 @@ "challenges": [ { "id": "bd7124d8c441eddfaeb5bdef", - "title": "Waypoint: Learn how Free Code Camp Works", + "title": "Learn how Free Code Camp Works", "difficulty": 0.01, "challengeSeed": ["125407438"], "description": [ @@ -20,6 +20,7 @@ "We'll provide you with the most rigorous curriculum and the most supportive community on earth. All you need to do sit down, day after day, and put in the hard work.", "Now it's time to join our chat room. Click the \"I've completed this challenge\" button to move on to your next challenge." ], + "type": "waypoint", "challengeType": 2, "tests": [], "nameCn": "", @@ -55,7 +56,7 @@ }, { "id": "bd7125d8c441eddfaeb5bd0f", - "title": "Waypoint: Join Our Chat Room", + "title": "Join Our Chat Room", "difficulty": 0.02, "challengeSeed": ["131574135"], "description": [ @@ -77,6 +78,7 @@ "In order to keep our community a friendly and positive place to learn to code, please read and follow our Code of Conduct: https://github.com/FreeCodeCamp/freecodecamp/wiki/Code-of-Conduct", "Now you're ready to move on. Click the \"I've completed this challenge\" button to move on to your next challenge." ], + "type": "waypoint", "challengeType": 2, "tests": [], "nameCn": "", @@ -116,7 +118,7 @@ }, { "id": "bd7125d8c441eddfaeb5bdff", - "title": "Waypoint: Preview our Challenge Map", + "title": "Preview our Challenge Map", "difficulty": 0.03, "challengeSeed": ["125407437"], "description": [ @@ -126,6 +128,7 @@ "In addition to our Waypoint challenges, like the one you're doing now, we have algorithm practice challenges (Bonfires), front end development challenges (Ziplines) and full stack development challenges (Basejumps). After you finish all of these, you'll start building projects for nonprofits.", "Please note that our open-source curriculum is a work in progress. Our volunteer community is constantly improving it. If you think you've encountered a bug, typo, or something that seems confusing, be sure to click the \"bug\" button to create a GitHub issue." ], + "type": "waypoint", "challengeType": 2, "tests": [], "nameCn": "", @@ -157,7 +160,7 @@ }, { "id": "bd7125d8c441eddfaeb5bd1f", - "title": "Waypoint: Browse our Wiki", + "title": "Browse our Wiki", "difficulty": 0.04, "challengeSeed": ["125407435"], "description": [ @@ -167,6 +170,7 @@ "All of our Wiki articles are contributed by our community. You can update our wiki articles, and even create wiki articles of your own.", "Now you can move on to your next challenge." ], + "type": "waypoint", "challengeType": 2, "tests": [], "nameCn": "", @@ -196,7 +200,7 @@ }, { "id": "bd7125d8c441eddfaeb5bd2f", - "title": "Waypoint: Customize your Portfolio Page", + "title": "Customize your Portfolio Page", "difficulty": 0.05, "challengeSeed": ["125407433"], "description": [ @@ -208,6 +212,7 @@ "Your portfolio page also shows off your progress through Free Code Camp. If you get Brownie Points on several days in a row, you'll get streak.", "Once you're happy with your portfolio page, you can move on to your next challenge." ], + "type": "waypoint", "challengeType": 2, "tests": [], "nameCn": "", @@ -241,7 +246,7 @@ }, { "id": "bd7126d8c441eddfaeb5bd3f", - "title": "Waypoint: Try Camper News", + "title": "Try Camper News", "difficulty": 0.06, "challengeSeed": ["124553410"], "description": [ @@ -254,6 +259,7 @@ "When you submit a link, you'll get a Brownie Point. You'll also get a Brownie Point each time someone upvotes your link.", "Now that you've learned how to use Camper News, let's move on to your next challenge." ], + "type": "waypoint", "challengeType": 2, "tests": [], "nameCn": "", @@ -291,7 +297,7 @@ }, { "id": "bd7126d8c441eddfaeb5bd3e", - "title": "Waypoint: Meet Other Campers in your City", + "title": "Meet Other Campers in your City", "difficulty": 0.07, "challengeSeed": ["127358841"], "description": [ @@ -303,6 +309,7 @@ "Our Campsites allow you to create events, coordinate those events, and share photos from the events afterward.", "Whether you're hosting a study group, pair programming at your local library, or going to a weekend hackathon, your city's Campsite will help you make it happen." ], + "type": "waypoint", "challengeType": 2, "tests": [], "nameCn": "", @@ -338,7 +345,7 @@ }, { "id": "bd7126d8c431eddfaeb5bd3e", - "title": "Waypoint: Add Free Code Camp to your LinkedIn Profile", + "title": "Add Free Code Camp to your LinkedIn Profile", "difficulty": 0.08, "challengeSeed": ["131574134"], "description": [ @@ -353,6 +360,7 @@ "Make your LinkedIn profile as complete as possible. Unlike other social networks, with LinkedIn, it's perfectly fine if you don't want to add a photo.", "Let's keep moving. We're almost ready to start coding!" ], + "type": "waypoint", "challengeType": 2, "tests": [], "nameCn": "", @@ -368,7 +376,7 @@ }, { "id": "bd7137d8c441eddfaeb5bdef", - "title": "Waypoint: Get Help the Hacker Way with RSAP", + "title": "Get Help the Hacker Way with RSAP", "difficulty": 0.09, "challengeSeed": ["125407432"], "description": [ @@ -381,6 +389,7 @@ "Here's our detailed wiki article on getting help: http://freecodecamp.com//github.com/FreeCodeCamp/freecodecamp/wiki/How-to-get-help-when-you-get-stuck.", "Now you have a clear algorithm to follow when you need help! Let's start coding! Move on to your next challenge." ], + "type": "waypoint", "challengeType": 2, "tests": [], "nameCn": "", diff --git a/challenges/git.json b/challenges/git.json index e87eb4bbdfd..3141e651120 100644 --- a/challenges/git.json +++ b/challenges/git.json @@ -4,7 +4,7 @@ "challenges": [ { "id": "bd7353d8c341eddeaeb5bd0f", - "title": "Waypoint: Save your Code Revisions Forever with Git", + "title": "Save your Code Revisions Forever with Git", "difficulty": 0.01, "challengeSeed": ["133316034"], "description": [ @@ -34,6 +34,7 @@ "Complete \"Merge Tada!\"", "Once you've completed these steps, move on to our next challenge." ], + "type": "waypoint", "challengeType": 2, "tests": [], "nameCn": "", diff --git a/challenges/hikes.json b/challenges/hikes.json index 8855b0e6c38..e24da79d852 100644 --- a/challenges/hikes.json +++ b/challenges/hikes.json @@ -4,7 +4,7 @@ "challenges": [ { "id": "bd7128d8c441eddfbeb5bddf", - "title": "Hike: Computer Basics 1: The 4 Basic Parts of a Computer", + "title": "Computer Basics 1: The 4 Basic Parts of a Computer", "difficulty": 9.01, "challengeSeed": [ "132542064" @@ -24,6 +24,7 @@ "You can't get to the memory from the input or the output without the use of the CPU.", "So, just to review, we've got 4 basic parts of the computer: the input, the output, CPU, and memory." ], + "type": "hike", "challengeType": 6, "tests": [ ["The computer has 3 basic parts.", false, "The computer has 4 basic parts: input, output, CPU, and memory"], @@ -43,7 +44,7 @@ }, { "id": "bd7127d8c441eddfbeb5bddf", - "title": "Hike: Computer Basics 2: More Computer Hardware", + "title": "Computer Basics 2: More Computer Hardware", "difficulty": 9.02, "challengeSeed": [ "132542458" @@ -62,6 +63,7 @@ "So let's do a quick review.", "In addition to the four basic parts of input, output, CPU, and memory, we also usually have a motherboard, expansion cards, and a power supply." ], + "type": "hike", "challengeType": 6, "tests": [ ["The power supply isn't a necessary part of a computer since it's not one of the 4 main parts.", false, "The computer needs power!"], @@ -81,7 +83,7 @@ }, { "id": "bd7126d8c441eddfbeb5bddf", - "title": "Hike: Computer Basics 3: Intro to Binary Code", + "title": "Computer Basics 3: Intro to Binary Code", "difficulty": 9.03, "challengeSeed": [ "132542757" @@ -95,6 +97,7 @@ "We're going to go into how you decode a number in binary, but as you can probably guess, translating binary can be done with a quick google search.", "The most important part of this is you undrestand the concept that even simple things like 1's and 0's can translate into something really complex that is the basis for all of the computer languages that exist today." ], + "type": "hike", "challengeType": 6, "tests": [ ["1's and 0's are how we talk about little switches being on and off.", true], @@ -114,7 +117,7 @@ }, { "id": "bd7125d8c441eddfbeb5bddf", - "title": "Hike: Computer Basics 4: Decoding a Binary Number", + "title": "Computer Basics 4: Decoding a Binary Number", "difficulty": 9.04, "challengeSeed": [ "132543332" @@ -130,6 +133,7 @@ "If it's a 0, we disregard it.", "In this video, our number adds up to 75." ], + "type": "hike", "challengeType": 6, "tests": [ ["1 === on and 0 ===off", true], @@ -149,7 +153,7 @@ }, { "id": "bd7124d8c441eddfbeb5bddf", - "title": "Hike: Computer Basics 5: How To Measure Data Size", + "title": "Computer Basics 5: How To Measure Data Size", "difficulty": 9.05, "challengeSeed": [ "132543959" @@ -168,6 +172,7 @@ "Then it's Gigabyte, 1024 Bytes to the power of three; Terabyte, 1024 Bytes to the power of 4, and Petabyte, 1024 to the power of 5.", "These get much bigger really quickly!" ], + "type": "hike", "challengeType": 6, "tests": [ ["A Byte is the smallest possible amount of data.", false, "A Byte is 8 bits."], @@ -187,7 +192,7 @@ }, { "id": "bd7123d8c441eddfbeb5bddf", - "title": "Hike: Computer Basics 6: Measuring Data Speed", + "title": "Computer Basics 6: Measuring Data Speed", "difficulty": 9.06, "challengeSeed": [ "132545171" @@ -205,6 +210,7 @@ "The main takeaway here is that speed is usually measured in bits and size is measured in Bytes.", "Additionally, if you have an internet speed that says however many bits per second, keep in mind they are talking about something 8 times less than Bytes, how you are thinking about data." ], + "type": "hike", "challengeType": 6, "tests": [ ["Data speed is measured in bits.", true], @@ -223,7 +229,7 @@ }, { "id": "bd7122d8c441eddfbeb5bddf", - "title": "Hike: Computer Basics 7: Binary Bytes", + "title": "Computer Basics 7: Binary Bytes", "difficulty": 9.07, "challengeSeed": [ "132545417" @@ -237,6 +243,7 @@ "So, all of the numbers, letters, and symbols in your javascript can be translated.", "There are a lot of languages that computers can work with, and what I want you to get away from this video is that all data in your computer boils down to binary Bytes." ], + "type": "hike", "challengeType": 6, "tests": [ ["All digits, letters, and symbols have a binary Byte translation.", true], @@ -256,7 +263,7 @@ }, { "id": "bd7121d8c441eddfbeb5bddf", - "title": "Hike: Computer Basics 8: Types of Computers", + "title": "Computer Basics 8: Types of Computers", "difficulty": 9.08, "challengeSeed": [ "132546182" @@ -275,6 +282,7 @@ "It's both a Mac and a PC.", "The last type of computer we'll talk about is a microcontroller, the type of computer you might have in your car that is really good at a small specialized task, but wouldn't be used the same way a PC would be." ], + "type": "hike", "challengeType": 6, "tests": [ ["The most common type of computer is a Personal Computer, a PC.", true], @@ -294,7 +302,7 @@ }, { "id": "bd7120d8c441eddfbeb5bddf", - "title": "Hike: Computer Basics 9: More on the Motherboard", + "title": "Computer Basics 9: More on the Motherboard", "difficulty": 9.09, "challengeSeed": [ "132547285" @@ -315,6 +323,7 @@ "On your computer, you probably know there's a place to connect USB, firewire, SD card, ethernet, even an audio plug-in to listen through headphones.", "These are all considered ports, a place on the motherboard where you can connect the CPU to some outside source to either get or give information." ], + "type": "hike", "challengeType": 6, "tests": [ ["A motherboard must connect the CPU, the memory, and the network.", false, "A motherboard is a motherboard as long as it connects the CPU and the memory."], @@ -334,7 +343,7 @@ }, { "id": "bd712fd8c441eddfbeb5bddf", - "title": "Hike: Computer Basics 10: Data Networks", + "title": "Computer Basics 10: Data Networks", "difficulty": 9.10, "challengeSeed": [ "132547590" @@ -354,6 +363,7 @@ "You might think that these are connected over the internet, and in the case of a VPN (Virtual Private Network, which is basically the same conceptionally as a WAN), you're right.", "However, a WAN usually rents a cable from an internet company to creat the connection." ], + "type": "hike", "challengeType": 6, "tests": [ ["You can connect to a LAN from far away.", false, "To connect to a LAN you must be physically near to it."], @@ -373,7 +383,7 @@ }, { "id": "bd712ed8c441eddfbeb5bddf", - "title": "Hike: Computer Basics 11: IP Addresses", + "title": "Computer Basics 11: IP Addresses", "difficulty": 9.11, "challengeSeed": [ "132548071" @@ -393,6 +403,7 @@ "However, it is specific enough that you could google \"Where's the best ice cream near me\" and google could give you information close to your location.", "This is done using your IP address." ], + "type": "hike", "challengeType": 6, "tests": [ ["IP addresses are necessary to use and participate in the internet.", true], @@ -411,7 +422,7 @@ }, { "id": "bd712dd8c441eddfbeb5bddf", - "title": "Hike: Computer Basics 12: How the Internet Works", + "title": "Computer Basics 12: How the Internet Works", "difficulty": 9.12, "challengeSeed": [ "132548579" @@ -431,6 +442,7 @@ "Now, this explaination is really quite basic.", "For more information, check out web.stanford.edu/class/msande91si/www-spr04/readings/week1/InternetWhitepaper.htm." ], + "type": "hike", "challengeType": 6, "tests": [ ["Your computer sends a request for information.", true], @@ -449,7 +461,7 @@ }, { "id": "bd712cd8c441eddfbeb5bddf", - "title": "Hike: Computer Basics 13: Software", + "title": "Computer Basics 13: Software", "difficulty": 9.13, "challengeSeed": [ "132548908" @@ -464,6 +476,7 @@ "There are three main operating systems: Windows, Mac, and Linux.", "Applications comprise all other software, like your web browser, games, things like Photoshop, how you view your mail, editing documents, etc." ], + "type": "hike", "challengeType": 6, "tests": [ ["Safari, Chrome, and Firefox are all examples of application software.", true] @@ -481,7 +494,7 @@ }, { "id": "bd712bd8c441eddfbeb5bddf", - "title": "Hike: What Do Programmers Do?", + "title": "What Do Programmers Do?", "difficulty": 9.14, "challengeSeed": [ "133166912" @@ -498,6 +511,7 @@ "Computers just read straight down like you would read a book.", "Programmers are the ones responsible for breaking their ideas down into the little tiny steps and writing them in a way that computers can understand them." ], + "type": "hike", "challengeType": 6, "tests": [ ["Computers look at code one line at a time", true], @@ -517,7 +531,7 @@ }, { "id": "bd712ad8c441eddfbeb5bddf", - "title": "Hike: Console and Logging", + "title": "Console and Logging", "difficulty": 9.15, "challengeSeed": [ "133170880" @@ -535,6 +549,7 @@ "This will also work with numbers and booleans, which are true/false statements.", "When consoling words, it's important to put it inside of quotations so it recognizes it's a string." ], + "type": "hike", "challengeType": 6, "tests": [ ["The console serves only small, unnecessary purposes.", false, "The console's main purpose is to debug, which is a vital step in creating code."], @@ -553,7 +568,7 @@ }, { "id": "bd7119d8c441eddfbeb5bddf", - "title": "Hike: Variables In Code", + "title": "Variables In Code", "difficulty": 9.16, "challengeSeed": [ "133172920" @@ -567,6 +582,7 @@ "But be careful - if we put console.log(\"x\"), with the x in quotation marks, it will output the letter \"x\".", "What I want you to take away from this video is that variables exist in code, and you can store everything from a simple string all the way up to a function, all within a simple name." ], + "type": "hike", "challengeType": 6, "tests": [ ["Variables are useful in coding languages like JavaScript.", true], @@ -585,7 +601,7 @@ }, { "id": "bd7029d8c441eddfbeb5bddf", - "title": "Hike: Source Code", + "title": "Source Code", "difficulty": 9.17, "challengeSeed": [ "133177129" @@ -610,6 +626,7 @@ "It's a great way for websites and software to grow in a strong and fast way because of the community working together to improve it.", "One unwritten rule of contributing to open source projects is that you should generally submit your improvements to also be open source, and by giving that improvement back to the public, you let others use your improvement as well." ], + "type": "hike", "challengeType": 6, "tests": [ ["Source code is a text document.", true], @@ -629,7 +646,7 @@ }, { "id": "bd7129d8b441eddfbeb5bddf", - "title": "Hike: Routers and Packets", + "title": "Routers and Packets", "difficulty": 9.18, "challengeSeed": [ "133181251" @@ -660,6 +677,7 @@ "They can take whichever route is open, whichever is fastest, and since they have the end IP address, all of the routers know where to send them.", "Once they get to the end destination, that computer knows how to put all of the information back together." ], + "type": "hike", "challengeType": 6, "tests": [ ["Routers have to know the whole internet.", false, "Routers just have to know the stops around them to send information in the right direction."], @@ -679,7 +697,7 @@ }, { "id": "bd7129d8a441eddfbeb5bddf", - "title": "Hike: Hardware: Chips and Moore's Law", + "title": "Hardware: Chips and Moore's Law", "difficulty": 9.19, "challengeSeed": [ "133182057" @@ -696,6 +714,7 @@ "Moore's Law is the observation that the amount of transistors fit on each chip has doubled every two years since 1965.", "This is important because it's making technology more affordable and accessible." ], + "type": "hike", "challengeType": 6, "tests": [ ["Chips have transistors, little switches that can store a 1 or a 0.", true], @@ -715,7 +734,7 @@ }, { "id": "bd7129d80441eddfbeb5bddf", - "title": "Hike: Analog vs Digital and File Compression", + "title": "Analog vs Digital and File Compression", "difficulty": 9.20, "challengeSeed": [ "133182587" @@ -735,6 +754,7 @@ "In images, it's done by measuring groups of pixels by 16 instead of individually.", "The takeaway from this video is that you'll want to use digital files as they're a higher quality, and when you're looking at compression, you want to decide how far you are willing to go to ensure the user still has the best possible experience." ], + "type": "hike", "challengeType": 6, "tests": [ ["Digital files can be made from analog sounds and analog sounds can be made from digital files.", true], @@ -753,7 +773,7 @@ }, { "id": "bd7129d89441eddfbeb5bddf", - "title": "Hike: Computer Security", + "title": "Computer Security", "difficulty": 9.21, "challengeSeed": [ "133186284" @@ -787,6 +807,7 @@ "Those bugs have been patched in newer versions, so if you keep everything updated, you'll avoid lots of problems.", "These are all very basic things you should know about how to keep your information safe on your computer." ], + "type": "hike", "challengeType": 6, "tests": [ ["Passwords should be shared with all of your accounts.", false, "Don't reuse important passwords"], diff --git a/challenges/html5-and-css.json b/challenges/html5-and-css.json index 77df5f408aa..2ceadb93220 100644 --- a/challenges/html5-and-css.json +++ b/challenges/html5-and-css.json @@ -4,7 +4,7 @@ "challenges": [ { "id": "bd7123c8c441eddfaeb5bdef", - "title": "Waypoint: Say Hello to HTML Elements", + "title": "Say Hello to HTML Elements", "difficulty": 1.01, "description": [ "Welcome to Free Code Camp's first coding challenge!", @@ -20,6 +20,7 @@ "challengeSeed": [ "

Hello

" ], + "type": "waypoint", "challengeType": 0, "nameCn": "", "descriptionCn": [], @@ -52,7 +53,7 @@ }, { "id": "bad87fee1348bd9aedf0887a", - "title": "Waypoint: Headline with the h2 Element", + "title": "Headline with the h2 Element", "difficulty": 1.02, "description": [ "Add an h2 tag that says \"CatPhotoApp\" to create a second HTML element below your \"Hello World\" h1 element.", @@ -69,6 +70,7 @@ "challengeSeed": [ "

Hello World

" ], + "type": "waypoint", "challengeType": 0, "nameCn": "", "descriptionCn": [], @@ -95,7 +97,7 @@ }, { "id": "bad87fee1348bd9aedf08801", - "title": "Waypoint: Inform with the Paragraph Element", + "title": "Inform with the Paragraph Element", "difficulty": 1.03, "description": [ "Create a p element below your h2 element, and give it the text \"Hello Paragraph\".", @@ -111,6 +113,7 @@ "

Hello World

", "

CatPhotoApp

" ], + "type": "waypoint", "challengeType": 0, "nameCn": "", "descriptionCn": [], @@ -135,7 +138,7 @@ }, { "id": "bad87fee1348bd9aedf08802", - "title": "Waypoint: Uncomment HTML", + "title": "Uncomment HTML", "difficulty": 1.04, "description": [ "Uncomment your h1, h2 and p elements.", @@ -158,6 +161,7 @@ "

Hello Paragraph

", "-->" ], + "type": "waypoint", "challengeType": 0, "nameCn": "", "descriptionCn": [], @@ -184,7 +188,7 @@ }, { "id": "bad87fee1348bd9aedf08804", - "title": "Waypoint: Comment out HTML", + "title": "Comment out HTML", "difficulty": 1.05, "description": [ "Comment out your h1 element and your p element, but leave your h2 element uncommented.", @@ -206,6 +210,7 @@ "

Hello Paragraph

", "-->" ], + "type": "waypoint", "challengeType": 0, "nameCn": "", "descriptionCn": [], @@ -230,7 +235,7 @@ }, { "id": "bad87fee1348bd9aedf08833", - "title": "Waypoint: Fill in the Blank with Placeholder Text", + "title": "Fill in the Blank with Placeholder Text", "difficulty": 1.06, "description": [ "Web developers traditionally use \"Lorem Ipsum\" text as placeholder text. It's called \"Lorem Ipsum\" text because those are the first two words of a famous passage by Cicero of Ancient Rome.", @@ -248,6 +253,7 @@ "", "

Hello Paragraph

" ], + "type": "waypoint", "challengeType": 0, "nameCn": "", "descriptionCn": [], @@ -276,7 +282,7 @@ }, { "id": "bad87fed1348bd9aedf08833", - "title": "Waypoint: Delete HTML Elements", + "title": "Delete HTML Elements", "difficulty": 1.07, "description": [ "Delete your h1 element so we can simplify our view.", @@ -295,6 +301,7 @@ "", "

Kitty ipsum dolor sit amet, shed everywhere shed everywhere stretching attack your ankles chase the red dot, hairball run catnip eat the grass sniff.

" ], + "type": "waypoint", "challengeType": 0, "nameCn": "", "descriptionCn": [], @@ -319,7 +326,7 @@ }, { "id": "bad87fee1348bd9aedf08803", - "title": "Waypoint: Change the Color of Text", + "title": "Change the Color of Text", "difficulty": 1.08, "description": [ "Change your h2 element's style so that its text color is red.", @@ -335,6 +342,7 @@ "", "

Kitty ipsum dolor sit amet, shed everywhere shed everywhere stretching attack your ankles chase the red dot, hairball run catnip eat the grass sniff.

" ], + "type": "waypoint", "challengeType": 0, "nameCn": "", "descriptionCn": [], @@ -360,7 +368,7 @@ }, { "id": "bad87fee1348bd9aedf08805", - "title": "Waypoint: Use CSS Selectors to Style Elements", + "title": "Use CSS Selectors to Style Elements", "difficulty": 1.09, "description": [ "Delete your h2 element's style attribute and instead create a CSS style element. Add the necessary CSS to turn all h2 elements blue.", @@ -382,6 +390,7 @@ "", "

Kitty ipsum dolor sit amet, shed everywhere shed everywhere stretching attack your ankles chase the red dot, hairball run catnip eat the grass sniff.

" ], + "type": "waypoint", "challengeType": 0, "nameCn": "", "descriptionCn": [], @@ -414,7 +423,7 @@ }, { "id": "bad87fee1348bd9aecf08806", - "title": "Waypoint: Use a CSS Class to Style an Element", + "title": "Use a CSS Class to Style an Element", "difficulty": 1.11, "description": [ "Create a CSS class called \"red-text\" and apply it to your h2 element.", @@ -442,6 +451,7 @@ "", "

Kitty ipsum dolor sit amet, shed everywhere shed everywhere stretching attack your ankles chase the red dot, hairball run catnip eat the grass sniff.

" ], + "type": "waypoint", "challengeType": 0, "nameCn": "", "descriptionCn": [], @@ -467,7 +477,7 @@ }, { "id": "bad87fee1348bd9aefe08806", - "title": "Waypoint: Style Multiple Elements with a CSS Class", + "title": "Style Multiple Elements with a CSS Class", "difficulty": 1.12, "description": [ "Apply the \"red-text\" class to your h2 and p elements.", @@ -491,6 +501,7 @@ "", "

Kitty ipsum dolor sit amet, shed everywhere shed everywhere stretching attack your ankles chase the red dot, hairball run catnip eat the grass sniff.

" ], + "type": "waypoint", "challengeType": 0, "nameCn": "", "descriptionCn": [], @@ -511,7 +522,7 @@ }, { "id": "bad87fee1348bd9aedf08806", - "title": "Waypoint: Change the Font Size of an Element", + "title": "Change the Font Size of an Element", "difficulty": 1.13, "description": [ "Create a second p element with the following Kitty Ipsum text: Purr jump eat the grass rip the couch scratched sunbathe, shed everywhere rip the couch sleep in the sink fluffy fur catnip scratched.", @@ -536,6 +547,7 @@ "", "

Kitty ipsum dolor sit amet, shed everywhere shed everywhere stretching attack your ankles chase the red dot, hairball run catnip eat the grass sniff.

" ], + "type": "waypoint", "challengeType": 0, "nameCn": "", "descriptionCn": [], @@ -557,7 +569,7 @@ }, { "id": "bad87fee1348bd9aede08807", - "title": "Waypoint: Set the Font Family of an Element", + "title": "Set the Font Family of an Element", "difficulty": 1.14, "description": [ "Make all of your p elements use the \"Monospace\" font.", @@ -583,6 +595,7 @@ "

Kitty ipsum dolor sit amet, shed everywhere shed everywhere stretching attack your ankles chase the red dot, hairball run catnip eat the grass sniff.

", "

Purr jump eat the grass rip the couch scratched sunbathe, shed everywhere rip the couch sleep in the sink fluffy fur catnip scratched.

" ], + "type": "waypoint", "challengeType": 0, "nameCn": "", "descriptionCn": [], @@ -603,7 +616,7 @@ }, { "id": "bad87fee1348bd9aedf08807", - "title": "Waypoint: Import a Google Font", + "title": "Import a Google Font", "difficulty": 1.15, "description": [ "Apply the font-family of \"Lobster\" to your h2 element.", @@ -634,6 +647,7 @@ "

Kitty ipsum dolor sit amet, shed everywhere shed everywhere stretching attack your ankles chase the red dot, hairball run catnip eat the grass sniff.

", "

Purr jump eat the grass rip the couch scratched sunbathe, shed everywhere rip the couch sleep in the sink fluffy fur catnip scratched.

" ], + "type": "waypoint", "challengeType": 0, "nameCn": "", "descriptionCn": [], @@ -656,7 +670,7 @@ }, { "id": "bad87fee1348bd9aedf08808", - "title": "Waypoint: Specify How Fonts Should Degrade", + "title": "Specify How Fonts Should Degrade", "difficulty": 1.16, "description": [ "There are several default fonts that are available in all browsers. These include \"Monospace\", \"Serif\" and \"Sans-Serif\". Leave \"Lobster\" as the font-family for your h2 elements. Make them \"degrade\" to \"Monospace\" when \"Lobster\" isn't available.", @@ -691,6 +705,7 @@ "

Kitty ipsum dolor sit amet, shed everywhere shed everywhere stretching attack your ankles chase the red dot, hairball run catnip eat the grass sniff.

", "

Purr jump eat the grass rip the couch scratched sunbathe, shed everywhere rip the couch sleep in the sink fluffy fur catnip scratched.

" ], + "type": "waypoint", "challengeType": 0, "nameCn": "", "descriptionCn": [], @@ -713,7 +728,7 @@ }, { "id": "bad87fee1348bd9aedf08812", - "title": "Waypoint: Add Images to your Website", + "title": "Add Images to your Website", "difficulty": 1.17, "description": [ "You can add images to your website by using the img element, and point to an specific image's URL using the src attribute.", @@ -746,6 +761,7 @@ "

Kitty ipsum dolor sit amet, shed everywhere shed everywhere stretching attack your ankles chase the red dot, hairball run catnip eat the grass sniff.

", "

Purr jump eat the grass rip the couch scratched sunbathe, shed everywhere rip the couch sleep in the sink fluffy fur catnip scratched.

" ], + "type": "waypoint", "challengeType": 0, "nameCn": "", "descriptionCn": [], @@ -767,7 +783,7 @@ }, { "id": "bad87fee1348bd9acdf08812", - "title": "Waypoint: Size your Images", + "title": "Size your Images", "difficulty": 1.18, "description": [ "CSS has an attribute called width that controls an element's width. Just like with fonts, we'll use pixels(px) to specify the image's width.", @@ -802,6 +818,7 @@ "

Kitty ipsum dolor sit amet, shed everywhere shed everywhere stretching attack your ankles chase the red dot, hairball run catnip eat the grass sniff.

", "

Purr jump eat the grass rip the couch scratched sunbathe, shed everywhere rip the couch sleep in the sink fluffy fur catnip scratched.

" ], + "type": "waypoint", "challengeType": 0, "nameCn": "", "descriptionCn": [], @@ -822,7 +839,7 @@ }, { "id": "bad87fee1348bd9bedf08813", - "title": "Waypoint: Add Borders Around your Elements", + "title": "Add Borders Around your Elements", "difficulty": 1.19, "description": [ "CSS borders have attributes like style, color and width.", @@ -864,6 +881,7 @@ "

Kitty ipsum dolor sit amet, shed everywhere shed everywhere stretching attack your ankles chase the red dot, hairball run catnip eat the grass sniff.

", "

Purr jump eat the grass rip the couch scratched sunbathe, shed everywhere rip the couch sleep in the sink fluffy fur catnip scratched.

" ], + "type": "waypoint", "challengeType": 0, "nameCn": "", "descriptionCn": [], @@ -884,7 +902,7 @@ }, { "id": "bad87fee1348bd9aedf08814", - "title": "Waypoint: Add Rounded Corners with a Border Radius", + "title": "Add Rounded Corners with a Border Radius", "difficulty": 1.20, "description": [ "Your cat photo currently has sharp corners. We can round out those corners with a CSS attribute called border-radius.", @@ -929,6 +947,7 @@ "

Kitty ipsum dolor sit amet, shed everywhere shed everywhere stretching attack your ankles chase the red dot, hairball run catnip eat the grass sniff.

", "

Purr jump eat the grass rip the couch scratched sunbathe, shed everywhere rip the couch sleep in the sink fluffy fur catnip scratched.

" ], + "type": "waypoint", "challengeType": 0, "nameCn": "", "descriptionCn": [], @@ -949,7 +968,7 @@ }, { "id": "bad87fee1348bd9aedf08815", - "title": "Waypoint: Make Circular Images with a Border Radius", + "title": "Make Circular Images with a Border Radius", "difficulty": 1.21, "description": [ "In addition to pixels, you can also specify a border-radius using a percentage.", @@ -994,6 +1013,7 @@ "

Kitty ipsum dolor sit amet, shed everywhere shed everywhere stretching attack your ankles chase the red dot, hairball run catnip eat the grass sniff.

", "

Purr jump eat the grass rip the couch scratched sunbathe, shed everywhere rip the couch sleep in the sink fluffy fur catnip scratched.

" ], + "type": "waypoint", "challengeType": 0, "nameCn": "", "descriptionCn": [], @@ -1013,7 +1033,7 @@ }, { "id": "bad87fee1348bd9aedf08816", - "title": "Waypoint: Link to External Pages with Anchor Elements", + "title": "Link to External Pages with Anchor Elements", "difficulty": 1.22, "description": [ "a elements or \"anchor\" elements, are used to link to content outside of the current page.", @@ -1062,6 +1082,7 @@ "

Kitty ipsum dolor sit amet, shed everywhere shed everywhere stretching attack your ankles chase the red dot, hairball run catnip eat the grass sniff.

", "

Purr jump eat the grass rip the couch scratched sunbathe, shed everywhere rip the couch sleep in the sink fluffy fur catnip scratched.

" ], + "type": "waypoint", "challengeType": 0, "nameCn": "", "descriptionCn": [], @@ -1083,7 +1104,7 @@ }, { "id": "bad87fee1348bd9aede08817", - "title": "Waypoint: Nest an Anchor Element within a Paragraph", + "title": "Nest an Anchor Element within a Paragraph", "difficulty": 1.23, "description": [ "Again, here's a diagram of an a element for your reference:", @@ -1138,6 +1159,7 @@ "

Kitty ipsum dolor sit amet, shed everywhere shed everywhere stretching attack your ankles chase the red dot, hairball run catnip eat the grass sniff.

", "

Purr jump eat the grass rip the couch scratched sunbathe, shed everywhere rip the couch sleep in the sink fluffy fur catnip scratched.

" ], + "type": "waypoint", "challengeType": 0, "nameCn": "", "descriptionCn": [], @@ -1158,7 +1180,7 @@ }, { "id": "bad87fee1348bd9aedf08817", - "title": "Waypoint: Make Dead Links using the Hash Symbol", + "title": "Make Dead Links using the Hash Symbol", "difficulty": 1.24, "description": [ "Sometimes you want to add a elements to your website before you know where they will link.", @@ -1205,6 +1227,7 @@ "

Kitty ipsum dolor sit amet, shed everywhere shed everywhere stretching attack your ankles chase the red dot, hairball run catnip eat the grass sniff.

", "

Purr jump eat the grass rip the couch scratched sunbathe, shed everywhere rip the couch sleep in the sink fluffy fur catnip scratched.

" ], + "type": "waypoint", "challengeType": 0, "nameCn": "", "descriptionCn": [], @@ -1226,7 +1249,7 @@ }, { "id": "bad87fee1348bd9aedf08820", - "title": "Waypoint: Turn an Image into a Link", + "title": "Turn an Image into a Link", "difficulty": 1.25, "description": [ "You can make elements into links by nesting them within an a element.", @@ -1276,6 +1299,7 @@ "

Kitty ipsum dolor sit amet, shed everywhere shed everywhere stretching attack your ankles chase the red dot, hairball run catnip eat the grass sniff.

", "

Purr jump eat the grass rip the couch scratched sunbathe, shed everywhere rip the couch sleep in the sink fluffy fur catnip scratched.

" ], + "type": "waypoint", "challengeType": 0, "nameCn": "", "descriptionCn": [], @@ -1298,7 +1322,7 @@ }, { "id": "bad87fee1348bd9aedf08818", - "title": "Waypoint: Add Alt Text to an Image for Accessibility", + "title": "Add Alt Text to an Image for Accessibility", "difficulty": 1.26, "description": [ "alt attributes, also known as \"alt text\", are what browsers will display if they fail to load the image. alt attributes are also important for blind or visually impaired users to understand what an image portrays. And search engines also look at alt attributes.", @@ -1346,6 +1370,7 @@ "

Kitty ipsum dolor sit amet, shed everywhere shed everywhere stretching attack your ankles chase the red dot, hairball run catnip eat the grass sniff.

", "

Purr jump eat the grass rip the couch scratched sunbathe, shed everywhere rip the couch sleep in the sink fluffy fur catnip scratched.

" ], + "type": "waypoint", "challengeType": 0, "nameCn": "", "descriptionCn": [], @@ -1368,7 +1393,7 @@ }, { "id": "bad87fee1348bd9aedf08827", - "title": "Waypoint: Create a Bulleted Unordered List", + "title": "Create a Bulleted Unordered List", "difficulty": 1.27, "description": [ "HTML has a special element for creating unordered lists, or bullet point-style lists.", @@ -1424,6 +1449,7 @@ "

Kitty ipsum dolor sit amet, shed everywhere shed everywhere stretching attack your ankles chase the red dot, hairball run catnip eat the grass sniff.

", "

Purr jump eat the grass rip the couch scratched sunbathe, shed everywhere rip the couch sleep in the sink fluffy fur catnip scratched.

" ], + "type": "waypoint", "challengeType": 0, "nameCn": "", "descriptionCn": [], @@ -1445,7 +1471,7 @@ }, { "id": "bad87fee1348bd9aedf08828", - "title": "Waypoint: Create an Ordered List", + "title": "Create an Ordered List", "difficulty": 1.28, "description": [ "HTML has a special element for creating ordered lists, or numbered-style lists.", @@ -1504,6 +1530,7 @@ "", "

Top 3 things cats hate:

" ], + "type": "waypoint", "challengeType": 0, "nameCn": "", "descriptionCn": [], @@ -1525,7 +1552,7 @@ }, { "id": "bad87fee1348bd9aedf08829", - "title": "Waypoint: Create a Text Field", + "title": "Create a Text Field", "difficulty": 1.29, "description": [ "Now let's create a web form.", @@ -1583,6 +1610,7 @@ "
  • other cats
  • ", "" ], + "type": "waypoint", "challengeType": 0, "nameCn": "", "descriptionCn": [], @@ -1603,7 +1631,7 @@ }, { "id": "bad87fee1348bd9aedf08830", - "title": "Waypoint: Add Placeholder Text to a Text Field", + "title": "Add Placeholder Text to a Text Field", "difficulty": 1.30, "description": [ "Your placeholder text is what appears in your text input before your user has inputed anything.", @@ -1662,6 +1690,7 @@ "", "" ], + "type": "waypoint", "challengeType": 0, "nameCn": "", "descriptionCn": [], @@ -1682,7 +1711,7 @@ }, { "id": "bad87fee1348bd9aede08830", - "title": "Waypoint: Create a Form Element", + "title": "Create a Form Element", "difficulty": 1.31, "description": [ "You can build web forms that actually submit data to a server using nothing more than pure HTML. You can do this by specifying an action on your form element.", @@ -1743,6 +1772,7 @@ "", "" ], + "type": "waypoint", "challengeType": 0, "nameCn": "", "descriptionCn": [], @@ -1763,7 +1793,7 @@ }, { "id": "bad87fee1348bd9aedd08830", - "title": "Waypoint: Add a Submit Button to a Form", + "title": "Add a Submit Button to a Form", "difficulty": 1.32, "description": [ "Let's add a submit button to your form. Clicking this button will send the data from your form to the URL you specified with your form's action attribute.", @@ -1826,6 +1856,7 @@ " ", "" ], + "type": "waypoint", "challengeType": 0, "nameCn": "", "descriptionCn": [], @@ -1846,7 +1877,7 @@ }, { "id": "bad87fee1348bd9aedc08830", - "title": "Waypoint: Use HTML5 to Require a Field", + "title": "Use HTML5 to Require a Field", "difficulty": 1.33, "description": [ "You can require specific form fields so that your user will not be able to submit your form until he or she has filled them out.", @@ -1907,6 +1938,7 @@ " ", "" ], + "type": "waypoint", "challengeType": 0, "nameCn": "", "descriptionCn": [], @@ -1927,7 +1959,7 @@ }, { "id": "bad87fee1348bd9aedf08834", - "title": "Waypoint: Create a Set of Radio Buttons", + "title": "Create a Set of Radio Buttons", "difficulty": 1.34, "description": [ "You can use \"radio buttons\" for questions where you want the user to only give you one answer.", @@ -1996,6 +2028,7 @@ " ", "" ], + "type": "waypoint", "challengeType": 0, "nameCn": "", "descriptionCn": [], @@ -2019,7 +2052,7 @@ }, { "id": "bad87fee1348bd9aedf08835", - "title": "Waypoint: Create a Set of Checkboxes", + "title": "Create a Set of Checkboxes", "difficulty": 1.35, "description": [ "Forms commonly use \"checkboxes\" for questions that may have more than one answer.", @@ -2088,6 +2121,7 @@ " ", "" ], + "type": "waypoint", "challengeType": 0, "nameCn": "", "descriptionCn": [], @@ -2108,7 +2142,7 @@ }, { "id": "bad87fee1348bd9aedd08835", - "title": "Waypoint: Check Radio Buttons and Checkboxes by Default", + "title": "Check Radio Buttons and Checkboxes by Default", "difficulty": 1.37, "description": [ "You can set a checkbox or radio button to be checked by default using the checked attribute.", @@ -2175,6 +2209,7 @@ " ", "" ], + "type": "waypoint", "challengeType": 0, "nameCn": "", "descriptionCn": [], @@ -2195,7 +2230,7 @@ }, { "id": "bad87fee1348bd9aede08835", - "title": "Waypoint: Nest Many Elements within a Single Div Element", + "title": "Nest Many Elements within a Single Div Element", "difficulty": 1.38, "description": [ "The div element, or \"Division\" element, is a general purpose container for other elements.", @@ -2267,6 +2302,7 @@ " ", "" ], + "type": "waypoint", "challengeType": 0, "nameCn": "", "descriptionCn": [], @@ -2289,7 +2325,7 @@ }, { "id": "bad87fed1348bd9aede07836", - "title": "Waypoint: Give a Background Color to a Div Element", + "title": "Give a Background Color to a Div Element", "difficulty": 1.39, "description": [ "You can set an element's background color with the \"background-color\" attribute.", @@ -2359,6 +2395,7 @@ " ", "" ], + "type": "waypoint", "challengeType": 0, "nameCn": "", "descriptionCn": [], @@ -2375,7 +2412,7 @@ }, { "id": "bad87eee1348bd9aede07836", - "title": "Waypoint: Set the ID of an Element", + "title": "Set the ID of an Element", "difficulty": 1.391, "description": [ "In addition to classes, each HTML element can also have an id attribute.", @@ -2446,6 +2483,7 @@ " ", "" ], + "type": "waypoint", "challengeType": 0, "nameCn": "", "descriptionCn": [], @@ -2462,7 +2500,7 @@ }, { "id": "bad87dee1348bd9aede07836", - "title": "Waypoint: Use an ID Attribute to Style an Element", + "title": "Use an ID Attribute to Style an Element", "difficulty": 1.392, "description": [ "One cool thing about id attributes is that, like classes, you can style them using CSS.", @@ -2535,6 +2573,7 @@ " ", "" ], + "type": "waypoint", "challengeType": 0, "nameCn": "", "descriptionCn": [], @@ -2551,7 +2590,7 @@ }, { "id": "bad88fee1348bd9aedf08825", - "title": "Waypoint: Adjusting the Padding of an Element", + "title": "Adjusting the Padding of an Element", "difficulty": 1.40, "description": [ "You may have already noticed this, but all HTML elements are essentially little rectangles.", @@ -2600,6 +2639,7 @@ "
    padding
    ", "" ], + "type": "waypoint", "challengeType": 0, "nameCn": "", "descriptionCn": [], @@ -2621,7 +2661,7 @@ }, { "id": "bad87fee1348bd9aedf08822", - "title": "Waypoint: Adjust the Margin of an Element", + "title": "Adjust the Margin of an Element", "difficulty": 1.41, "description": [ "An element's margin controls the amount of space between an element's border and surrounding elements.", @@ -2670,6 +2710,7 @@ "
    padding
    ", "" ], + "type": "waypoint", "challengeType": 0, "nameCn": "", "descriptionCn": [], @@ -2691,7 +2732,7 @@ }, { "id": "bad87fee1348bd9aedf08823", - "title": "Waypoint: Add a Negative Margin to an Element", + "title": "Add a Negative Margin to an Element", "difficulty": 1.42, "description": [ "An element's margin controls the amount of space between an element's border and surrounding elements.", @@ -2739,6 +2780,7 @@ "
    padding
    ", "" ], + "type": "waypoint", "challengeType": 0, "nameCn": "", "descriptionCn": [], @@ -2760,7 +2802,7 @@ }, { "id": "bad87fee1348bd9aedf08824", - "title": "Waypoint: Add Different Padding to Each Side of an Element", + "title": "Add Different Padding to Each Side of an Element", "difficulty": 1.43, "description": [ "Sometimes you will want to customize an element so that it has different padding on each of its sides.", @@ -2811,6 +2853,7 @@ "
    padding
    ", "" ], + "type": "waypoint", "challengeType": 0, "nameCn": "", "descriptionCn": [], @@ -2831,7 +2874,7 @@ }, { "id": "bad87fee1248bd9aedf08824", - "title": "Waypoint: Add Different Margins to Each Side of an Element", + "title": "Add Different Margins to Each Side of an Element", "difficulty": 1.44, "description": [ "Give the green box a margin of 40 pixels on its top and left side, but only 20 pixels on its bottom and right side.", @@ -2882,6 +2925,7 @@ "
    padding
    ", "" ], + "type": "waypoint", "challengeType": 0, "nameCn": "", "descriptionCn": [], @@ -2901,7 +2945,7 @@ }, { "id": "bad87fee1348bd9aedf08826", - "title": "Waypoint: Use Clockwise Notation to Specify the Padding of an Element", + "title": "Use Clockwise Notation to Specify the Padding of an Element", "difficulty": 1.44, "description": [ "Instead of specifying an element's padding-top, padding-right, padding-bottom, and padding-left attributes, you can specify them all in one line, like this: padding: 10px 20px 10px 20px;.", @@ -2949,6 +2993,7 @@ "
    padding
    ", "" ], + "type": "waypoint", "challengeType": 0, "nameCn": "", "descriptionCn": [], @@ -2969,7 +3014,7 @@ }, { "id": "bad87fee1348bd9afdf08726", - "title": "Waypoint: Use Clockwise Notation to Specify the Margin of an Element", + "title": "Use Clockwise Notation to Specify the Margin of an Element", "difficulty": 1.45, "description": [ "Let's try this again, but with margin this time.", @@ -3018,6 +3063,7 @@ "
    padding
    ", "" ], + "type": "waypoint", "challengeType": 0, "nameCn": "", "descriptionCn": [], @@ -3038,7 +3084,7 @@ }, { "id": "bad87fee1348bd9aedf08736", - "title": "Waypoint: Style the HTML Body Element", + "title": "Style the HTML Body Element", "difficulty": 1.46, "description": [ "Now let's start fresh and talk about CSS inheritance.", @@ -3054,6 +3100,7 @@ "", "" ], + "type": "waypoint", "challengeType": 0, "nameCn": "", "descriptionCn": [], @@ -3070,7 +3117,7 @@ }, { "id": "bad87fee1348bd9aedf08746", - "title": "Waypoint: Inherit Styles from the Body Element", + "title": "Inherit Styles from the Body Element", "difficulty": 1.47, "description": [ "Now we've proven that every HTML page has a body element, and that its body element can also be styled with CSS.", @@ -3096,6 +3143,7 @@ "", "" ], + "type": "waypoint", "challengeType": 0, "nameCn": "", "descriptionCn": [], @@ -3112,7 +3160,7 @@ }, { "id": "bad87fee1348bd9aedf08756", - "title": "Waypoint: Prioritize One Style Over Another", + "title": "Prioritize One Style Over Another", "difficulty": 1.48, "description": [ "Sometimes your HTML elements will receive multiple styles that conflict with one another.", @@ -3135,6 +3183,7 @@ "", "

    Hello World!

    " ], + "type": "waypoint", "challengeType": 0, "nameCn": "", "descriptionCn": [], @@ -3151,7 +3200,7 @@ }, { "id": "bad87fee1348bd9aedf04756", - "title": "Waypoint: Override Styles in Subsequent CSS", + "title": "Override Styles in Subsequent CSS", "difficulty": 1.49, "description": [ "Our \"pink-text\" class overrode our body element's CSS declaration!", @@ -3177,6 +3226,7 @@ "", "

    Hello World!

    " ], + "type": "waypoint", "challengeType": 0, "nameCn": "", "descriptionCn": [], @@ -3193,7 +3243,7 @@ }, { "id": "bad87fee1348bd8aedf06756", - "title": "Waypoint: Override Class Declarations by Styling ID Attributes", + "title": "Override Class Declarations by Styling ID Attributes", "difficulty": 1.52, "description": [ "We just proved that browsers read CSS from top to bottom. That means that, in the event of a conflict, the browser will use whichever CSS declaration came last.", @@ -3225,6 +3275,7 @@ "", "

    Hello World!

    " ], + "type": "waypoint", "challengeType": 0, "nameCn": "", "descriptionCn": [], @@ -3241,7 +3292,7 @@ }, { "id": "bad87fee1348bd9aedf06756", - "title": "Waypoint: Override Class Declarations with Inline Styles", + "title": "Override Class Declarations with Inline Styles", "difficulty": 1.52, "description": [ "So we've proven that id declarations override class declarations, regardless of where they are declared in your style element CSS.", @@ -3275,6 +3326,7 @@ "", "

    Hello World!

    " ], + "type": "waypoint", "challengeType": 0, "nameCn": "", "descriptionCn": [], @@ -3291,7 +3343,7 @@ }, { "id": "bad87fee1348bd9aedf07756", - "title": "Waypoint: Override All Other Styles by using Important", + "title": "Override All Other Styles by using Important", "difficulty": 1.53, "description": [ "Yay! We just proved that in-line styles will override all the CSS declarations in your style element.", @@ -3328,6 +3380,7 @@ "", "

    Hello World!

    " ], + "type": "waypoint", "challengeType": 0, "nameCn": "", "descriptionCn": [], @@ -3344,7 +3397,7 @@ }, { "id": "bad87fee1348bd9aedf08726", - "title": "Waypoint: Use Hex Code for Specific Colors", + "title": "Use Hex Code for Specific Colors", "difficulty": 1.54, "description": [ "Did you know there other ways to represent colors in CSS? One of these ways is called hexadecimal code, or \"hex code\" for short.", @@ -3363,6 +3416,7 @@ " }", "" ], + "type": "waypoint", "challengeType": 0, "nameCn": "", "descriptionCn": [], @@ -3379,7 +3433,7 @@ }, { "id": "bad87fee1348bd9aedf08725", - "title": "Waypoint: Use Hex Code to Color Elements White", + "title": "Use Hex Code to Color Elements White", "difficulty": 1.55, "description": [ "0 is the lowest number in hex code, and represents a complete absence of color.", @@ -3397,6 +3451,7 @@ " }", "" ], + "type": "waypoint", "challengeType": 0, "nameCn": "", "descriptionCn": [], @@ -3413,7 +3468,7 @@ }, { "id": "bad87fee1348bd9aedf08724", - "title": "Waypoint: Use Hex Code to Color Elements Red", + "title": "Use Hex Code to Color Elements Red", "difficulty": 1.56, "description": [ "You may be wondering why we use 6 digits to represent a color instead of just one or two. The answer is that using 6 digits gives us a huge variety.", @@ -3433,6 +3488,7 @@ " }", "" ], + "type": "waypoint", "challengeType": 0, "nameCn": "", "descriptionCn": [], @@ -3449,7 +3505,7 @@ }, { "id": "bad87fee1348bd9aedf08723", - "title": "Waypoint: Use Hex Code to Color Elements Green", + "title": "Use Hex Code to Color Elements Green", "difficulty": 1.57, "description": [ "Remember that hex code follows the red-green-blue, or \"RGB\" format. The first two digits of hex code represent the amount of red in the color. The third and fourth digit represent the amount of green. The fifth and sixth represent the amount of blue.", @@ -3467,6 +3523,7 @@ " }", "" ], + "type": "waypoint", "challengeType": 0, "nameCn": "", "descriptionCn": [], @@ -3483,7 +3540,7 @@ }, { "id": "bad87fee1348bd9aedf08722", - "title": "Waypoint: Use Hex Code to Color Elements Blue", + "title": "Use Hex Code to Color Elements Blue", "difficulty": 1.58, "description": [ "Hex code follows the red-green-blue, or \"RGB\" format. The first two digits of hex code represent the amount of red in the color. The third and fourth digit represent the amount of green. The fifth and sixth represent the amount of blue.", @@ -3501,6 +3558,7 @@ " }", "" ], + "type": "waypoint", "challengeType": 0, "nameCn": "", "descriptionCn": [], @@ -3517,7 +3575,7 @@ }, { "id": "bad87fee1348bd9aedf08721", - "title": "Waypoint: Use Hex Code to Mix Colors", + "title": "Use Hex Code to Mix Colors", "difficulty": 1.59, "description": [ "From these three pure colors (red, green and blue), we can create 16 million other colors.", @@ -3535,6 +3593,7 @@ " }", "" ], + "type": "waypoint", "challengeType": 0, "nameCn": "", "descriptionCn": [], @@ -3551,7 +3610,7 @@ }, { "id": "bad87fee1348bd9aede08720", - "title": "Waypoint: Use Hex Code to Color Elements Gray", + "title": "Use Hex Code to Color Elements Gray", "difficulty": 1.60, "description": [ "From these three pure colors (red, green and blue), we can create 16 million other colors.", @@ -3569,6 +3628,7 @@ " }", "" ], + "type": "waypoint", "challengeType": 0, "nameCn": "", "descriptionCn": [], @@ -3585,7 +3645,7 @@ }, { "id": "bad87fee1348bd9aedf08720", - "title": "Waypoint: Use Hex Code for Specific Shades of Gray", + "title": "Use Hex Code for Specific Shades of Gray", "difficulty": 1.61, "description": [ "We can also create other shades of gray by evenly mixing all three colors. We can go very close to true black.", @@ -3602,6 +3662,7 @@ " }", "" ], + "type": "waypoint", "challengeType": 0, "nameCn": "", "descriptionCn": [], @@ -3618,7 +3679,7 @@ }, { "id": "bad87fee1348bd9aedf08719", - "title": "Waypoint: Use Abbreviated Hex Code", + "title": "Use Abbreviated Hex Code", "difficulty": 1.62, "description": [ "Many people feel overwhelmed by the possibilities of more than 16 million colors. And it's difficult to remember hex code. Fortunately, you can shorten it.", @@ -3637,6 +3698,7 @@ " }", "" ], + "type": "waypoint", "challengeType": 0, "nameCn": "", "descriptionCn": [], @@ -3653,7 +3715,7 @@ }, { "id": "bad87fee1348bd9aede08718", - "title": "Waypoint: Use RGB values to Color Elements", + "title": "Use RGB values to Color Elements", "difficulty": 1.63, "description": [ "Another way you can represent colors in CSS is by using RGB values.", @@ -3673,6 +3735,7 @@ " }", "" ], + "type": "waypoint", "challengeType": 0, "nameCn": "", "descriptionCn": [], @@ -3689,7 +3752,7 @@ }, { "id": "bad88fee1348bd9aedf08726", - "title": "Waypoint: Use RGB to Color Elements White", + "title": "Use RGB to Color Elements White", "difficulty": 1.64, "description": [ "RGB values look like this: rgb(0, 0, 0) for black and rgb(255, 255, 255) for white.", @@ -3707,6 +3770,7 @@ " }", "" ], + "type": "waypoint", "challengeType": 0, "nameCn": "", "descriptionCn": [], @@ -3723,7 +3787,7 @@ }, { "id": "bad89fee1348bd9aedf08724", - "title": "Waypoint: Use RGB to Color Elements Red", + "title": "Use RGB to Color Elements Red", "difficulty": 1.65, "description": [ "Just like with hex code, you can represent different colors in RGB by using combinations of different values.", @@ -3741,6 +3805,7 @@ " }", "" ], + "type": "waypoint", "challengeType": 0, "nameCn": "", "descriptionCn": [], @@ -3757,7 +3822,7 @@ }, { "id": "bad80fee1348bd9aedf08723", - "title": "Waypoint: Use RGB to Color Elements Green", + "title": "Use RGB to Color Elements Green", "difficulty": 1.66, "description": [ "Now change the body element's background color to the RGB value green: rgb(0, 255, 0)" @@ -3773,6 +3838,7 @@ " }", "" ], + "type": "waypoint", "challengeType": 0, "nameCn": "", "descriptionCn": [], @@ -3789,7 +3855,7 @@ }, { "id": "bad81fee1348bd9aedf08722", - "title": "Waypoint: Use RGB to Color Elements Blue", + "title": "Use RGB to Color Elements Blue", "difficulty": 1.67, "description": [ "Change the body element's background color to the RGB value blue: rgb(0, 0, 255)" @@ -3805,6 +3871,7 @@ " }", "" ], + "type": "waypoint", "challengeType": 0, "nameCn": "", "descriptionCn": [], @@ -3821,7 +3888,7 @@ }, { "id": "bad82fee1348bd9aedf08721", - "title": "Waypoint: Use RGB to Mix Colors", + "title": "Use RGB to Mix Colors", "difficulty": 1.68, "description": [ "Just like with hex code, you can mix colors in RGB by using combinations of different values.", @@ -3838,6 +3905,7 @@ " }", "" ], + "type": "waypoint", "challengeType": 0, "nameCn": "", "descriptionCn": [], @@ -3854,7 +3922,7 @@ }, { "id": "bad83fee1348bd9aede08720", - "title": "Waypoint: Use RGB to Color Elements Gray", + "title": "Use RGB to Color Elements Gray", "difficulty": 1.69, "description": [ "With RGB values, we can make an element gray by using combinations of the same value for all three colors.", @@ -3871,6 +3939,7 @@ " }", "" ], + "type": "waypoint", "challengeType": 0, "nameCn": "", "descriptionCn": [], diff --git a/challenges/intermediate-bonfires.json b/challenges/intermediate-bonfires.json index b9e98821891..a85f6367e64 100644 --- a/challenges/intermediate-bonfires.json +++ b/challenges/intermediate-bonfires.json @@ -4,7 +4,7 @@ "challenges": [ { "id": "a3566b1109230028080c9345", - "title": "Bonfire: Sum All Numbers in a Range", + "title": "Sum All Numbers in a Range", "difficulty": "2.00", "description": [ "We'll pass you an array of two numbers. Return the sum of those two numbers and all numbers between them.", @@ -30,6 +30,7 @@ "Math.min()", "Array.reduce()" ], + "type": "bonfire", "challengeType": 5, "nameCn": "", "descriptionCn": [], @@ -44,7 +45,7 @@ }, { "id": "a5de63ebea8dbee56860f4f2", - "title": "Bonfire: Diff Two Arrays", + "title": "Diff Two Arrays", "difficulty": "2.01", "description": [ "Compare two arrays and return a new array with any items not found in both of the original arrays.", @@ -75,6 +76,7 @@ "Array.indexOf()", "String.concat()" ], + "type": "bonfire", "challengeType": 5, "nameCn": "", "descriptionCn": [], @@ -89,7 +91,7 @@ }, { "id": "a7f4d8f2483413a6ce226cac", - "title": "Bonfire: Roman Numeral Converter", + "title": "Roman Numeral Converter", "tests": [ "expect(convert(12)).to.equal(\"XII\");", "expect(convert(5)).to.equal(\"V\");", @@ -115,6 +117,7 @@ "Array.indexOf()", "Array.join()" ], + "type": "bonfire", "challengeType": 5, "nameCn": "", "descriptionCn": [], @@ -129,7 +132,7 @@ }, { "id": "a0b5010f579e69b815e7c5d6", - "title": "Bonfire: Search and Replace", + "title": "Search and Replace", "tests": [ "expect(replace(\"Let us go to the store\", \"store\", \"mall\")).to.equal(\"Let us go to the mall\");", "expect(replace(\"He is Sleeping on the couch\", \"Sleeping\", \"sitting\")).to.equal(\"He is Sitting on the couch\");", @@ -158,6 +161,7 @@ "String.replace()", "Array.join()" ], + "type": "bonfire", "challengeType": 5, "nameCn": "", "descriptionCn": [], @@ -172,7 +176,7 @@ }, { "id": "aa7697ea2477d1316795783b", - "title": "Bonfire: Pig Latin", + "title": "Pig Latin", "tests": [ "expect(translate(\"california\")).to.equal(\"aliforniacay\");", "expect(translate(\"paragraphs\")).to.equal(\"aragraphspay\");", @@ -201,6 +205,7 @@ "String.substr()", "String.split()" ], + "type": "bonfire", "challengeType": 5, "nameCn": "", "descriptionCn": [], @@ -215,7 +220,7 @@ }, { "id": "afd15382cdfb22c9efe8b7de", - "title": "Bonfire: DNA Pairing", + "title": "DNA Pairing", "tests": [ "assert.deepEqual(pair(\"ATCGA\"),[['A','T'],['T','A'],['C','G'],['G','C'],['A','T']], 'should return the dna pair');", "assert.deepEqual(pair(\"TTGAG\"),[['T','A'],['T','A'],['G','C'],['A','T'],['G','C']], 'should return the dna pair');", @@ -239,6 +244,7 @@ "Array.push()", "String.split()" ], + "type": "bonfire", "challengeType": 5, "nameCn": "", "descriptionCn": [], @@ -253,7 +259,7 @@ }, { "id": "af7588ade1100bde429baf20", - "title": "Bonfire: Missing letters", + "title": "Missing letters", "difficulty": "2.05", "description": [ "Find the missing letter in the passed letter range and return it.", @@ -277,6 +283,7 @@ "String.charCodeAt()", "String.fromCharCode()" ], + "type": "bonfire", "challengeType": 5, "nameCn": "", "descriptionCn": [], @@ -291,7 +298,7 @@ }, { "id": "a77dbc43c33f39daa4429b4f", - "title": "Bonfire: Boo who", + "title": "Boo who", "difficulty": "2.06", "description": [ "Check if a value is classified as a boolean primitive. Return true or false.", @@ -319,6 +326,7 @@ "MDNlinks": [ "Boolean Objects" ], + "type": "bonfire", "challengeType": 5, "nameCn": "", "descriptionCn": [], @@ -333,7 +341,7 @@ }, { "id": "a105e963526e7de52b219be9", - "title": "Bonfire: Sorted Union", + "title": "Sorted Union", "difficulty": "2.07", "description": [ "Write a function that takes two or more arrays and returns a new array of unique values in the order of the original provided arrays.", @@ -359,6 +367,7 @@ "Arguments object", "Array.reduce()" ], + "type": "bonfire", "challengeType": 5, "nameCn": "", "descriptionCn": [], @@ -373,7 +382,7 @@ }, { "id": "a6b0bb188d873cb2c8729495", - "title": "Bonfire: Convert HTML Entities", + "title": "Convert HTML Entities", "difficulty": "2.07", "description": [ "Convert the characters \"&\", \"<\", \">\", '\"' (double quote), and \"'\" (apostrophe), in a string to their corresponding HTML entities.", @@ -400,6 +409,7 @@ "RegExp", "HTML Entities" ], + "type": "bonfire", "challengeType": 5, "nameCn": "", "descriptionCn": [], @@ -414,7 +424,7 @@ }, { "id": "a103376db3ba46b2d50db289", - "title": "Bonfire: Spinal Tap Case", + "title": "Spinal Tap Case", "difficulty": "2.08", "description": [ "Convert a string to spinal case. Spinal case is all-lowercase-words-joined-by-dashes.", @@ -439,6 +449,7 @@ "RegExp", "String.replace()" ], + "type": "bonfire", "challengeType": 5, "nameCn": "", "descriptionCn": [], @@ -453,7 +464,7 @@ }, { "id": "a5229172f011153519423690", - "title": "Bonfire: Sum All Odd Fibonacci Numbers", + "title": "Sum All Odd Fibonacci Numbers", "difficulty": "2.09", "description": [ "Return the sum of all odd Fibonacci numbers up to and including the passed number if it is a Fibonacci number.", @@ -479,6 +490,7 @@ "MDNlinks": [ "Remainder" ], + "type": "bonfire", "challengeType": 5, "nameCn": "", "descriptionCn": [], @@ -493,7 +505,7 @@ }, { "id": "a3bfc1673c0526e06d3ac698", - "title": "Bonfire: Sum All Primes", + "title": "Sum All Primes", "difficulty": "2.10", "description": [ "Sum all the prime numbers up to and including the provided number.", @@ -517,6 +529,7 @@ "For Loops", "Array.push()" ], + "type": "bonfire", "challengeType": 5, "nameCn": "", "descriptionCn": [], @@ -531,7 +544,7 @@ }, { "id": "ae9defd7acaf69703ab432ea", - "title": "Bonfire: Smallest Common Multiple", + "title": "Smallest Common Multiple", "difficulty": "2.11", "description": [ "Find the smallest number that is evenly divisible by all numbers in the provided range.", @@ -555,6 +568,7 @@ "MDNlinks": [ "Smallest Common Multiple" ], + "type": "bonfire", "challengeType": 5, "nameCn": "", "descriptionCn": [], @@ -569,7 +583,7 @@ }, { "id": "a6e40f1041b06c996f7b2406", - "title": "Bonfire: Finders Keepers", + "title": "Finders Keepers", "difficulty": "2.12", "description": [ "Create a function that looks through an array (first argument) and returns the first element in the array that passes a truth test (second argument).", @@ -590,6 +604,7 @@ "MDNlinks": [ "Array.some()" ], + "type": "bonfire", "challengeType": 5, "nameCn": "", "descriptionCn": [], @@ -604,7 +619,7 @@ }, { "id": "a5deed1811a43193f9f1c841", - "title": "Bonfire: Drop it", + "title": "Drop it", "difficulty": "2.13", "description": [ "Drop the elements of an array (first argument), starting from the front, until the predicate (second argument) returns true.", @@ -627,6 +642,7 @@ "Arguments object", "Array.shift()" ], + "type": "bonfire", "challengeType": 5, "nameCn": "", "descriptionCn": [], @@ -641,7 +657,7 @@ }, { "id": "ab306dbdcc907c7ddfc30830", - "title": "Bonfire: Steamroller", + "title": "Steamroller", "difficulty": "2.14", "description": [ "Flatten a nested array. You must account for varying levels of nesting.", @@ -664,6 +680,7 @@ "MDNlinks": [ "Array.isArray()" ], + "type": "bonfire", "challengeType": 5, "nameCn": "", "descriptionCn": [], @@ -678,7 +695,7 @@ }, { "id": "a8d97bd4c764e91f9d2bda01", - "title": "Bonfire: Binary Agents", + "title": "Binary Agents", "difficulty": "2.15", "description": [ "Return an English translated sentence of the passed binary string.", @@ -700,6 +717,7 @@ "String.charCodeAt()", "String.fromCharCode()" ], + "type": "bonfire", "challengeType": 5, "nameCn": "", "descriptionCn": [], @@ -714,7 +732,7 @@ }, { "id": "a10d2431ad0c6a099a4b8b52", - "title": "Bonfire: Everything Be True", + "title": "Everything Be True", "difficulty": "2.21", "description": [ "Check if the predicate (second argument) returns truthy (defined) for all elements of a collection (first argument).", @@ -739,6 +757,7 @@ "Object.hasOwnProperty()", "Object.getOwnPropertyNames()" ], + "type": "bonfire", "challengeType": 5, "nameCn": "", "descriptionCn": [], @@ -753,7 +772,7 @@ }, { "id": "a97fd23d9b809dac9921074f", - "title": "Bonfire: Arguments Optional", + "title": "Arguments Optional", "difficulty": "2.22", "description": [ "Create a function that sums two arguments together. If only one argument is provided, return a function that expects one additional argument and will return the sum.", @@ -779,6 +798,7 @@ "Global Function Object", "Arguments object" ], + "type": "bonfire", "challengeType": 5, "nameCn": "", "descriptionCn": [], diff --git a/challenges/intermediate-ziplines.json b/challenges/intermediate-ziplines.json index ff900aa54dd..2a2d5af952a 100644 --- a/challenges/intermediate-ziplines.json +++ b/challenges/intermediate-ziplines.json @@ -4,7 +4,7 @@ "challenges": [ { "id": "bd7158d8c442eddfaeb5bd18", - "title": "Zipline: Stylize Stories on Camper News", + "title": "Stylize Stories on Camper News", "difficulty": 1.02, "challengeSeed": ["126415129"], "description": [ @@ -22,6 +22,7 @@ "When you are finished, click the \"I've completed this challenge\" button and include a link to your CodePen. If you pair programmed, you should also include the Free Code Camp username of your pair.", "If you'd like immediate feedback on your project, click this button and paste in a link to your CodePen project. Otherwise, we'll review it before you start your nonprofit projects.

    Click here then add your link to your tweet's text" ], + "type": "zipline", "challengeType": 3, "tests": [], "nameCn": "", @@ -37,7 +38,7 @@ }, { "id": "bd7158d8c442eddfaeb5bd19", - "title": "Zipline: Wikipedia Viewer", + "title": "Wikipedia Viewer", "difficulty": 1.03, "challengeSeed": ["126415131"], "description": [ @@ -54,6 +55,7 @@ "When you are finished, click the \"I've completed this challenge\" button and include a link to your CodePen. If you pair programmed, you should also include the Free Code Camp username of your pair.", "If you'd like immediate feedback on your project, click this button and paste in a link to your CodePen project. Otherwise, we'll review it before you start your nonprofit projects.

    Click here then add your link to your tweet's text" ], + "type": "zipline", "challengeType": 3, "tests": [], "nameCn": "", @@ -69,7 +71,7 @@ }, { "id": "bd7158d8c442eddfaeb5bd17", - "title": "Zipline: Build a JavaScript Calculator", + "title": "Build a JavaScript Calculator", "difficulty": 1.05, "challengeSeed": ["126411565"], "description": [ @@ -85,6 +87,7 @@ "When you are finished, click the \"I've completed this challenge\" button and include a link to your CodePen. If you pair programmed, you should also include the Free Code Camp username of your pair.", "If you'd like immediate feedback on your project, click this button and paste in a link to your CodePen project. Otherwise, we'll review it before you start your nonprofit projects.

    Click here then add your link to your tweet's text" ], + "type": "zipline", "challengeType": 3, "tests": [], "nameCn": "", @@ -100,7 +103,7 @@ }, { "id": "bd7158d8c442eedfaeb5bd1c", - "title": "Zipline: Build a Tic Tac Toe Game", + "title": "Build a Tic Tac Toe Game", "difficulty": 1.06, "challengeSeed": ["126415123"], "description": [ @@ -117,6 +120,7 @@ "When you are finished, click the \"I've completed this challenge\" button and include a link to your CodePen. If you pair programmed, you should also include the Free Code Camp username of your pair.", "If you'd like immediate feedback on your project, click this button and paste in a link to your CodePen project. Otherwise, we'll review it before you start your nonprofit projects.

    Click here then add your link to your tweet's text" ], + "type": "zipline", "challengeType": 3, "tests": [], "nameCn": "", @@ -132,7 +136,7 @@ }, { "id": "bd7158d8c442eddfaeb5bd1c", - "title": "Zipline: Build a Simon Game", + "title": "Build a Simon Game", "difficulty": 1.07, "challengeSeed": ["126415123"], "description": [ @@ -155,6 +159,7 @@ "When you are finished, click the \"I've completed this challenge\" button and include a link to your CodePen. If you pair programmed, you should also include the Free Code Camp username of your pair.", "If you'd like immediate feedback on your project, click this button and paste in a link to your CodePen project. Otherwise, we'll review it before you start your nonprofit projects.

    Click here then add your link to your tweet's text" ], + "type": "zipline", "challengeType": 3, "tests": [], "nameCn": "", diff --git a/challenges/jquery-ajax-and-json.json b/challenges/jquery-ajax-and-json.json index a5db78c6cbe..fa3f8641a9d 100644 --- a/challenges/jquery-ajax-and-json.json +++ b/challenges/jquery-ajax-and-json.json @@ -1,10 +1,10 @@ { - "name": "jQuery", + "name": "jQuery", "order": 0.004, "challenges": [ { "id": "bad87fee1348bd9acdd08826", - "title": "Waypoint: Learn how Script Tags and Document Ready Work", + "title": "Learn how Script Tags and Document Ready Work", "difficulty": 3.01, "description": [ "Now we're ready to learn jQuery, the most popular JavaScript tool of all time. Don't worry about JavaScript itself - we will cover it soon.", @@ -42,11 +42,12 @@ " ", "" ], + "type": "waypoint", "challengeType": 0 }, { "id": "bad87fee1348bd9bedc08826", - "title": "Waypoint: Target HTML Elements with Selectors Using jQuery", + "title": "Target HTML Elements with Selectors Using jQuery", "difficulty": 3.02, "description": [ "Now we have a \"document ready function\". We'll learn more about functions later. The important thing to know is that code you put inside this function will run as soon as your browser has loaded your page.", @@ -90,11 +91,12 @@ " ", "" ], + "type": "waypoint", "challengeType": 0 }, { "id": "bad87fee1348bd9aedc08826", - "title": "Waypoint: Target Elements by Class Using jQuery", + "title": "Target Elements by Class Using jQuery", "difficulty": 3.03, "description": [ "You see how we made all of your button elements bounce? We selected them with $('button'), then we added some CSS classes to them with .addClass('animated bounce');.", @@ -139,11 +141,12 @@ " ", "" ], + "type": "waypoint", "challengeType": 0 }, { "id": "bad87fee1348bd9aeda08826", - "title": "Waypoint: Target Elements by ID Using jQuery", + "title": "Target Elements by ID Using jQuery", "difficulty": 3.04, "description": [ "You can also target elements by their id attributes.", @@ -189,11 +192,12 @@ " ", "" ], + "type": "waypoint", "challengeType": 0 }, { "id": "bad87fee1348bd9aeda08726", - "title": "Waypoint: Delete your jQuery Functions", + "title": "Delete your jQuery Functions", "difficulty": 3.05, "description": [ "These animations were cool at first, but now they're getting kind of distracting.", @@ -240,11 +244,12 @@ " ", "" ], + "type": "waypoint", "challengeType": 0 }, { "id": "bad87fee1348bd9aed908626", - "title": "Waypoint: Target the same element with multiple jQuery Selectors", + "title": "Target the same element with multiple jQuery Selectors", "difficulty": 3.06, "description": [ "Now you know three ways of targeting elements: by type $('button'), by class $('.btn')), and by id $('#target1')).", @@ -290,11 +295,12 @@ " ", "" ], + "type": "waypoint", "challengeType": 0 }, { "id": "bad87fee1348bd9aed918626", - "title": "Waypoint: Remove Classes from an element with jQuery", + "title": "Remove Classes from an element with jQuery", "difficulty": 3.07, "description": [ "In the same way you can add classes to an element with jQuery's addClass() function, you can remove them with jQuery's removeClass() function.", @@ -339,11 +345,12 @@ " ", "" ], + "type": "waypoint", "challengeType": 0 }, { "id": "bad87fee1348bd9aed908826", - "title": "Waypoint: Change the CSS of an Element Using jQuery", + "title": "Change the CSS of an Element Using jQuery", "difficulty": 3.08, "description": [ "We can also change the CSS of an HTML element directly with jQuery.", @@ -392,11 +399,12 @@ " ", "" ], + "type": "waypoint", "challengeType": 0 }, { "id": "bad87fee1348bd9aed808826", - "title": "Waypoint: Disable an Element Using jQuery", + "title": "Disable an Element Using jQuery", "difficulty": 3.09, "description": [ "You can also change the non-CSS properties of HTML elements with jQuery. For example, you can disable buttons.", @@ -442,11 +450,12 @@ " ", "" ], + "type": "waypoint", "challengeType": 0 }, { "id": "bad87fee1348bd9aed708826", - "title": "Waypoint: Remove an Element Using jQuery", + "title": "Remove an Element Using jQuery", "difficulty": 3.10, "description": [ "Now let's remove an HTML element from your page using jQuery.", @@ -489,11 +498,12 @@ " ", "" ], + "type": "waypoint", "challengeType": 0 }, { "id": "bad87fee1348bd9aed608826", - "title": "Waypoint: Use appendTo to Move Elements with jQuery", + "title": "Use appendTo to Move Elements with jQuery", "difficulty": 3.11, "description": [ "Now let's try moving elements from one div to another.", @@ -540,11 +550,12 @@ " ", "" ], + "type": "waypoint", "challengeType": 0 }, { "id": "bad87fee1348bd9aed508826", - "title": "Waypoint: Clone an Element Using jQuery", + "title": "Clone an Element Using jQuery", "difficulty": 3.12, "description": [ "In addition to moving elements, you can also copy them from one place to another.", @@ -593,11 +604,12 @@ " ", "" ], + "type": "waypoint", "challengeType": 0 }, { "id": "bad87fee1348bd9aed308826", - "title": "Waypoint: Target the Parent of an Element Using jQuery", + "title": "Target the Parent of an Element Using jQuery", "difficulty": 3.13, "description": [ "Every HTML elements has a \"parent\" element from which it \"inherits\" properties.", @@ -647,11 +659,12 @@ " ", "" ], + "type": "waypoint", "challengeType": 0 }, { "id": "bad87fee1348bd9aed208826", - "title": "Waypoint: Target the Children of an Element Using jQuery", + "title": "Target the Children of an Element Using jQuery", "difficulty": 3.14, "description": [ "Many HTML elements has a \"children\" element from which they \"inherits\" properties.", @@ -702,11 +715,12 @@ " ", "" ], + "type": "waypoint", "challengeType": 0 }, { "id": "bad87fee1348bd9aed108826", - "title": "Waypoint: Target a Specific Child of an Element Using jQuery", + "title": "Target a Specific Child of an Element Using jQuery", "difficulty": 3.15, "description": [ "You've seen why id attributes are so convenient for targeting with jQuery selectors. But you won't always have such neat ids to work with.", @@ -758,11 +772,12 @@ " ", "" ], + "type": "waypoint", "challengeType": 0 }, { "id": "bad87fee1348bd9aed008826", - "title": "Waypoint: Target Even Numbered Elements Using jQuery", + "title": "Target Even Numbered Elements Using jQuery", "difficulty": 3.16, "description": [ "You can also target all the even-numbered elements.", @@ -816,11 +831,12 @@ " ", "" ], + "type": "waypoint", "challengeType": 0 }, { "id": "bad87fee1348bd9aecb08826", - "title": "Waypoint: Use jQuery to Modify the Entire Page", + "title": "Use jQuery to Modify the Entire Page", "difficulty": 3.20, "description": [ "We're done playing with our jQuery playground. Let's tear it down!", @@ -872,6 +888,7 @@ " ", "" ], + "type": "waypoint", "challengeType": 0 } ] diff --git a/challenges/json-apis-and-ajax.json b/challenges/json-apis-and-ajax.json index cefd0f0e8c1..8745e513deb 100644 --- a/challenges/json-apis-and-ajax.json +++ b/challenges/json-apis-and-ajax.json @@ -1,5 +1,5 @@ { - "name": "JSON APIs and Ajax - Coming Soon", + "name": "JSON APIs and Ajax - Coming Soon", "order": 0.007, "challenges": [ ] diff --git a/challenges/mongodb.json b/challenges/mongodb.json index 75b24f29c7d..1751c617d8c 100644 --- a/challenges/mongodb.json +++ b/challenges/mongodb.json @@ -4,7 +4,7 @@ "challenges": [ { "id": "bd7243d8c341eddeaeb5bd0f", - "title": "Waypoint: Store Data in MongoDB", + "title": "Store Data in MongoDB", "difficulty": 0.01, "challengeSeed": ["133316035"], "description": [ @@ -33,6 +33,7 @@ "Complete \"Aggregate\"", "Once you've completed these steps, move on to our next challenge." ], + "type": "waypoint", "challengeType": 2, "tests": [], "nameCn": "", diff --git a/challenges/nodejs-and-expressjs.json b/challenges/nodejs-and-expressjs.json index 34d5401c869..ed6298910d4 100644 --- a/challenges/nodejs-and-expressjs.json +++ b/challenges/nodejs-and-expressjs.json @@ -4,7 +4,7 @@ "challenges": [ { "id": "bd7153d8c441eddfaeb5bd0f", - "title": "Waypoint: Manage Packages with NPM", + "title": "Manage Packages with NPM", "difficulty": 0.39, "challengeSeed": ["126433450"], "description": [ @@ -42,6 +42,7 @@ "Complete \"Finale\"", "Once you've completed these steps, move on to our next challenge." ], + "type": "waypoint", "challengeType": 2, "tests": [], "nameCn": "", @@ -57,7 +58,7 @@ }, { "id": "bd7153d8c441eddfaeb5bdff", - "title": "Waypoint: Start a Node.js Server", + "title": "Start a Node.js Server", "difficulty": 0.40, "challengeSeed": ["126411561"], "description": [ @@ -83,6 +84,7 @@ "Complete \"HTTP Client\"", "Once you've completed these first 7 steps, move on to our next challenge." ], + "type": "waypoint", "challengeType": 2, "tests": [], "nameCn": "", @@ -98,7 +100,7 @@ }, { "id": "bd7153d8c441eddfaeb5bdfe", - "title": "Waypoint: Continue working with Node.js Servers", + "title": "Continue working with Node.js Servers", "difficulty": 0.41, "challengeSeed": ["128836506"], "description": [ @@ -111,6 +113,7 @@ "Complete \"Time Server\"", "Once you've completed these 3 steps, move on to our next challenge." ], + "type": "waypoint", "challengeType": 2, "tests": [], "nameCn": "", @@ -126,7 +129,7 @@ }, { "id": "bd7153d8c441eddfaeb5bdfd", - "title": "Waypoint: Finish working with Node.js Servers", + "title": "Finish working with Node.js Servers", "difficulty": 0.42, "challengeSeed": ["128836507"], "description": [ @@ -139,6 +142,7 @@ "Complete \"HTTP JSON API Server\"", "Once you've completed these final 3 steps, move on to our next challenge." ], + "type": "waypoint", "challengeType": 2, "tests": [], "nameCn": "", @@ -154,7 +158,7 @@ }, { "id": "bd7153d8c441eddfaeb5bd1f", - "title": "Waypoint: Build Web Apps with Express.js", + "title": "Build Web Apps with Express.js", "difficulty": 0.43, "challengeSeed": [ "126411559" @@ -181,6 +185,7 @@ "Complete \"JSON Me\"", "Once you've completed these steps, move on to our next challenge." ], + "type": "waypoint", "challengeType": 2, "tests": [], "nameCn": "", diff --git a/challenges/object-oriented-and-functional-programming.json b/challenges/object-oriented-and-functional-programming.json index 90042d6c039..3faeed26e14 100644 --- a/challenges/object-oriented-and-functional-programming.json +++ b/challenges/object-oriented-and-functional-programming.json @@ -4,7 +4,7 @@ "challenges": [ { "id": "bd7153d8c44eeddfaeb5bd0f", - "title": "Waypoint: Learn Scope Chains and Closures", + "title": "Learn Scope Chains and Closures", "difficulty": 0.01, "challengeSeed": ["133316031"], "description": [ @@ -28,6 +28,7 @@ "Complete \"Garbage Collection\"", "Once you've completed these steps, move on to our next challenge." ], + "type": "waypoint", "challengeType": 2, "tests": [], "nameCn": "", @@ -43,7 +44,7 @@ }, { "id": "bd7153d8b44eeddfaeb5bd0f", - "title": "Waypoint: Use Prototypes for Inheriting Properties", + "title": "Use Prototypes for Inheriting Properties", "difficulty": 0.02, "challengeSeed": ["133316036"], "description": [ @@ -72,6 +73,7 @@ "Note that you can skip the last challenge.", "Once you've completed these steps, move on to our next challenge." ], + "type": "waypoint", "challengeType": 2, "tests": [], "nameCn": "", @@ -87,7 +89,7 @@ }, { "id": "bd7129d8c441eddfbeb5bddf", - "title": "Waypoint: Practice Functional Programming", + "title": "Practice Functional Programming", "difficulty": 0.01, "challengeSeed": ["129169463"], "description": [ @@ -99,6 +101,7 @@ "This challenge will take several hours, but don't worry. Jafar's website will save your progress (using your browser's local storage) so you don't need to finish it in one sitting.", "If you've spent several minutes on one of these challenges, and still can't figure out its correct answer, you can click \"show answer\", then click \"run\" to advance to the next challenge. Be sure to read the correct answer and make sure you understand it before moving on." ], + "type": "waypoint", "challengeType": 2, "tests": [], "nameCn": "", From 150d531079c474d3c0f930976c03286e364e1f31 Mon Sep 17 00:00:00 2001 From: Berkeley Martinez Date: Sat, 8 Aug 2015 07:50:35 -0700 Subject: [PATCH 05/15] create name/dashName at seed --- index.js | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/index.js b/index.js index fdbdf1f9596..5c5c2bd38a2 100644 --- a/index.js +++ b/index.js @@ -2,13 +2,12 @@ require('babel/register'); require('dotenv').load(); var fs = require('fs'), + _ = require('lodash'), path = require('path'), app = require('../server/server'), nonprofits = require('./nonprofits.json'), jobs = require('./jobs.json'); -var challangesRegex = /^(bonfire:|waypoint:|zipline:|basejump:|hike:)/i; - function getFilesFor(dir) { return fs.readdirSync(path.join(__dirname, '/' + dir)); } @@ -38,12 +37,15 @@ Challenge.destroyAll(function(err, info) { console.log('Deleted ', info); } challenges.forEach(function(file) { - var challenges = require('./challenges/' + file).challenges + var challengeSpec = require('./challenges/' + file); + var challenges = challengeSpec.challenges .map(function(challenge) { // NOTE(berks): add title for displaying in views - //challenge.title = challenge.name.replace(challangesRegex, '').trim(); - challenge.name = challenge.title.replace(/[^a-zA-Z0-9 ]/g, ''); // Remove non-alphanumwhitespace chars - challenge.dashedName = challenge.name.replace(/\s/g, '-'); // Replace with dasherize(); + challenge.name = + _.capitalize(challenge.type) + + ': ' + + challenge.title.replace(/[^a-zA-Z0-9\s]/g, ''); + challenge.dashedName = challenge.name.toLowerCase().replace(/\s/g, '-'); return challenge; }); From d3bbed92ede0fb10a2922f561aff8ea188c8ccd3 Mon Sep 17 00:00:00 2001 From: alanmbarr Date: Sat, 8 Aug 2015 21:59:03 -0700 Subject: [PATCH 06/15] Update bootstrap.json --- challenges/bootstrap.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/challenges/bootstrap.json b/challenges/bootstrap.json index 800f64d113e..d839ef1c06a 100644 --- a/challenges/bootstrap.json +++ b/challenges/bootstrap.json @@ -1435,7 +1435,7 @@ "tests": [ "assert($('div.row:has(input[type=\\'text\\'])').length > 0 && $('div.row:has(button[type=\\'submit\\'])').length > 0, 'Nest your form submission button and text area in a div with class \"row\".')", "assert($('div.col-xs-5:has(button[type=\\'submit\\'])').length > 0, 'Nest your form submission button in a div with the class \"col-xs-5\".')", - "assert($('div.col-xs-7:has(input[type=\\'text\\'])').length > 0, 'Nest your form text area in a div with the class \"col-xs-7\".')", + "assert($('div.col-xs-7:has(input[type=\\'text\\'])').length > 0, 'Nest your form text input in a div with the class \"col-xs-7\".')", "assert(editor.match(/<\\/div>/g) && editor.match(/
    /g).length === editor.match(/
    div elements has a closing tag.')" ], "challengeSeed": [ From 8a003d1c6ab9896b539241226453e8f1171451dc Mon Sep 17 00:00:00 2001 From: alanmbarr Date: Sat, 8 Aug 2015 22:10:07 -0700 Subject: [PATCH 07/15] other typo text input instead of area for clarity --- challenges/bootstrap.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/challenges/bootstrap.json b/challenges/bootstrap.json index d839ef1c06a..985a1fa77b8 100644 --- a/challenges/bootstrap.json +++ b/challenges/bootstrap.json @@ -1433,7 +1433,7 @@ "This is the last challenge we'll do for our Cat Photo App for now. We hope you've enjoyed learning Font Awesome, Bootstrap, and responsive design!" ], "tests": [ - "assert($('div.row:has(input[type=\\'text\\'])').length > 0 && $('div.row:has(button[type=\\'submit\\'])').length > 0, 'Nest your form submission button and text area in a div with class \"row\".')", + "assert($('div.row:has(input[type=\\'text\\'])').length > 0 && $('div.row:has(button[type=\\'submit\\'])').length > 0, 'Nest your form submission button and text input in a div with class \"row\".')", "assert($('div.col-xs-5:has(button[type=\\'submit\\'])').length > 0, 'Nest your form submission button in a div with the class \"col-xs-5\".')", "assert($('div.col-xs-7:has(input[type=\\'text\\'])').length > 0, 'Nest your form text input in a div with the class \"col-xs-7\".')", "assert(editor.match(/<\\/div>/g) && editor.match(/
    /g).length === editor.match(/
    div elements has a closing tag.')" From 22c416c7dbd88887929267928a924fca168ce2c1 Mon Sep 17 00:00:00 2001 From: Berkeley Martinez Date: Sun, 9 Aug 2015 07:40:16 -0700 Subject: [PATCH 08/15] add challenge order to individual challenge --- index.js | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/index.js b/index.js index 5c5c2bd38a2..b2a4e3e84c1 100644 --- a/index.js +++ b/index.js @@ -38,14 +38,19 @@ Challenge.destroyAll(function(err, info) { } challenges.forEach(function(file) { var challengeSpec = require('./challenges/' + file); + var order = challengeSpec.order; var challenges = challengeSpec.challenges - .map(function(challenge) { + .map(function(challenge, index) { // NOTE(berks): add title for displaying in views challenge.name = _.capitalize(challenge.type) + ': ' + challenge.title.replace(/[^a-zA-Z0-9\s]/g, ''); - challenge.dashedName = challenge.name.toLowerCase().replace(/\s/g, '-'); + challenge.dashedName = challenge.name + .toLowerCase() + .replace(/\:/g, '') + .replace(/\s/g, '-'); + challenge.order = +('' + order + (index + 1)); return challenge; }); From 30b913b2d8b99769c6c13798a44658f5caf47024 Mon Sep 17 00:00:00 2001 From: Shouvik Roy Date: Mon, 10 Aug 2015 07:32:57 +0530 Subject: [PATCH 09/15] Update basic-javascript.json to fix #1642 Fixed following issues #1639 : Fixed ```description``` to have "In JavaScript" instead of "in JavaScript" and added punctuation. #1640 #1641 Added punctuation and fixed typo to have "perform mathematical functions" instead of "preform mathematical functions". --- challenges/basic-javascript.json | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/challenges/basic-javascript.json b/challenges/basic-javascript.json index b8e088adc01..418a027fbb0 100644 --- a/challenges/basic-javascript.json +++ b/challenges/basic-javascript.json @@ -272,9 +272,9 @@ "dashedName": "waypoint-add-two-numbers-with-javascript", "difficulty": "9.98141", "description": [ - "In JavaScript whole numbers (called integers) can be easily used to preform mathematical functions", - "Let's try a few of the most commonly used ones now", - "We use +for addition", + "In JavaScript whole numbers (called integers) can be easily used to perform mathematical functions.", + "Let's try a few of the most commonly used ones now.", + "We use +for addition.", "Replace the 0with correct number to achieve the result in the comment." ], "tests": [ @@ -295,9 +295,9 @@ "dashedName": "waypoint-subtract-one-number-from-another-with-javascript", "difficulty": "9.98142", "description": [ - "In JavaScript whole numbers (called integers) can be easily used to preform mathematical functions", - "Let's try a few of the most commonly used ones now", - "We use -for subtraction", + "In JavaScript whole numbers (called integers) can be easily used to perform mathematical functions.", + "Let's try a few of the most commonly used ones now.", + "We use -for subtraction.", "Replace the 0with correct number to achieve the result in the comment." ], "tests": [ @@ -318,9 +318,9 @@ "dashedName": "waypoint-multiply-two-numbers-with-javascript", "difficulty": "9.98143", "description": [ - "In JavaScript whole numbers (called integers) can be easily used to preform mathematical functions", - "Let's try a few of the most commonly used ones now", - "We use *for multiplication", + "In JavaScript whole numbers (called integers) can be easily used to perform mathematical functions.", + "Let's try a few of the most commonly used ones now.", + "We use *for multiplication.", "Replace the 0with correct number to achieve the result in the comment." ], "tests": [ @@ -341,9 +341,9 @@ "dashedName": "waypoint-divide-one-number-by-another-with-javascript", "difficulty": "9.9814", "description": [ - "In JavaScript whole numbers (called integers) can be easily used to preform mathematical functions", - "Let's try a few of the most commonly used ones now", - "We use /for division", + "In JavaScript whole numbers (called integers) can be easily used to perform mathematical functions.", + "Let's try a few of the most commonly used ones now.", + "We use /for division.", "Replace the 0with correct number to achieve the result in the comment." ], "tests": [ @@ -364,7 +364,7 @@ "dashedName": "waypoint-create-decimal-numbers-with-javascript", "difficulty": "9.9815", "description": [ - "in JavaScript we can can work with decimal numbers", + "In JavaScript we can can work with decimal numbers.", "Let's create a variable myDecimal and give it a decimal value." ], "tests": [ From a7ba4bacf87e7b32166ab8c43ed4bc274a99e0b8 Mon Sep 17 00:00:00 2001 From: Berkeley Martinez Date: Sun, 9 Aug 2015 22:14:31 -0700 Subject: [PATCH 10/15] fix challenge naming scheme --- index.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/index.js b/index.js index b2a4e3e84c1..3dbbf9d8699 100644 --- a/index.js +++ b/index.js @@ -39,6 +39,8 @@ Challenge.destroyAll(function(err, info) { challenges.forEach(function(file) { var challengeSpec = require('./challenges/' + file); var order = challengeSpec.order; + var block = challengeSpec.name; + var challenges = challengeSpec.challenges .map(function(challenge, index) { // NOTE(berks): add title for displaying in views @@ -46,11 +48,14 @@ Challenge.destroyAll(function(err, info) { _.capitalize(challenge.type) + ': ' + challenge.title.replace(/[^a-zA-Z0-9\s]/g, ''); + challenge.dashedName = challenge.name .toLowerCase() .replace(/\:/g, '') .replace(/\s/g, '-'); challenge.order = +('' + order + (index + 1)); + challenge.block = block; + return challenge; }); From 1fba648672ab2f00d73a9c13e1c4c8e87244a495 Mon Sep 17 00:00:00 2001 From: ahstro Date: Mon, 10 Aug 2015 14:42:02 +0200 Subject: [PATCH 11/15] Refactored CompletionMonitor() slightly --- challenge-migration.js | 14 -------------- index.js | 21 +++++++++++---------- 2 files changed, 11 insertions(+), 24 deletions(-) diff --git a/challenge-migration.js b/challenge-migration.js index 5c8fd015907..7ef359781fa 100644 --- a/challenge-migration.js +++ b/challenge-migration.js @@ -8,20 +8,6 @@ var bonfires = require('./bonfires.json'), oldUri='mongodb://localhost:27017/app30893198', coursewares = require('./coursewares.json'); -var counter = 0; -var offerings = 2; - -var CompletionMonitor = function() { - counter++; - console.log('call ' + counter); - - if (counter < offerings) { - return; - } else { - process.exit(0); - } -}; - MongoClient.connect(oldUri, function(err, database) { database.collection('users').find({}).batchSize(20).toArray(function(err, users) { diff --git a/index.js b/index.js index 3dbbf9d8699..8c46b77f685 100644 --- a/index.js +++ b/index.js @@ -17,18 +17,19 @@ var Nonprofit = app.models.Nonprofit; var Job = app.models.Job; var counter = 0; var challenges = getFilesFor('challenges'); -var offerings = 2 + challenges.length; -var CompletionMonitor = function() { +function completionMonitor() { + // Increment counter counter++; - console.log('call ' + counter); - if (counter < offerings) { - return; - } else { + // Exit if all challenges have been checked + if (counter > challenges.length) { process.exit(0); } -}; + + // Log where in the seed order we're currently at + console.log('Call: ' + counter + "/" + challenges.length); +} Challenge.destroyAll(function(err, info) { if (err) { @@ -66,7 +67,7 @@ Challenge.destroyAll(function(err, info) { console.log(err); } else { console.log('Successfully parsed %s', file); - CompletionMonitor(); + completionMonitor(); } } ); @@ -85,7 +86,7 @@ Nonprofit.destroyAll(function(err, info) { } else { console.log('Saved ', data); } - CompletionMonitor(); + completionMonitor(); console.log('nonprofits'); }); }); @@ -103,6 +104,6 @@ Job.destroyAll(function(err, info) { console.log('Saved ', data); } console.log('jobs'); - CompletionMonitor(); + completionMonitor(); }); }); From ce6f0b4a618cfa528bd3dd687974cdab324175d5 Mon Sep 17 00:00:00 2001 From: ahstro Date: Mon, 10 Aug 2015 20:08:14 +0200 Subject: [PATCH 12/15] Incorrect JSON caused error during seed --- challenges/advanced-bonfires.json | 12 ++++++------ challenges/upper-intermediate-bonfires.json | 10 +++++----- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/challenges/advanced-bonfires.json b/challenges/advanced-bonfires.json index 32e684830c1..6d67184b715 100644 --- a/challenges/advanced-bonfires.json +++ b/challenges/advanced-bonfires.json @@ -65,14 +65,14 @@ }, { "id": "a3f503de51cf954ede28891d", - "name": "Bonfire: Symmetric Difference", - "dashedName": "bonfire-symmetric-difference", + "title": "Symmetric Difference", "difficulty": "4.02", "description": [ "Create a function that takes two or more arrays and returns an array of the symmetric difference of the provided arrays.", "The mathematical term symmetric difference refers to the elements in two sets that are in either the first or second set, but not in both.", "Remember to use RSAP if you get stuck. Try to pair program. Write your own code." ], + "type": "bonfire", "challengeSeed": [ "function sym(args) {", " return arguments;", @@ -104,8 +104,7 @@ }, { "id": "aa2e6f85cab2ab736c9a9b24", - "name": "Bonfire: Exact Change", - "dashedName": "bonfire-exact-change", + "title": "Exact Change", "difficulty": "4.03", "description": [ "Design a cash register drawer function that accepts purchase price as the first argument, payment as the second argument, and cash-in-drawer (cid) as the third argument.", @@ -114,6 +113,7 @@ "Otherwise, return change in coin and bills, sorted in highest to lowest order.", "Remember to use RSAP if you get stuck. Try to pair program. Write your own code." ], + "type": "bonfire", "challengeSeed": [ "function drawer(price, cash, cid) {", " var change;", @@ -160,13 +160,13 @@ }, { "id": "a56138aff60341a09ed6c480", - "name": "Bonfire: Inventory Update", - "dashedName": "bonfire-inventory-update", + "title": "Inventory Update", "difficulty": "4.04", "description": [ "Compare and update inventory stored in a 2d array against a second 2d array of a fresh delivery. Update current inventory item quantity, and if an item cannot be found, add the new item and quantity into the inventory array in alphabetical order.", "Remember to use RSAP if you get stuck. Try to pair program. Write your own code." ], + "type": "bonfire", "challengeSeed": [ "function inventory(arr1, arr2) {", " // All inventory must be accounted for or you're fired!", diff --git a/challenges/upper-intermediate-bonfires.json b/challenges/upper-intermediate-bonfires.json index bfd765facbd..f99c278516e 100644 --- a/challenges/upper-intermediate-bonfires.json +++ b/challenges/upper-intermediate-bonfires.json @@ -4,8 +4,7 @@ "challenges": [ { "id": "a2f1d72d9b908d0bd72bb9f6", - "name": "Bonfire: Make a Person", - "dashedName": "bonfire-make-a-person", + "title": "Make a Person", "difficulty": "3.01", "description": [ "Fill in the object constructor with the methods specified in the tests.", @@ -14,6 +13,7 @@ "These methods must be the only available means for interacting with the object.", "Remember to use RSAP if you get stuck. Try to pair program. Write your own code." ], + "type": "bonfire", "challengeSeed": [ "var Person = function(firstAndLast) {", " return firstAndLast;", @@ -56,7 +56,7 @@ }, { "id": "af4afb223120f7348cdfc9fd", - "name": "Bonfire: Map the Debris", + "title": "Bonfire: Map the Debris", "dashedName": "bonfire-map-the-debris", "difficulty": "3.02", "description": [ @@ -97,8 +97,7 @@ }, { "id": "a3f503de51cfab748ff001aa", - "name": "Bonfire: Pairwise", - "dashedName": "bonfire-pairwise", + "title": "Pairwise", "difficulty": "3.03", "description": [ "Return the sum of all indices of elements of 'arr' that can be paired with one other element to form a sum that equals the value in the second argument 'arg'. If multiple sums are possible, return the smallest sum. Once an element has been used, it cannot be reused to pair with another.", @@ -106,6 +105,7 @@ "pairwise([1, 3, 2, 4], 4) would only equal 1, because only the first two elements can be paired to equal 4, and the first element has an index of 0!", "Remember to use RSAP if you get stuck. Try to pair program. Write your own code." ], + "type": "bonfire", "challengeSeed": [ "function pairwise(arr, arg) {", " return arg;", From 4fae8d59b3d7061788d82304b82b07d9185ab3e2 Mon Sep 17 00:00:00 2001 From: Berkeley Martinez Date: Mon, 10 Aug 2015 11:27:12 -0700 Subject: [PATCH 13/15] fix mising type remove extra bonfire in title --- challenges/advanced-bonfires.json | 7 +++---- challenges/upper-intermediate-bonfires.json | 7 ++++--- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/challenges/advanced-bonfires.json b/challenges/advanced-bonfires.json index 6d67184b715..97482403fac 100644 --- a/challenges/advanced-bonfires.json +++ b/challenges/advanced-bonfires.json @@ -5,7 +5,6 @@ { "id": "aff0395860f5d3034dc0bfc9", "title": "Validate US Telephone Numbers", - "type": "bonfire", "difficulty": "4.01", "description": [ "Return true if the passed string is a valid US phone number", @@ -51,6 +50,7 @@ "MDNlinks": [ "RegExp" ], + "type": "bonfire", "challengeType": 5, "nameCn": "", "descriptionCn": [], @@ -72,7 +72,6 @@ "The mathematical term symmetric difference refers to the elements in two sets that are in either the first or second set, but not in both.", "Remember to use RSAP if you get stuck. Try to pair program. Write your own code." ], - "type": "bonfire", "challengeSeed": [ "function sym(args) {", " return arguments;", @@ -90,6 +89,7 @@ "Array.reduce()", "Symmetric Difference" ], + "type": "bonfire", "challengeType": 5, "nameCn": "", "descriptionCn": [], @@ -113,7 +113,6 @@ "Otherwise, return change in coin and bills, sorted in highest to lowest order.", "Remember to use RSAP if you get stuck. Try to pair program. Write your own code." ], - "type": "bonfire", "challengeSeed": [ "function drawer(price, cash, cid) {", " var change;", @@ -146,6 +145,7 @@ "MDNlinks": [ "Global Object" ], + "type": "bonfire", "challengeType": 5, "nameCn": "", "descriptionCn": [], @@ -166,7 +166,6 @@ "Compare and update inventory stored in a 2d array against a second 2d array of a fresh delivery. Update current inventory item quantity, and if an item cannot be found, add the new item and quantity into the inventory array in alphabetical order.", "Remember to use RSAP if you get stuck. Try to pair program. Write your own code." ], - "type": "bonfire", "challengeSeed": [ "function inventory(arr1, arr2) {", " // All inventory must be accounted for or you're fired!", diff --git a/challenges/upper-intermediate-bonfires.json b/challenges/upper-intermediate-bonfires.json index f99c278516e..104b0312e24 100644 --- a/challenges/upper-intermediate-bonfires.json +++ b/challenges/upper-intermediate-bonfires.json @@ -13,7 +13,6 @@ "These methods must be the only available means for interacting with the object.", "Remember to use RSAP if you get stuck. Try to pair program. Write your own code." ], - "type": "bonfire", "challengeSeed": [ "var Person = function(firstAndLast) {", " return firstAndLast;", @@ -42,6 +41,7 @@ "Closures", "Details of the Object Model" ], + "type": "bonfire", "challengeType": 5, "nameCn": "", "descriptionCn": [], @@ -56,7 +56,7 @@ }, { "id": "af4afb223120f7348cdfc9fd", - "title": "Bonfire: Map the Debris", + "title": "Map the Debris", "dashedName": "bonfire-map-the-debris", "difficulty": "3.02", "description": [ @@ -83,6 +83,7 @@ "MDNlinks": [ "Math.pow()" ], + "type": "bonfire", "challengeType": 5, "nameCn": "", "descriptionCn": [], @@ -105,7 +106,6 @@ "pairwise([1, 3, 2, 4], 4) would only equal 1, because only the first two elements can be paired to equal 4, and the first element has an index of 0!", "Remember to use RSAP if you get stuck. Try to pair program. Write your own code." ], - "type": "bonfire", "challengeSeed": [ "function pairwise(arr, arg) {", " return arg;", @@ -123,6 +123,7 @@ "MDNlinks": [ "Array.reduce()" ], + "type": "bonfire", "challengeType": 5, "nameCn": "", "descriptionCn": [], From 2f714f1541e73da60b7d875a7c836d53c239e6d3 Mon Sep 17 00:00:00 2001 From: Isabell Long Date: Sun, 9 Aug 2015 19:32:10 +0000 Subject: [PATCH 14/15] Fix typos in the Basic Javascript challenge - Partially fixes #1519 - looks like some of those typos had already been fixed. --- challenges/basic-javascript.json | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/challenges/basic-javascript.json b/challenges/basic-javascript.json index 888782e4b60..c8cd7046a9a 100644 --- a/challenges/basic-javascript.json +++ b/challenges/basic-javascript.json @@ -35,7 +35,7 @@ "A boolean is a type of variable that represents either true or false (Named after the British mathematician George Boole).", "Booleans are often the result of a function or a comparative operation, for example 1==1is true whereas 1==2is false.", "They are most commonly found inside ifstatements which we shall cover later", - "For now Let's modify our welcomeToBooleansfunction so that it will return trueinstead of falsewhen the run button is clicked" + "For now let's modify our welcomeToBooleansfunction so that it will return trueinstead of falsewhen the run button is clicked" ], "tests": [ "assert(typeof(welcomeToBooleans())=='boolean', 'The value returned by welcomeToBooleans() should be a boolean value. (true of false)');", @@ -59,8 +59,8 @@ "description": [ "Now, use the var keyword to create a variable called myName. Set its value to your name.", "Variables are used to store values.", - "The name variable comes from the fact that it's value, varies!", - "Now Let's create our first variable called myName and because it's a name let's make it a string!", + "The name variable comes from the fact that its value varies!", + "Now let's create our first variable called myName and because it's a name let's make it a string!", "Be sure to use lowercase and uppercase letters properly. JavaScript variables are written in camel case. An example of camel case is: camelCase.", "Look at the ourName example if you get stuck." ], @@ -362,7 +362,7 @@ "title": "Create Decimal Numbers with JavaScript", "difficulty": "9.9815", "description": [ - "In JavaScript we can can work with decimal numbers.", + "In JavaScript we can work with decimal numbers.", "Let's create a variable myDecimal and give it a decimal value." ], "tests": [ @@ -385,7 +385,7 @@ "title": "Perform Arithmetic Operations on Decimals with JavaScript", "difficulty": "9.98151", "description": [ - "In JavaScript we can can work with decimal numbers." + "In JavaScript we can work with decimal numbers." ], "tests": [ "assert(multiply == 15, 'The result of multiply should be 3.75');", From b1003b403c8b78a5273aa26976e84603f8bd9d0a Mon Sep 17 00:00:00 2001 From: Berkeley Martinez Date: Mon, 10 Aug 2015 12:14:38 -0700 Subject: [PATCH 15/15] add to seed script: exit on error filter challenge blocks that do not have challenges --- index.js | 29 +++++++++++++++++++---------- 1 file changed, 19 insertions(+), 10 deletions(-) diff --git a/index.js b/index.js index 8c46b77f685..38305428a25 100644 --- a/index.js +++ b/index.js @@ -17,23 +17,25 @@ var Nonprofit = app.models.Nonprofit; var Job = app.models.Job; var counter = 0; var challenges = getFilesFor('challenges'); +// plus two accounts for nonprofits and jobs seed. +var numberToSave = challenges.length + 1; function completionMonitor() { // Increment counter counter++; // Exit if all challenges have been checked - if (counter > challenges.length) { + if (counter >= numberToSave) { process.exit(0); } // Log where in the seed order we're currently at - console.log('Call: ' + counter + "/" + challenges.length); + console.log('Call: ' + counter + '/' + numberToSave); } Challenge.destroyAll(function(err, info) { if (err) { - console.error(err); + throw err; } else { console.log('Deleted ', info); } @@ -42,6 +44,13 @@ Challenge.destroyAll(function(err, info) { var order = challengeSpec.order; var block = challengeSpec.name; + // challenge file has no challenges... + if (challengeSpec.challenges.length === 0) { + console.log('file %s has no challenges', file); + completionMonitor(); + return; + } + var challenges = challengeSpec.challenges .map(function(challenge, index) { // NOTE(berks): add title for displaying in views @@ -64,10 +73,10 @@ Challenge.destroyAll(function(err, info) { challenges, function(err) { if (err) { - console.log(err); + throw err; } else { console.log('Successfully parsed %s', file); - completionMonitor(); + completionMonitor(err); } } ); @@ -82,28 +91,28 @@ Nonprofit.destroyAll(function(err, info) { } Nonprofit.create(nonprofits, function(err, data) { if (err) { - console.log(err); + throw err; } else { console.log('Saved ', data); } - completionMonitor(); + completionMonitor(err); console.log('nonprofits'); }); }); Job.destroyAll(function(err, info) { if (err) { - console.error(err); + throw err; } else { console.log('Deleted ', info); } Job.create(jobs, function(err, data) { if (err) { - console.log(err); + console.log('error: ', err); } else { console.log('Saved ', data); } console.log('jobs'); - completionMonitor(); + completionMonitor(err); }); });