Пример #1
0
 public static string GetEntityAidedText(string text, IEnumerable<TwitterEntity> entities,
     EntityDisplayMode displayMode)
 {
     try
     {
         var builder = new StringBuilder();
         // ReSharper disable once PossibleMultipleEnumeration
         foreach (var description in ParseText(text, entities))
         {
             if (description.Entity != null)
             {
                 builder.Append(displayMode == EntityDisplayMode.DisplayText
                     ? description.Entity.DisplayText
                     : description.Entity.FullText);
             }
             else
             {
                 builder.Append(description.Text);
             }
         }
         return builder.ToString();
     }
     catch (ArgumentOutOfRangeException ex)
     {
         var sb = new StringBuilder();
         sb.AppendLine("Parse Error! : " + text);
         sb.Append("Entities: ");
         // ReSharper disable once PossibleMultipleEnumeration
         foreach (var e in entities.OrderBy(e => e.Indices.Item1))
         {
             sb.AppendLine("    " + e);
         }
         throw new ArgumentOutOfRangeException(sb.ToString(), ex);
     }
 }
Пример #2
0
 public static string GetEntityAidedText(string text, IEnumerable <TwitterEntity> entities,
                                         EntityDisplayMode displayMode)
 {
     try
     {
         var builder = new StringBuilder();
         // ReSharper disable once PossibleMultipleEnumeration
         foreach (var description in ParseText(text, entities))
         {
             if (description.Entity != null)
             {
                 builder.Append(displayMode == EntityDisplayMode.DisplayText
                     ? description.Entity.DisplayText
                     : description.Entity.FullText);
             }
             else
             {
                 builder.Append(description.Text);
             }
         }
         return(builder.ToString());
     }
     catch (ArgumentOutOfRangeException ex)
     {
         var sb = new StringBuilder();
         sb.AppendLine("Parse Error! : " + text);
         sb.Append("Entities: ");
         // ReSharper disable once PossibleMultipleEnumeration
         foreach (var e in entities.OrderBy(e => e.Indices.Item1))
         {
             sb.AppendLine("    " + e);
         }
         throw new ArgumentOutOfRangeException(sb.ToString(), ex);
     }
 }
Пример #3
0
        public string GetEntityAidedText(EntityDisplayMode displayMode = EntityDisplayMode.DisplayText)
        {
            try
            {
                var builder = new StringBuilder();
                var status  = this;
                if (status.RetweetedOriginal != null)
                {
                    // change target
                    status = status.RetweetedOriginal;
                }
                foreach (var description in TextEntityResolver.ParseText(status))
                {
                    if (!description.IsEntityAvailable)
                    {
                        builder.Append(description.Text);
                    }
                    else
                    {
                        var entity = description.Entity;
                        switch (entity.EntityType)
                        {
                        case EntityType.Hashtags:
                            builder.Append("#" + entity.DisplayText);
                            break;

                        case EntityType.Urls:
                            // url entity:
                            // display_url: example.com/CUTTED OFF...
                            // original_url => expanded_url: example.com/full_original_url
                            builder.Append(displayMode == EntityDisplayMode.DisplayText
                                    ? ParsingExtension.ResolveEntity(entity.DisplayText)
                                    : ParsingExtension.ResolveEntity(entity.OriginalUrl));
                            break;

                        case EntityType.Media:
                            // media entity:
                            // display_url: pic.twitter.com/IMAGE_ID
                            // media_url: pbs.twimg.com/media/ACTUAL_IMAGE_RESOURCE_ID
                            // url: t.co/IMAGE_ID
                            builder.Append(
                                displayMode == EntityDisplayMode.DisplayText
                                        ? ParsingExtension.ResolveEntity(entity.DisplayText)
                                        : displayMode == EntityDisplayMode.LinkUri
                                            ? ParsingExtension.ResolveEntity(entity.DisplayText)
                                            : ParsingExtension.ResolveEntity(entity.MediaUrl));
                            break;

                        case EntityType.UserMentions:
                            builder.Append("@" + entity.DisplayText);
                            break;
                        }
                    }
                }
                return(builder.ToString());
            }
            catch (ArgumentOutOfRangeException ex)
            {
                var sb = new StringBuilder();
                sb.AppendLine("Parse Error! : " + Text);
                if (Entities == null)
                {
                    sb.AppendLine("Entities: null");
                }
                else
                {
                    sb.Append("Entities: ");
                    Entities.OrderBy(e => e.StartIndex)
                    .Select(e => e.StartIndex + "- " + e.EndIndex + " : " + e.DisplayText)
                    .ForEach(s => sb.AppendLine("    " + s));
                }
                throw new ArgumentOutOfRangeException(sb.ToString(), ex);
            }
        }
