Re-organize methods of Mod
This commit is contained in:
@@ -5,8 +5,8 @@ Copyright (c) 2015 by Redwood Labs
|
|||||||
All rights reserved.
|
All rights reserved.
|
||||||
###
|
###
|
||||||
|
|
||||||
BaseModel = require './base_model'
|
|
||||||
_ = require 'underscore'
|
_ = require 'underscore'
|
||||||
|
BaseModel = require './base_model'
|
||||||
{Event} = require '../constants'
|
{Event} = require '../constants'
|
||||||
{RequiredMods} = require '../constants'
|
{RequiredMods} = require '../constants'
|
||||||
{Url} = require '../constants'
|
{Url} = require '../constants'
|
||||||
@@ -55,20 +55,51 @@ module.exports = class Mod extends BaseModel
|
|||||||
|
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
# ModVersion Proxy Methods #####################################################################
|
# Property Methods #############################################################################
|
||||||
|
|
||||||
|
Object.defineProperties @prototype,
|
||||||
|
|
||||||
|
activeModVersion:
|
||||||
|
get: -> @_activeModVersion
|
||||||
|
|
||||||
|
activeVersion:
|
||||||
|
get: ->
|
||||||
|
return @_activeVersion
|
||||||
|
|
||||||
|
set: (version)->
|
||||||
|
return if version is @_activeVersion
|
||||||
|
|
||||||
|
version ?= Mod.Version.None
|
||||||
|
if version is Mod.Version.Latest then version = _.last(@_modVersions).version
|
||||||
|
|
||||||
|
if version is Mod.Version.None
|
||||||
|
@_activeVersion = version
|
||||||
|
@_activateModVersion null
|
||||||
|
|
||||||
|
@trigger Event.change + ':activeVersion', this, @_activeVersion
|
||||||
|
@trigger Event.change, this
|
||||||
|
else
|
||||||
|
for modVersion in @_modVersions
|
||||||
|
if version is modVersion.version
|
||||||
|
@_activateModVersion modVersion
|
||||||
|
break
|
||||||
|
|
||||||
|
@_activeVersion = version
|
||||||
|
@trigger Event.change + ':activeVersion', this, @_activeVersion
|
||||||
|
@trigger Event.change, this
|
||||||
|
|
||||||
|
enabled:
|
||||||
|
get: -> @_activeModVersion?
|
||||||
|
|
||||||
|
tutorials:
|
||||||
|
get: -> @getAllTutorials()
|
||||||
|
|
||||||
|
# Item Methods #################################################################################
|
||||||
|
|
||||||
eachItem: (callback)->
|
eachItem: (callback)->
|
||||||
effectiveModVersion = @_activeModVersion or @getModVersion Mod.Version.Latest
|
effectiveModVersion = @_activeModVersion or @getModVersion Mod.Version.Latest
|
||||||
effectiveModVersion.eachItem callback
|
effectiveModVersion.eachItem callback
|
||||||
|
|
||||||
eachName: (callback)->
|
|
||||||
effectiveModVersion = @_activeModVersion or @getModVersion Mod.Version.Latest
|
|
||||||
effectiveModVersion.eachName callback
|
|
||||||
|
|
||||||
eachRecipe: (callback)->
|
|
||||||
effectiveModVersion = @_activeModVersion or @getModVersion Mod.Version.Latest
|
|
||||||
effectiveModVersion.eachRecipe callback
|
|
||||||
|
|
||||||
findItem: (slug, options={})->
|
findItem: (slug, options={})->
|
||||||
options.includeDisabled ?= false
|
options.includeDisabled ?= false
|
||||||
options.enableAsNeeded ?= false
|
options.enableAsNeeded ?= false
|
||||||
@@ -91,52 +122,7 @@ module.exports = class Mod extends BaseModel
|
|||||||
return unless @_activeModVersion?
|
return unless @_activeModVersion?
|
||||||
@_activeModVersion.findItemByName name
|
@_activeModVersion.findItemByName name
|
||||||
|
|
||||||
findName: (itemSlug)->
|
# ModVersion Methods ###########################################################################
|
||||||
return unless @_activeModVersion?
|
|
||||||
@_activeModVersion.findName itemSlug
|
|
||||||
|
|
||||||
findRecipes: (itemSlug, result=[], options={})->
|
|
||||||
options.alwaysFromOwningMod ?= false
|
|
||||||
|
|
||||||
if @_activeModVersion?
|
|
||||||
return @_activeModVersion.findRecipes itemSlug, result, options
|
|
||||||
else if options.alwaysFromOwningMod and itemSlug.mod is @slug
|
|
||||||
return @getModVersion(Mod.Version.Latest).findRecipes itemSlug, result, options
|
|
||||||
|
|
||||||
return null
|
|
||||||
|
|
||||||
# Property Methods #############################################################################
|
|
||||||
|
|
||||||
getActiveVersion: ->
|
|
||||||
return @_activeVersion
|
|
||||||
|
|
||||||
setActiveVersion: (version)->
|
|
||||||
return if version is @_activeVersion
|
|
||||||
|
|
||||||
version ?= Mod.Version.None
|
|
||||||
if version is Mod.Version.Latest then version = _.last(@_modVersions).version
|
|
||||||
|
|
||||||
if version is Mod.Version.None
|
|
||||||
@_activeVersion = version
|
|
||||||
@_activateModVersion null
|
|
||||||
|
|
||||||
@trigger Event.change + ':activeVersion', this, @_activeVersion
|
|
||||||
@trigger Event.change, this
|
|
||||||
else
|
|
||||||
for modVersion in @_modVersions
|
|
||||||
if version is modVersion.version
|
|
||||||
@_activateModVersion modVersion
|
|
||||||
break
|
|
||||||
|
|
||||||
@_activeVersion = version
|
|
||||||
@trigger Event.change + ':activeVersion', this, @_activeVersion
|
|
||||||
@trigger Event.change, this
|
|
||||||
|
|
||||||
getActiveModVersion: ->
|
|
||||||
return @_activeModVersion
|
|
||||||
|
|
||||||
isEnabled: ->
|
|
||||||
return @activeModVersion?
|
|
||||||
|
|
||||||
addModVersion: (modVersion)->
|
addModVersion: (modVersion)->
|
||||||
return unless modVersion?
|
return unless modVersion?
|
||||||
@@ -167,6 +153,34 @@ module.exports = class Mod extends BaseModel
|
|||||||
|
|
||||||
return null
|
return null
|
||||||
|
|
||||||
|
# Name Methods #################################################################################
|
||||||
|
|
||||||
|
eachName: (callback)->
|
||||||
|
effectiveModVersion = @_activeModVersion or @getModVersion Mod.Version.Latest
|
||||||
|
effectiveModVersion.eachName callback
|
||||||
|
|
||||||
|
findName: (itemSlug)->
|
||||||
|
return unless @_activeModVersion?
|
||||||
|
@_activeModVersion.findName itemSlug
|
||||||
|
|
||||||
|
# Recipe Methods ###############################################################################
|
||||||
|
|
||||||
|
eachRecipe: (callback)->
|
||||||
|
effectiveModVersion = @_activeModVersion or @getModVersion Mod.Version.Latest
|
||||||
|
effectiveModVersion.eachRecipe callback
|
||||||
|
|
||||||
|
findRecipes: (itemSlug, result=[], options={})->
|
||||||
|
options.alwaysFromOwningMod ?= false
|
||||||
|
|
||||||
|
if @_activeModVersion?
|
||||||
|
return @_activeModVersion.findRecipes itemSlug, result, options
|
||||||
|
else if options.alwaysFromOwningMod and itemSlug.mod is @slug
|
||||||
|
return @getModVersion(Mod.Version.Latest).findRecipes itemSlug, result, options
|
||||||
|
|
||||||
|
return null
|
||||||
|
|
||||||
|
# Tutorial Methods #############################################################################
|
||||||
|
|
||||||
addTutorial: (tutorial)->
|
addTutorial: (tutorial)->
|
||||||
return unless tutorial?
|
return unless tutorial?
|
||||||
if @getTutorial(tutorial.slug)? then throw new Error "duplicate tutorial: #{tutorial.name}"
|
if @getTutorial(tutorial.slug)? then throw new Error "duplicate tutorial: #{tutorial.name}"
|
||||||
@@ -181,13 +195,7 @@ module.exports = class Mod extends BaseModel
|
|||||||
return tutorial if tutorial.slug is tutorialSlug
|
return tutorial if tutorial.slug is tutorialSlug
|
||||||
return null
|
return null
|
||||||
|
|
||||||
Object.defineProperties @prototype,
|
# Backbone.Model Overrides #####################################################################
|
||||||
activeModVersion: { get:@prototype.getActiveModVersion }
|
|
||||||
activeVersion: { get:@prototype.getActiveVersion, set:@prototype.setActiveVersion }
|
|
||||||
enabled: { get:@prototype.isEnabled }
|
|
||||||
tutorials: { get:@prototype.getAllTutorials }
|
|
||||||
|
|
||||||
# Backbone.View Overrides ######################################################################
|
|
||||||
|
|
||||||
parse: (text)->
|
parse: (text)->
|
||||||
ModParser = require './mod_parser' # to avoid require cycles
|
ModParser = require './mod_parser' # to avoid require cycles
|
||||||
|
|||||||
Reference in New Issue
Block a user