Fix recipe slug to account for input quantity

This commit is contained in:
Andrew Miner
2015-04-07 21:28:09 -07:00
parent b9912cd85f
commit 7818bda83f
+21 -6
View File
@@ -153,12 +153,27 @@ module.exports = class Recipe extends BaseModel
getSlug: ->
if not @_slug?
builder = new StringBuilder
builder
.loop(@input, delimiter:',', onEach:(b, stack)-> b.push stack.itemSlug.qualified)
.onlyIf @tools.length > 0, (b)=>
b.push(' + ').loop(@tools, delimiter:',', onEach:(b, stack)-> b.push stack.itemSlug.qualified)
.push(' => ')
.loop(@output, delimiter:',', onEach:(b, stack)-> b.push stack.itemSlug.qualified)
delimiterNeeded = false
@eachInputStack (stack)->
if delimiterNeeded then builder.push ','
delimiterNeeded = true
if stack.quantity > 1 then builder.push stack.quantity, ' '
builder.push stack.itemSlug.qualified
builder.push '>'
@eachToolStack (stack)->
builder.push stack.itemSlug.qualified
builder.push '>'
delimiterNeeded = false
@eachOutputStack (stack)->
if delimiterNeeded then builder.push ','
delimiterNeeded = true
if stack.quantity > 1 then builder.push stack.quantity, ' '
builder.push stack.itemSlug.qualified
@_slug = builder.toString()
return @_slug