Esempio n. 1
0
        internal FileData VisitDictionaryValueNullChecked(string key, FileData node)
        {
            FileLocation fileLocation = FileLocation.CreateFromFilesDictionaryKey(key);

            bool workToDo = false;
            bool overwriteExistingData = _dataToInsert.Includes(OptionallyEmittedData.OverwriteExistingData);

            workToDo |= (node.Hashes == null || overwriteExistingData) && _dataToInsert.Includes(OptionallyEmittedData.Hashes);
            workToDo |= (node.Contents?.Binary == null || overwriteExistingData) && _dataToInsert.Includes(OptionallyEmittedData.TextFiles);
            workToDo |= (node.Contents?.Binary == null || overwriteExistingData) && _dataToInsert.Includes(OptionallyEmittedData.BinaryFiles);

            if (workToDo)
            {
                fileLocation.TryReconstructAbsoluteUri(_run.OriginalUriBaseIds, out Uri uri);

                Encoding encoding = null;

                if (!string.IsNullOrWhiteSpace(node.Encoding))
                {
                    try
                    {
                        encoding = Encoding.GetEncoding(node.Encoding);
                    }
                    catch (ArgumentException) { }
                }

                int length = node.Length;
                node        = FileData.Create(uri, _dataToInsert, node.MimeType, encoding: encoding);
                node.Length = length;
            }

            return(base.VisitFileData(node));
        }