public void ExportBrain(string brainId, Behaviors.Database destination)
    {
        // Export the brain itself.
        Brain brain = GetBrain(brainId).DeepClone();

        destination.brains.Set(brainId, brain);

        // Export the needed embedded behaviors. Don't need to export builtins -
        // they're always available.

        HashSet <string> exportedEmbeddedBehaviorIds = new HashSet <string>();

        foreach (var use in brain.behaviorUses)
        {
            if (BehaviorSystem.IsEmbeddedBehaviorUri(use.behaviorUri))
            {
                exportedEmbeddedBehaviorIds.Add(GetIdOfBehaviorUri(use.behaviorUri));
            }
        }

        foreach (var behaviorId in exportedEmbeddedBehaviorIds)
        {
            destination.behaviors.Set(behaviorId, db.GetBehavior(behaviorId));
        }
    }
Example #2
0
 public string GetId()
 {
     if (BehaviorSystem.IsEmbeddedBehaviorUri(behaviorUri))
     {
         return(BehaviorSystem.GetIdOfBehaviorUri(behaviorUri));
     }
     return(null);
 }
Example #3
0
        public void GarbageCollect(bool removeUnusedBehaviors, HashSet <string> usedBrainIds)
        {
            brains.DeleteAll(brains.ComplementOf(usedBrainIds).ToList());

            if (removeUnusedBehaviors)
            {
                HashSet <string> usedEmbeddedBehaviors = new HashSet <string>(
                    usedBrainIds.SelectMany(brainId => GetBrain(brainId).behaviorUses.Select(use => use.behaviorUri)).
                    Where(uri => BehaviorSystem.IsEmbeddedBehaviorUri(uri)).
                    Select(uri => BehaviorSystem.GetIdOfBehaviorUri(uri)));

                behaviors.DeleteAll(behaviors.ComplementOf(usedEmbeddedBehaviors).ToList());
            }
        }
Example #4
0
    static void CommandFindJs(CommandArg[] args)
    {
        try
        {
            if (args.Length == 0)
            {
                Log($"Usage: findjs some word or phrase");
                return;
            }
            string q = String.Join(" ", args.Select(a => a.String)).ToLowerInvariant();
            Log($"Searching for \"{q}\"");
            foreach (var cardUri in main.behaviorSystem.GetCards())
            {
                if (!BehaviorSystem.IsEmbeddedBehaviorUri(cardUri))
                {
                    continue;
                }
                var data = main.behaviorSystem.GetBehaviorData(cardUri);
                if (data.javascript.ToLowerInvariant().Contains(q))
                {
                    var cardMd = BehaviorCards.CardMetadata.GetMetaDataFor(data);

                    foreach (var line in data.javascript.EnumerateNumberedLines())
                    {
                        if (line.line.ToLowerInvariant().Contains(q))
                        {
                            Log($"<color=#888888>{cardMd.title}:{line.number}</color> {line.line}");
                        }
                    }
                }
            }
        }
        catch (System.Exception e)
        {
            Log($"Failed with exception: {e}");
            Log($"Usage: findjs 'some word or phrase'");
        }
    }