Wondering what’s next for npm?Check out our public roadmap! »

    @alordash/date-parser

    2.2.9 • Public • Published

    @alordash/date-parser

    $ npm i @alordash/date-parser
    

    Links

    Описание

    Извлекает даты о разных событиях из человеческого сообщения с точностью до секунды.
    Способна возвращать описание события без слов, используемых для определения даты.
    В библиотеке используется моя реализация алгоритма Дамерау-Левенштейна, чтобы верно распознавать слова, написанные с ошибками.
    Поддерживает Русский и Английский языки.
    Библиотека проста в использовании, а большое количество параметров позволит Вам с максимальной точностью определять даты.

    Документация

    Чтобы правильно использовать эту библиотеку, прочтите документацию по её классам.

    TimeList class:

    Каждый параметер типа Number, который отражает значение определенного типа времени.
    Если тип значения undefined, то это означает что в исходной строке не было дано определение для данного типа времени.

    Параметры:

    • TimeList.dates {Number} — Date.setDate(TimeList.dates);
    • TimeList.hours {Number} — Date.setHours(TimeList.hours);
    • TimeList.minutes {Number} — Date.setMinutes(TimeList.minutes);
    • TimeList.months {Number} — Date.setMonth(TimeList.months);
    • TimeList.seconds {Number} — Date.setSeconds(TimeList.seconds);
    • TimeList.years {Number} — Date.setFullYear(TimeList.years);

    ParsedDate class:

    Каждый объект типа ParsedDate отражает определенные дату и событие, извлеченные из исходной строки.

    Параметры:

    • ParsedDate.confidence {Number} — уровень верности этого ParsedDate.
    • ParsedDate.contexts {Array.<Number>} — технический параметр.
    • ParsedDate.target_date {TimeList} — содержит всю информацию о целевой дате события.
    • ParsedDate.period_time {TimeList} — содержит всю информацию о периодичности события.
    • ParsedDate.max_date {TimeList} — содержит всю информацию о максимальной дате события.
    • ParsedDate.string {String} — описание события без слов, использованных для определения даты.
    • ParsedDate.isOffset {Boolean} — является ли описанием даты с помощью слова "через".
    • ParsedDate.isFixed {Boolean} — содержит ли даты с точным определением (например "9 часов утра").

    Функция parseDate(string, errorLimit, minimumPrevalence): {Array.<ParsedDates>}

    Аргументы

    1. string {String} — исходная строка.
    2. errorLimit {Number} — От 0.0 до 1.0, чем меньше — тем меньше результатов. Используется для распознавания слов с ошибками.
    3. minimumPrevalence {Number} — От 0 до 100, чем меньше — тем больше результатов. Используется для фильтрации редких типов определения времени.

    Использование

    const { parseDate } = require('@alordash/date-parser');
    
    let string = 'Вернуться домой в 8:30 вечера и приготовить ужин. Купить молоко и помыть машину в понедельник.';
    let result = parseDate(string);
    
    console.log('время 1 :>> ', JSON.stringify(result[0].target_date));
    //=> время 1 :>>  {"minutes":30,"hours":20}
    
    console.log('событие 1 :>> ', result[0].string);
    //=> событие 1 :>> Вернуться домой и приготовить ужин
    
    console.log('время 2 :>> ', JSON.stringify(result[1].target_date));
    //=> время 2 :>>  {"dates":31} //сейчас 30.08.20., 31.08.20 это понедельник
    
    console.log('событие 2 :>> ', result[1].string);
    //=> событие 2 :>> Купить молоко и помыть машину
    
    //————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
    string = 'Сходить к врачу с 9 утра до 11 вечера в следующую субботу и сходить в магазин в 7 вечера';
    result = parseDate(string);
    
    console.log('максимальная дата 1 :>> ', JSON.stringify(result[0].max_date));
    //=> максимальная дата 1 :>>  {"dates":36,"hours":23} //сейчас 30.08.20, следующая суббота в 05.09.20, что, технически, и есть 36.08.20
    
    console.log('целевая дата 1 :>> ', JSON.stringify(result[0].target_date));
    //=> целевая дата 1 :>>  {"hours":9}
    
    console.log('событие 1 :>> ', result[0].string);
    //=> событие 1 :>> Сходить к врачу
    
    console.log('целевая дата 2 :>> ', JSON.stringify(result[1].target_date));
    //=> целевая дата 2 :>>  {"hours":19}
    
    console.log('событие 2 :>> ', result[1].string);
    //=> событие 2 :>> сходить в магазин
    
    //————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
    string = 'На 19 Сентября с 9:00 до 20:00 вставать из-за компьютера каждые 15 минут и делать разминку';
    result = parseDate(string);
    
    console.log('целевая дата :>> ', JSON.stringify(result[0].target_date));
    //=> целевая дата :>>  {"dates":19,"hours":9,"minutes":0,"months":9}
    
    console.log('период :>> ', JSON.stringify(result[0].period_time));
    //=> период :>>  {"minutes":15}
    
    console.log('максимальная дата :>> ', JSON.stringify(result[0].maximum_date));
    //=> максимальная дата :>>  {"hours":20,"minutes":0}
    
    console.log('событие :>> ', JSON.stringify(result[0].string));
    //=> событие :>> 'вставать из-за компьютера и делать разминку'

    Особенности

    ParsedDate.toString(): {String}

    Возвращает описание события.

    ParsedDate.valueOf(): {{target_date: Date, period_time: Date, max_date: Date}}

    Собирает все найденные типы времен в дату и возвращает объект типа

    {
        target_date: Date,  
        period_time: Date,  
        max_date: Date  
    }  

    Для не найденных типов времени у target_dates и max_dates используются текущие значения даты (new Date()).
    Для не найденных типов времени у period_times используются значения нулевой даты (new Date(0)).

    Install

    npm i @alordash/date-parser

    DownloadsWeekly Downloads

    41

    Version

    2.2.9

    License

    MIT

    Unpacked Size

    112 kB

    Total Files

    19

    Last publish

    Collaborators

    • avatar