/// <summary> /// Encode du type de données. /// </summary> /// <param name="type">Type de données à encoder.</param> /// <param name="encChars">Caractères d'encodage utilisés.</param> /// <param name="subComponent">Indique si l'on encode un sous-composant.</param> /// <returns></returns> public static string Encode(IType type, EncodingCharacters encChars, bool subComponent = false) { StringBuilder retType = new StringBuilder(); if (type is ITypePrimitive) { ITypePrimitive primitive = type as ITypePrimitive; if (primitive == null) { throw new EncodingException("Une erreur s'est produite à la conversion de 'IType' vers 'ITypePrimitive'."); } else { retType.Append(PipeParser.Encode(primitive, encChars)); } } else { ITypeComposite composite = type as ITypeComposite; if (composite == null) { throw new EncodingException("Une erreur s'est produite à la conversion de 'IType' vers 'ITypeComposite'."); } else { StringBuilder retComp = new StringBuilder(); char compDelimiter = subComponent ? encChars.SubComponentSeparator : encChars.ComponentSeparator; for (int i = 0; i < composite.Components.Length; i++) { retComp.Append(PipeParser.Encode(composite.Components[i], encChars, true)); if (i < composite.Components.Length - 1) { retComp.Append(compDelimiter); } } retType.Append(InteropUtil.RemoveExtraDelimiters(retComp.ToString(), compDelimiter)); } } return(retType.ToString()); }
/// <summary> /// Encode un type de données primitif. /// </summary> /// <param name="primitive">Type de données à encoder.</param> /// <param name="encChars">Caractères d'encodage utilisés.</param> /// <returns></returns> public static string Encode(ITypePrimitive primitive, EncodingCharacters encChars) { return(EscapeCharacterUtil.Escape(primitive.Value, encChars)); }