private string GetMetaName(IEntity member) { string name = null; if (TransformCtx.GetEntityName != null) { name = TransformCtx.GetEntityName(member); } if (name == null) { switch (member.SymbolKind) { case SymbolKind.Property: { name = XmlMetaMaker.GetPropertyName((IProperty)member); break; } case SymbolKind.Method: { name = XmlMetaMaker.GetMethodName((IMethod)member); break; } } } if (name != null) { if (Helpers.IsReservedWord(name)) { throw new System.Exception("GetMetaName[{0}, {1}, {2}] IsReservedWord".F(name, member.Name, member.DeclaringType.FullName)); } } return(name); }
public virtual string GetCustomTypeName(TypeDefinition type, IEmitter emitter) { string name = XmlMetaMaker.GetCustomName(type); if (!string.IsNullOrEmpty(name)) { return(name); } return(null); }
public virtual string GetInline(IEntity entity) { switch (entity.SymbolKind) { case SymbolKind.Field: { IField field = (IField)entity; return(XmlMetaMaker.GetFieldInline(field)); } case SymbolKind.Property: { IProperty property = (IProperty)entity; bool isGetOrSet = !IsAssignment; return(XmlMetaMaker.GetPropertyInline(property, isGetOrSet)); } case SymbolKind.Method: { IMethod method = (IMethod)entity; return(XmlMetaMaker.GetMethodInline(method)); } } return(null); }
public Dictionary <string, string> Translate() { var logger = this.Log; logger.Info("Translating..."); var config = this.ReadConfig(); if (config.LoggerLevel.HasValue) { var l = logger as Bridge.Translator.Logging.Logger; if (l != null) { l.LoggerLevel = config.LoggerLevel.Value; } } logger.Trace("Read config file: " + Utils.AssemblyConfigHelper.ConfigToString(config)); if (!string.IsNullOrWhiteSpace(config.Configuration)) { this.Configuration = config.Configuration; logger.Trace("Set configuration: " + this.Configuration); } if (config.DefineConstants != null && config.DefineConstants.Count > 0) { this.DefineConstants.AddRange(config.DefineConstants); this.DefineConstants = this.DefineConstants.Distinct().ToList(); logger.Trace("Set constants: " + string.Join(",", this.DefineConstants)); } if (this.FolderMode) { this.ReadFolderFiles(); logger.Trace("Read folder files"); } else { this.ReadProjectFile(); logger.Trace("Read project file"); if (this.Rebuild || !File.Exists(this.AssemblyLocation)) { this.BuildAssembly(); logger.Trace("Build assembly"); } } var references = this.InspectReferences(); this.References = references; this.Plugins = Bridge.Translator.Plugins.GetPlugins(this, config, logger); this.Plugins.OnConfigRead(config); if (!string.IsNullOrWhiteSpace(config.BeforeBuild)) { try { logger.Trace("Running BeforeBuild event"); this.RunEvent(config.BeforeBuild); } catch (Exception exc) { var message = "Error: Unable to run beforeBuild event command: " + exc.Message + "\nStack trace:\n" + exc.StackTrace; logger.Error("Exception occurred. Message: " + message); throw new Bridge.Translator.Exception(message); } } logger.Trace("BuildSyntaxTree"); this.BuildSyntaxTree(); var resolver = new MemberResolver(this.ParsedSourceFiles, Emitter.ToAssemblyReferences(references)); this.InspectTypes(resolver, config); resolver.CanFreeze = true; var emitter = this.CreateEmitter(resolver); XmlMetaMaker.Load(XmlMetaFiles, emitter); emitter.Translator = this; emitter.AssemblyInfo = this.AssemblyInfo; emitter.References = references; emitter.SourceFiles = this.SourceFiles; emitter.Log = this.Log; emitter.Plugins = this.Plugins; this.SortReferences(); this.Plugins.BeforeEmit(emitter, this); this.Outputs = emitter.Emit(); this.Plugins.AfterEmit(emitter, this); logger.Info("Translating done"); return(this.Outputs); }