CINXE.COM
RubyGems - rubanok - Versions diffs - 0.1.1 → 0.4.0 - Mend - Supply Chain Defender
<!DOCTYPE html> <html> <head> <title> RubyGems - rubanok - Versions diffs - 0.1.1 → 0.4.0 - Mend - Supply Chain Defender </title> <link rel="icon" type="image/png" href="/packs/media/images/production/favicons/favicon-32x32-fa0286238d4d512e71dba3881cbbcc42.png" /> <link rel="mask-icon" type="image/x-icon" href="/packs/media/images/production/favicons/favicon-786db6a85c0dea068c1a7047338024d2.svg" /> <link rel="apple-touch-icon" type="image/png" href="/packs/media/images/production/favicons/apple-touch-icon-11491aa2351c88b3b48534d1576a2ff9.png" /> <link rel="shortcut icon" type="image/x-icon" href="/packs/media/images/production/favicons/favicon-81c62e5500c39bd10e99844e94455995.ico" /> <meta name="csrf-param" content="authenticity_token" /> <meta name="csrf-token" content="kLuPKM3cKnomSVIKsOHGA1zZE3Hun5o-IZp5Dk_iv1Zy_q1NSVnVqA-MSmsumklXIlKl3TXzb6hKuunLWD2LJw" /> <meta content='no-cache' name='turbolinks-cache-control'> <meta content='width=device-width, initial-scale=1' name='viewport'> <link rel="stylesheet" href="/packs/css/application-b44eb75784afb1e9f8ce.css" media="all" /> <script src="/packs/js/application-9f130b109122a7b55e22.js" data-turbolinks-track="reload"></script> <link href='https://fonts.googleapis.com/css?family=Nunito:200,200i,300,300i,400,400i,600,600i,700,700i,800,800i,900,900i' rel='stylesheet'> </head> <body class='registries ruby_gems diffs' id='page-top'> <div id='wrapper'> <div class='d-flex flex-column' id='content-wrapper'> <div id='content'> <nav class='navbar navbar-expand navbar-light bg-white topbar mb-4 shadow'> <a class='sidebar-brand d-flex align-items-center justify-content-center' href='/'> <div class='sidebar-brand-text mx-3 d-none d-xxl-block d-xl-block'> <img alt="Diffend" src="/packs/media/images/production/logos/vertical-dark-5363ad390f9fcfd11bfecf89a3fb60f1.svg" /> </div> </a> <div class='container'> <ul class='navbar-nav'> <li class='nav-item'> <a class='nav-link' href='/gems'> <span class='mr-2 d-none d-lg-inline text-gray-600'> RubyGems </span> </a> </li> <li class='nav-item'> <a class='nav-link' href='/npm'> <span class='mr-2 d-none d-lg-inline text-gray-600'> npm </span> </a> </li> <li class='nav-item'> <a class='nav-link' href='/pypi'> <span class='mr-2 d-none d-lg-inline text-gray-600'> PyPI </span> </a> </li> <div class='topbar-divider d-sm-block'></div> <li class='nav-item'> <a class='nav-link' href='/organizations'> <span class='mr-2 d-none d-lg-inline text-gray-600'> Organizations </span> </a> </li> </ul> <ul class='navbar-nav'> <div class='topbar-divider d-none d-sm-block'></div> <li class='nav-item'> <a class='nav-link' href='/users/sign_in'> <span class='mr-2 d-none d-lg-inline text-gray-600'> <i class='fas fa-key fa-fw mr-2'></i> Log in </span> </a> </li> <li class='nav-item'> <a class='nav-link' href='/users/sign_up'> <span class='mr-2 d-none d-lg-inline text-gray-600'> <i class='fas fa-user-plus fa-fw mr-2'></i> Sign up </span> </a> </li> </ul> </div> </nav> <div class='container'> <div class='row'> <div class='col mb-1'> <nav> <ol class='breadcrumb'> <li class='breadcrumb-item'> <a href="/gems">RubyGems</a> </li> <li class='breadcrumb-item'> <a href="/gems/rubanok">rubanok</a> </li> <li class='breadcrumb-item'> <a href="/gems/rubanok">Versions diffs</a> </li> <li class='breadcrumb-item'> <a href="/gems/rubanok/0.1.1/0.4.0">0.1.1 → 0.4.0</a> </li> </ol> </nav> </div> </div> <div class='row'> <div class='col'> <div class='text-right mb-4'> </div> </div> </div> <div class='row'> <div class='col align-items-center mb-4'> <div class='text-center'> <h2 class='text-gray-800'> rubanok 0.1.1 → 0.4.0 </h2> </div> </div> </div> <div data-diff-id='ba90f92f-cc37-4d6f-8f0e-4cbafeb83298' data-diff-state='finished' id='diff-id'> <div class='row'> <div class='col pt-2 text-black'> <div class='row'> </div> <div class='mb-4 mt-2'> <div class='card bg-info text-white shadow'> <div class='card-body'> <span class='icon text-white-100 mr-2'> <i class='fas fa-info-circle'></i> </span> This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries. </div> </div> </div> <div id='diff'> <div class='mb-3'> <div class="d2h-file-list-wrapper"> <div class="d2h-file-list-header"> <span class="d2h-file-list-title">Files changed (36)</span> <a class="d2h-file-switch d2h-hide">hide</a> <a class="d2h-file-switch d2h-show">show</a> </div> <ol class="d2h-file-list"> <li class="d2h-file-list-line"> <span class="d2h-file-name-wrapper"> <svg aria-hidden="true" class="d2h-icon d2h-changed" height="16" title="modified" version="1.1" viewBox="0 0 14 16" width="14"> <path d="M13 1H1C0.45 1 0 1.45 0 2v12c0 0.55 0.45 1 1 1h12c0.55 0 1-0.45 1-1V2c0-0.55-0.45-1-1-1z m0 13H1V2h12v12zM4 8c0-1.66 1.34-3 3-3s3 1.34 3 3-1.34 3-3 3-3-1.34-3-3z"></path> </svg> <a href="/gems/rubanok/0.1.1/0.4.0/page/1#d2h-683205" class="d2h-file-name">checksums.yaml</a> <span class="d2h-file-stats"> <span class="d2h-lines-added">+4</span> <span class="d2h-lines-deleted">-4</span> </span> </span> </li> <li class="d2h-file-list-line"> <span class="d2h-file-name-wrapper"> <svg aria-hidden="true" class="d2h-icon d2h-changed" height="16" title="modified" version="1.1" viewBox="0 0 14 16" width="14"> <path d="M13 1H1C0.45 1 0 1.45 0 2v12c0 0.55 0.45 1 1 1h12c0.55 0 1-0.45 1-1V2c0-0.55-0.45-1-1-1z m0 13H1V2h12v12zM4 8c0-1.66 1.34-3 3-3s3 1.34 3 3-1.34 3-3 3-3-1.34-3-3z"></path> </svg> <a href="/gems/rubanok/0.1.1/0.4.0/page/1#d2h-670634" class="d2h-file-name">data/CHANGELOG.md</a> <span class="d2h-file-stats"> <span class="d2h-lines-added">+59</span> <span class="d2h-lines-deleted">-0</span> </span> </span> </li> <li class="d2h-file-list-line"> <span class="d2h-file-name-wrapper"> <svg aria-hidden="true" class="d2h-icon d2h-changed" height="16" title="modified" version="1.1" viewBox="0 0 14 16" width="14"> <path d="M13 1H1C0.45 1 0 1.45 0 2v12c0 0.55 0.45 1 1 1h12c0.55 0 1-0.45 1-1V2c0-0.55-0.45-1-1-1z m0 13H1V2h12v12zM4 8c0-1.66 1.34-3 3-3s3 1.34 3 3-1.34 3-3 3-3-1.34-3-3z"></path> </svg> <a href="/gems/rubanok/0.1.1/0.4.0/page/1#d2h-996930" class="d2h-file-name">data/LICENSE.txt</a> <span class="d2h-file-stats"> <span class="d2h-lines-added">+1</span> <span class="d2h-lines-deleted">-1</span> </span> </span> </li> <li class="d2h-file-list-line"> <span class="d2h-file-name-wrapper"> <svg aria-hidden="true" class="d2h-icon d2h-changed" height="16" title="modified" version="1.1" viewBox="0 0 14 16" width="14"> <path d="M13 1H1C0.45 1 0 1.45 0 2v12c0 0.55 0.45 1 1 1h12c0.55 0 1-0.45 1-1V2c0-0.55-0.45-1-1-1z m0 13H1V2h12v12zM4 8c0-1.66 1.34-3 3-3s3 1.34 3 3-1.34 3-3 3-3-1.34-3-3z"></path> </svg> <a href="/gems/rubanok/0.1.1/0.4.0/page/1#d2h-027470" class="d2h-file-name">data/README.md</a> <span class="d2h-file-stats"> <span class="d2h-lines-added">+231</span> <span class="d2h-lines-deleted">-33</span> </span> </span> </li> <li class="d2h-file-list-line"> <span class="d2h-file-name-wrapper"> <svg aria-hidden="true" class="d2h-icon d2h-changed" height="16" title="modified" version="1.1" viewBox="0 0 14 16" width="14"> <path d="M13 1H1C0.45 1 0 1.45 0 2v12c0 0.55 0.45 1 1 1h12c0.55 0 1-0.45 1-1V2c0-0.55-0.45-1-1-1z m0 13H1V2h12v12zM4 8c0-1.66 1.34-3 3-3s3 1.34 3 3-1.34 3-3 3-3-1.34-3-3z"></path> </svg> <a href="/gems/rubanok/0.1.1/0.4.0/page/2#d2h-918043" class="d2h-file-name">data/lib/rubanok.rb</a> <span class="d2h-file-stats"> <span class="d2h-lines-added">+8</span> <span class="d2h-lines-deleted">-4</span> </span> </span> </li> <li class="d2h-file-list-line"> <span class="d2h-file-name-wrapper"> <svg aria-hidden="true" class="d2h-icon d2h-changed" height="16" title="modified" version="1.1" viewBox="0 0 14 16" width="14"> <path d="M13 1H1C0.45 1 0 1.45 0 2v12c0 0.55 0.45 1 1 1h12c0.55 0 1-0.45 1-1V2c0-0.55-0.45-1-1-1z m0 13H1V2h12v12zM4 8c0-1.66 1.34-3 3-3s3 1.34 3 3-1.34 3-3 3-3-1.34-3-3z"></path> </svg> <a href="/gems/rubanok/0.1.1/0.4.0/page/2#d2h-205224" class="d2h-file-name">data/lib/rubanok/dsl/mapping.rb</a> <span class="d2h-file-stats"> <span class="d2h-lines-added">+22</span> <span class="d2h-lines-deleted">-5</span> </span> </span> </li> <li class="d2h-file-list-line"> <span class="d2h-file-name-wrapper"> <svg aria-hidden="true" class="d2h-icon d2h-changed" height="16" title="modified" version="1.1" viewBox="0 0 14 16" width="14"> <path d="M13 1H1C0.45 1 0 1.45 0 2v12c0 0.55 0.45 1 1 1h12c0.55 0 1-0.45 1-1V2c0-0.55-0.45-1-1-1z m0 13H1V2h12v12zM4 8c0-1.66 1.34-3 3-3s3 1.34 3 3-1.34 3-3 3-3-1.34-3-3z"></path> </svg> <a href="/gems/rubanok/0.1.1/0.4.0/page/2#d2h-440057" class="d2h-file-name">data/lib/rubanok/dsl/matching.rb</a> <span class="d2h-file-stats"> <span class="d2h-lines-added">+40</span> <span class="d2h-lines-deleted">-16</span> </span> </span> </li> <li class="d2h-file-list-line"> <span class="d2h-file-name-wrapper"> <svg aria-hidden="true" class="d2h-icon d2h-added" height="16" title="added" version="1.1" viewBox="0 0 14 16" width="14"> <path d="M13 1H1C0.45 1 0 1.45 0 2v12c0 0.55 0.45 1 1 1h12c0.55 0 1-0.45 1-1V2c0-0.55-0.45-1-1-1z m0 13H1V2h12v12zM6 9H3V7h3V4h2v3h3v2H8v3H6V9z"></path> </svg> <a href="/gems/rubanok/0.1.1/0.4.0/page/2#d2h-594114" class="d2h-file-name">data/lib/rubanok/processor.rb</a> <span class="d2h-file-stats"> <span class="d2h-lines-added">+144</span> <span class="d2h-lines-deleted">-0</span> </span> </span> </li> <li class="d2h-file-list-line"> <span class="d2h-file-name-wrapper"> <svg aria-hidden="true" class="d2h-icon d2h-changed" height="16" title="modified" version="1.1" viewBox="0 0 14 16" width="14"> <path d="M13 1H1C0.45 1 0 1.45 0 2v12c0 0.55 0.45 1 1 1h12c0.55 0 1-0.45 1-1V2c0-0.55-0.45-1-1-1z m0 13H1V2h12v12zM4 8c0-1.66 1.34-3 3-3s3 1.34 3 3-1.34 3-3 3-3-1.34-3-3z"></path> </svg> <a href="/gems/rubanok/0.1.1/0.4.0/page/2#d2h-704866" class="d2h-file-name">data/lib/rubanok/rails/controller.rb</a> <span class="d2h-file-stats"> <span class="d2h-lines-added">+59</span> <span class="d2h-lines-deleted">-14</span> </span> </span> </li> <li class="d2h-file-list-line"> <span class="d2h-file-name-wrapper"> <svg aria-hidden="true" class="d2h-icon d2h-changed" height="16" title="modified" version="1.1" viewBox="0 0 14 16" width="14"> <path d="M13 1H1C0.45 1 0 1.45 0 2v12c0 0.55 0.45 1 1 1h12c0.55 0 1-0.45 1-1V2c0-0.55-0.45-1-1-1z m0 13H1V2h12v12zM4 8c0-1.66 1.34-3 3-3s3 1.34 3 3-1.34 3-3 3-3-1.34-3-3z"></path> </svg> <a href="/gems/rubanok/0.1.1/0.4.0/page/2#d2h-174698" class="d2h-file-name">data/lib/rubanok/railtie.rb</a> <span class="d2h-file-stats"> <span class="d2h-lines-added">+6</span> <span class="d2h-lines-deleted">-0</span> </span> </span> </li> <li class="d2h-file-list-line"> <span class="d2h-file-name-wrapper"> <svg aria-hidden="true" class="d2h-icon d2h-changed" height="16" title="modified" version="1.1" viewBox="0 0 14 16" width="14"> <path d="M13 1H1C0.45 1 0 1.45 0 2v12c0 0.55 0.45 1 1 1h12c0.55 0 1-0.45 1-1V2c0-0.55-0.45-1-1-1z m0 13H1V2h12v12zM4 8c0-1.66 1.34-3 3-3s3 1.34 3 3-1.34 3-3 3-3-1.34-3-3z"></path> </svg> <a href="/gems/rubanok/0.1.1/0.4.0/page/2#d2h-241671" class="d2h-file-name">data/lib/rubanok/rspec.rb</a> <span class="d2h-file-stats"> <span class="d2h-lines-added">+25</span> <span class="d2h-lines-deleted">-11</span> </span> </span> </li> <li class="d2h-file-list-line"> <span class="d2h-file-name-wrapper"> <svg aria-hidden="true" class="d2h-icon d2h-changed" height="16" title="modified" version="1.1" viewBox="0 0 14 16" width="14"> <path d="M13 1H1C0.45 1 0 1.45 0 2v12c0 0.55 0.45 1 1 1h12c0.55 0 1-0.45 1-1V2c0-0.55-0.45-1-1-1z m0 13H1V2h12v12zM4 8c0-1.66 1.34-3 3-3s3 1.34 3 3-1.34 3-3 3-3-1.34-3-3z"></path> </svg> <a href="/gems/rubanok/0.1.1/0.4.0/page/3#d2h-064172" class="d2h-file-name">data/lib/rubanok/rule.rb</a> <span class="d2h-file-stats"> <span class="d2h-lines-added">+32</span> <span class="d2h-lines-deleted">-24</span> </span> </span> </li> <li class="d2h-file-list-line"> <span class="d2h-file-name-wrapper"> <svg aria-hidden="true" class="d2h-icon d2h-changed" height="16" title="modified" version="1.1" viewBox="0 0 14 16" width="14"> <path d="M13 1H1C0.45 1 0 1.45 0 2v12c0 0.55 0.45 1 1 1h12c0.55 0 1-0.45 1-1V2c0-0.55-0.45-1-1-1z m0 13H1V2h12v12zM4 8c0-1.66 1.34-3 3-3s3 1.34 3 3-1.34 3-3 3-3-1.34-3-3z"></path> </svg> <a href="/gems/rubanok/0.1.1/0.4.0/page/3#d2h-758908" class="d2h-file-name">data/lib/rubanok/version.rb</a> <span class="d2h-file-stats"> <span class="d2h-lines-added">+1</span> <span class="d2h-lines-deleted">-1</span> </span> </span> </li> <li class="d2h-file-list-line"> <span class="d2h-file-name-wrapper"> <svg aria-hidden="true" class="d2h-icon d2h-added" height="16" title="added" version="1.1" viewBox="0 0 14 16" width="14"> <path d="M13 1H1C0.45 1 0 1.45 0 2v12c0 0.55 0.45 1 1 1h12c0.55 0 1-0.45 1-1V2c0-0.55-0.45-1-1-1z m0 13H1V2h12v12zM6 9H3V7h3V4h2v3h3v2H8v3H6V9z"></path> </svg> <a href="/gems/rubanok/0.1.1/0.4.0/page/3#d2h-290298" class="d2h-file-name">data/sig/rubanok.rbs</a> <span class="d2h-file-stats"> <span class="d2h-lines-added">+6</span> <span class="d2h-lines-deleted">-0</span> </span> </span> </li> <li class="d2h-file-list-line"> <span class="d2h-file-name-wrapper"> <svg aria-hidden="true" class="d2h-icon d2h-added" height="16" title="added" version="1.1" viewBox="0 0 14 16" width="14"> <path d="M13 1H1C0.45 1 0 1.45 0 2v12c0 0.55 0.45 1 1 1h12c0.55 0 1-0.45 1-1V2c0-0.55-0.45-1-1-1z m0 13H1V2h12v12zM6 9H3V7h3V4h2v3h3v2H8v3H6V9z"></path> </svg> <a href="/gems/rubanok/0.1.1/0.4.0/page/3#d2h-791463" class="d2h-file-name">data/sig/rubanok/dsl/mapping.rbs</a> <span class="d2h-file-stats"> <span class="d2h-lines-added">+18</span> <span class="d2h-lines-deleted">-0</span> </span> </span> </li> <li class="d2h-file-list-line"> <span class="d2h-file-name-wrapper"> <svg aria-hidden="true" class="d2h-icon d2h-added" height="16" title="added" version="1.1" viewBox="0 0 14 16" width="14"> <path d="M13 1H1C0.45 1 0 1.45 0 2v12c0 0.55 0.45 1 1 1h12c0.55 0 1-0.45 1-1V2c0-0.55-0.45-1-1-1z m0 13H1V2h12v12zM6 9H3V7h3V4h2v3h3v2H8v3H6V9z"></path> </svg> <a href="/gems/rubanok/0.1.1/0.4.0/page/3#d2h-349490" class="d2h-file-name">data/sig/rubanok/dsl/matching.rbs</a> <span class="d2h-file-stats"> <span class="d2h-lines-added">+44</span> <span class="d2h-lines-deleted">-0</span> </span> </span> </li> <li class="d2h-file-list-line"> <span class="d2h-file-name-wrapper"> <svg aria-hidden="true" class="d2h-icon d2h-added" height="16" title="added" version="1.1" viewBox="0 0 14 16" width="14"> <path d="M13 1H1C0.45 1 0 1.45 0 2v12c0 0.55 0.45 1 1 1h12c0.55 0 1-0.45 1-1V2c0-0.55-0.45-1-1-1z m0 13H1V2h12v12zM6 9H3V7h3V4h2v3h3v2H8v3H6V9z"></path> </svg> <a href="/gems/rubanok/0.1.1/0.4.0/page/3#d2h-101693" class="d2h-file-name">data/sig/rubanok/processor.rbs</a> <span class="d2h-file-stats"> <span class="d2h-lines-added">+53</span> <span class="d2h-lines-deleted">-0</span> </span> </span> </li> <li class="d2h-file-list-line"> <span class="d2h-file-name-wrapper"> <svg aria-hidden="true" class="d2h-icon d2h-added" height="16" title="added" version="1.1" viewBox="0 0 14 16" width="14"> <path d="M13 1H1C0.45 1 0 1.45 0 2v12c0 0.55 0.45 1 1 1h12c0.55 0 1-0.45 1-1V2c0-0.55-0.45-1-1-1z m0 13H1V2h12v12zM6 9H3V7h3V4h2v3h3v2H8v3H6V9z"></path> </svg> <a href="/gems/rubanok/0.1.1/0.4.0/page/3#d2h-054331" class="d2h-file-name">data/sig/rubanok/rule.rbs</a> <span class="d2h-file-stats"> <span class="d2h-lines-added">+29</span> <span class="d2h-lines-deleted">-0</span> </span> </span> </li> <li class="d2h-file-list-line"> <span class="d2h-file-name-wrapper"> <svg aria-hidden="true" class="d2h-icon d2h-added" height="16" title="added" version="1.1" viewBox="0 0 14 16" width="14"> <path d="M13 1H1C0.45 1 0 1.45 0 2v12c0 0.55 0.45 1 1 1h12c0.55 0 1-0.45 1-1V2c0-0.55-0.45-1-1-1z m0 13H1V2h12v12zM6 9H3V7h3V4h2v3h3v2H8v3H6V9z"></path> </svg> <a href="/gems/rubanok/0.1.1/0.4.0/page/3#d2h-171581" class="d2h-file-name">data/sig/rubanok/version.rbs</a> <span class="d2h-file-stats"> <span class="d2h-lines-added">+3</span> <span class="d2h-lines-deleted">-0</span> </span> </span> </li> <li class="d2h-file-list-line"> <span class="d2h-file-name-wrapper"> <svg aria-hidden="true" class="d2h-icon d2h-added" height="16" title="added" version="1.1" viewBox="0 0 14 16" width="14"> <path d="M13 1H1C0.45 1 0 1.45 0 2v12c0 0.55 0.45 1 1 1h12c0.55 0 1-0.45 1-1V2c0-0.55-0.45-1-1-1z m0 13H1V2h12v12zM6 9H3V7h3V4h2v3h3v2H8v3H6V9z"></path> </svg> <a href="/gems/rubanok/0.1.1/0.4.0/page/3#d2h-726072" class="d2h-file-name">data/sig/typeprof.rb</a> <span class="d2h-file-stats"> <span class="d2h-lines-added">+25</span> <span class="d2h-lines-deleted">-0</span> </span> </span> </li> <li class="d2h-file-list-line"> <span class="d2h-file-name-wrapper"> <svg aria-hidden="true" class="d2h-icon d2h-changed" height="16" title="modified" version="1.1" viewBox="0 0 14 16" width="14"> <path d="M13 1H1C0.45 1 0 1.45 0 2v12c0 0.55 0.45 1 1 1h12c0.55 0 1-0.45 1-1V2c0-0.55-0.45-1-1-1z m0 13H1V2h12v12zM4 8c0-1.66 1.34-3 3-3s3 1.34 3 3-1.34 3-3 3-3-1.34-3-3z"></path> </svg> <a href="/gems/rubanok/0.1.1/0.4.0/page/3#d2h-004177" class="d2h-file-name">metadata</a> <span class="d2h-file-stats"> <span class="d2h-lines-added">+27</span> <span class="d2h-lines-deleted">-58</span> </span> </span> </li> <li class="d2h-file-list-line"> <span class="d2h-file-name-wrapper"> <svg aria-hidden="true" class="d2h-icon d2h-deleted" height="16" title="removed" version="1.1" viewBox="0 0 14 16" width="14"> <path d="M13 1H1C0.45 1 0 1.45 0 2v12c0 0.55 0.45 1 1 1h12c0.55 0 1-0.45 1-1V2c0-0.55-0.45-1-1-1z m0 13H1V2h12v12zM11 9H3V7h8v2z"></path> </svg> <a href="/gems/rubanok/0.1.1/0.4.0/page/4#d2h-105797" class="d2h-file-name">data/.gitignore</a> <span class="d2h-file-stats"> <span class="d2h-lines-added">+0</span> <span class="d2h-lines-deleted">-12</span> </span> </span> </li> <li class="d2h-file-list-line"> <span class="d2h-file-name-wrapper"> <svg aria-hidden="true" class="d2h-icon d2h-deleted" height="16" title="removed" version="1.1" viewBox="0 0 14 16" width="14"> <path d="M13 1H1C0.45 1 0 1.45 0 2v12c0 0.55 0.45 1 1 1h12c0.55 0 1-0.45 1-1V2c0-0.55-0.45-1-1-1z m0 13H1V2h12v12zM11 9H3V7h8v2z"></path> </svg> <a href="/gems/rubanok/0.1.1/0.4.0/page/4#d2h-866692" class="d2h-file-name">data/.rspec</a> <span class="d2h-file-stats"> <span class="d2h-lines-added">+0</span> <span class="d2h-lines-deleted">-3</span> </span> </span> </li> <li class="d2h-file-list-line"> <span class="d2h-file-name-wrapper"> <svg aria-hidden="true" class="d2h-icon d2h-deleted" height="16" title="removed" version="1.1" viewBox="0 0 14 16" width="14"> <path d="M13 1H1C0.45 1 0 1.45 0 2v12c0 0.55 0.45 1 1 1h12c0.55 0 1-0.45 1-1V2c0-0.55-0.45-1-1-1z m0 13H1V2h12v12zM11 9H3V7h8v2z"></path> </svg> <a href="/gems/rubanok/0.1.1/0.4.0/page/4#d2h-962357" class="d2h-file-name">data/.rubocop.yml</a> <span class="d2h-file-stats"> <span class="d2h-lines-added">+0</span> <span class="d2h-lines-deleted">-63</span> </span> </span> </li> <li class="d2h-file-list-line"> <span class="d2h-file-name-wrapper"> <svg aria-hidden="true" class="d2h-icon d2h-deleted" height="16" title="removed" version="1.1" viewBox="0 0 14 16" width="14"> <path d="M13 1H1C0.45 1 0 1.45 0 2v12c0 0.55 0.45 1 1 1h12c0.55 0 1-0.45 1-1V2c0-0.55-0.45-1-1-1z m0 13H1V2h12v12zM11 9H3V7h8v2z"></path> </svg> <a href="/gems/rubanok/0.1.1/0.4.0/page/4#d2h-594768" class="d2h-file-name">data/.travis.yml</a> <span class="d2h-file-stats"> <span class="d2h-lines-added">+0</span> <span class="d2h-lines-deleted">-24</span> </span> </span> </li> <li class="d2h-file-list-line"> <span class="d2h-file-name-wrapper"> <svg aria-hidden="true" class="d2h-icon d2h-deleted" height="16" title="removed" version="1.1" viewBox="0 0 14 16" width="14"> <path d="M13 1H1C0.45 1 0 1.45 0 2v12c0 0.55 0.45 1 1 1h12c0.55 0 1-0.45 1-1V2c0-0.55-0.45-1-1-1z m0 13H1V2h12v12zM11 9H3V7h8v2z"></path> </svg> <a href="/gems/rubanok/0.1.1/0.4.0/page/4#d2h-063738" class="d2h-file-name">data/Gemfile</a> <span class="d2h-file-stats"> <span class="d2h-lines-added">+0</span> <span class="d2h-lines-deleted">-13</span> </span> </span> </li> <li class="d2h-file-list-line"> <span class="d2h-file-name-wrapper"> <svg aria-hidden="true" class="d2h-icon d2h-deleted" height="16" title="removed" version="1.1" viewBox="0 0 14 16" width="14"> <path d="M13 1H1C0.45 1 0 1.45 0 2v12c0 0.55 0.45 1 1 1h12c0.55 0 1-0.45 1-1V2c0-0.55-0.45-1-1-1z m0 13H1V2h12v12zM11 9H3V7h8v2z"></path> </svg> <a href="/gems/rubanok/0.1.1/0.4.0/page/4#d2h-762365" class="d2h-file-name">data/Gemfile.local</a> <span class="d2h-file-stats"> <span class="d2h-lines-added">+0</span> <span class="d2h-lines-deleted">-2</span> </span> </span> </li> <li class="d2h-file-list-line"> <span class="d2h-file-name-wrapper"> <svg aria-hidden="true" class="d2h-icon d2h-deleted" height="16" title="removed" version="1.1" viewBox="0 0 14 16" width="14"> <path d="M13 1H1C0.45 1 0 1.45 0 2v12c0 0.55 0.45 1 1 1h12c0.55 0 1-0.45 1-1V2c0-0.55-0.45-1-1-1z m0 13H1V2h12v12zM11 9H3V7h8v2z"></path> </svg> <a href="/gems/rubanok/0.1.1/0.4.0/page/4#d2h-485802" class="d2h-file-name">data/Rakefile</a> <span class="d2h-file-stats"> <span class="d2h-lines-added">+0</span> <span class="d2h-lines-deleted">-10</span> </span> </span> </li> <li class="d2h-file-list-line"> <span class="d2h-file-name-wrapper"> <svg aria-hidden="true" class="d2h-icon d2h-deleted" height="16" title="removed" version="1.1" viewBox="0 0 14 16" width="14"> <path d="M13 1H1C0.45 1 0 1.45 0 2v12c0 0.55 0.45 1 1 1h12c0.55 0 1-0.45 1-1V2c0-0.55-0.45-1-1-1z m0 13H1V2h12v12zM11 9H3V7h8v2z"></path> </svg> <a href="/gems/rubanok/0.1.1/0.4.0/page/4#d2h-268074" class="d2h-file-name">data/bin/console</a> <span class="d2h-file-stats"> <span class="d2h-lines-added">+0</span> <span class="d2h-lines-deleted">-8</span> </span> </span> </li> <li class="d2h-file-list-line"> <span class="d2h-file-name-wrapper"> <svg aria-hidden="true" class="d2h-icon d2h-deleted" height="16" title="removed" version="1.1" viewBox="0 0 14 16" width="14"> <path d="M13 1H1C0.45 1 0 1.45 0 2v12c0 0.55 0.45 1 1 1h12c0.55 0 1-0.45 1-1V2c0-0.55-0.45-1-1-1z m0 13H1V2h12v12zM11 9H3V7h8v2z"></path> </svg> <a href="/gems/rubanok/0.1.1/0.4.0/page/4#d2h-002736" class="d2h-file-name">data/bin/setup</a> <span class="d2h-file-stats"> <span class="d2h-lines-added">+0</span> <span class="d2h-lines-deleted">-8</span> </span> </span> </li> <li class="d2h-file-list-line"> <span class="d2h-file-name-wrapper"> <svg aria-hidden="true" class="d2h-icon d2h-deleted" height="16" title="removed" version="1.1" viewBox="0 0 14 16" width="14"> <path d="M13 1H1C0.45 1 0 1.45 0 2v12c0 0.55 0.45 1 1 1h12c0.55 0 1-0.45 1-1V2c0-0.55-0.45-1-1-1z m0 13H1V2h12v12zM11 9H3V7h8v2z"></path> </svg> <a href="/gems/rubanok/0.1.1/0.4.0/page/4#d2h-769914" class="d2h-file-name">data/gemfiles/rails42.gemfile</a> <span class="d2h-file-stats"> <span class="d2h-lines-added">+0</span> <span class="d2h-lines-deleted">-6</span> </span> </span> </li> <li class="d2h-file-list-line"> <span class="d2h-file-name-wrapper"> <svg aria-hidden="true" class="d2h-icon d2h-deleted" height="16" title="removed" version="1.1" viewBox="0 0 14 16" width="14"> <path d="M13 1H1C0.45 1 0 1.45 0 2v12c0 0.55 0.45 1 1 1h12c0.55 0 1-0.45 1-1V2c0-0.55-0.45-1-1-1z m0 13H1V2h12v12zM11 9H3V7h8v2z"></path> </svg> <a href="/gems/rubanok/0.1.1/0.4.0/page/4#d2h-743591" class="d2h-file-name">data/gemfiles/rails52.gemfile</a> <span class="d2h-file-stats"> <span class="d2h-lines-added">+0</span> <span class="d2h-lines-deleted">-6</span> </span> </span> </li> <li class="d2h-file-list-line"> <span class="d2h-file-name-wrapper"> <svg aria-hidden="true" class="d2h-icon d2h-deleted" height="16" title="removed" version="1.1" viewBox="0 0 14 16" width="14"> <path d="M13 1H1C0.45 1 0 1.45 0 2v12c0 0.55 0.45 1 1 1h12c0.55 0 1-0.45 1-1V2c0-0.55-0.45-1-1-1z m0 13H1V2h12v12zM11 9H3V7h8v2z"></path> </svg> <a href="/gems/rubanok/0.1.1/0.4.0/page/4#d2h-513758" class="d2h-file-name">data/gemfiles/railsmaster.gemfile</a> <span class="d2h-file-stats"> <span class="d2h-lines-added">+0</span> <span class="d2h-lines-deleted">-5</span> </span> </span> </li> <li class="d2h-file-list-line"> <span class="d2h-file-name-wrapper"> <svg aria-hidden="true" class="d2h-icon d2h-deleted" height="16" title="removed" version="1.1" viewBox="0 0 14 16" width="14"> <path d="M13 1H1C0.45 1 0 1.45 0 2v12c0 0.55 0.45 1 1 1h12c0.55 0 1-0.45 1-1V2c0-0.55-0.45-1-1-1z m0 13H1V2h12v12zM11 9H3V7h8v2z"></path> </svg> <a href="/gems/rubanok/0.1.1/0.4.0/page/4#d2h-955453" class="d2h-file-name">data/lib/rubanok/ext/symbolize_keys.rb</a> <span class="d2h-file-stats"> <span class="d2h-lines-added">+0</span> <span class="d2h-lines-deleted">-13</span> </span> </span> </li> <li class="d2h-file-list-line"> <span class="d2h-file-name-wrapper"> <svg aria-hidden="true" class="d2h-icon d2h-deleted" height="16" title="removed" version="1.1" viewBox="0 0 14 16" width="14"> <path d="M13 1H1C0.45 1 0 1.45 0 2v12c0 0.55 0.45 1 1 1h12c0.55 0 1-0.45 1-1V2c0-0.55-0.45-1-1-1z m0 13H1V2h12v12zM11 9H3V7h8v2z"></path> </svg> <a href="/gems/rubanok/0.1.1/0.4.0/page/4#d2h-963832" class="d2h-file-name">data/lib/rubanok/plane.rb</a> <span class="d2h-file-stats"> <span class="d2h-lines-added">+0</span> <span class="d2h-lines-deleted">-92</span> </span> </span> </li> <li class="d2h-file-list-line"> <span class="d2h-file-name-wrapper"> <svg aria-hidden="true" class="d2h-icon d2h-deleted" height="16" title="removed" version="1.1" viewBox="0 0 14 16" width="14"> <path d="M13 1H1C0.45 1 0 1.45 0 2v12c0 0.55 0.45 1 1 1h12c0.55 0 1-0.45 1-1V2c0-0.55-0.45-1-1-1z m0 13H1V2h12v12zM11 9H3V7h8v2z"></path> </svg> <a href="/gems/rubanok/0.1.1/0.4.0/page/4#d2h-953791" class="d2h-file-name">data/rubanok.gemspec</a> <span class="d2h-file-stats"> <span class="d2h-lines-added">+0</span> <span class="d2h-lines-deleted">-35</span> </span> </span> </li> </ol> </div> </div> <div id="d2h-683205" class="d2h-file-wrapper" data-lang="yaml"> <div class="d2h-file-header"> <span class="d2h-file-name-wrapper"> <svg aria-hidden="true" class="d2h-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"> <path d="M6 5H2v-1h4v1zM2 8h7v-1H2v1z m0 2h7v-1H2v1z m0 2h7v-1H2v1z m10-7.5v9.5c0 0.55-0.45 1-1 1H1c-0.55 0-1-0.45-1-1V2c0-0.55 0.45-1 1-1h7.5l3.5 3.5z m-1 0.5L8 2H1v12h10V5z"></path> </svg> <span class="d2h-file-name"><a href="#d2h-683205">checksums.yaml</a></span> <span class="d2h-tag d2h-changed d2h-changed-tag">CHANGED</span></span> <label class="d2h-file-collapse"> <input class="d2h-file-collapse-input" type="checkbox" name="viewed" value="viewed"> Viewed </label> </div> <div class="d2h-file-diff"> <div class="d2h-code-wrapper"> <table class="d2h-diff-table"> <tbody class="d2h-diff-tbody"> <tr> <td class="d2h-code-linenumber d2h-info"></td> <td class="d2h-info"> <div class="d2h-code-line d2h-info">@@ -1,7 +1,7 @@</div> </td> </tr><tr> <td id="d2h-683205-23" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-683205-23"> <div class="line-num1">1</div> <div class="line-num2">1</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line d2h-cntx"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn">---</span> </div> </td> </tr><tr> <td id="d2h-683205-34" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-683205-34"> <div class="line-num1">2</div> <div class="line-num2">2</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line d2h-cntx"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn">SHA256:</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">3</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line d2h-del d2h-change"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> metadata.gz: <del>5b5cdbefb98c951e26be6bfcd8029250f8b314c9b7bb86e5d5d778bc340b4d40</del></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">4</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line d2h-del d2h-change"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> data.tar.gz: <del>abd725823622bdf1ff062cc1496dfd121522e6b866ec01ce2bc9ea421a56785e</del></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">3</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line d2h-ins d2h-change"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> metadata.gz: <ins>90f6ca9dfd61a6f143eff1f3ab3c2d7e41502c992879af785dcf414af15249fd</ins></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">4</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line d2h-ins d2h-change"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> data.tar.gz: <ins>8807cbb2a680e9fbc739a9f0214fb4753e24ee55e69da72d9b45c7f121900dd9</ins></span> </div> </td> </tr><tr> <td id="d2h-683205-89" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-683205-89"> <div class="line-num1">5</div> <div class="line-num2">5</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line d2h-cntx"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn">SHA512:</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">6</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line d2h-del d2h-change"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> metadata.gz: <del>aeec1ebbf07db8ec31046cf1442ffac9e6cae698e979768e8560d189f7ab23bfc13d9ef2979dbd45fd00490a5101e3f3b3900d4ff2425b2112880915e8446ba6</del></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">7</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line d2h-del d2h-change"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> data.tar.gz: <del>e66af487b2f7b82626d790bc0746559102de30ec0220e5d12de1ce0f29c79c98ed0bad6744ab90df5c5a931b421d90d1b4b4d082e70d15f714efb49fb56b2418</del></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">6</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line d2h-ins d2h-change"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> metadata.gz: <ins>2e015d7c3c517e42e5fe42037035db950cc87f9bd0099b38580c03ad156c36d0133681bd659451e8bdb58f15254799ce8d7b3158a1dc998210e3a425867a521d</ins></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">7</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line d2h-ins d2h-change"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> data.tar.gz: <ins>6c22e9a876e86f144726e8dbbe79b42f9d3052feb6f9c31688f7259872a5eed1e5ac66b031b890e0d1b4eceba7d3903331a073f2e13321b9f3d45c9fe53229d2</ins></span> </div> </td> </tr> </tbody> </table> </div> </div> </div> <div id="d2h-670634" class="d2h-file-wrapper" data-lang="md"> <div class="d2h-file-header"> <span class="d2h-file-name-wrapper"> <svg aria-hidden="true" class="d2h-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"> <path d="M6 5H2v-1h4v1zM2 8h7v-1H2v1z m0 2h7v-1H2v1z m0 2h7v-1H2v1z m10-7.5v9.5c0 0.55-0.45 1-1 1H1c-0.55 0-1-0.45-1-1V2c0-0.55 0.45-1 1-1h7.5l3.5 3.5z m-1 0.5L8 2H1v12h10V5z"></path> </svg> <span class="d2h-file-name"><a href="#d2h-670634">data/CHANGELOG.md</a></span> <span class="d2h-tag d2h-changed d2h-changed-tag">CHANGED</span></span> <label class="d2h-file-collapse"> <input class="d2h-file-collapse-input" type="checkbox" name="viewed" value="viewed"> Viewed </label> </div> <div class="d2h-file-diff"> <div class="d2h-code-wrapper"> <table class="d2h-diff-table"> <tbody class="d2h-diff-tbody"> <tr> <td class="d2h-code-linenumber d2h-info"></td> <td class="d2h-info"> <div class="d2h-code-line d2h-info">@@ -2,6 +2,64 @@</div> </td> </tr><tr> <td id="d2h-670634-171" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-670634-171"> <div class="line-num1">2</div> <div class="line-num2">2</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line d2h-cntx"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-670634-182" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-670634-182"> <div class="line-num1">3</div> <div class="line-num2">3</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line d2h-cntx"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn">## master</span> </div> </td> </tr><tr> <td id="d2h-670634-193" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-670634-193"> <div class="line-num1">4</div> <div class="line-num2">4</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line d2h-cntx"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-670634-204" class="d2h-code-linenumber d2h-ins"><a href="#d2h-670634-204"> <div class="line-num1"></div> <div class="line-num2">5</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">## 0.4.0 (2021-03-05)</span> </div> </td> </tr><tr> <td id="d2h-670634-215" class="d2h-code-linenumber d2h-ins"><a href="#d2h-670634-215"> <div class="line-num1"></div> <div class="line-num2">6</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-670634-226" class="d2h-code-linenumber d2h-ins"><a href="#d2h-670634-226"> <div class="line-num1"></div> <div class="line-num2">7</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">- Ruby 3.0 compatibility. ([@palkan][])</span> </div> </td> </tr><tr> <td id="d2h-670634-237" class="d2h-code-linenumber d2h-ins"><a href="#d2h-670634-237"> <div class="line-num1"></div> <div class="line-num2">8</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-670634-248" class="d2h-code-linenumber d2h-ins"><a href="#d2h-670634-248"> <div class="line-num1"></div> <div class="line-num2">9</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">- Add RBS. ([@palkan][])</span> </div> </td> </tr><tr> <td id="d2h-670634-259" class="d2h-code-linenumber d2h-ins"><a href="#d2h-670634-259"> <div class="line-num1"></div> <div class="line-num2">10</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-670634-270" class="d2h-code-linenumber d2h-ins"><a href="#d2h-670634-270"> <div class="line-num1"></div> <div class="line-num2">11</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">## 0.3.0 (2020-10-21)</span> </div> </td> </tr><tr> <td id="d2h-670634-281" class="d2h-code-linenumber d2h-ins"><a href="#d2h-670634-281"> <div class="line-num1"></div> <div class="line-num2">12</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-670634-292" class="d2h-code-linenumber d2h-ins"><a href="#d2h-670634-292"> <div class="line-num1"></div> <div class="line-num2">13</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">- Add `filter_with: Symbol | Proc` option to `.map` to allowing filtering the input value. ([@palkan][])</span> </div> </td> </tr><tr> <td id="d2h-670634-303" class="d2h-code-linenumber d2h-ins"><a href="#d2h-670634-303"> <div class="line-num1"></div> <div class="line-num2">14</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-670634-314" class="d2h-code-linenumber d2h-ins"><a href="#d2h-670634-314"> <div class="line-num1"></div> <div class="line-num2">15</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">- Allow specifying `ignore_empty_values: *` per rule. ([@palkan][])</span> </div> </td> </tr><tr> <td id="d2h-670634-325" class="d2h-code-linenumber d2h-ins"><a href="#d2h-670634-325"> <div class="line-num1"></div> <div class="line-num2">16</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-670634-336" class="d2h-code-linenumber d2h-ins"><a href="#d2h-670634-336"> <div class="line-num1"></div> <div class="line-num2">17</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">- Add `prepare` DSL method to transform the input once before the first rule is activated. ([@palkan][])</span> </div> </td> </tr><tr> <td id="d2h-670634-347" class="d2h-code-linenumber d2h-ins"><a href="#d2h-670634-347"> <div class="line-num1"></div> <div class="line-num2">18</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-670634-358" class="d2h-code-linenumber d2h-ins"><a href="#d2h-670634-358"> <div class="line-num1"></div> <div class="line-num2">19</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">When no rules match, the method is not called.</span> </div> </td> </tr><tr> <td id="d2h-670634-369" class="d2h-code-linenumber d2h-ins"><a href="#d2h-670634-369"> <div class="line-num1"></div> <div class="line-num2">20</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">Useful when you want to perform some default transformations.</span> </div> </td> </tr><tr> <td id="d2h-670634-380" class="d2h-code-linenumber d2h-ins"><a href="#d2h-670634-380"> <div class="line-num1"></div> <div class="line-num2">21</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-670634-391" class="d2h-code-linenumber d2h-ins"><a href="#d2h-670634-391"> <div class="line-num1"></div> <div class="line-num2">22</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">## 0.2.1 (2019-08-24)</span> </div> </td> </tr><tr> <td id="d2h-670634-402" class="d2h-code-linenumber d2h-ins"><a href="#d2h-670634-402"> <div class="line-num1"></div> <div class="line-num2">23</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-670634-413" class="d2h-code-linenumber d2h-ins"><a href="#d2h-670634-413"> <div class="line-num1"></div> <div class="line-num2">24</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">- Fix bug with trying to add a helper for API controller. ([@palkan][])</span> </div> </td> </tr><tr> <td id="d2h-670634-424" class="d2h-code-linenumber d2h-ins"><a href="#d2h-670634-424"> <div class="line-num1"></div> <div class="line-num2">25</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-670634-435" class="d2h-code-linenumber d2h-ins"><a href="#d2h-670634-435"> <div class="line-num1"></div> <div class="line-num2">26</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">Fixes [#10](https://github.com/palkan/rubanok/issues/10).</span> </div> </td> </tr><tr> <td id="d2h-670634-446" class="d2h-code-linenumber d2h-ins"><a href="#d2h-670634-446"> <div class="line-num1"></div> <div class="line-num2">27</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-670634-457" class="d2h-code-linenumber d2h-ins"><a href="#d2h-670634-457"> <div class="line-num1"></div> <div class="line-num2">28</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">## 0.2.0 (2019-08-23)</span> </div> </td> </tr><tr> <td id="d2h-670634-468" class="d2h-code-linenumber d2h-ins"><a href="#d2h-670634-468"> <div class="line-num1"></div> <div class="line-num2">29</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-670634-479" class="d2h-code-linenumber d2h-ins"><a href="#d2h-670634-479"> <div class="line-num1"></div> <div class="line-num2">30</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">- Add `Process.project` and `rubanok_scope` methods to get the Hash of recognized params. ([@palkan][])</span> </div> </td> </tr><tr> <td id="d2h-670634-490" class="d2h-code-linenumber d2h-ins"><a href="#d2h-670634-490"> <div class="line-num1"></div> <div class="line-num2">31</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-670634-501" class="d2h-code-linenumber d2h-ins"><a href="#d2h-670634-501"> <div class="line-num1"></div> <div class="line-num2">32</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">```ruby</span> </div> </td> </tr><tr> <td id="d2h-670634-512" class="d2h-code-linenumber d2h-ins"><a href="#d2h-670634-512"> <div class="line-num1"></div> <div class="line-num2">33</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">class PostsProcessor < Rubanok::Processor</span> </div> </td> </tr><tr> <td id="d2h-670634-523" class="d2h-code-linenumber d2h-ins"><a href="#d2h-670634-523"> <div class="line-num1"></div> <div class="line-num2">34</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> map(:q) { block }</span> </div> </td> </tr><tr> <td id="d2h-670634-534" class="d2h-code-linenumber d2h-ins"><a href="#d2h-670634-534"> <div class="line-num1"></div> <div class="line-num2">35</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> match(:page, :per_page, activate_on: :page) { block }</span> </div> </td> </tr><tr> <td id="d2h-670634-545" class="d2h-code-linenumber d2h-ins"><a href="#d2h-670634-545"> <div class="line-num1"></div> <div class="line-num2">36</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">end</span> </div> </td> </tr><tr> <td id="d2h-670634-556" class="d2h-code-linenumber d2h-ins"><a href="#d2h-670634-556"> <div class="line-num1"></div> <div class="line-num2">37</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-670634-567" class="d2h-code-linenumber d2h-ins"><a href="#d2h-670634-567"> <div class="line-num1"></div> <div class="line-num2">38</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">PostsProcessor.project(q: "search_me", filter: "smth", page: 2)</span> </div> </td> </tr><tr> <td id="d2h-670634-578" class="d2h-code-linenumber d2h-ins"><a href="#d2h-670634-578"> <div class="line-num1"></div> <div class="line-num2">39</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"># => { q: "search_me", page: 2 }</span> </div> </td> </tr><tr> <td id="d2h-670634-589" class="d2h-code-linenumber d2h-ins"><a href="#d2h-670634-589"> <div class="line-num1"></div> <div class="line-num2">40</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-670634-600" class="d2h-code-linenumber d2h-ins"><a href="#d2h-670634-600"> <div class="line-num1"></div> <div class="line-num2">41</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">class PostsController < ApplicationController</span> </div> </td> </tr><tr> <td id="d2h-670634-611" class="d2h-code-linenumber d2h-ins"><a href="#d2h-670634-611"> <div class="line-num1"></div> <div class="line-num2">42</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> def index</span> </div> </td> </tr><tr> <td id="d2h-670634-622" class="d2h-code-linenumber d2h-ins"><a href="#d2h-670634-622"> <div class="line-num1"></div> <div class="line-num2">43</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> @filter_params = rubanok_scope</span> </div> </td> </tr><tr> <td id="d2h-670634-633" class="d2h-code-linenumber d2h-ins"><a href="#d2h-670634-633"> <div class="line-num1"></div> <div class="line-num2">44</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> # or</span> </div> </td> </tr><tr> <td id="d2h-670634-644" class="d2h-code-linenumber d2h-ins"><a href="#d2h-670634-644"> <div class="line-num1"></div> <div class="line-num2">45</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> @filter_params = rubanok_scope params.require(:filter), with: PostsProcessor</span> </div> </td> </tr><tr> <td id="d2h-670634-655" class="d2h-code-linenumber d2h-ins"><a href="#d2h-670634-655"> <div class="line-num1"></div> <div class="line-num2">46</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> # ...</span> </div> </td> </tr><tr> <td id="d2h-670634-666" class="d2h-code-linenumber d2h-ins"><a href="#d2h-670634-666"> <div class="line-num1"></div> <div class="line-num2">47</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> end</span> </div> </td> </tr><tr> <td id="d2h-670634-677" class="d2h-code-linenumber d2h-ins"><a href="#d2h-670634-677"> <div class="line-num1"></div> <div class="line-num2">48</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">end</span> </div> </td> </tr><tr> <td id="d2h-670634-688" class="d2h-code-linenumber d2h-ins"><a href="#d2h-670634-688"> <div class="line-num1"></div> <div class="line-num2">49</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">```</span> </div> </td> </tr><tr> <td id="d2h-670634-699" class="d2h-code-linenumber d2h-ins"><a href="#d2h-670634-699"> <div class="line-num1"></div> <div class="line-num2">50</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-670634-710" class="d2h-code-linenumber d2h-ins"><a href="#d2h-670634-710"> <div class="line-num1"></div> <div class="line-num2">51</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">- Improve naming by using "processor" instead of "plane". ([@palkan][])</span> </div> </td> </tr><tr> <td id="d2h-670634-721" class="d2h-code-linenumber d2h-ins"><a href="#d2h-670634-721"> <div class="line-num1"></div> <div class="line-num2">52</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-670634-732" class="d2h-code-linenumber d2h-ins"><a href="#d2h-670634-732"> <div class="line-num1"></div> <div class="line-num2">53</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">See [the discussion](https://github.com/palkan/rubanok/issues/3).</span> </div> </td> </tr><tr> <td id="d2h-670634-743" class="d2h-code-linenumber d2h-ins"><a href="#d2h-670634-743"> <div class="line-num1"></div> <div class="line-num2">54</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-670634-754" class="d2h-code-linenumber d2h-ins"><a href="#d2h-670634-754"> <div class="line-num1"></div> <div class="line-num2">55</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">**NOTE**: Older API is still available without deprecation.</span> </div> </td> </tr><tr> <td id="d2h-670634-765" class="d2h-code-linenumber d2h-ins"><a href="#d2h-670634-765"> <div class="line-num1"></div> <div class="line-num2">56</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-670634-776" class="d2h-code-linenumber d2h-ins"><a href="#d2h-670634-776"> <div class="line-num1"></div> <div class="line-num2">57</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">- Add `fail_when_no_matches` parameter to `match` method. ([@Earendil95][])</span> </div> </td> </tr><tr> <td id="d2h-670634-787" class="d2h-code-linenumber d2h-ins"><a href="#d2h-670634-787"> <div class="line-num1"></div> <div class="line-num2">58</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-670634-798" class="d2h-code-linenumber d2h-ins"><a href="#d2h-670634-798"> <div class="line-num1"></div> <div class="line-num2">59</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">## 0.1.3 (2019-03-05)</span> </div> </td> </tr><tr> <td id="d2h-670634-809" class="d2h-code-linenumber d2h-ins"><a href="#d2h-670634-809"> <div class="line-num1"></div> <div class="line-num2">60</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-670634-820" class="d2h-code-linenumber d2h-ins"><a href="#d2h-670634-820"> <div class="line-num1"></div> <div class="line-num2">61</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">- Fix using `activate_always: true` with `default` matching clause. ([@palkan][])</span> </div> </td> </tr><tr> <td id="d2h-670634-831" class="d2h-code-linenumber d2h-ins"><a href="#d2h-670634-831"> <div class="line-num1"></div> <div class="line-num2">62</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-670634-842" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-670634-842"> <div class="line-num1">5</div> <div class="line-num2">63</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line d2h-cntx"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn">## 0.1.1 (2019-01-16)</span> </div> </td> </tr><tr> <td id="d2h-670634-853" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-670634-853"> <div class="line-num1">6</div> <div class="line-num2">64</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line d2h-cntx"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-670634-864" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-670634-864"> <div class="line-num1">7</div> <div class="line-num2">65</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line d2h-cntx"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn">- Fix RSpec matcher to call original implementation instead of returning `nil`. ([@palkan][])</span> </div> </td> </tr> <tr> <td class="d2h-code-linenumber d2h-info"></td> <td class="d2h-info"> <div class="d2h-code-line d2h-info">@@ -15,3 +73,4 @@ Initial implementation.</div> </td> </tr><tr> <td id="d2h-670634-881" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-670634-881"> <div class="line-num1">15</div> <div class="line-num2">73</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line d2h-cntx"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn">Proposal added.</span> </div> </td> </tr><tr> <td id="d2h-670634-892" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-670634-892"> <div class="line-num1">16</div> <div class="line-num2">74</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line d2h-cntx"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-670634-903" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-670634-903"> <div class="line-num1">17</div> <div class="line-num2">75</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line d2h-cntx"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn">[@palkan]: https://github.com/palkan</span> </div> </td> </tr><tr> <td id="d2h-670634-914" class="d2h-code-linenumber d2h-ins"><a href="#d2h-670634-914"> <div class="line-num1"></div> <div class="line-num2">76</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">[@Earendil95]: https://github.com/Earendil95</span> </div> </td> </tr> </tbody> </table> </div> </div> </div> <div id="d2h-996930" class="d2h-file-wrapper" data-lang="txt"> <div class="d2h-file-header"> <span class="d2h-file-name-wrapper"> <svg aria-hidden="true" class="d2h-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"> <path d="M6 5H2v-1h4v1zM2 8h7v-1H2v1z m0 2h7v-1H2v1z m0 2h7v-1H2v1z m10-7.5v9.5c0 0.55-0.45 1-1 1H1c-0.55 0-1-0.45-1-1V2c0-0.55 0.45-1 1-1h7.5l3.5 3.5z m-1 0.5L8 2H1v12h10V5z"></path> </svg> <span class="d2h-file-name"><a href="#d2h-996930">data/LICENSE.txt</a></span> <span class="d2h-tag d2h-changed d2h-changed-tag">CHANGED</span></span> <label class="d2h-file-collapse"> <input class="d2h-file-collapse-input" type="checkbox" name="viewed" value="viewed"> Viewed </label> </div> <div class="d2h-file-diff"> <div class="d2h-code-wrapper"> <table class="d2h-diff-table"> <tbody class="d2h-diff-tbody"> <tr> <td class="d2h-code-linenumber d2h-info"></td> <td class="d2h-info"> <div class="d2h-code-line d2h-info">@@ -1,6 +1,6 @@</div> </td> </tr><tr> <td id="d2h-996930-952" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-996930-952"> <div class="line-num1">1</div> <div class="line-num2">1</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line d2h-cntx"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn">The MIT License (MIT)</span> </div> </td> </tr><tr> <td id="d2h-996930-963" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-996930-963"> <div class="line-num1">2</div> <div class="line-num2">2</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line d2h-cntx"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">3</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line d2h-del d2h-change"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn">Copyright (c) 2018 Vladimir Dementyev</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">3</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line d2h-ins d2h-change"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">Copyright (c) 2018<ins>-2020</ins> Vladimir Dementyev</span> </div> </td> </tr><tr> <td id="d2h-996930-996" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-996930-996"> <div class="line-num1">4</div> <div class="line-num2">4</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line d2h-cntx"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-996930-1007" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-996930-1007"> <div class="line-num1">5</div> <div class="line-num2">5</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line d2h-cntx"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn">Permission is hereby granted, free of charge, to any person obtaining a copy</span> </div> </td> </tr><tr> <td id="d2h-996930-1018" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-996930-1018"> <div class="line-num1">6</div> <div class="line-num2">6</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line d2h-cntx"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn">of this software and associated documentation files (the "Software"), to deal</span> </div> </td> </tr> </tbody> </table> </div> </div> </div> <div id="d2h-027470" class="d2h-file-wrapper" data-lang="md"> <div class="d2h-file-header"> <span class="d2h-file-name-wrapper"> <svg aria-hidden="true" class="d2h-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"> <path d="M6 5H2v-1h4v1zM2 8h7v-1H2v1z m0 2h7v-1H2v1z m0 2h7v-1H2v1z m10-7.5v9.5c0 0.55-0.45 1-1 1H1c-0.55 0-1-0.45-1-1V2c0-0.55 0.45-1 1-1h7.5l3.5 3.5z m-1 0.5L8 2H1v12h10V5z"></path> </svg> <span class="d2h-file-name"><a href="#d2h-027470">data/README.md</a></span> <span class="d2h-tag d2h-changed d2h-changed-tag">CHANGED</span></span> <label class="d2h-file-collapse"> <input class="d2h-file-collapse-input" type="checkbox" name="viewed" value="viewed"> Viewed </label> </div> <div class="d2h-file-diff"> <div class="d2h-code-wrapper"> <table class="d2h-diff-table"> <tbody class="d2h-diff-tbody"> <tr> <td class="d2h-code-linenumber d2h-info"></td> <td class="d2h-info"> <div class="d2h-code-line d2h-info">@@ -1,9 +1,12 @@</div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">1</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line d2h-del d2h-change"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn">[](https://rubygems.org/gems/rubanok)<del> [](https://travis-ci.org/palkan/rubanok)</del></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">1</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line d2h-ins d2h-change"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">[](https://rubygems.org/gems/rubanok)</span> </div> </td> </tr><tr> <td id="d2h-027470-1078" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-1078"> <div class="line-num1"></div> <div class="line-num2">2</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"></span> </div> </td> </tr><tr> <td id="d2h-027470-1089" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-1089"> <div class="line-num1">2</div> <div class="line-num2">3</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line d2h-cntx"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-027470-1100" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-1100"> <div class="line-num1">3</div> <div class="line-num2">4</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line d2h-cntx"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"># Rubanok</span> </div> </td> </tr><tr> <td id="d2h-027470-1111" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-1111"> <div class="line-num1">4</div> <div class="line-num2">5</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line d2h-cntx"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-027470-1122" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-1122"> <div class="line-num1">5</div> <div class="line-num2">6</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line d2h-cntx"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn">Rubanok provides a DSL to build parameters-based data transformers.</span> </div> </td> </tr><tr> <td id="d2h-027470-1133" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-1133"> <div class="line-num1">6</div> <div class="line-num2">7</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line d2h-cntx"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-027470-1144" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-1144"> <div class="line-num1"></div> <div class="line-num2">8</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">📖 Read the introduction post: ["Carve your controllers like Papa Carlo"](https://evilmartians.com/chronicles/rubanok-carve-your-rails-controllers-like-papa-carlo)</span> </div> </td> </tr><tr> <td id="d2h-027470-1155" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-1155"> <div class="line-num1"></div> <div class="line-num2">9</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-027470-1166" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-1166"> <div class="line-num1">7</div> <div class="line-num2">10</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line d2h-cntx"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn">The typical usage is to describe all the possible collection manipulation for REST `index` action, e.g. filtering, sorting, searching, pagination, etc..</span> </div> </td> </tr><tr> <td id="d2h-027470-1177" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-1177"> <div class="line-num1">8</div> <div class="line-num2">11</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line d2h-cntx"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-027470-1188" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-1188"> <div class="line-num1">9</div> <div class="line-num2">12</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line d2h-cntx"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn">So, instead of:</span> </div> </td> </tr> <tr> <td class="d2h-code-linenumber d2h-info"></td> <td class="d2h-info"> <div class="d2h-code-line d2h-info">@@ -11,12 +14,12 @@ So, instead of:</div> </td> </tr><tr> <td id="d2h-027470-1205" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-1205"> <div class="line-num1">11</div> <div class="line-num2">14</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line d2h-cntx"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn">```ruby</span> </div> </td> </tr><tr> <td id="d2h-027470-1216" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-1216"> <div class="line-num1">12</div> <div class="line-num2">15</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line d2h-cntx"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn">class CourseSessionController < ApplicationController</span> </div> </td> </tr><tr> <td id="d2h-027470-1227" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-1227"> <div class="line-num1">13</div> <div class="line-num2">16</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line d2h-cntx"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"> def index</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">14</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line d2h-del d2h-change"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> @sessions = CourseSession<del>.</del></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">15</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line d2h-del d2h-change"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"><del> </del>search(params[:q])<del>.</del></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">16</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line d2h-del d2h-change"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"><del> </del>by_course_type(params[:course_type_id])<del>.</del></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">17</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line d2h-del d2h-change"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"><del> </del>by_role(params[:role_id])<del>.</del></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">18</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line d2h-del d2h-change"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"><del> </del>paginate(page_params)<del>.</del></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">19</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line d2h-del d2h-change"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"><del> </del>order(ordering_params)</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">17</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line d2h-ins d2h-change"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> @sessions = CourseSession</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">18</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line d2h-ins d2h-change"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><ins> .</ins>search(params[:q])</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">19</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line d2h-ins d2h-change"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><ins> .</ins>by_course_type(params[:course_type_id])</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">20</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line d2h-ins d2h-change"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><ins> .</ins>by_role(params[:role_id])</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">21</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line d2h-ins d2h-change"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><ins> .</ins>paginate(page_params)</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">22</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line d2h-ins d2h-change"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><ins> .</ins>order(ordering_params)</span> </div> </td> </tr><tr> <td id="d2h-027470-1370" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-1370"> <div class="line-num1">20</div> <div class="line-num2">23</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line d2h-cntx"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"> end</span> </div> </td> </tr><tr> <td id="d2h-027470-1381" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-1381"> <div class="line-num1">21</div> <div class="line-num2">24</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line d2h-cntx"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn">end</span> </div> </td> </tr><tr> <td id="d2h-027470-1392" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-1392"> <div class="line-num1">22</div> <div class="line-num2">25</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line d2h-cntx"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn">```</span> </div> </td> </tr> <tr> <td class="d2h-code-linenumber d2h-info"></td> <td class="d2h-info"> <div class="d2h-code-line d2h-info">@@ -26,13 +29,13 @@ You have:</div> </td> </tr><tr> <td id="d2h-027470-1409" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-1409"> <div class="line-num1">26</div> <div class="line-num2">29</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line d2h-cntx"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn">```ruby</span> </div> </td> </tr><tr> <td id="d2h-027470-1420" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-1420"> <div class="line-num1">27</div> <div class="line-num2">30</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line d2h-cntx"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn">class CourseSessionController < ApplicationController</span> </div> </td> </tr><tr> <td id="d2h-027470-1431" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-1431"> <div class="line-num1">28</div> <div class="line-num2">31</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line d2h-cntx"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"> def index</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">29</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line d2h-del d2h-change"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> @sessions = <del>planish</del>(</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">32</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line d2h-ins d2h-change"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> @sessions = <ins>rubanok_process</ins>(</span> </div> </td> </tr><tr> <td id="d2h-027470-1464" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-1464"> <div class="line-num1">30</div> <div class="line-num2">33</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line d2h-cntx"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"> # pass input</span> </div> </td> </tr><tr> <td id="d2h-027470-1475" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-1475"> <div class="line-num1">31</div> <div class="line-num2">34</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line d2h-cntx"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"> CourseSession.all,</span> </div> </td> </tr><tr> <td id="d2h-027470-1486" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-1486"> <div class="line-num1">32</div> <div class="line-num2">35</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line d2h-cntx"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"> # pass params</span> </div> </td> </tr><tr> <td id="d2h-027470-1497" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-1497"> <div class="line-num1">33</div> <div class="line-num2">36</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line d2h-cntx"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"> params,</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">34</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line d2h-del d2h-change"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> # provide a <del>plane</del> to use</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">35</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line d2h-del d2h-change"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> with: <del>CourseSessionsPlane</del></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">37</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line d2h-ins d2h-change"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> # provide a <ins>processor</ins> to use</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">38</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line d2h-ins d2h-change"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> with: <ins>CourseSessionsProcessor</ins></span> </div> </td> </tr><tr> <td id="d2h-027470-1552" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-1552"> <div class="line-num1">36</div> <div class="line-num2">39</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line d2h-cntx"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"> )</span> </div> </td> </tr><tr> <td id="d2h-027470-1563" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-1563"> <div class="line-num1">37</div> <div class="line-num2">40</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line d2h-cntx"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"> end</span> </div> </td> </tr><tr> <td id="d2h-027470-1574" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-1574"> <div class="line-num1">38</div> <div class="line-num2">41</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line d2h-cntx"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn">end</span> </div> </td> </tr> <tr> <td class="d2h-code-linenumber d2h-info"></td> <td class="d2h-info"> <div class="d2h-code-line d2h-info">@@ -40,34 +43,42 @@ end</div> </td> </tr><tr> <td id="d2h-027470-1591" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-1591"> <div class="line-num1">40</div> <div class="line-num2">43</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line d2h-cntx"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-027470-1602" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-1602"> <div class="line-num1">41</div> <div class="line-num2">44</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line d2h-cntx"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn">Or we can try to infer all the configuration for you:</span> </div> </td> </tr><tr> <td id="d2h-027470-1613" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-1613"> <div class="line-num1">42</div> <div class="line-num2">45</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line d2h-cntx"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-027470-1624" class="d2h-code-linenumber d2h-del"><a href="#d2h-027470-1624"> <div class="line-num1">43</div> <div class="line-num2"></div> </a></td> <td class="d2h-del"> <div class="d2h-code-line d2h-del"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-027470-1635" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-1635"> <div class="line-num1">44</div> <div class="line-num2">46</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line d2h-cntx"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn">```ruby</span> </div> </td> </tr><tr> <td id="d2h-027470-1646" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-1646"> <div class="line-num1">45</div> <div class="line-num2">47</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line d2h-cntx"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn">class CourseSessionController < ApplicationController</span> </div> </td> </tr><tr> <td id="d2h-027470-1657" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-1657"> <div class="line-num1">46</div> <div class="line-num2">48</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line d2h-cntx"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"> def index</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">47</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line d2h-del d2h-change"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> @sessions = <del>planish</del>(CourseSession.all)</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">49</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line d2h-ins d2h-change"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> @sessions = <ins>rubanok_process</ins>(CourseSession.all)</span> </div> </td> </tr><tr> <td id="d2h-027470-1690" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-1690"> <div class="line-num1">48</div> <div class="line-num2">50</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line d2h-cntx"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"> end</span> </div> </td> </tr><tr> <td id="d2h-027470-1701" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-1701"> <div class="line-num1">49</div> <div class="line-num2">51</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line d2h-cntx"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn">end</span> </div> </td> </tr><tr> <td id="d2h-027470-1712" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-1712"> <div class="line-num1">50</div> <div class="line-num2">52</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line d2h-cntx"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn">```</span> </div> </td> </tr><tr> <td id="d2h-027470-1723" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-1723"> <div class="line-num1">51</div> <div class="line-num2">53</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line d2h-cntx"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-027470-1734" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-1734"> <div class="line-num1">52</div> <div class="line-num2">54</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line d2h-cntx"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn">Requirements:</span> </div> </td> </tr><tr> <td id="d2h-027470-1745" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-1745"> <div class="line-num1"></div> <div class="line-num2">55</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-027470-1756" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-1756"> <div class="line-num1">53</div> <div class="line-num2">56</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line d2h-cntx"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn">- Ruby ~> 2.5</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">54</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line d2h-del d2h-change"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn">- Rails >= <del>4</del>.2 (<del>only</del> <del>for</del> <del>using</del> <del>with</del> <del>Rails</del>)</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">57</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line d2h-ins d2h-change"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">- <ins>(optional\*) </ins>Rails >= <ins>5</ins>.2 (<ins>Rails</ins> <ins>4.2</ins> <ins>should</ins> <ins>work</ins> <ins>but we don't test against it anymore</ins>)</span> </div> </td> </tr><tr> <td id="d2h-027470-1789" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-1789"> <div class="line-num1"></div> <div class="line-num2">58</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-027470-1800" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-1800"> <div class="line-num1"></div> <div class="line-num2">59</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">\* This gem has no dependency on Rails.</span> </div> </td> </tr><tr> <td id="d2h-027470-1811" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-1811"> <div class="line-num1">55</div> <div class="line-num2">60</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line d2h-cntx"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-027470-1822" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-1822"> <div class="line-num1">56</div> <div class="line-num2">61</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line d2h-cntx"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"><a href="https://evilmartians.com/"></span> </div> </td> </tr><tr> <td id="d2h-027470-1833" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-1833"> <div class="line-num1">57</div> <div class="line-num2">62</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line d2h-cntx"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"><img src="https://evilmartians.com/badges/sponsored-by-evil-martians.svg" alt="Sponsored by Evil Martians" width="236" height="54"></a></span> </div> </td> </tr><tr> <td id="d2h-027470-1844" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-1844"> <div class="line-num1">58</div> <div class="line-num2">63</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line d2h-cntx"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-027470-1855" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-1855"> <div class="line-num1">59</div> <div class="line-num2">64</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line d2h-cntx"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn">## Installation</span> </div> </td> </tr><tr> <td id="d2h-027470-1866" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-1866"> <div class="line-num1">60</div> <div class="line-num2">65</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line d2h-cntx"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">61</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line d2h-del d2h-change"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"><del>**This</del> <del>gem</del> <del>hasn't</del> <del>been released (and even built) yet.**</del></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">66</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line d2h-ins d2h-change"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><ins>Add</ins> <ins>to</ins> <ins>your</ins> <ins>`Gemfile`:</ins></span> </div> </td> </tr><tr> <td id="d2h-027470-1899" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-1899"> <div class="line-num1"></div> <div class="line-num2">67</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-027470-1910" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-1910"> <div class="line-num1"></div> <div class="line-num2">68</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">```ruby</span> </div> </td> </tr><tr> <td id="d2h-027470-1921" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-1921"> <div class="line-num1"></div> <div class="line-num2">69</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">gem "rubanok"</span> </div> </td> </tr><tr> <td id="d2h-027470-1932" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-1932"> <div class="line-num1"></div> <div class="line-num2">70</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">```</span> </div> </td> </tr><tr> <td id="d2h-027470-1943" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-1943"> <div class="line-num1"></div> <div class="line-num2">71</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-027470-1954" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-1954"> <div class="line-num1"></div> <div class="line-num2">72</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">And run `bundle install`.</span> </div> </td> </tr><tr> <td id="d2h-027470-1965" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-1965"> <div class="line-num1">62</div> <div class="line-num2">73</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line d2h-cntx"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-027470-1976" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-1976"> <div class="line-num1">63</div> <div class="line-num2">74</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line d2h-cntx"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn">## Usage</span> </div> </td> </tr><tr> <td id="d2h-027470-1987" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-1987"> <div class="line-num1">64</div> <div class="line-num2">75</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line d2h-cntx"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">65</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line d2h-del d2h-change"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn">The core concept of this library is a _plane_ <del>(</del>or _hand plane_, or "рубанок" in Russian). <del>Plane</del> is responsible for mapping parameters to <del>transformrations</del>.</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">76</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line d2h-ins d2h-change"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">The core concept of this library is a <ins>processor (previously called </ins>_plane_ or _hand plane_, or "рубанок" in Russian). <ins>Processor</ins> is responsible for mapping parameters to <ins>transformations</ins>.</span> </div> </td> </tr><tr> <td id="d2h-027470-2020" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-2020"> <div class="line-num1">66</div> <div class="line-num2">77</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line d2h-cntx"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-027470-2031" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-2031"> <div class="line-num1">67</div> <div class="line-num2">78</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line d2h-cntx"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn">From the example above:</span> </div> </td> </tr><tr> <td id="d2h-027470-2042" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-2042"> <div class="line-num1">68</div> <div class="line-num2">79</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line d2h-cntx"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-027470-2053" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-2053"> <div class="line-num1">69</div> <div class="line-num2">80</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line d2h-cntx"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn">```ruby</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">70</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line d2h-del d2h-change"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn">class <del>CourseSessionsPlane</del> < Rubanok::<del>Plane</del></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">81</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line d2h-ins d2h-change"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">class <ins>CourseSessionsProcessor</ins> < Rubanok::<ins>Processor</ins></span> </div> </td> </tr><tr> <td id="d2h-027470-2086" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-2086"> <div class="line-num1">71</div> <div class="line-num2">82</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line d2h-cntx"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"> # You can map keys</span> </div> </td> </tr><tr> <td id="d2h-027470-2097" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-2097"> <div class="line-num1">72</div> <div class="line-num2">83</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line d2h-cntx"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"> map :q do |q:|</span> </div> </td> </tr><tr> <td id="d2h-027470-2108" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-2108"> <div class="line-num1">73</div> <div class="line-num2">84</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line d2h-cntx"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"> # `raw` is an accessor for input data</span> </div> </td> </tr> <tr> <td class="d2h-code-linenumber d2h-info"></td> <td class="d2h-info"> <div class="d2h-code-line d2h-info">@@ -76,7 +87,7 @@ class CourseSessionsPlane < Rubanok::Plane</div> </td> </tr><tr> <td id="d2h-027470-2125" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-2125"> <div class="line-num1">76</div> <div class="line-num2">87</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line d2h-cntx"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn">end</span> </div> </td> </tr><tr> <td id="d2h-027470-2136" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-2136"> <div class="line-num1">77</div> <div class="line-num2">88</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line d2h-cntx"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-027470-2147" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-2147"> <div class="line-num1">78</div> <div class="line-num2">89</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line d2h-cntx"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"># The following code</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">79</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line d2h-del d2h-change"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"><del>CourseSessionsPlane</del>.call(CourseSession.all, q: "xyz")</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">90</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line d2h-ins d2h-change"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><ins>CourseSessionsProcessor</ins>.call(CourseSession.all, q: "xyz")</span> </div> </td> </tr><tr> <td id="d2h-027470-2180" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-2180"> <div class="line-num1">80</div> <div class="line-num2">91</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line d2h-cntx"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-027470-2191" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-2191"> <div class="line-num1">81</div> <div class="line-num2">92</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line d2h-cntx"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"># is equal to</span> </div> </td> </tr><tr> <td id="d2h-027470-2202" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-2202"> <div class="line-num1">82</div> <div class="line-num2">93</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line d2h-cntx"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn">CourseSession.all.search("xyz")</span> </div> </td> </tr> <tr> <td class="d2h-code-linenumber d2h-info"></td> <td class="d2h-info"> <div class="d2h-code-line d2h-info">@@ -85,7 +96,7 @@ CourseSession.all.search("xyz")</div> </td> </tr><tr> <td id="d2h-027470-2219" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-2219"> <div class="line-num1">85</div> <div class="line-num2">96</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line d2h-cntx"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn">You can map multiple keys at once:</span> </div> </td> </tr><tr> <td id="d2h-027470-2230" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-2230"> <div class="line-num1">86</div> <div class="line-num2">97</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line d2h-cntx"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-027470-2241" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-2241"> <div class="line-num1">87</div> <div class="line-num2">98</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line d2h-cntx"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn">```ruby</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">88</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line d2h-del d2h-change"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn">class <del>CourseSessionsPlane</del> < Rubanok::<del>Plane</del></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">99</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line d2h-ins d2h-change"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">class <ins>CourseSessionsProcessor</ins> < Rubanok::<ins>Processor</ins></span> </div> </td> </tr><tr> <td id="d2h-027470-2274" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-2274"> <div class="line-num1">89</div> <div class="line-num2">100</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line d2h-cntx"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"> DEFAULT_PAGE_SIZE = 25</span> </div> </td> </tr><tr> <td id="d2h-027470-2285" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-2285"> <div class="line-num1">90</div> <div class="line-num2">101</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line d2h-cntx"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-027470-2296" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-2296"> <div class="line-num1">91</div> <div class="line-num2">102</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line d2h-cntx"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"> map :page, :per_page do |page:, per_page: DEFAULT_PAGE_SIZE|</span> </div> </td> </tr> <tr> <td class="d2h-code-linenumber d2h-info"></td> <td class="d2h-info"> <div class="d2h-code-line d2h-info">@@ -97,9 +108,9 @@ end</div> </td> </tr><tr> <td id="d2h-027470-2313" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-2313"> <div class="line-num1">97</div> <div class="line-num2">108</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line d2h-cntx"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn">There is also `match` method to handle values:</span> </div> </td> </tr><tr> <td id="d2h-027470-2324" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-2324"> <div class="line-num1">98</div> <div class="line-num2">109</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line d2h-cntx"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-027470-2335" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-2335"> <div class="line-num1">99</div> <div class="line-num2">110</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line d2h-cntx"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn">```ruby</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">100</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line d2h-del d2h-change"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn">class <del>CourseSessionsPlane</del> < Rubanok::<del>Plane</del></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">101</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line d2h-del d2h-change"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> SORT_ORDERS = %w<del>(</del>asc desc<del>)</del>.freeze</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">102</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line d2h-del d2h-change"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> SORTABLE_FIELDS = %w<del>(</del>id name created_at<del>)</del>.freeze</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">111</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line d2h-ins d2h-change"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">class <ins>CourseSessionsProcessor</ins> < Rubanok::<ins>Processor</ins></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">112</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line d2h-ins d2h-change"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> SORT_ORDERS = %w<ins>[</ins>asc desc<ins>]</ins>.freeze</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">113</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line d2h-ins d2h-change"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> SORTABLE_FIELDS = %w<ins>[</ins>id name created_at<ins>]</ins>.freeze</span> </div> </td> </tr><tr> <td id="d2h-027470-2412" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-2412"> <div class="line-num1">103</div> <div class="line-num2">114</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line d2h-cntx"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-027470-2423" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-2423"> <div class="line-num1">104</div> <div class="line-num2">115</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line d2h-cntx"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"> match :sort_by, :sort do</span> </div> </td> </tr><tr> <td id="d2h-027470-2434" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-2434"> <div class="line-num1">105</div> <div class="line-num2">116</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line d2h-cntx"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"> having "course_id", "desc" do</span> </div> </td> </tr> <tr> <td class="d2h-code-linenumber d2h-info"></td> <td class="d2h-info"> <div class="d2h-code-line d2h-info">@@ -124,16 +135,94 @@ class CourseSessionsPlane < Rubanok::Plane</div> </td> </tr><tr> <td id="d2h-027470-2451" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-2451"> <div class="line-num1">124</div> <div class="line-num2">135</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line d2h-cntx"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"> raw.order(sort_by => sort)</span> </div> </td> </tr><tr> <td id="d2h-027470-2462" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-2462"> <div class="line-num1">125</div> <div class="line-num2">136</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line d2h-cntx"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"> end</span> </div> </td> </tr><tr> <td id="d2h-027470-2473" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-2473"> <div class="line-num1">126</div> <div class="line-num2">137</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line d2h-cntx"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"> end</span> </div> </td> </tr><tr> <td id="d2h-027470-2484" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-2484"> <div class="line-num1"></div> <div class="line-num2">138</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-027470-2495" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-2495"> <div class="line-num1"></div> <div class="line-num2">139</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> # strict matching; if Processor will not match parameter, it will raise Rubanok::UnexpectedInputError</span> </div> </td> </tr><tr> <td id="d2h-027470-2506" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-2506"> <div class="line-num1"></div> <div class="line-num2">140</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> # You can handle it in controller, for example, with sending 422 Unprocessable Entity to client</span> </div> </td> </tr><tr> <td id="d2h-027470-2517" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-2517"> <div class="line-num1"></div> <div class="line-num2">141</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> match :filter, fail_when_no_matches: true do</span> </div> </td> </tr><tr> <td id="d2h-027470-2528" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-2528"> <div class="line-num1"></div> <div class="line-num2">142</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> having "active" do</span> </div> </td> </tr><tr> <td id="d2h-027470-2539" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-2539"> <div class="line-num1"></div> <div class="line-num2">143</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> raw.active</span> </div> </td> </tr><tr> <td id="d2h-027470-2550" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-2550"> <div class="line-num1"></div> <div class="line-num2">144</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> end</span> </div> </td> </tr><tr> <td id="d2h-027470-2561" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-2561"> <div class="line-num1"></div> <div class="line-num2">145</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-027470-2572" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-2572"> <div class="line-num1"></div> <div class="line-num2">146</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> having "finished" do</span> </div> </td> </tr><tr> <td id="d2h-027470-2583" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-2583"> <div class="line-num1"></div> <div class="line-num2">147</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> raw.finished</span> </div> </td> </tr><tr> <td id="d2h-027470-2594" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-2594"> <div class="line-num1"></div> <div class="line-num2">148</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> end</span> </div> </td> </tr><tr> <td id="d2h-027470-2605" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-2605"> <div class="line-num1"></div> <div class="line-num2">149</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> end</span> </div> </td> </tr><tr> <td id="d2h-027470-2616" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-2616"> <div class="line-num1"></div> <div class="line-num2">150</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">end</span> </div> </td> </tr><tr> <td id="d2h-027470-2627" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-2627"> <div class="line-num1"></div> <div class="line-num2">151</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">```</span> </div> </td> </tr><tr> <td id="d2h-027470-2638" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-2638"> <div class="line-num1"></div> <div class="line-num2">152</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-027470-2649" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-2649"> <div class="line-num1"></div> <div class="line-num2">153</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">By default, Rubanok will not fail if no matches found in `match` rule. You can change it by setting: `Rubanok.fail_when_no_matches = true`.</span> </div> </td> </tr><tr> <td id="d2h-027470-2660" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-2660"> <div class="line-num1"></div> <div class="line-num2">154</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">If in example above you will call `CourseSessionsProcessor.call(CourseSession, filter: 'acitve')`, you will get `Rubanok::UnexpectedInputError: Unexpected input: {:filter=>'acitve'}`.</span> </div> </td> </tr><tr> <td id="d2h-027470-2671" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-2671"> <div class="line-num1"></div> <div class="line-num2">155</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-027470-2682" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-2682"> <div class="line-num1"></div> <div class="line-num2">156</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">**NOTE:** Rubanok only matches exact values; more complex matching could be added in the future.</span> </div> </td> </tr><tr> <td id="d2h-027470-2693" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-2693"> <div class="line-num1"></div> <div class="line-num2">157</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-027470-2704" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-2704"> <div class="line-num1"></div> <div class="line-num2">158</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">### Default transformation</span> </div> </td> </tr><tr> <td id="d2h-027470-2715" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-2715"> <div class="line-num1"></div> <div class="line-num2">159</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-027470-2726" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-2726"> <div class="line-num1"></div> <div class="line-num2">160</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">Sometimes it's useful to perform some transformations before **any** rule is activated.</span> </div> </td> </tr><tr> <td id="d2h-027470-2737" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-2737"> <div class="line-num1"></div> <div class="line-num2">161</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-027470-2748" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-2748"> <div class="line-num1"></div> <div class="line-num2">162</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">There is a special `prepare` method which allows you to define the default transformation:</span> </div> </td> </tr><tr> <td id="d2h-027470-2759" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-2759"> <div class="line-num1"></div> <div class="line-num2">163</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-027470-2770" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-2770"> <div class="line-num1"></div> <div class="line-num2">164</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">```ruby</span> </div> </td> </tr><tr> <td id="d2h-027470-2781" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-2781"> <div class="line-num1"></div> <div class="line-num2">165</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">class CourseSearchQueryProcessor < Rubanok::Processor</span> </div> </td> </tr><tr> <td id="d2h-027470-2792" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-2792"> <div class="line-num1"></div> <div class="line-num2">166</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> prepare do</span> </div> </td> </tr><tr> <td id="d2h-027470-2803" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-2803"> <div class="line-num1"></div> <div class="line-num2">167</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> next if raw&.dig(:query, :bool)</span> </div> </td> </tr><tr> <td id="d2h-027470-2814" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-2814"> <div class="line-num1"></div> <div class="line-num2">168</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-027470-2825" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-2825"> <div class="line-num1"></div> <div class="line-num2">169</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> {query: {bool: {filters: []}}}</span> </div> </td> </tr><tr> <td id="d2h-027470-2836" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-2836"> <div class="line-num1"></div> <div class="line-num2">170</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> end</span> </div> </td> </tr><tr> <td id="d2h-027470-2847" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-2847"> <div class="line-num1"></div> <div class="line-num2">171</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-027470-2858" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-2858"> <div class="line-num1"></div> <div class="line-num2">172</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> map :ids do |ids:|</span> </div> </td> </tr><tr> <td id="d2h-027470-2869" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-2869"> <div class="line-num1"></div> <div class="line-num2">173</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> raw.dig(:query, :bool, :filters) << {terms: {id: ids}}</span> </div> </td> </tr><tr> <td id="d2h-027470-2880" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-2880"> <div class="line-num1"></div> <div class="line-num2">174</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> raw</span> </div> </td> </tr><tr> <td id="d2h-027470-2891" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-2891"> <div class="line-num1"></div> <div class="line-num2">175</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> end</span> </div> </td> </tr><tr> <td id="d2h-027470-2902" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-2902"> <div class="line-num1">127</div> <div class="line-num2">176</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line d2h-cntx"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn">end</span> </div> </td> </tr><tr> <td id="d2h-027470-2913" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-2913"> <div class="line-num1">128</div> <div class="line-num2">177</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line d2h-cntx"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn">```</span> </div> </td> </tr><tr> <td id="d2h-027470-2924" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-2924"> <div class="line-num1">129</div> <div class="line-num2">178</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line d2h-cntx"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">130</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line d2h-del d2h-change"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"><del>**NOTE:**</del> <del>matching</del> <del>only</del> <del>match</del> <del>the</del> <del>exact</del> <del>values;</del> <del>more</del> <del>complex</del> <del>matching</del> <del>could</del> <del>be</del> <del>added</del> <del>in</del> <del>the</del> <del>future</del>.</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">179</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line d2h-ins d2h-change"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><ins>The</ins> <ins>block</ins> <ins>should</ins> <ins>return</ins> <ins>a</ins> <ins>new</ins> <ins>initial</ins> <ins>value</ins> <ins>for</ins> <ins>the</ins> <ins>_raw_</ins> <ins>input</ins> <ins>or</ins> <ins>`nil`</ins> <ins>(no</ins> <ins>transformation required)</ins>.</span> </div> </td> </tr><tr> <td id="d2h-027470-2957" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-2957"> <div class="line-num1"></div> <div class="line-num2">180</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-027470-2968" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-2968"> <div class="line-num1"></div> <div class="line-num2">181</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">The `prepare` callback is not executed if no params match, e.g.:</span> </div> </td> </tr><tr> <td id="d2h-027470-2979" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-2979"> <div class="line-num1"></div> <div class="line-num2">182</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-027470-2990" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-2990"> <div class="line-num1"></div> <div class="line-num2">183</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">```ruby</span> </div> </td> </tr><tr> <td id="d2h-027470-3001" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-3001"> <div class="line-num1"></div> <div class="line-num2">184</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">CourseSearchQueryProcessor.call(nil, {}) #=> nil</span> </div> </td> </tr><tr> <td id="d2h-027470-3012" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-3012"> <div class="line-num1"></div> <div class="line-num2">185</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-027470-3023" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-3023"> <div class="line-num1"></div> <div class="line-num2">186</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"># But</span> </div> </td> </tr><tr> <td id="d2h-027470-3034" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-3034"> <div class="line-num1"></div> <div class="line-num2">187</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">CourseSearchQueryProcessor.call(nil, {ids: [1]}) #=> {query {bool: {filters: [{terms: {ids: [1]}}]}}}</span> </div> </td> </tr><tr> <td id="d2h-027470-3045" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-3045"> <div class="line-num1"></div> <div class="line-num2">188</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-027470-3056" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-3056"> <div class="line-num1"></div> <div class="line-num2">189</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"># Note that we can omit the first argument altogether</span> </div> </td> </tr><tr> <td id="d2h-027470-3067" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-3067"> <div class="line-num1"></div> <div class="line-num2">190</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">CourseSearchQueryProcessor.call({ids: [1]})</span> </div> </td> </tr><tr> <td id="d2h-027470-3078" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-3078"> <div class="line-num1"></div> <div class="line-num2">191</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">```</span> </div> </td> </tr><tr> <td id="d2h-027470-3089" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-3089"> <div class="line-num1"></div> <div class="line-num2">192</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-027470-3100" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-3100"> <div class="line-num1"></div> <div class="line-num2">193</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">### Getting the matching params</span> </div> </td> </tr><tr> <td id="d2h-027470-3111" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-3111"> <div class="line-num1"></div> <div class="line-num2">194</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-027470-3122" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-3122"> <div class="line-num1"></div> <div class="line-num2">195</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">Sometimes it could be useful to get the params that were used to process the data by Rubanok processor (e.g., you can use this data in views to display the actual filters state).</span> </div> </td> </tr><tr> <td id="d2h-027470-3133" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-3133"> <div class="line-num1"></div> <div class="line-num2">196</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-027470-3144" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-3144"> <div class="line-num1"></div> <div class="line-num2">197</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">In Rails, you can use the `#rubanok_scope` method for that:</span> </div> </td> </tr><tr> <td id="d2h-027470-3155" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-3155"> <div class="line-num1"></div> <div class="line-num2">198</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-027470-3166" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-3166"> <div class="line-num1"></div> <div class="line-num2">199</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">```ruby</span> </div> </td> </tr><tr> <td id="d2h-027470-3177" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-3177"> <div class="line-num1"></div> <div class="line-num2">200</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">class CourseSessionController < ApplicationController</span> </div> </td> </tr><tr> <td id="d2h-027470-3188" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-3188"> <div class="line-num1"></div> <div class="line-num2">201</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> def index</span> </div> </td> </tr><tr> <td id="d2h-027470-3199" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-3199"> <div class="line-num1"></div> <div class="line-num2">202</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> @sessions = rubanok_process(CourseSession.all)</span> </div> </td> </tr><tr> <td id="d2h-027470-3210" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-3210"> <div class="line-num1"></div> <div class="line-num2">203</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> # Returns the Hash of params recognized by the CourseSessionProcessor.</span> </div> </td> </tr><tr> <td id="d2h-027470-3221" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-3221"> <div class="line-num1"></div> <div class="line-num2">204</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> # For example:</span> </div> </td> </tr><tr> <td id="d2h-027470-3232" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-3232"> <div class="line-num1"></div> <div class="line-num2">205</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> #</span> </div> </td> </tr><tr> <td id="d2h-027470-3243" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-3243"> <div class="line-num1"></div> <div class="line-num2">206</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> # params == {q: "search", role_id: 2, date: "2019-08-22"}</span> </div> </td> </tr><tr> <td id="d2h-027470-3254" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-3254"> <div class="line-num1"></div> <div class="line-num2">207</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> # @session_filter == {q: "search", role_id: 2}</span> </div> </td> </tr><tr> <td id="d2h-027470-3265" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-3265"> <div class="line-num1"></div> <div class="line-num2">208</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> @sessions_filter = rubanok_scope(</span> </div> </td> </tr><tr> <td id="d2h-027470-3276" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-3276"> <div class="line-num1"></div> <div class="line-num2">209</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> params.permit(:q, :role_id),</span> </div> </td> </tr><tr> <td id="d2h-027470-3287" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-3287"> <div class="line-num1"></div> <div class="line-num2">210</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> with: CourseSessionProcessor</span> </div> </td> </tr><tr> <td id="d2h-027470-3298" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-3298"> <div class="line-num1"></div> <div class="line-num2">211</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> )</span> </div> </td> </tr><tr> <td id="d2h-027470-3309" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-3309"> <div class="line-num1"></div> <div class="line-num2">212</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-027470-3320" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-3320"> <div class="line-num1"></div> <div class="line-num2">213</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> # You can omit all the arguments</span> </div> </td> </tr><tr> <td id="d2h-027470-3331" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-3331"> <div class="line-num1"></div> <div class="line-num2">214</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> @sessions_filter = rubanok_scope #=> equals to rubanok_scope(params, with: implicit_rubanok_class)</span> </div> </td> </tr><tr> <td id="d2h-027470-3342" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-3342"> <div class="line-num1"></div> <div class="line-num2">215</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> end</span> </div> </td> </tr><tr> <td id="d2h-027470-3353" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-3353"> <div class="line-num1"></div> <div class="line-num2">216</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">end</span> </div> </td> </tr><tr> <td id="d2h-027470-3364" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-3364"> <div class="line-num1"></div> <div class="line-num2">217</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">```</span> </div> </td> </tr><tr> <td id="d2h-027470-3375" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-3375"> <div class="line-num1"></div> <div class="line-num2">218</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-027470-3386" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-3386"> <div class="line-num1"></div> <div class="line-num2">219</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">You can also accesss `rubanok_scope` in views (it's a helper method).</span> </div> </td> </tr><tr> <td id="d2h-027470-3397" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-3397"> <div class="line-num1">131</div> <div class="line-num2">220</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line d2h-cntx"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-027470-3408" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-3408"> <div class="line-num1">132</div> <div class="line-num2">221</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line d2h-cntx"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn">### Rule activation</span> </div> </td> </tr><tr> <td id="d2h-027470-3419" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-3419"> <div class="line-num1">133</div> <div class="line-num2">222</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line d2h-cntx"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-027470-3430" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-3430"> <div class="line-num1">134</div> <div class="line-num2">223</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line d2h-cntx"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn">Rubanok _activates_ a rule by checking whether the corresponding keys are present in the params object. All the fields must be present to apply the rule.</span> </div> </td> </tr><tr> <td id="d2h-027470-3441" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-3441"> <div class="line-num1">135</div> <div class="line-num2">224</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line d2h-cntx"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">136</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line d2h-del d2h-change"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"><del>Sometimes</del> <del>you</del> <del>might</del> <del>want</del> <del>to make some fields </del>optional <del>(</del>or <del>event</del> all of them<del>)</del>. You can use `activate_on` and `activate_always` options <del>for</del> <del>that</del>:</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">225</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line d2h-ins d2h-change"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><ins>Some</ins> <ins>fields</ins> <ins>may</ins> <ins>be</ins> optional<ins>,</ins> or <ins>perhaps</ins> <ins>even </ins>all of them. You can use `activate_on` and `activate_always` options <ins>to</ins> <ins>mark something as an optional key instead of a required one</ins>:</span> </div> </td> </tr><tr> <td id="d2h-027470-3474" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-3474"> <div class="line-num1">137</div> <div class="line-num2">226</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line d2h-cntx"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-027470-3485" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-3485"> <div class="line-num1">138</div> <div class="line-num2">227</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line d2h-cntx"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn">```ruby</span> </div> </td> </tr><tr> <td id="d2h-027470-3496" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-3496"> <div class="line-num1">139</div> <div class="line-num2">228</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line d2h-cntx"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"># Always apply the rule; use default values for keyword args</span> </div> </td> </tr> <tr> <td class="d2h-code-linenumber d2h-info"></td> <td class="d2h-info"> <div class="d2h-code-line d2h-info">@@ -147,18 +236,52 @@ match :sort_by, :sort, activate_on: :sort_by do</div> </td> </tr><tr> <td id="d2h-027470-3513" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-3513"> <div class="line-num1">147</div> <div class="line-num2">236</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line d2h-cntx"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn">end</span> </div> </td> </tr><tr> <td id="d2h-027470-3524" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-3524"> <div class="line-num1">148</div> <div class="line-num2">237</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line d2h-cntx"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn">```</span> </div> </td> </tr><tr> <td id="d2h-027470-3535" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-3535"> <div class="line-num1">149</div> <div class="line-num2">238</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line d2h-cntx"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">150</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line d2h-del d2h-change"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn">By default, Rubanok ignores empty param values (using `#empty?` under the hood) and <del>do</del> not <del>activate</del> <del>the </del>matching rules <del>(i</del>.<del>e.</del> `{ q: "" }` <del>or</del> `{ q: nil }` won't activate the `map :q` rule<del>)</del>.</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">239</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line d2h-ins d2h-change"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">By default, Rubanok ignores empty param values (using `#empty?` under the hood) and <ins>will</ins> not <ins>run</ins> matching rules <ins>on those values</ins>. <ins>For example: </ins>`{ q: "" }` <ins>and</ins> `{ q: nil }` won't activate the `map :q` rule.</span> </div> </td> </tr><tr> <td id="d2h-027470-3568" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-3568"> <div class="line-num1"></div> <div class="line-num2">240</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-027470-3579" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-3579"> <div class="line-num1"></div> <div class="line-num2">241</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">You can change this behaviour by specifying `ignore_empty_values: true` option for a particular rule or enabling this behaviour globally via `Rubanok.ignore_empty_values = true` (enabled by default).</span> </div> </td> </tr><tr> <td id="d2h-027470-3590" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-3590"> <div class="line-num1"></div> <div class="line-num2">242</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-027470-3601" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-3601"> <div class="line-num1"></div> <div class="line-num2">243</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">### Input values filtering</span> </div> </td> </tr><tr> <td id="d2h-027470-3612" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-3612"> <div class="line-num1">151</div> <div class="line-num2">244</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line d2h-cntx"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">152</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line d2h-del d2h-change"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"><del>You</del> <del>can</del> <del>change</del> <del>this</del> <del>behaviour</del> <del>by</del> <del>setting:</del> <del>`Rubanok.ignore_empty_values</del> <del>=</del> <del>false`.</del></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">245</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line d2h-ins d2h-change"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><ins>For</ins> <ins>complex</ins> <ins>input</ins> <ins>types,</ins> <ins>such</ins> <ins>as</ins> <ins>arrays,</ins> <ins>it</ins> <ins>might</ins> <ins>be useful to _prepare_ the value before passing to a transforming block or prevent the activation altogether.</ins></span> </div> </td> </tr><tr> <td id="d2h-027470-3645" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-3645"> <div class="line-num1"></div> <div class="line-num2">246</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-027470-3656" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-3656"> <div class="line-num1"></div> <div class="line-num2">247</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">We provide a `filter_with:` option for the `.map` method, which could be used as follows:</span> </div> </td> </tr><tr> <td id="d2h-027470-3667" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-3667"> <div class="line-num1"></div> <div class="line-num2">248</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-027470-3678" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-3678"> <div class="line-num1"></div> <div class="line-num2">249</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">```ruby</span> </div> </td> </tr><tr> <td id="d2h-027470-3689" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-3689"> <div class="line-num1"></div> <div class="line-num2">250</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">class PostsProcessor < Rubanok::Processor</span> </div> </td> </tr><tr> <td id="d2h-027470-3700" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-3700"> <div class="line-num1"></div> <div class="line-num2">251</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> # We can pass a Proc</span> </div> </td> </tr><tr> <td id="d2h-027470-3711" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-3711"> <div class="line-num1"></div> <div class="line-num2">252</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> map :ids, filter_with: ->(vals) { vals.reject(&:blank?).presence } do |ids:|</span> </div> </td> </tr><tr> <td id="d2h-027470-3722" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-3722"> <div class="line-num1"></div> <div class="line-num2">253</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> raw.where(id: ids)</span> </div> </td> </tr><tr> <td id="d2h-027470-3733" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-3733"> <div class="line-num1"></div> <div class="line-num2">254</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> end</span> </div> </td> </tr><tr> <td id="d2h-027470-3744" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-3744"> <div class="line-num1"></div> <div class="line-num2">255</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-027470-3755" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-3755"> <div class="line-num1"></div> <div class="line-num2">256</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> # or define a class method</span> </div> </td> </tr><tr> <td id="d2h-027470-3766" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-3766"> <div class="line-num1"></div> <div class="line-num2">257</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> def self.non_empty_array(val)</span> </div> </td> </tr><tr> <td id="d2h-027470-3777" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-3777"> <div class="line-num1"></div> <div class="line-num2">258</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> non_blank = val.reject(&:blank?)</span> </div> </td> </tr><tr> <td id="d2h-027470-3788" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-3788"> <div class="line-num1"></div> <div class="line-num2">259</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> return if non_blank.empty?</span> </div> </td> </tr><tr> <td id="d2h-027470-3799" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-3799"> <div class="line-num1"></div> <div class="line-num2">260</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-027470-3810" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-3810"> <div class="line-num1"></div> <div class="line-num2">261</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> non_blank</span> </div> </td> </tr><tr> <td id="d2h-027470-3821" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-3821"> <div class="line-num1"></div> <div class="line-num2">262</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> end</span> </div> </td> </tr><tr> <td id="d2h-027470-3832" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-3832"> <div class="line-num1"></div> <div class="line-num2">263</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-027470-3843" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-3843"> <div class="line-num1"></div> <div class="line-num2">264</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> # and pass its name as a filter_with value</span> </div> </td> </tr><tr> <td id="d2h-027470-3854" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-3854"> <div class="line-num1"></div> <div class="line-num2">265</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> map :ids, filter_with: :non_empty_array do |ids:|</span> </div> </td> </tr><tr> <td id="d2h-027470-3865" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-3865"> <div class="line-num1"></div> <div class="line-num2">266</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> raw.where(id: ids)</span> </div> </td> </tr><tr> <td id="d2h-027470-3876" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-3876"> <div class="line-num1"></div> <div class="line-num2">267</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> end</span> </div> </td> </tr><tr> <td id="d2h-027470-3887" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-3887"> <div class="line-num1"></div> <div class="line-num2">268</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">end</span> </div> </td> </tr><tr> <td id="d2h-027470-3898" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-3898"> <div class="line-num1"></div> <div class="line-num2">269</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-027470-3909" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-3909"> <div class="line-num1"></div> <div class="line-num2">270</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"># Filtered values are used in rules</span> </div> </td> </tr><tr> <td id="d2h-027470-3920" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-3920"> <div class="line-num1"></div> <div class="line-num2">271</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">PostsProcessor.call(Post.all, {ids: ["1", ""]}) == Post.where(id: ["1"])</span> </div> </td> </tr><tr> <td id="d2h-027470-3931" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-3931"> <div class="line-num1"></div> <div class="line-num2">272</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-027470-3942" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-3942"> <div class="line-num1"></div> <div class="line-num2">273</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"># When filter returns empty value, the rule is not applied</span> </div> </td> </tr><tr> <td id="d2h-027470-3953" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-3953"> <div class="line-num1"></div> <div class="line-num2">274</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">PostsProcessor.call(Post.all, {ids: [nil, ""]}) == Post.all</span> </div> </td> </tr><tr> <td id="d2h-027470-3964" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-3964"> <div class="line-num1"></div> <div class="line-num2">275</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">```</span> </div> </td> </tr><tr> <td id="d2h-027470-3975" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-3975"> <div class="line-num1">153</div> <div class="line-num2">276</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line d2h-cntx"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-027470-3986" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-3986"> <div class="line-num1">154</div> <div class="line-num2">277</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line d2h-cntx"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn">### Testing</span> </div> </td> </tr><tr> <td id="d2h-027470-3997" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-3997"> <div class="line-num1">155</div> <div class="line-num2">278</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line d2h-cntx"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">156</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line d2h-del d2h-change"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn">One of the benefits of having <del>all the </del>modification logic in its own class is the ability to test <del>it</del> in isolation:</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">279</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line d2h-ins d2h-change"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">One of the benefits of having modification logic <ins>contained </ins>in its own class is the ability to test <ins>modifications</ins> in isolation:</span> </div> </td> </tr><tr> <td id="d2h-027470-4030" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-4030"> <div class="line-num1">157</div> <div class="line-num2">280</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line d2h-cntx"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-027470-4041" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-4041"> <div class="line-num1">158</div> <div class="line-num2">281</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line d2h-cntx"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn">```ruby</span> </div> </td> </tr><tr> <td id="d2h-027470-4052" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-4052"> <div class="line-num1">159</div> <div class="line-num2">282</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line d2h-cntx"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"># For example, with RSpec</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">160</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line d2h-del d2h-change"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn">describe <del>CourseSessionsPlane</del> do</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">161</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line d2h-del d2h-change"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> let(:input<del> </del>) { CourseSession.all }</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">283</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line d2h-ins d2h-change"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><ins>RSpec.</ins>describe <ins>CourseSessionsProcessor</ins> do</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">284</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line d2h-ins d2h-change"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> let(:input) { CourseSession.all }</span> </div> </td> </tr><tr> <td id="d2h-027470-4107" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-4107"> <div class="line-num1">162</div> <div class="line-num2">285</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line d2h-cntx"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"> let(:params) { {} }</span> </div> </td> </tr><tr> <td id="d2h-027470-4118" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-4118"> <div class="line-num1">163</div> <div class="line-num2">286</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line d2h-cntx"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-027470-4129" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-4129"> <div class="line-num1">164</div> <div class="line-num2">287</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line d2h-cntx"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"> subject { described_class.call(input, params) }</span> </div> </td> </tr> <tr> <td class="d2h-code-linenumber d2h-info"></td> <td class="d2h-info"> <div class="d2h-code-line d2h-info">@@ -174,19 +297,19 @@ end</div> </td> </tr><tr> <td id="d2h-027470-4146" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-4146"> <div class="line-num1">174</div> <div class="line-num2">297</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line d2h-cntx"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn">Now in your controller you only have to test that the specific _plane_ is applied:</span> </div> </td> </tr><tr> <td id="d2h-027470-4157" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-4157"> <div class="line-num1">175</div> <div class="line-num2">298</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line d2h-cntx"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-027470-4168" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-4168"> <div class="line-num1">176</div> <div class="line-num2">299</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line d2h-cntx"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn">```ruby</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">177</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line d2h-del d2h-change"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn">describe CourseSessionController do</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">300</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line d2h-ins d2h-change"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><ins>RSpec.</ins>describe CourseSessionController do</span> </div> </td> </tr><tr> <td id="d2h-027470-4201" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-4201"> <div class="line-num1">178</div> <div class="line-num2">301</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line d2h-cntx"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"> subject { get :index }</span> </div> </td> </tr><tr> <td id="d2h-027470-4212" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-4212"> <div class="line-num1">179</div> <div class="line-num2">302</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line d2h-cntx"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-027470-4223" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-4223"> <div class="line-num1">180</div> <div class="line-num2">303</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line d2h-cntx"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"> specify do</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">181</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line d2h-del d2h-change"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> expect { subject }.to <del>have_planished</del>(CourseSession.all)<del>.</del></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">182</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line d2h-del d2h-change"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> with(<del>CourseSessionsPlane</del>)</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">304</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line d2h-ins d2h-change"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> expect { subject }.to <ins>have_rubanok_processed</ins>(CourseSession.all)</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">305</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line d2h-ins d2h-change"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> <ins>.</ins>with(<ins>CourseSessionsProcessor</ins>)</span> </div> </td> </tr><tr> <td id="d2h-027470-4278" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-4278"> <div class="line-num1">183</div> <div class="line-num2">306</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line d2h-cntx"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"> end</span> </div> </td> </tr><tr> <td id="d2h-027470-4289" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-4289"> <div class="line-num1">184</div> <div class="line-num2">307</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line d2h-cntx"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn">end</span> </div> </td> </tr><tr> <td id="d2h-027470-4300" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-4300"> <div class="line-num1">185</div> <div class="line-num2">308</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line d2h-cntx"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn">```</span> </div> </td> </tr><tr> <td id="d2h-027470-4311" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-4311"> <div class="line-num1">186</div> <div class="line-num2">309</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line d2h-cntx"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-027470-4322" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-4322"> <div class="line-num1">187</div> <div class="line-num2">310</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line d2h-cntx"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn">**NOTE**: input matching only checks for the class equality.</span> </div> </td> </tr><tr> <td id="d2h-027470-4333" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-4333"> <div class="line-num1">188</div> <div class="line-num2">311</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line d2h-cntx"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">189</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line d2h-del d2h-change"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn">To use `<del>have_planished</del>` matcher you must add the following line to your `spec_helper.rb` / `rails_helper.rb` (it's added automatically if RSpec defined and `RAILS_ENV`/`RACK_ENV` is equal to `"test"`):</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">312</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line d2h-ins d2h-change"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">To use `<ins>have_rubanok_processed</ins>` matcher you must add the following line to your `spec_helper.rb` / `rails_helper.rb` (it's added automatically if RSpec defined and `RAILS_ENV`/`RACK_ENV` is equal to `"test"`):</span> </div> </td> </tr><tr> <td id="d2h-027470-4366" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-4366"> <div class="line-num1">190</div> <div class="line-num2">313</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line d2h-cntx"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-027470-4377" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-4377"> <div class="line-num1">191</div> <div class="line-num2">314</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line d2h-cntx"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn">```ruby</span> </div> </td> </tr><tr> <td id="d2h-027470-4388" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-4388"> <div class="line-num1">192</div> <div class="line-num2">315</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line d2h-cntx"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn">require "rubanok/rspec"</span> </div> </td> </tr> <tr> <td class="d2h-code-linenumber d2h-info"></td> <td class="d2h-info"> <div class="d2h-code-line d2h-info">@@ -194,10 +317,85 @@ require "rubanok/rspec"</div> </td> </tr><tr> <td id="d2h-027470-4405" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-4405"> <div class="line-num1">194</div> <div class="line-num2">317</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line d2h-cntx"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-027470-4416" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-4416"> <div class="line-num1">195</div> <div class="line-num2">318</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line d2h-cntx"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn">### Rails vs. non-Rails</span> </div> </td> </tr><tr> <td id="d2h-027470-4427" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-4427"> <div class="line-num1">196</div> <div class="line-num2">319</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line d2h-cntx"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">197</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line d2h-del d2h-change"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn">Rubanok <del>is</del> <del>a</del> Rails<del>-free</del> <del>library </del>but has some useful Rails extensions<del>,</del> such as `<del>planish</del>` helper for controllers (included automatically into `ActionController::Base` and `ActionController::API`).</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">320</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line d2h-ins d2h-change"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">Rubanok <ins>does</ins> <ins>not</ins> <ins>require </ins>Rails<ins>,</ins> but <ins>it </ins>has some useful Rails extensions such as `<ins>rubanok_process</ins>` helper for controllers (included automatically into `ActionController::Base` and `ActionController::API`).</span> </div> </td> </tr><tr> <td id="d2h-027470-4460" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-4460"> <div class="line-num1">198</div> <div class="line-num2">321</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line d2h-cntx"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-027470-4471" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-4471"> <div class="line-num1">199</div> <div class="line-num2">322</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line d2h-cntx"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn">If you use `ActionController::Metal` you must include the `Rubanok::Controller` module yourself.</span> </div> </td> </tr><tr> <td id="d2h-027470-4482" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-4482"> <div class="line-num1">200</div> <div class="line-num2">323</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line d2h-cntx"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-027470-4493" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-4493"> <div class="line-num1"></div> <div class="line-num2">324</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">### Processor class inference in Rails controllers</span> </div> </td> </tr><tr> <td id="d2h-027470-4504" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-4504"> <div class="line-num1"></div> <div class="line-num2">325</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-027470-4515" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-4515"> <div class="line-num1"></div> <div class="line-num2">326</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">By default, `rubanok_process` uses the following algorithm to define a processor class: `"#{controller_path.classify.pluralize}Processor".safe_constantize`.</span> </div> </td> </tr><tr> <td id="d2h-027470-4526" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-4526"> <div class="line-num1"></div> <div class="line-num2">327</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-027470-4537" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-4537"> <div class="line-num1"></div> <div class="line-num2">328</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">You can change this by overriding the `#implicit_rubanok_class` method:</span> </div> </td> </tr><tr> <td id="d2h-027470-4548" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-4548"> <div class="line-num1"></div> <div class="line-num2">329</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-027470-4559" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-4559"> <div class="line-num1"></div> <div class="line-num2">330</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">```ruby</span> </div> </td> </tr><tr> <td id="d2h-027470-4570" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-4570"> <div class="line-num1"></div> <div class="line-num2">331</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">class ApplicationController < ActionController::Smth</span> </div> </td> </tr><tr> <td id="d2h-027470-4581" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-4581"> <div class="line-num1"></div> <div class="line-num2">332</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> # override the `implicit_rubanok_class` method</span> </div> </td> </tr><tr> <td id="d2h-027470-4592" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-4592"> <div class="line-num1"></div> <div class="line-num2">333</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> def implicit_rubanok_class</span> </div> </td> </tr><tr> <td id="d2h-027470-4603" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-4603"> <div class="line-num1"></div> <div class="line-num2">334</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> "#{controller_path.classify.pluralize}Scoper".safe_constantize</span> </div> </td> </tr><tr> <td id="d2h-027470-4614" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-4614"> <div class="line-num1"></div> <div class="line-num2">335</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> end</span> </div> </td> </tr><tr> <td id="d2h-027470-4625" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-4625"> <div class="line-num1"></div> <div class="line-num2">336</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">end</span> </div> </td> </tr><tr> <td id="d2h-027470-4636" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-4636"> <div class="line-num1"></div> <div class="line-num2">337</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">```</span> </div> </td> </tr><tr> <td id="d2h-027470-4647" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-4647"> <div class="line-num1"></div> <div class="line-num2">338</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-027470-4658" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-4658"> <div class="line-num1"></div> <div class="line-num2">339</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">Now you can use it like this:</span> </div> </td> </tr><tr> <td id="d2h-027470-4669" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-4669"> <div class="line-num1"></div> <div class="line-num2">340</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-027470-4680" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-4680"> <div class="line-num1"></div> <div class="line-num2">341</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">```ruby</span> </div> </td> </tr><tr> <td id="d2h-027470-4691" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-4691"> <div class="line-num1"></div> <div class="line-num2">342</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">class CourseSessionsController < ApplicationController</span> </div> </td> </tr><tr> <td id="d2h-027470-4702" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-4702"> <div class="line-num1"></div> <div class="line-num2">343</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> def index</span> </div> </td> </tr><tr> <td id="d2h-027470-4713" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-4713"> <div class="line-num1"></div> <div class="line-num2">344</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> @sessions = rubanok_process(CourseSession.all, params)</span> </div> </td> </tr><tr> <td id="d2h-027470-4724" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-4724"> <div class="line-num1"></div> <div class="line-num2">345</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> # which equals to</span> </div> </td> </tr><tr> <td id="d2h-027470-4735" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-4735"> <div class="line-num1"></div> <div class="line-num2">346</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> @sessions = CourseSessionsScoper.call(CourseSession.all, params.to_unsafe_h)</span> </div> </td> </tr><tr> <td id="d2h-027470-4746" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-4746"> <div class="line-num1"></div> <div class="line-num2">347</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> end</span> </div> </td> </tr><tr> <td id="d2h-027470-4757" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-4757"> <div class="line-num1"></div> <div class="line-num2">348</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">end</span> </div> </td> </tr><tr> <td id="d2h-027470-4768" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-4768"> <div class="line-num1"></div> <div class="line-num2">349</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">```</span> </div> </td> </tr><tr> <td id="d2h-027470-4779" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-4779"> <div class="line-num1"></div> <div class="line-num2">350</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-027470-4790" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-4790"> <div class="line-num1"></div> <div class="line-num2">351</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">**NOTE:** the `planish` method is still available and it uses `#{controller_path.classify.pluralize}Plane".safe_constantize` under the hood (via the `#implicit_plane_class` method).</span> </div> </td> </tr><tr> <td id="d2h-027470-4801" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-4801"> <div class="line-num1"></div> <div class="line-num2">352</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-027470-4812" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-4812"> <div class="line-num1"></div> <div class="line-num2">353</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">## Using with RBS/Steep</span> </div> </td> </tr><tr> <td id="d2h-027470-4823" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-4823"> <div class="line-num1"></div> <div class="line-num2">354</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-027470-4834" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-4834"> <div class="line-num1"></div> <div class="line-num2">355</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">_Read ["Climbing Steep hills, or adopting Ruby 3 types with RBS"](https://evilmartians.com/chronicles/climbing-steep-hills-or-adopting-ruby-types) for the context._</span> </div> </td> </tr><tr> <td id="d2h-027470-4845" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-4845"> <div class="line-num1"></div> <div class="line-num2">356</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-027470-4856" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-4856"> <div class="line-num1"></div> <div class="line-num2">357</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">Rubanok comes with Ruby type signatures (RBS).</span> </div> </td> </tr><tr> <td id="d2h-027470-4867" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-4867"> <div class="line-num1"></div> <div class="line-num2">358</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-027470-4878" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-4878"> <div class="line-num1"></div> <div class="line-num2">359</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">To use them with Steep, add `library "rubanok"` to your Steepfile.</span> </div> </td> </tr><tr> <td id="d2h-027470-4889" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-4889"> <div class="line-num1"></div> <div class="line-num2">360</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-027470-4900" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-4900"> <div class="line-num1"></div> <div class="line-num2">361</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">Since Rubanok provides DSL with implicit context switching (via `instance_eval`), you need to provide type hints for the type checker to help it</span> </div> </td> </tr><tr> <td id="d2h-027470-4911" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-4911"> <div class="line-num1"></div> <div class="line-num2">362</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">figure out the current context. Here is an example:</span> </div> </td> </tr><tr> <td id="d2h-027470-4922" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-4922"> <div class="line-num1"></div> <div class="line-num2">363</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-027470-4933" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-4933"> <div class="line-num1"></div> <div class="line-num2">364</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">```ruby</span> </div> </td> </tr><tr> <td id="d2h-027470-4944" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-4944"> <div class="line-num1"></div> <div class="line-num2">365</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">class MyProcessor < Rubanok::Processor</span> </div> </td> </tr><tr> <td id="d2h-027470-4955" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-4955"> <div class="line-num1"></div> <div class="line-num2">366</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> map :q do |q:|</span> </div> </td> </tr><tr> <td id="d2h-027470-4966" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-4966"> <div class="line-num1"></div> <div class="line-num2">367</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> # @type self : Rubanok::Processor</span> </div> </td> </tr><tr> <td id="d2h-027470-4977" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-4977"> <div class="line-num1"></div> <div class="line-num2">368</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> raw</span> </div> </td> </tr><tr> <td id="d2h-027470-4988" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-4988"> <div class="line-num1"></div> <div class="line-num2">369</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> end</span> </div> </td> </tr><tr> <td id="d2h-027470-4999" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-4999"> <div class="line-num1"></div> <div class="line-num2">370</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-027470-5010" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-5010"> <div class="line-num1"></div> <div class="line-num2">371</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> match :sort_by, :sort, activate_on: :sort_by do</span> </div> </td> </tr><tr> <td id="d2h-027470-5021" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-5021"> <div class="line-num1"></div> <div class="line-num2">372</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> # @type self : Rubanok::DSL::Matching::Rule</span> </div> </td> </tr><tr> <td id="d2h-027470-5032" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-5032"> <div class="line-num1"></div> <div class="line-num2">373</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> having "status", "asc" do</span> </div> </td> </tr><tr> <td id="d2h-027470-5043" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-5043"> <div class="line-num1"></div> <div class="line-num2">374</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> # @type self : Rubanok::Processor</span> </div> </td> </tr><tr> <td id="d2h-027470-5054" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-5054"> <div class="line-num1"></div> <div class="line-num2">375</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> raw</span> </div> </td> </tr><tr> <td id="d2h-027470-5065" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-5065"> <div class="line-num1"></div> <div class="line-num2">376</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> end</span> </div> </td> </tr><tr> <td id="d2h-027470-5076" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-5076"> <div class="line-num1"></div> <div class="line-num2">377</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-027470-5087" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-5087"> <div class="line-num1"></div> <div class="line-num2">378</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> # @type self : Rubanok::DSL::Matching::Rule</span> </div> </td> </tr><tr> <td id="d2h-027470-5098" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-5098"> <div class="line-num1"></div> <div class="line-num2">379</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> default do |sort_by:, sort: "asc"|</span> </div> </td> </tr><tr> <td id="d2h-027470-5109" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-5109"> <div class="line-num1"></div> <div class="line-num2">380</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> # @type self : Rubanok::Processor</span> </div> </td> </tr><tr> <td id="d2h-027470-5120" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-5120"> <div class="line-num1"></div> <div class="line-num2">381</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> raw</span> </div> </td> </tr><tr> <td id="d2h-027470-5131" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-5131"> <div class="line-num1"></div> <div class="line-num2">382</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> end</span> </div> </td> </tr><tr> <td id="d2h-027470-5142" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-5142"> <div class="line-num1"></div> <div class="line-num2">383</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> end</span> </div> </td> </tr><tr> <td id="d2h-027470-5153" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-5153"> <div class="line-num1"></div> <div class="line-num2">384</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">end</span> </div> </td> </tr><tr> <td id="d2h-027470-5164" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-5164"> <div class="line-num1"></div> <div class="line-num2">385</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">```</span> </div> </td> </tr><tr> <td id="d2h-027470-5175" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-5175"> <div class="line-num1"></div> <div class="line-num2">386</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-027470-5186" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-5186"> <div class="line-num1"></div> <div class="line-num2">387</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">Yeah, a lot of annotations 😞 Welcome to the type-safe world!</span> </div> </td> </tr><tr> <td id="d2h-027470-5197" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-5197"> <div class="line-num1"></div> <div class="line-num2">388</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-027470-5208" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-5208"> <div class="line-num1"></div> <div class="line-num2">389</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">## Questions & Answers</span> </div> </td> </tr><tr> <td id="d2h-027470-5219" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-5219"> <div class="line-num1"></div> <div class="line-num2">390</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-027470-5230" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-5230"> <div class="line-num1"></div> <div class="line-num2">391</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">- **Where to put my processor/plane classes?**</span> </div> </td> </tr><tr> <td id="d2h-027470-5241" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-5241"> <div class="line-num1"></div> <div class="line-num2">392</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-027470-5252" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-5252"> <div class="line-num1"></div> <div class="line-num2">393</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">I put mine under `app/planes` (as `<resources>_plane.rb`) in my Rails app.</span> </div> </td> </tr><tr> <td id="d2h-027470-5263" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-5263"> <div class="line-num1"></div> <div class="line-num2">394</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-027470-5274" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-5274"> <div class="line-num1"></div> <div class="line-num2">395</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">- **I don't like the naming ("planes" ✈️?), can I still use the library?**</span> </div> </td> </tr><tr> <td id="d2h-027470-5285" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-5285"> <div class="line-num1"></div> <div class="line-num2">396</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-027470-5296" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-5296"> <div class="line-num1"></div> <div class="line-num2">397</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">Good news—the default naming [has been changed](https://github.com/palkan/rubanok/pull/8). "Planes" are still available if you prefer them (just like me 😉).</span> </div> </td> </tr><tr> <td id="d2h-027470-5307" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-5307"> <div class="line-num1"></div> <div class="line-num2">398</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line d2h-ins"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-027470-5318" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-5318"> <div class="line-num1">201</div> <div class="line-num2">399</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line d2h-cntx"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn">## Contributing</span> </div> </td> </tr><tr> <td id="d2h-027470-5329" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-5329"> <div class="line-num1">202</div> <div class="line-num2">400</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line d2h-cntx"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-027470-5340" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-5340"> <div class="line-num1">203</div> <div class="line-num2">401</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line d2h-cntx"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn">Bug reports and pull requests are welcome on GitHub at https://github.com/palkan/rubanok.</span> </div> </td> </tr> </tbody> </table> </div> </div> </div> </div> </div> </div> <div class='row align-items-center mt-3 justify-content-center'> <div class='text-center'> <ul class='pagination mb-0'> <li class='page-item page active'> <a class="page-link" href="/gems/rubanok/0.1.1/0.4.0">1</a> </li> <li class='page-item page'> <a rel="next" class="page-link" href="/gems/rubanok/0.1.1/0.4.0/page/2">2</a> </li> <li class='page-item page'> <a class="page-link" href="/gems/rubanok/0.1.1/0.4.0/page/3">3</a> </li> <li class='page-item page'> <a class="page-link" href="/gems/rubanok/0.1.1/0.4.0/page/4">4</a> </li> <li class='next_page page-item'> <a rel="next" class="page-link" href="/gems/rubanok/0.1.1/0.4.0/page/2">Next ›</a> </li> <li class='last next page-item'> <a class="page-link" href="/gems/rubanok/0.1.1/0.4.0/page/4">Last »</a> </li> </ul> </div> </div> </div> </div> <footer class='sticky-footer mt-3'> <div class='container text-center mb-3 copyright'> <a class='mr-4 text-gray-600' href='mailto:diffend@whitesourcesoftware.com'> Contact Us </a> <a class='mr-4 text-gray-600' href='https://www.whitesourcesoftware.com/terms-of-service/'> Terms of Service </a> <a class='mr-4 text-gray-600' href='https://www.whitesourcesoftware.com/privacy-policy/'> Privacy Policy </a> <a class='mr-4 text-gray-600' href='https://diffend.io/docs'> Docs </a> </div> <div class='container mt-4'> <div class='copyright text-center'> Copyright © 2025 Mend Software </div> </div> </footer> </div> </div> </div> </body> </html>