Elixir:
Praca z YAML

Jak to zrobić:

Elixir nie zawiera wbudowanego wsparcia dla YAML. Można jednak korzystać z bibliotek firm trzecich, takich jak yamerl lub yaml_elixir, aby pracować z YAML. Tutaj skupimy się na yaml_elixir ze względu na jego łatwość użycia i obszerne funkcje.

Po pierwsze, dodaj yaml_elixir do zależności w pliku mix.exs:

defp deps do
  [
    {:yaml_elixir, "~> 2.9"}
  ]
end

Następnie uruchom mix deps.get, aby pobrać nową zależność.

Czytanie YAML

Biorąc pod uwagę prosty plik YAML, config.yaml, który wygląda tak:

database:
  adapter: postgres
  username: user
  password: pass

Możesz odczytać ten plik YAML i przekonwertować go na mapę Elixir tak:

defmodule Config do
  def read do
    {:ok, content} = YamlElixir.read_from_file("config.yaml")
    content
  end
end

# Przykładowe użycie
Config.read()
# Wynik: 
# %{
#   "database" => %{
#     "adapter" => "postgres",
#     "username" => "user",
#     "password" => "pass"
#   }
# }

Pisanie YAML

Aby zapisać mapę z powrotem do pliku YAML:

defmodule ConfigWriter do
  def write do
    content = %{
      database: %{
        adapter: "mysql",
        username: "root",
        password: "s3cret"
      }
    }
    
    YamlElixir.write_to_file("new_config.yaml", content)
  end
end

# Przykładowe użycie
ConfigWriter.write()
# To utworzy lub nadpisze `new_config.yaml` z podaną zawartością

Zauważ, jak yaml_elixir umożliwia proste tłumaczenie między plikami YAML a strukturami danych Elixir, co czyni go doskonałym wyborem dla programistów Elixir potrzebujących pracować z danymi YAML.