Elm:
टेक्स्ट फ़ाइल पढ़ना

How to: (कैसे करें:)

Elm में सीधे तरीके से फाइल पढ़ना संभव नहीं है क्योंकि यह ब्राउज़र पर चलता है और फ़ाइल सिस्टम तक एक्सेस नहीं होता। लेकिन, हम यूजर से एक फाइल अपलोड करने के लिए कह सकते हैं और फिर Elm उसे पढ़ सकता है। यहां एक उदाहरण है:

module Main exposing (main)

import Browser
import Html exposing (Html, button, div, text)
import Html.Events exposing (onClick)
import File exposing (File)
import File.Select as FileSelect

type Msg
    = SelectFile
    | FileSelected (Maybe File)
    | ReadFile
    | FileReaderResult (Result () String)

type alias Model =
    { file : Maybe File
    , fileContent : Maybe String
    }

initialModel : Model
initialModel =
    { file = Nothing
    , fileContent = Nothing
    }

update : Msg -> Model -> (Model, Cmd Msg)
update msg model =
    case msg of
        SelectFile ->
            (model, FileSelect.file [] FileSelected)

        FileSelected maybeFile ->
            ({ model | file = maybeFile }, Cmd.none)

        ReadFile ->
            case model.file of
                Just file ->
                    (model, File.readAsText file FileReaderResult)

                Nothing ->
                    (model, Cmd.none)

        FileReaderResult (Ok content) ->
            ({ model | fileContent = Just content }, Cmd.none)

        FileReaderResult (Err _) ->
            (model, Cmd.none)

view : Model -> Html Msg
view model =
    div []
        [ button [ onClick SelectFile ] [ text "Select a file" ]
        , case model.fileContent of
              Just content ->
                  div [] [ text content ]

              Nothing ->
                  text ""
        ]

main =
    Browser.element
        { init = \_ -> (initialModel, Cmd.none)
        , view = view
        , update = update
        , subscriptions = \_ -> Sub.none
        }

ऊपर दिया कोड यूजर से एक फाइल चुनने और उसे पढ़ने की कार्यवाही करता है।

Deep Dive (गहराई में जानकारी)

Elm में फ़ाइल पढ़ना ब्राउज़र सुरक्षा प्रतिबन्धों की वजह से एक सीमित ऑपरेशन है। Elm को डिज़ाइन किया गया था ताकि यूजर की सुरक्षा और उसके डाटा प्रीवेसी को बनाए रख सकें। इसके अलावा, Elm में साइड-इफेक्ट्स (जैसेकि IO ऑपरेशन्स) को हैंडल करने का एक स्ट्रक्चर्ड तरीका है, इसलिए फ़ाइल पढ़ने के लिए विशेष इवेंट्स और मॉड्यूल्स का इस्तेमाल किया जाता है। जैसा कि उदाहरण में देखा जा सकता है, File.readAsText का इस्तेमाल करते हुए FileReaderResult में काम्य/असफल पढ़ाई का नतीजा मिलता है।

See Also (संबंधित सूत्र)