Exemple #1
0
            public TomlSettingsBuilder(TomlSettings settings)
            {
                Assert(settings != null);

                this.settings = settings;
                this.AllowImplicitConversions(ConversionSets.Default);
            }
Exemple #2
0
            public TypeSettingsBuilder(TomlSettings settings, List <ITomlConverter> converters)
            {
                Assert(settings != null);
                Assert(converters != null);

                this.settings   = settings;
                this.converters = converters;
            }
Exemple #3
0
        public static TomlTable ReadStream(Stream stream, TomlSettings settings)
        {
            if (settings == null)
            {
                throw new ArgumentNullException(nameof(settings));
            }

            return(StreamTomlSerializer.Deserialize(stream, settings));
        }
Exemple #4
0
        /// <summary>
        /// Creates a empty TOML table.
        /// </summary>
        /// <param name="settings">The config to use, to create the table.</param>
        /// <returns>A new empty table created with the given config.</returns>
        /// <exception cref="ArgumentNullException">*config* is **null**.</exception>
        /// <remarks>[!include[_](../specs/toml-create-remarks.md)]</remarks>
        public static TomlTable Create(TomlSettings settings)
        {
            if (settings == null)
            {
                throw new ArgumentNullException(nameof(settings));
            }

            return(new TomlTable.RootTable(settings));
        }
Exemple #5
0
        public static TomlSettings Create(Action <ITomlSettingsBuilder> cfg)
        {
            var config  = new TomlSettings();
            var builder = new TomlSettingsBuilder(config);

            cfg(builder);
            builder.SetupConverters();
            return(config);
        }
Exemple #6
0
        /// <summary>
        /// Reads the TOML contents from some file and converts it to a CLR object.
        /// </summary>
        /// <typeparam name="T">The type of the CLR object.</typeparam>
        /// <param name="filePath">The absolute or relative path to the file.</param>
        /// <param name="settings">The settings used to process the TOML content.</param>
        /// <returns>A CLR object representing the TOML contents of the file.</returns>
        /// <exception cref="ArgumentNullException">If *filePath* is **null**.</exception>
        /// <exception cref="ArgumentNullException">If *settings* is **null**</exception>
        public static T ReadFile <T>(string filePath, TomlSettings settings)
        {
            filePath.CheckNotNull(nameof(filePath));
            settings.CheckNotNull(nameof(settings));

            var tt = ReadFile(filePath, settings);

            return(tt.Get <T>());
        }
Exemple #7
0
        /// <summary>
        /// Reads the TOML contents from some file and maps it into a TomlTable structure.
        /// </summary>
        /// <param name="filePath">The absolute or relative path to the file.</param>
        /// <param name="settings">The settings used to process the TOML content.</param>
        /// <returns>A <see cref="TomlTable"/>corresponding to the file content.</returns>
        public static TomlTable ReadFile(string filePath, TomlSettings settings)
        {
            filePath.CheckNotNull(nameof(filePath));
            settings.CheckNotNull(nameof(settings));

            using (var fs = new FileStream(filePath, FileMode.Open, FileAccess.Read))
            {
                return(StreamTomlSerializer.Deserialize(fs, settings));
            }
        }
Exemple #8
0
            public RootTable(TomlSettings settings)
                : base(null)
            {
                if (settings == null)
                {
                    throw new ArgumentNullException(nameof(settings));
                }

                this.settings = settings;
            }
Exemple #9
0
        internal static RootTable From <T>(TomlSettings settings, T obj)
        {
            if (settings == null)
            {
                throw new ArgumentNullException(nameof(settings));
            }
            if (obj == null)
            {
                throw new ArgumentNullException(nameof(obj));
            }

            if ((object)obj is RootTable rt)
            {
                return(rt);
            }

            var tt = new RootTable(settings);

            if ((object)obj is IDictionary dict)
            {
                CreateFromDictionary();
            }
            else
            {
                CreateFromCustomClrObject();
            }

            return(tt);

            void CreateFromDictionary()
            {
                foreach (DictionaryEntry r in dict)
                {
                    tt.AddRow(new TomlKey((string)r.Key), TomlObject.CreateFrom(tt, r.Value));
                }
            }

            void CreateFromCustomClrObject()
            {
                var t       = obj.GetType();
                var members = settings.GetSerializationMembers(t);

                foreach (var m in members)
                {
                    object val = m.GetValue(obj);
                    if (val != null)
                    {
                        TomlObject to = TomlObject.CreateFrom(tt, val);
                        to.AddComments(settings.GetComments(t, m.Member));
                        tt.AddRow(m.Key, to);
                    }
                }
            }
        }
Exemple #10
0
        public static T ReadStream <T>(Stream stream, TomlSettings settings)
        {
            if (settings == null)
            {
                throw new ArgumentNullException(nameof(settings));
            }

            var tt = StreamTomlSerializer.Deserialize(stream, settings);

            return(tt.Get <T>());
        }
