JSFiddle - React, Tailwind, and code Playground

by jfroom

HTML

<script src="http://searls.github.io/jasmine-all/jasmine-all-min.js"></script>

CoffeeScript

class RansomParser
    
    @canMagazineParseRansom: (magStr, ransomStr) ->
        magArr = magStr.split " "
        ransomArr = ransomStr.split " "
        dictionary = {}
        
        # populate dictionary with word:count pairings
        for word in magArr
            dictionary[word] ?= 0
            dictionary[word]++

        # pop ransom words, exit if undefined, or count less than 0
        for word in ransomArr
            if !dictionary[word] || dictionary[word] <= 0
                return false
            else
                dictionary[word]--
        return true
        
# ---------------------------------------------------------
# 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. Lorem ipsum dolor sit amet, consectetur adipiscing elit."
       
describe "Test RansomParser.canMagazineParseRansom", () ->
    
    it "expects 'Lorem' to match", () ->
        expect(RansomParser.canMagazineParseRansom testStr, "Lorem").toBe(true)
  
    it "expects 'Lorem Lorem' to match", () ->
        expect(RansomParser.canMagazineParseRansom testStr, "Lorem Lorem").toBe(true)
        
    it "expects 'Lorem Lorem Lorem' to not match", () ->
        expect(RansomParser.canMagazineParseRansom testStr, "Lorem Lorem Lorem Lorem").toBe(false)
        
    it "expects 'elit sit amet' to  match", () ->
        expect(RansomParser.canMagazineParseRansom testStr, "elit sit amet").toBe(true)

    it "expects 'food' to not match", () ->
        expect(RansomParser.canMagazineParseRansom testStr, "food").toBe(false)