| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- /**
- * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved.
- * For licensing, see LICENSE.md.
- */
- 'use strict';
- export default class ModelConsumable {
- constructor() {
- this.consumable = new Map();
- }
- add( item, type ) {
- if ( !this.consumable.has( item ) ) {
- this.consumable.set( item, new Map() );
- }
- this.consumable.get( item ).set( type, true );
- }
- consume( item, type ) {
- if ( this.test( item, type ) ) {
- this.consumable.get( item ).set( type, false );
- return true;
- } else {
- return false;
- }
- }
- test( item, type ) {
- const itemConsumables = this.consumable.get( item );
- if ( itemConsumables === undefined ) {
- return null;
- }
- const value = itemConsumables.get( type, true );
- if ( value === undefined ) {
- return null;
- }
- return value;
- }
- revert( item, type ) {
- const test = this.test( item, type );
- if ( test === false ) {
- this.consumable.get( item ).set( type, true );
- return true;
- } else if ( test === true ) {
- return false;
- }
- return null;
- }
- }
|