/// <summary>
    /// Attempts to create a string representation of a string which is both sufficiently
    /// helpful but not overly verbose. Use the .Name if provided.
    /// </summary>
    /// <param name="named"></param>
    /// <returns></returns>
    public static string ToString(INamed named)
    {
        if (!string.IsNullOrEmpty(named.Name))
        {
            return($"<{named.Name}>");
        }

        if (named is IParser parser)
        {
            var pType     = parser.GetType();
            var pTypeName = pType.Name;
            if (pType.DeclaringType != null)
            {
                if (pTypeName == "Parser" || pTypeName == "SingleParser" || pTypeName == "MultiParser")
                {
                    return($"<{pType.DeclaringType.Name} Id={parser.Id}>");
                }

                return($"<{pType.DeclaringType.Name}.{pType.Name} Id={parser.Id}>");
            }

            return($"<{pType.Name} Id={parser.Id}>");
        }

        var objType = named.GetType();

        if (objType.DeclaringType != null)
        {
            return($"<{objType.DeclaringType.Name}.{objType.Name}>");
        }

        return($"<objType.Name>");
    }
Esempio n. 2
0
        public static List <String> getAlias(this INamed named)
        {
            if (named == null)
            {
                return(null);
            }
            if (named.GetType().FindMember("alias") != null)
            {
                return(new List <string>(named.FindMemberValue <List <String> >("alias")));
            }
            TextAttribute txtAttr = named.GetType().GetCustomAttribute <TextAttribute>();

            if (txtAttr == null || txtAttr.Alias == null)
            {
                return(null);
            }
            return(new List <string>(txtAttr.Alias));
        }
Esempio n. 3
0
        public static String getCaption(this INamed named)
        {
            if (named == null)
            {
                return("");
            }
            if (named.GetType().FindMember("caption") != null)
            {
                return(named.FindMemberValue <String>("caption"));
            }
            TextAttribute txtAttr = named.GetType().GetCustomAttribute <TextAttribute>();

            if (txtAttr == null)
            {
                return("");
            }
            return(txtAttr.Caption);
        }
Esempio n. 4
0
        public override void Execute()
        {
            base.Execute();

            if (!_explicitNewValuePassed)
            {
                var dialog = new TypeTextOrCancelDialog("Rename " + _nameable.GetType().Name, "Name", 2000, _nameable.Name);
                if (dialog.ShowDialog() == DialogResult.OK)
                {
                    while (UsefulStuff.IsBadName(dialog.ResultText))
                    {
                        if (YesNo("Name contains illegal characters, do you want to use it anyway?", "Bad Name"))
                        {
                            //user wants to use the name anyway
                            break;
                        }

                        //user does not want to use the bad name

                        //type a new one then
                        dialog = new TypeTextOrCancelDialog("Rename " + _nameable.GetType().Name, "Name", 2000, dialog.ResultText);

                        //no? in that case lets just give up altogether
                        if (dialog.ShowDialog() != DialogResult.OK)
                        {
                            return;
                        }
                    }
                    _newValue = dialog.ResultText;
                }
                else
                {
                    return;
                }
            }

            _nameable.Name = _newValue;
            EnsureNameIfCohortIdentificationAggregate();

            _nameable.SaveToDatabase();
            Publish((DatabaseEntity)_nameable);
        }
Esempio n. 5
0
        public override void Execute()
        {
            base.Execute();

            if (!_explicitNewValuePassed)
            {
                if (TypeText("Rename " + _nameable.GetType().Name, "Name", 2000, _nameable.Name, out string text))
                {
                    while (UsefulStuff.IsBadName(text))
                    {
                        if (YesNo("Name contains illegal characters, do you want to use it anyway?", "Bad Name"))
                        {
                            //user wants to use the name anyway
                            break;
                        }

                        //user does not want to use the bad name

                        //type a new one then

                        if (!TypeText("Rename " + _nameable.GetType().Name, "Name", 2000, _nameable.Name, out text))
                        {
                            return;
                        }
                    }

                    _newValue = text;
                }
                else
                {
                    return;
                }
            }

            _nameable.Name = _newValue;
            EnsureNameIfCohortIdentificationAggregate();

            _nameable.SaveToDatabase();
            Publish((DatabaseEntity)_nameable);
        }
Esempio n. 6
0
        public override IType check(Context context)
        {
            INamed named = context.getRegistered(name);

            if (named == null)
            {
                named = context.getRegisteredDeclaration <IDeclaration>(name);
            }
            if (named == null)
            {
                throw new SyntaxError("Unknown identifier:" + name);
            }
            else if (named is Variable) // local variable
            {
                return(named.GetIType(context));
            }
            else if (named is LinkedVariable)            // local variable
            {
                return(named.GetIType(context));
            }
            else if (named is IParameter) // named argument
            {
                return(named.GetIType(context));
            }
            else if (named is CategoryDeclaration) // any p with x
            {
                return(named.GetIType(context));
            }
            else if (named is AttributeDeclaration) // in category method
            {
                return(named.GetIType(context));
            }
            else if (named is MethodDeclarationMap)               // global method or closure
            {
                IEnumerator <IMethodDeclaration> decls = ((MethodDeclarationMap)named).Values.GetEnumerator();
                decls.MoveNext();
                return(new MethodType(decls.Current));
            }
            else
            {
                throw new SyntaxError(name + "  is not a value or method:" + named.GetType().Name);
            }
        }