defmodule Faker.Finance.Stock do alias Faker.Util @moduledoc """ Functions for stock data """ @doc """ Returns a ticker. ## Examples iex> Faker.Finance.Stock.ticker() "7401.N225" iex> Faker.Finance.Stock.ticker() "4786.HK" iex> Faker.Finance.Stock.ticker() "6766.N225" iex> Faker.Finance.Stock.ticker() "5166.N225" """ @spec ticker() :: String.t() def ticker do code = :reuters exchange = [:nikkei225, :sehk] |> Util.pick() ticker(code, exchange) end @doc """ The first argument is the ticker format. The second argument is the name of the exchange. ## Examples iex> Faker.Finance.Stock.ticker(:reuters, :nikkei225) "2110.N225" iex> Faker.Finance.Stock.ticker(:reuters, :nikkei225) "7401.N225" iex> Faker.Finance.Stock.ticker(:reuters, :nikkei225) "9835.N225" iex> Faker.Finance.Stock.ticker(:reuters, :nikkei225) "8304.N225" iex> Faker.Finance.Stock.ticker(:reuters, :sehk) "7564.HK" iex> Faker.Finance.Stock.ticker(:reuters, :sehk) "3609.HK" iex> Faker.Finance.Stock.ticker(:reuters, :sehk) "1085.HK" iex> Faker.Finance.Stock.ticker(:reuters, :sehk) "5849.HK" """ def ticker(:reuters, :nikkei225) do "#{Faker.random_between(1000, 9999)}.N225" end def ticker(:reuters, :sehk) do stock_str = Faker.random_between(1, 8999) |> Integer.to_string() |> String.pad_leading(4, ["0"]) "#{stock_str}.HK" end end