{
    "componentChunkName": "component---src-templates-doc-page-js",
    "path": "/docs/ru/Patterns/named_entity/",
    "result": {"data":{"site":{"siteMetadata":{"title":"Gatsby-doc-engine"}},"markdownRemark":{"id":"7680d3e8-e84f-5b0a-a578-985be2f517e3","excerpt":"Именованные сущности?> Именованные сущности — элементы справочника именованных сущностей. Справочники Справочники именованных сущностей необходимы для обработки…","html":"<h1>Именованные сущности</h1>\n<hr>\n<p class='warn'>Именованные сущности — элементы справочника именованных сущностей.</p>\n</br>\n<h3>Справочники</h3>\n<p>Справочники именованных сущностей необходимы для обработки в паттернах большого количества каких-либо названий. Например, названий городов, стран, имен, валют и пр.</p>\n<p>Задаются в виде файла с расширением <code class=\"language-text\">.csv</code>, строка такого файла имеет следующую структуру:</p>\n<div class=\"gatsby-highlight\" data-language=\"csv\"><pre class=\"language-csv\"><code class=\"language-csv\"><span class=\"token value\">id; имя; значение</span></code></pre></div>\n<p>Здесь:</p>\n<ul>\n<li><code class=\"language-text\">id</code> — уникальный идентификатор сущности;</li>\n<li><code class=\"language-text\">имя</code> — имя сущности, возможные синонимы указываются через запятую;</li>\n<li><code class=\"language-text\">значение</code> — значение сущности, <code class=\"language-text\">string</code> или <code class=\"language-text\">json</code>.</li>\n</ul>\n<p class='warn'>В параметре <code class=\"language-text\">имя</code> можно перечислить синонимы, в одном из полей <code class=\"language-text\">json</code> указать основное название.</p>\n<p>Например, часть справочника именованных сущностей:</p>\n<div class=\"gatsby-highlight\" data-language=\"csv\"><pre class=\"language-csv\"><code class=\"language-csv\"><span class=\"token value\">149;Кузьма;{</span><span class=\"token value\">\"name\"</span><span class=\"token value\">: </span><span class=\"token value\">\"Кузьма\"</span><span class=\"token punctuation\">,</span><span class=\"token value\"> </span><span class=\"token value\">\"sex\"</span><span class=\"token value\">: </span><span class=\"token value\">\"male\"</span><span class=\"token value\">}</span>\n<span class=\"token value\">150;Карл;{</span><span class=\"token value\">\"name\"</span><span class=\"token value\">: </span><span class=\"token value\">\"Карл\"</span><span class=\"token punctuation\">,</span><span class=\"token value\"> </span><span class=\"token value\">\"sex\"</span><span class=\"token value\">: </span><span class=\"token value\">\"male\"</span><span class=\"token value\">}</span>\n<span class=\"token value\">151;Клавдий;{</span><span class=\"token value\">\"name\"</span><span class=\"token value\">: </span><span class=\"token value\">\"Клавдий\"</span><span class=\"token punctuation\">,</span><span class=\"token value\"> </span><span class=\"token value\">\"sex\"</span><span class=\"token value\">: </span><span class=\"token value\">\"male\"</span><span class=\"token value\">}</span>\n<span class=\"token value\">152;Клод;{</span><span class=\"token value\">\"name\"</span><span class=\"token value\">: </span><span class=\"token value\">\"Клод\"</span><span class=\"token punctuation\">,</span><span class=\"token value\"> </span><span class=\"token value\">\"sex\"</span><span class=\"token value\">: </span><span class=\"token value\">\"male\"</span><span class=\"token value\">}</span>\n<span class=\"token value\">153;Константин</span><span class=\"token punctuation\">,</span><span class=\"token value\">Костя;{</span><span class=\"token value\">\"name\"</span><span class=\"token value\">: </span><span class=\"token value\">\"Константин\"</span><span class=\"token punctuation\">,</span><span class=\"token value\"> </span><span class=\"token value\">\"sex\"</span><span class=\"token value\">: </span><span class=\"token value\">\"male\"</span><span class=\"token value\">}</span>\n<span class=\"token value\">154;Климент;{</span><span class=\"token value\">\"name\"</span><span class=\"token value\">: </span><span class=\"token value\">\"Климент\"</span><span class=\"token punctuation\">,</span><span class=\"token value\"> </span><span class=\"token value\">\"sex\"</span><span class=\"token value\">: </span><span class=\"token value\">\"male\"</span><span class=\"token value\">}</span></code></pre></div>\n</br>\n<h3>Элементы</h3>\n<p>Чтобы использовать элементы справочника именованных сущностей в именованном паттерне необходимо:</p>\n<ol>\n<li>Указать название справочника и путь к нему в файле сценария <code class=\"language-text\">.sc</code>. Для этого используйте тег <code class=\"language-text\">require</code>:</li>\n</ol>\n<div class=\"gatsby-highlight\" data-language=\"sc\"><pre class=\"language-sc\"><code class=\"language-sc\"><span class=\"token keyword\">require:</span> common/common-cities.csv \n         name = RoamingRegions\n         var = RoamingRegions</code></pre></div>\n<!-- [todo] ссылка на статью по тегу `require` DSL -->\n<ol start=\"2\">\n<li>Задайте в файле <code class=\"language-text\">.js</code>-библиотек конвертер. Конвертер позволяет записывать информацию в поле <code class=\"language-text\">value</code> дерева разбора <code class=\"language-text\">parseTree</code> для паттерна. Например:</li>\n</ol>\n<div class=\"gatsby-highlight\" data-language=\"js\"><pre class=\"language-js\"><code class=\"language-js\"><span class=\"token keyword\">function</span> <span class=\"token function\">RoamingRegionTagConverter</span><span class=\"token punctuation\">(</span><span class=\"token parameter\">$parseTree</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n            <span class=\"token keyword\">var</span> id <span class=\"token operator\">=</span> $parseTree<span class=\"token punctuation\">.</span>RoamingRegions<span class=\"token punctuation\">[</span><span class=\"token number\">0</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">.</span>value<span class=\"token punctuation\">;</span>\n            <span class=\"token keyword\">return</span> RoamingRegions<span class=\"token punctuation\">[</span>id<span class=\"token punctuation\">]</span><span class=\"token punctuation\">.</span>value\n    <span class=\"token punctuation\">}</span></code></pre></div>\n<p>Здесь:</p>\n<ul>\n<li><code class=\"language-text\">RoamingRegionTagConverter</code> — название конвертера;</li>\n<li><code class=\"language-text\">RoamingRegions</code> — название справочника именованных сущностей.</li>\n</ul>\n<p>Возвращаемое значение записывается в поле <code class=\"language-text\">value</code>.</p>\n<ol start=\"3\">\n<li>Объявить именованный паттерн. Используйте <code class=\"language-text\">$entity&lt;></code>:</li>\n</ol>\n<div class=\"gatsby-highlight\" data-language=\"js\"><pre class=\"language-js\"><code class=\"language-js\">$roamingRegion <span class=\"token operator\">=</span> $entity<span class=\"token operator\">&lt;</span>RoamingRegions<span class=\"token operator\">></span> <span class=\"token operator\">||</span> converter <span class=\"token operator\">=</span> RoamingRegionTagConverter</code></pre></div>\n<p class='warn'>Именованные сущности можно использовать и без объявления именованного паттерна.</p>\n<p class='tip'>При подобном объявлении именованной сущности в <code class=\"language-text\">$parseTree</code> появляется элемент <code class=\"language-text\">value</code>, куда записывается id.</p>","frontmatter":{"title":"","description":null},"headings":[{"value":"Именованные сущности"}]}},"pageContext":{"slug":"/docs/ru/Patterns/named_entity/","previous":{"fields":{"slug":"/docs/ru/Patterns/named_patterns/"},"frontmatter":{"title":"","description":null}},"next":{"fields":{"slug":"/docs/ru/Patterns/converters/"},"frontmatter":{"title":"","description":null}}}},
    "staticQueryHashes": ["1209419333"]}