diff --git a/CancellationDisposable.cs b/CancellationDisposable.cs deleted file mode 100644 index 700a2c2..0000000 --- a/CancellationDisposable.cs +++ /dev/null @@ -1,38 +0,0 @@ -using System; -using System.Threading; - -namespace Rehau.Sku.Assist -{ - sealed class CancellationDisposable : IDisposable - { - - readonly CancellationTokenSource cts; - public CancellationDisposable(CancellationTokenSource cts) - { - if (cts == null) - { - throw new ArgumentNullException("cts"); - } - - this.cts = cts; - } - - public CancellationDisposable() - : this(new CancellationTokenSource()) - { - } - - public CancellationToken Token - { - get { return cts.Token; } - } - - public void Dispose() - { - cts.Cancel(); - } - } - -} - - diff --git a/DefaultDisposable.cs b/DefaultDisposable.cs deleted file mode 100644 index f991181..0000000 --- a/DefaultDisposable.cs +++ /dev/null @@ -1,21 +0,0 @@ -using System; - -namespace Rehau.Sku.Assist -{ - sealed class DefaultDisposable : IDisposable - { - - public static readonly DefaultDisposable Instance = new DefaultDisposable(); - - DefaultDisposable() - { - } - - public void Dispose() - { - } - } - -} - - diff --git a/ExcelTaskUtil.cs b/ExcelTaskUtil.cs deleted file mode 100644 index c7d1b94..0000000 --- a/ExcelTaskUtil.cs +++ /dev/null @@ -1,133 +0,0 @@ -using ExcelDna.Integration; -using System.Threading.Tasks; -using System; -using System.Threading; - -namespace Rehau.Sku.Assist -{ - internal static class ExcelTaskUtil - { - public static object Run(string callerFunctionName, object callerParameters, Func> taskSource) - { - return ExcelAsyncUtil.Observe(callerFunctionName, callerParameters, delegate - { - var cts = new CancellationTokenSource(); - var task = taskSource(cts.Token); - return new ExcelTaskObservable(task, cts); - }); - } - - public static object Run(string callerFunctionName, object callerParameters, Func> taskSource) - { - return ExcelAsyncUtil.Observe(callerFunctionName, callerParameters, delegate - { - var task = taskSource(); - return new ExcelTaskObservable(task); - }); - } - - class ExcelTaskObservable : IExcelObservable - { - readonly Task _task; - readonly CancellationTokenSource _cts; - public ExcelTaskObservable(Task task) - { - _task = task; - } - - public ExcelTaskObservable(Task task, CancellationTokenSource cts) - : this(task) - { - _cts = cts; - } - - public IDisposable Subscribe(IExcelObserver observer) - { - switch (_task.Status) - { - case TaskStatus.RanToCompletion: - observer.OnNext(_task.Result); - observer.OnCompleted(); - break; - case TaskStatus.Faulted: - observer.OnError(_task.Exception.InnerException); - break; - case TaskStatus.Canceled: - observer.OnError(new TaskCanceledException(_task)); - break; - default: - _task.ContinueWith(t => - { - switch (t.Status) - { - case TaskStatus.RanToCompletion: - observer.OnNext(t.Result); - observer.OnCompleted(); - break; - case TaskStatus.Faulted: - observer.OnError(t.Exception.InnerException); - break; - case TaskStatus.Canceled: - observer.OnError(new TaskCanceledException(t)); - break; - } - }); - break; - } - - if (_cts != null) - { - return new CancellationDisposable(_cts); - } - - return DefaultDisposable.Instance; - } - } - - sealed class DefaultDisposable : IDisposable - { - - public static readonly DefaultDisposable Instance = new DefaultDisposable(); - - DefaultDisposable() - { - } - - public void Dispose() - { - } - } - - sealed class CancellationDisposable : IDisposable - { - - readonly CancellationTokenSource cts; - public CancellationDisposable(CancellationTokenSource cts) - { - if (cts == null) - { - throw new ArgumentNullException("cts"); - } - - this.cts = cts; - } - - public CancellationDisposable() - : this(new CancellationTokenSource()) - { - } - - public CancellationToken Token - { - get { return cts.Token; } - } - - public void Dispose() - { - cts.Cancel(); - } - } - - } -} - diff --git a/Functions.cs b/Functions.cs deleted file mode 100644 index 999a942..0000000 --- a/Functions.cs +++ /dev/null @@ -1,24 +0,0 @@ -using ExcelDna.Integration; - -namespace Rehau.Sku.Assist -{ - public class Functions : IExcelAddIn - { - [ExcelFunction(description: "Получение наименования и артикула позиции")] - public static string RAUNAME(string request) - { - SkuAssist.EnsureHttpInitialized(); - return SkuAssist.GetSku(request); - } - - public void AutoClose() - { - ExcelIntegration.RegisterUnhandledExceptionHandler( - delegate (object ex) { return string.Format("!!!ERROR: {0}", ex.ToString()); }); - } - - public void AutoOpen() - { - } - } -} \ No newline at end of file diff --git a/README.md b/README.md index 77f4586..8fe94af 100644 --- a/README.md +++ b/README.md @@ -20,9 +20,9 @@ ----- ### Ограничения прототипа -1. Не реализована многопоточность выполнения метода формулы RAUNAME. Не рекомендуется попытка выполнения большого числа запросов одновременно. +1. ~~Не реализована многопоточность выполнения метода формулы RAUNAME. Не рекомендуется попытка выполнения большого числа запросов одновременно.~~ 2. Относительно невысокая скорость работы из-за отсутствия поискового API сайта магазина. -3. Из-за особенностей реализации интернет-магазина приходится фильтровать часть результатов выдачи, что может сказываться на качестве распознавания запроса. +3. ~~Из-за особенностей реализации интернет-магазина приходится фильтровать часть результатов выдачи, что может сказываться на качестве распознавания запроса.~~ ## Установка 1. Скачать архив *Rehau.Sku.Assist.zip* по ссылке https://github.com/schebotar/Rehau.Sku.Assist/releases/tag/v0.1.0-alpha diff --git a/Rehau.Sku.Assist-AddIn-packed.xll b/Rehau.Sku.Assist-AddIn-packed.xll new file mode 100644 index 0000000..aea355f Binary files /dev/null and b/Rehau.Sku.Assist-AddIn-packed.xll differ diff --git a/Rehau.Sku.Assist-AddIn.dna b/Rehau.Sku.Assist-AddIn.dna index b7322e9..bdf8847 100644 --- a/Rehau.Sku.Assist-AddIn.dna +++ b/Rehau.Sku.Assist-AddIn.dna @@ -1,6 +1,6 @@ - +