public int WriteEmbeddedBehaviorsToDirectory(IEnumerable <string> behaviorUris, string path) { int count = 0; foreach (string uri in behaviorUris) { string id = BehaviorSystem.GetIdOfBehaviorUri(uri); Behaviors.Behavior behavior = GetBehaviorData(uri); BehaviorCards.CardMetadata.Data meta = BehaviorCards.CardMetadata.GetMetaDataFor(behavior); string fileName = String.Join("_", meta.title.Split(Path.GetInvalidFileNameChars(), StringSplitOptions.RemoveEmptyEntries)).TrimEnd('.'); string baseBehaviorDir = Path.Combine(path, fileName); string behaviorDir = baseBehaviorDir; int i = 1; while (Directory.Exists(behaviorDir)) { behaviorDir = baseBehaviorDir + " " + i; i++; } Directory.CreateDirectory(behaviorDir); Behaviors.Behavior.WriteToDirectory(behaviorDir, id, behavior); count++; } return(count); }
// TODO should BehaviorSystem know about this? // For the card library. public IEnumerable <string> GetCards() { foreach (string uri in LoadBehaviorLibrary()) { if (IsLegacyBuiltinBehavior(uri)) { // Skip these. continue; } Behavior data = GetBehaviorData(uri); BehaviorCards.CardMetadata.Data meta = BehaviorCards.CardMetadata.GetMetaDataFor(data); if (!meta.isCard || meta.hidden) { continue; } yield return(uri); } }