jsons

by Alexander Novikov

HTML

<script src="https://getfirebug.com/firebug-lite-debug.js"></script>

JavaScript

var ai = (function() {
    
    var ai = {
        
        phrases: {},
        phraseIds: {},
        nextPhraseId: 1,

        authors: {},
        authorIds: {},
        nextAuthorId: 1,
        
        messages: {},
        nextMessageId: 1,
        
        actions: {},
        nextActionId: 1,
        
        parameters: {},
        nextParameterId: 1,
        
        attributes: {},
        nextAttributeId: 1,
        
        concepts: {},
        conceptIds: {},
        nextConceptId: 1,
        
        things: {},
        nextThingId: 1
        
    }
    
    ai.listen = function(author, message) {
        
        console.log(author + " сказал:");
        console.log(message);

        var aiAuthor = ai.addAuthor(ai.addPhrase(author).id);
        
        var aiMessage = ai.addMessage(aiAuthor.id);
        
        aiAuthor.messageIds.push(aiMessage.id);
        
        for (var action in message) {

            var aiAction = ai.addAction(ai.addPhrase(action).id, aiMessage.id);
            
            aiMessage.actionIds.push(aiAction.id, aiAuthor.id);
            
            var aiActionConcept = ai.addConcept(aiAction.phraseId, 'action');
            
            for (var parameter in message[action]) {
                
                var aiParameter = ai.addParameter(ai.addPhrase(parameter).id, aiAction.id);
                
                aiAction.parameterIds.push(aiParameter.id);
                
                var aiParameterConcept = ai.addConcept(aiParameter.phraseId, 'parameter');
                
                aiParameter.conceptId = aiParameterConcept.id;
                
                ai.linkConcepts(aiParameterConcept, aiActionConcept);

                if (ai.isReference(message[action][parameter])) {

                    var attributes = message[action][parameter][1];

                } else {

                    var attributes = message[action][parameter];
                    
                }

                for...