{
    "componentChunkName": "component---src-templates-doc-page-js",
    "path": "/docs/ru/Patterns/converters/",
    "result": {"data":{"site":{"siteMetadata":{"title":"Gatsby-doc-engine"}},"markdownRemark":{"id":"d4a4a714-f4c3-5fc6-93ec-7205b7427fb5","excerpt":"Конвертеры?> Конвертеры — скрипты, которые используются для интерпретации значений текста в каждом токене. Конвертеры позволяют преобразовать данные токена…","html":"<h1>Конвертеры</h1>\n<hr>\n<p class='warn'>Конвертеры — скрипты, которые используются для интерпретации значений текста в каждом токене.</p>\n<p>Конвертеры позволяют преобразовать данные токена, помещаемые в <code class=\"language-text\">$parseTree</code>.</p>\n</br>\n<h3>Объявление</h3>\n<p>Объявление конвертера:</p>\n</br>\n<ul>\n<li>при объявлении паттерна;</li>\n</ul>\n<div class=\"gatsby-highlight\" data-language=\"sc\"><pre class=\"language-sc\"><code class=\"language-sc\"><span class=\"token keyword\">patterns:</span>\n        $four = четыре || converter = function() {return 4}</code></pre></div>\n</br>\n<ul>\n<li>в тегах <code class=\"language-text\">init</code>;</li>\n</ul>\n<div class=\"gatsby-highlight\" data-language=\"js\"><pre class=\"language-js\"><code class=\"language-js\"><span class=\"token function-variable function\">init</span><span class=\"token operator\">:</span>\n    <span class=\"token keyword\">function</span> <span class=\"token function\">amountConverter</span><span class=\"token punctuation\">(</span><span class=\"token parameter\">pt</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n        <span class=\"token keyword\">var</span> ret <span class=\"token operator\">=</span> pt<span class=\"token punctuation\">.</span>Number<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> ret\n    <span class=\"token punctuation\">}</span></code></pre></div>\n</br>\n<ul>\n<li>в файле <code class=\"language-text\">.js</code>-библиотек, например <code class=\"language-text\">converters.js</code>.</li>\n</ul>\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\">amountConverter</span><span class=\"token punctuation\">(</span><span class=\"token parameter\">pt</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n        <span class=\"token keyword\">var</span> ret <span class=\"token operator\">=</span> pt<span class=\"token punctuation\">.</span>Number<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> ret\n    <span class=\"token punctuation\">}</span></code></pre></div>\n</br>\n<p>В функции конвертеров передается <code class=\"language-text\">$parseTree</code> первым аргументом.</p>\n<p>Вы можете использовать внутри конвертера переменную, в которую передается <code class=\"language-text\">$parseTree</code>. Для этого задайте её имя первым аргументом функции, вторым аргументом передается контекст.</p>\n</br>\n<h3>Применение</h3>\n<p>Применение конвертеров:</p>\n<ul>\n<li>Формирование значения из текста.</li>\n</ul>\n<p>Сценарий:</p>\n<div class=\"gatsby-highlight\" data-language=\"sc\"><pre class=\"language-sc\"><code class=\"language-sc\">$Digit = $regexp&lt;\\d+> || converter = numberConverterDigit</code></pre></div>\n<p><code class=\"language-text\">.js</code>-файл:</p>\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\">numberConverterDigit</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\">return</span> <span class=\"token function\">parseInt</span><span class=\"token punctuation\">(</span>parseTree<span class=\"token punctuation\">.</span>text<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n        <span class=\"token punctuation\">}</span></code></pre></div>\n</br>\n<ul>\n<li>Преобразование значения из маппинга.</li>\n</ul>\n<p>Сценарий:</p>\n<div class=\"gatsby-highlight\" data-language=\"sc\"><pre class=\"language-sc\"><code class=\"language-sc\">$Numeral = (один:1|...) || converter = valueToNumberConverter</code></pre></div>\n<p><code class=\"language-text\">.js</code>-файл:</p>\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\">valueToNumberConverter</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\">return</span> <span class=\"token function\">parseInt</span><span class=\"token punctuation\">(</span>parseTree<span class=\"token punctuation\">.</span>value<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n        <span class=\"token punctuation\">}</span></code></pre></div>\n</br>\n<ul>\n<li>Формирование значения из вложенных токенов.</li>\n</ul>\n<p>Сценарий:</p>\n<div class=\"gatsby-highlight\" data-language=\"sc\"><pre class=\"language-sc\"><code class=\"language-sc\">$Numeral = (один:1|...)\n$Minutes = $Numeral || converter = minutesConverter</code></pre></div>\n<p><code class=\"language-text\">.js</code>-файл:</p>\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\">minutesConverter</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\">return</span> <span class=\"token function\">parseInt</span><span class=\"token punctuation\">(</span>parseTree<span class=\"token punctuation\">.</span>Numeral<span class=\"token punctuation\">.</span>value<span class=\"token punctuation\">)</span>\n        <span class=\"token punctuation\">}</span><span class=\"token punctuation\">;</span></code></pre></div>\n</br>\n<ul>\n<li>Формирование значения из справочников.</li>\n</ul>\n<p>Сценарий:</p>\n<div class=\"gatsby-highlight\" data-language=\"sc\"><pre class=\"language-sc\"><code class=\"language-sc\">$City = $entity&lt;Cities> || converter = сityConverter</code></pre></div>\n<p><code class=\"language-text\">.js</code>-файл:</p>\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\">сityConverter</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>City<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> Cities<span class=\"token punctuation\">[</span>id<span class=\"token punctuation\">]</span><span class=\"token punctuation\">.</span>value<span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span></code></pre></div>\n<p class='tip'>Правило <code class=\"language-text\">$entity</code> записывает в <code class=\"language-text\">value</code> только идентификатор сущности, а список ассоциированных значений содержится в справочнике.</p>\n<!-- [todo] скорректировать по выводам задачи PP-213 -->","frontmatter":{"title":"","description":null},"headings":[{"value":"Конвертеры"}]}},"pageContext":{"slug":"/docs/ru/Patterns/converters/","previous":{"fields":{"slug":"/docs/ru/Patterns/named_entity/"},"frontmatter":{"title":"","description":null}},"next":{"fields":{"slug":"/docs/ru/Patterns/base_patterns/"},"frontmatter":{"title":"","description":null}}}},
    "staticQueryHashes": ["1209419333"]}