Читання аргументів командного рядка

Elm:
Читання аргументів командного рядка

Як це зробити:

-- Elm не має вбудованої підтримки для читання аргументів командного рядка.
-- Однак, ви можете використовувати JavaScript через порти для отримання цих даних.
-- Давайте налаштуємо простий приклад.

port module Main exposing (..)

import Json.Decode as Decode
import Html

-- Оголошуємо порт для отримання аргументів.
port cmdlineArgs : (String -> msg) -> Sub msg

-- Тип повідомлення для вашого прикладу.
type Msg
    = CmdArgs String

-- Основна програма.
main =
    Html.program
        { init = init
        , view = view
        , update = update
        , subscriptions = subscriptions
        }

-- Початковий стан.
init : (Model, Cmd Msg)
init =
    ("Ніяких аргументів ще не отримано", Cmd.none)

-- Передплати.
subscriptions : Model -> Sub Msg
subscriptions model =
    cmdlineArgs CmdArgs

-- Представлення.
view : Model -> Html.Html Msg
view model =
    Html.text model

-- Оновлення.
update : Msg -> Model -> (Model, Cmd Msg)
update (CmdArgs args) _ =
    (args, Cmd.none)

-- Модель.
type alias Model =
    String

-- Запуск цього коду буде потребувати JavaScript коду, щоб відправити аргументи через порти.

В глибину

Elm фокусується на безпечних веб-додатках, тому немає інтегрованого способу доступу до аргументів командного рядка, як це можливо в мовах, орієнтованих на загальні завдання. Звичайно для читання аргументів командного рядка використовуються скриптові мови як Python або Node.js, а Elm використовується для роботи на боці клієнта і маніпуляції DOM. Коли вам потрібно працювати з командним рядком, можна застосовувати Elm через порти, що дозволяють двосторонню інтеграцію з JavaScript.

Також гляньте

  • Elm Port Example - як працювати з портами.
  • JSON Decode - документація про декодування JSON у Elm.
  • Node.js Process Arguments - для роботи з аргументами командного рядка в Node.js, якщо ви хочете інтегрувати з Elm через порти.