示例#1
0
        internal string Build(SubtitleCollection collection, SubtitleProperties subtitleProperties, FileProperties fileProperties)
        {
            this.subtitleProperties = subtitleProperties;
            StringBuilder output = new StringBuilder();

            if (format.HasHeaders)
            {
                output.Append(format.HeadersToString(subtitleProperties, fileProperties));
            }

            if (format.HasBodyBegin)
            {
                output.Append(format.BodyBeginOut);
            }

            string         subtitleExpression = GetSubtitleExpression(format, subtitleProperties, fileProperties);
            Regex          fieldExpression    = new Regex(@"<<(?<Field>\w+)(,(?<Width>\d+))?>>");
            MatchEvaluator matchEvaluator     = new MatchEvaluator(this.FieldEvaluator);

            foreach (Subtitle currentSubtitle in collection)
            {
                subtitle = currentSubtitle;
                string outputSubtitle = fieldExpression.Replace(subtitleExpression, matchEvaluator);
                output.Append(outputSubtitle);
                output.Append("\n");
                subtitleNumber++;
                previousSubtitle = subtitle;
            }

            if (format.HasBodyEnd)
            {
                output.Append(format.BodyEndOut);
            }

            subtitle         = null;
            previousSubtitle = null;
            subtitleNumber   = 1;

            ConvertNewlines(output, fileProperties);
            return(output.ToString());
        }