0.1.1 • Published 8 years ago

typed_observer v0.1.1

Weekly downloads
2
License
ISC
Repository
bitbucket
Last release
8 years ago

typed_observer

import {Observer, Int, String} from 'typed_observer';

// Описание простого типа, Соглано ему поле сможет принять значения строго равные true или false
var Bool = {
    isValid(value) {
        return value === true || value === false;
    },
    
    getValue(value) {
        return value;
    },
    
    getPureValue(value) {
        return value;
    }
}

// Описание простого типа, согласно ему поле будет сможет принимать значения указанные в массиве
function oneOf(arr) {
    return {
        isValid(value) {
            return arr.indexOf(value) >= 0
        },
        
        getValue(value) {
            return value;
        },
        
        getPureValue(value) {
            return value;
        }
    }
} 

/*********************************************************/
        Описание  поле 
/*********************************************************/
var observer = new Observer();

observer.define('firstName', String, {required: true});
observer.define('age', Input);
observer.define('married', Bool);
observer.define('gender', oneOf([0,1])); // 0 - male, 1 - female

/*********************************************************/

// Колбек на изменение любого поля
observer.onUpdate((dataHandler) => {
    console.log(data);
});

// Колбек на изменение поля firstName
observer.onUpdate('firstName', (value, dataHandler) => {
    console.log('firstName =', value);
});


observer.set('firstName', 'Josh') // Установка значения
        .freeze('firstName'); // заморозка поля(поле не сможет принимать значения)
        
observer.set('firstName', 'Mark');
observer.get('firstName'); // 'Josh'

observer.defreeze('firstName'); // размарозка поля

observer.set('firstName', 'Mark');
observer.get('firstName'); // 'Mark'

observer.lock('age'); // Блокировка вызова колбека

// Вызываться не будет, потому что вызов заблокирован ранее
observer.onUpdate('age', (value, dataHandler) => {
    console.log('firstName =', value);
});

var data = observer.get();

data.firstName = 'Josh';
observer.get('firstName') // Josh
0.1.1

8 years ago

0.1.0

8 years ago

0.0.4

8 years ago

0.0.3

8 years ago

0.0.2

8 years ago

0.0.1

8 years ago