JSFiddle - React, Tailwind, and code Playground
by jfroom
HTML
<script src="http://searls.github.io/jasmine-all/jasmine-all-min.js"></script>
CoffeeScript
# == RansomParser
# static class to test magazines against random notes
class RansomParser
# -- canMagazineParseRansom
# static method for comparing magazines against ransom note
# parser assumes can safely split on space character
@canMagazineParseRansom: (magazine, ransom) ->
splitArr = ransom.split(" ")
canParse = false
content = magazine.content
for word in splitArr
result = @parseRansomWord word, content
# update scope canParse
canParse = result.isMatch
# continually remove match word
content = result.content
# exit if parse failed
if !canParse
break
return canParse
# -- parseRansomWord
# static helper method to find a word in content and extract word from content
# returns object {isMatch:boolean, content: remaining content string}
@parseRansomWord: (word, content) ->
out =
isMatch: false
content: content
index = content.indexOf word
if index > -1
out.isMatch = true
start = index
front = content.substring 0, index
back = content.substring index + word.length, content.length
out.content = front + back
return out
# == Magazine
# holds content as a string
class Magazine
content: ""
constructor: (@content) ->
# ---------------------------------------------------------
# TESTS
# ---------------------------------------------------------
testStr = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam ut dolor elementum quam condimentum dictum. Nulla consectetur pharetra tellus. Quisque volutpat a dolor at tempus. Donec nec consectetur enim. Aenean fringilla, mauris eu aliquet molestie, lectus diam fringilla augue, consequat fermentum magna elit sit amet ligula. Praesent et venenatis tortor....