wip
This commit is contained in:
@@ -0,0 +1,93 @@
|
||||
#
|
||||
# Crafting Guide - parser_data.coffee
|
||||
#
|
||||
# Copyright © 2014-2016 by Redwood Labs
|
||||
# All rights reserved.
|
||||
#
|
||||
|
||||
########################################################################################################################
|
||||
|
||||
module.exports = class ParserData
|
||||
|
||||
constructor: ->
|
||||
@clear()
|
||||
|
||||
@_toAssemble = []
|
||||
@_toBuild = []
|
||||
@_toValidate = []
|
||||
|
||||
# Public Methods ###############################################################################
|
||||
|
||||
addError: (command, message)->
|
||||
if not command? then throw new Error 'command is required'
|
||||
message ?= 'is not valid'
|
||||
@_errors.push command:command, message:message
|
||||
|
||||
create: (command, type, id=null)->
|
||||
id ?= _.uniqueId "#{type}-"
|
||||
|
||||
typeData = @_findOrCreateType type
|
||||
itemData = @_current = typeData['current'] = typeData[id] = id:id, command:command, type:type
|
||||
|
||||
@_toAssemble.push itemData
|
||||
@_toBuild.push itemData
|
||||
@_toValidate.push itemData
|
||||
|
||||
return itemData
|
||||
|
||||
clear: ->
|
||||
@_current = null
|
||||
@_data = {}
|
||||
@_errors = []
|
||||
|
||||
get: (type, id)->
|
||||
typeData = @_findOrCreateType type
|
||||
itemData = typeData[id] or null
|
||||
return itemData
|
||||
|
||||
getCurrent: (type)->
|
||||
return @_current unless type?
|
||||
|
||||
typeData = @_findOrCreateType type
|
||||
current = typeData['current'] or null
|
||||
return current
|
||||
|
||||
popNextToAssemble: ->
|
||||
return @_toAssemble.pop() or null
|
||||
|
||||
popNextToBuild: ->
|
||||
return @_toBuild.pop() or null
|
||||
|
||||
popNextToValidate: ->
|
||||
return @_toValidate.pop() or null
|
||||
|
||||
# Property Methods #############################################################################
|
||||
|
||||
getErrors: ->
|
||||
return @_errors[..]
|
||||
|
||||
getIsAssembled: ->
|
||||
return @_toAssemble.length > 0
|
||||
|
||||
getIsBuilt: ->
|
||||
return @_toBuild.length > 0
|
||||
|
||||
getIsValidated: ->
|
||||
return @_toValidate.length > 0
|
||||
|
||||
Object.defineProperties @prototype,
|
||||
errors: { get:@::getErrors }
|
||||
isAssembled: { get:@::getIsAssembled }
|
||||
isBuilt: { get:@::getIsBuilt }
|
||||
isValidated: { get:@::getIsValidated }
|
||||
|
||||
|
||||
# Private Methods ##############################################################################
|
||||
|
||||
_findOrCreateType: (type)->
|
||||
typeData = @_data[type]
|
||||
if not typeData?
|
||||
typeData = @_data[type] = {}
|
||||
typeData.type = type
|
||||
|
||||
return typeData
|
||||
Reference in New Issue
Block a user