/
format.ex
74 lines (54 loc) · 1.64 KB
/
format.ex
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
defmodule Game.Format do
@moduledoc """
Format data into strings to send to the connected player
"""
alias Game.Color
alias Game.Format.Channels
alias Game.Format.Items
alias Game.Format.NPCs
alias Game.Format.Players
alias Game.Format.Resources
alias Game.Format.Rooms
alias Game.Format.Template
alias Game.Format.Shops
alias Game.Format.Skills
def currency(currency), do: Items.currency(currency)
def name(who), do: target_name(who)
def channel_name(channel), do: Channels.channel_name(channel)
def item_name(item), do: Items.item_name(item)
def player_name(player), do: Players.player_name(player)
def npc_name(npc), do: NPCs.npc_name(npc)
def shop_name(shop), do: Shops.shop_name(shop)
def skill_name(skill), do: Skills.skill_name(skill)
def target_name({:npc, npc}), do: npc_name(npc)
def target_name({:player, player}), do: player_name(player)
def zone_name(zone), do: Rooms.zone_name(zone)
@doc """
Template a string
iex> Game.Format.template(%{assigns: %{name: "Player"}}, "[name] says hello")
"Player says hello"
"""
def template(context, string) do
Template.render(context, string)
end
@doc """
Run through the resources parser
"""
def resources(string) do
Resources.parse(string)
end
@doc """
Create an 'underline'
Example:
iex> Game.Format.underline("Room Name")
"-------------"
iex> Game.Format.underline("{player}Player{/player}")
"----------"
"""
def underline(nil), do: ""
def underline(string) do
1..(String.length(Color.strip_color(string)) + 4)
|> Enum.map(fn _ -> "-" end)
|> Enum.join("")
end
end