2018-01-11 03:49:32 +08:00
|
|
|
|
namespace UglyToad.PdfPig.Tokenization.Tokens
|
2017-11-13 01:06:19 +08:00
|
|
|
|
{
|
|
|
|
|
using System;
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
using System.Linq;
|
2017-11-14 07:48:25 +08:00
|
|
|
|
using Cos;
|
|
|
|
|
using Util.JetBrains.Annotations;
|
2017-11-13 01:06:19 +08:00
|
|
|
|
|
2017-12-31 22:23:36 +08:00
|
|
|
|
internal class DictionaryToken : IDataToken<IReadOnlyDictionary<IToken, IToken>>
|
2017-11-13 01:06:19 +08:00
|
|
|
|
{
|
2017-11-14 07:48:25 +08:00
|
|
|
|
[NotNull]
|
2017-11-13 01:06:19 +08:00
|
|
|
|
public IReadOnlyDictionary<IToken, IToken> Data { get; }
|
|
|
|
|
|
2017-11-14 07:48:25 +08:00
|
|
|
|
public DictionaryToken([NotNull]IReadOnlyDictionary<IToken, IToken> data)
|
2017-11-13 01:06:19 +08:00
|
|
|
|
{
|
|
|
|
|
Data = data ?? throw new ArgumentNullException(nameof(data));
|
|
|
|
|
}
|
2017-11-14 07:48:25 +08:00
|
|
|
|
|
|
|
|
|
public bool TryGetByName(CosName name, out IToken token)
|
|
|
|
|
{
|
|
|
|
|
if (name == null)
|
|
|
|
|
{
|
|
|
|
|
throw new ArgumentNullException(nameof(name));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
token = null;
|
|
|
|
|
|
|
|
|
|
foreach (var keyValuePair in Data)
|
|
|
|
|
{
|
|
|
|
|
if (keyValuePair.Key is NameToken nameToken && nameToken.Data.Equals(name))
|
|
|
|
|
{
|
|
|
|
|
token = keyValuePair.Value;
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return false;
|
|
|
|
|
}
|
2017-11-13 01:06:19 +08:00
|
|
|
|
|
|
|
|
|
public override string ToString()
|
|
|
|
|
{
|
|
|
|
|
return string.Join(", ", Data.Select(x => $"<{x.Key}, {x.Value}>"));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|