Пример #4
0
 public string GetEntityAidedDescription(EntityDisplayMode displayMode = EntityDisplayMode.DisplayText)
 {
     return(TextEntityResolver.GetEntityAidedText(Description ?? String.Empty,
                                                  DescriptionEntities, displayMode));
 }
Пример #5
0
 public string GetEntityAidedUrl(EntityDisplayMode displayMode = EntityDisplayMode.DisplayText)
 {
     return(TextEntityResolver.GetEntityAidedText(Url ?? String.Empty,
                                                  UrlEntities, displayMode));
 }
Пример #6
0
 public string GetEntityAidedText(EntityDisplayMode displayMode = EntityDisplayMode.DisplayText)
 {
     var status = RetweetedStatus ?? this;
     return TextEntityResolver.GetEntityAidedText(status.Text, status.Entities, displayMode);
 }
Пример #7
0
 public string GetEntityAidedText(EntityDisplayMode displayMode = EntityDisplayMode.DisplayText)
 {
     try
     {
         var builder = new StringBuilder();
         var status = this;
         if (status.RetweetedOriginal != null)
         {
             // change target
             status = status.RetweetedOriginal;
         }
         foreach (var description in TextEntityResolver.ParseText(status))
         {
             if (!description.IsEntityAvailable)
             {
                 builder.Append(description.Text);
             }
             else
             {
                 var entity = description.Entity;
                 switch (entity.EntityType)
                 {
                     case EntityType.Hashtags:
                         builder.Append("#" + entity.DisplayText);
                         break;
                     case EntityType.Urls:
                         // url entity:
                         // display_url: example.com/CUTTED OFF...
                         // original_url => expanded_url: example.com/full_original_url
                         builder.Append(displayMode == EntityDisplayMode.DisplayText
                             ? ParsingExtension.ResolveEntity(entity.DisplayText)
                             : ParsingExtension.ResolveEntity(entity.OriginalUrl));
                         break;
                     case EntityType.Media:
                         // media entity:
                         // display_url: pic.twitter.com/IMAGE_ID
                         // media_url: pbs.twimg.com/media/ACTUAL_IMAGE_RESOURCE_ID
                         // url: t.co/IMAGE_ID
                         builder.Append(
                             displayMode == EntityDisplayMode.DisplayText
                                 ? ParsingExtension.ResolveEntity(entity.DisplayText)
                                 : displayMode == EntityDisplayMode.LinkUri
                                     ? ParsingExtension.ResolveEntity(entity.DisplayText)
                                     : ParsingExtension.ResolveEntity(entity.MediaUrl));
                         break;
                     case EntityType.UserMentions:
                         builder.Append("@" + entity.DisplayText);
                         break;
                 }
             }
         }
         return builder.ToString();
     }
     catch (ArgumentOutOfRangeException ex)
     {
         var sb = new StringBuilder();
         sb.AppendLine("Parse Error! : " + Text);
         if (Entities == null)
         {
             sb.AppendLine("Entities: null");
         }
         else
         {
             sb.Append("Entities: ");
             Entities.OrderBy(e => e.StartIndex)
                     .Select(e => e.StartIndex + "- " + e.EndIndex + " : " + e.DisplayText)
                     .ForEach(s => sb.AppendLine("    " + s));
         }
         throw new ArgumentOutOfRangeException(sb.ToString(), ex);
     }
 }
Пример #8
0
        public string GetEntityAidedText(EntityDisplayMode displayMode = EntityDisplayMode.DisplayText)
        {
            var status = RetweetedStatus ?? this;

            return(TextEntityResolver.GetEntityAidedText(status.Text, status.Entities, displayMode));
        }
Пример #9
0
 public string GetEntityAidedDescription(EntityDisplayMode displayMode = EntityDisplayMode.DisplayText)
 {
     return TextEntityResolver.GetEntityAidedText(Description ?? String.Empty,
         DescriptionEntities, displayMode);
 }
Пример #10
0
 public string GetEntityAidedUrl(EntityDisplayMode displayMode = EntityDisplayMode.DisplayText)
 {
     return TextEntityResolver.GetEntityAidedText(Url ?? String.Empty,
         UrlEntities, displayMode);
 }