brianneisler/gulp-recipe

View on GitHub
src/js/stores/RecipeStore.js

Summary

Maintainability
A
35 mins
Test Coverage
//-------------------------------------------------------------------------------
// Imports
//-------------------------------------------------------------------------------

import {
    Class,
    Obj
} from 'bugcore';
import {
    RecipeCache
} from '../caches';
import {
    Recipe
} from '../core';


//-------------------------------------------------------------------------------
// Declare Class
//-------------------------------------------------------------------------------

/**
 * @class
 * @extends {Obj}
 */
const RecipeStore = Class.extend(Obj, {

    _name: 'bitpack.RecipeStore',


    //-------------------------------------------------------------------------------
    // Constructor
    //-------------------------------------------------------------------------------

    /**
     * @constructs
     */
    _constructor() {

        this._super();


        //-------------------------------------------------------------------------------
        // Private Properties
        //-------------------------------------------------------------------------------

        /**
         * @private
         * @type {RecipeCache}
         */
        this.recipeCache          = new RecipeCache();
    },


    //-------------------------------------------------------------------------------
    // Getters and Setters
    //-------------------------------------------------------------------------------

    /**
     * @return {RecipeCache}
     */
    getRecipeCache() {
        return this.recipeCache;
    },


    //-------------------------------------------------------------------------------
    // Public Methods
    //-------------------------------------------------------------------------------

    /**
     * @param {Pack} pack
     * @return {Recipe}
     */
    generateRecipe(pack) {
        let recipe = this.recipeCache.get(pack);
        if (!recipe) {
            recipe = new Recipe(pack);
            this.recipeCache.set(pack, recipe);
        }
        return recipe;
    }
});


//-------------------------------------------------------------------------------
// Exports
//-------------------------------------------------------------------------------

export default RecipeStore;