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)); } }
public string GetId() { if (BehaviorSystem.IsEmbeddedBehaviorUri(behaviorUri)) { return(BehaviorSystem.GetIdOfBehaviorUri(behaviorUri)); } return(null); }
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()); } }
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'"); } }