Exemple #11
0
        public static T ReadString <T>(string toRead, TomlSettings settings)
        {
            if (settings == null)
            {
                throw new ArgumentNullException(nameof(settings));
            }

            TomlTable tt     = ReadString(toRead, settings);
            T         result = tt.Get <T>();

            return(result);
        }
Exemple #12
0
        public static TomlTable ReadString(string toRead, TomlSettings settings)
        {
            if (settings == null)
            {
                throw new ArgumentNullException(nameof(settings));
            }

            using (var ms = new MemoryStream(Encoding.UTF8.GetBytes(toRead)))
            {
                return(StreamTomlSerializer.Deserialize(ms, settings));
            }
        }
Exemple #13
0
        public static TomlTable Deserialize(Stream s, TomlSettings settings)
        {
            var reader  = new StreamReader(s);
            var content = reader.ReadToEnd();
            var lexer   = new Lexer(content);
            var tokens  = lexer.Lex();
            var parser  = new Parser.Parser(new ParseInput(tokens), settings);
            var ast     = parser.Parse();

#if DEBUG
            var tree = ast.SyntaxNodeOrDefault()?.PrintTree();
#endif
            var table = TableBuilder.Build(ast.SyntaxNodeOrDefault(), settings);
            return(table);
        }
Exemple #14
0
        public static void WriteFile <T>(T obj, string filePath, TomlSettings settings)
        {
            if (obj == null)
            {
                throw new ArgumentNullException(nameof(obj));
            }
            if (settings == null)
            {
                throw new ArgumentNullException(nameof(settings));
            }

            var table = TomlTable.RootTable.From(settings, obj);

            WriteFileInternal(table, filePath, settings);
        }
Exemple #15
0
        internal static RootTable From <T>(TomlSettings settings, T obj)
        {
            if (settings == null)
            {
                throw new ArgumentNullException(nameof(settings));
            }
            if (obj == null)
            {
                throw new ArgumentNullException(nameof(obj));
            }

            var rt = obj as RootTable;

            if (rt != null)
            {
                return(rt);
            }

            var tt         = new RootTable(settings);
            var t          = obj.GetType();
            var props      = settings.GetSerializationProperties(t);
            var allObjects = new List <Tuple <string, TomlObject> >();

            foreach (var p in props)
            {
                object val = p.GetValue(obj, null);
                if (val != null)
                {
                    TomlObject to = TomlObject.CreateFrom(tt, val, p);
                    AddComments(to, p);
                    allObjects.Add(Tuple.Create(p.Name, to));
                }
            }

            tt.AddScopeTypesLast(allObjects);

            return(tt);
        }
Exemple #16
0
        private static void WriteFileInternal(TomlTable table, string filePath, TomlSettings settings)
        {
            if (table == null)
            {
                throw new ArgumentNullException(nameof(table));
            }
            if (filePath == null)
            {
                throw new ArgumentNullException(nameof(filePath));
            }
            if (settings == null)
            {
                throw new ArgumentNullException(nameof(settings));
            }

            filePath.EnsureDirectoryExists();

            using (var fs = new FileStream(filePath, FileMode.Create))
                using (var sw = new FormattingStreamWriter(fs, CultureInfo.InvariantCulture))
                {
                    var writer = new TomlTableWriter(sw, settings);
                    writer.WriteToml(table);
                }
        }
Exemple #17
0
        public static TomlTable Deserialize(Stream s, TomlSettings settings)
        {
            var parser = new Parser.Parser(s, settings);

            return(parser.Parse());
        }
Exemple #18
0
 public static void WriteFile(TomlTable table, string filePath, TomlSettings settings) =>
 WriteFileInternal(table, filePath, settings);
Exemple #19
0
 public PropertyMappingBuilder(TomlSettings settings)
 {
     this.settings = settings;
 }
Exemple #20
0
 public TableKeyMappingBuilder(TomlSettings settings, ITomlSettingsBuilder configBuilder, string key)
 {
     this.settings      = settings;
     this.configBuilder = configBuilder;
     this.key           = key;
 }
Exemple #21
0
 public static void WriteStream <T>(T obj, Stream outStream, TomlSettings settings) =>
 WriteStreamInternal(TomlTable.RootTable.From(settings, obj), outStream);
Exemple #22
0
 public static string WriteString <T>(T obj, TomlSettings settings) =>
 WriteStringInternal(TomlTable.RootTable.From(settings, obj));
Exemple #23
0
 public IEnumerable <T> To <T>(TomlSettings settings) => this.Value.Select((to) => to.Get <T>());
Exemple #24
0
 /// <summary>
 /// Creates a TOML table from a given CLR object.
 /// </summary>
 /// <typeparam name="T">The type of the CLR object.</typeparam>
 /// <param name="obj">The CLR object instance for that the TOML table will be created.</param>
 /// <param name="settings">The config to use for the creation.</param>
 /// <returns>A new table representing the CLR object. The table is associated with the given config.</returns>
 /// <remarks>[!include[_](../specs/toml-create-remarks.md)]</remarks>
 public static TomlTable Create <T>(T obj, TomlSettings settings) => TomlTable.RootTable.From(settings, obj);