Esempio n. 1
0
        /// <summary>
        /// Generate nfo line with proper indent and alignment
        /// </summary>
        /// <param name="style">NFO style parameter</param>
        /// <param name="content">the mutable part in this line</param>
        /// <returns>a well-formed nfo line</returns>
        private List <byte> GenerateMutableLine(NFOStyle style, string content, Alignment align)
        {
            List <byte> byteList = new List <byte>();

            byteList.AddRange(style.Prefix1);
            switch (align)
            {
            case Alignment.Left:
                byteList.AddRange(CharacterEncodingUtil.StringToBytes(content.PadRight(style.LengthLimit, style.LinePaddingChar)));
                byteList.AddRange(style.Suffix);
                break;

            case Alignment.Middle:
                int remainingSpace      = style.LengthLimit - content.Length;
                int leftRemainingSpace  = remainingSpace / 2;
                int rightRemainingSpace = remainingSpace - leftRemainingSpace;
                byteList.AddRange(Enumerable.Repeat(CharacterEncodingUtil.CharToByte(style.LinePaddingChar), leftRemainingSpace).ToArray());
                byteList.AddRange(CharacterEncodingUtil.StringToBytes(content));
                byteList.AddRange(Enumerable.Repeat(CharacterEncodingUtil.CharToByte(style.LinePaddingChar), rightRemainingSpace).ToArray());
                byteList.AddRange(style.Suffix);
                break;

            case Alignment.Right:
                byteList.AddRange(CharacterEncodingUtil.StringToBytes(content.PadLeft(style.LengthLimit, style.LinePaddingChar)));
                byteList.AddRange(style.Suffix);
                break;

            default:
                byteList.AddRange(CharacterEncodingUtil.StringToBytes(content.PadRight(style.LengthLimit, style.LinePaddingChar)));
                byteList.AddRange(style.Suffix);
                break;
            }
            return(byteList);
        }
Esempio n. 2
0
        /// <summary>
        /// Generate nfo line with proper indent and alignment
        /// </summary>
        /// <param name="nfoStyle">NFO style parameter</param>
        /// <param name="key">key for dictionary</param>
        /// <param name="line">a line from value for dictionary under length limit</param>
        /// <param name="containsKey">contains key when generate nfo line. Yes for the first line and No for others</param>
        /// <returns>a well-formed nfo line</returns>
        private List <byte> GenerateDictionaryLine(NFOStyle nfoStyle, string key, string line, bool containsKey)
        {
            List <byte> list = new List <byte>();

            if (containsKey)
            {
                list.AddRange(nfoStyle.Prefix1);
                list.AddRange(CharacterEncodingUtil.StringToBytes(key));
                list.AddRange(Enumerable.Repeat(CharacterEncodingUtil.CharToByte(nfoStyle.KeyPaddingChar), nfoStyle.KeyLength - key.Length).ToArray());
                list.AddRange(nfoStyle.ConcatString);
                list.AddRange(CharacterEncodingUtil.StringToBytes(line));
                list.AddRange(Enumerable.Repeat(CharacterEncodingUtil.CharToByte(nfoStyle.LinePaddingChar), nfoStyle.LineLength - line.Length).ToArray());
                list.AddRange(nfoStyle.Suffix);
            }
            else
            {
                list.AddRange(nfoStyle.Prefix2);
                list.AddRange(CharacterEncodingUtil.StringToBytes(line));
                list.AddRange(Enumerable.Repeat(CharacterEncodingUtil.CharToByte(nfoStyle.LinePaddingChar), nfoStyle.LineLength - line.Length).ToArray());
                list.AddRange(nfoStyle.Suffix);
            }
            return(list);
        }
Esempio n. 3
0
 public ImmutableLine(string line)
 {
     base.bytes    = CharacterEncodingUtil.StringToBytes(line);
     base.byteList = CharacterEncodingUtil.BytesToByteList(bytes);
     base.line     = line;
 }