summaryrefslogtreecommitdiff
path: root/bencode.erl
diff options
context:
space:
mode:
authorssmith2006-05-14 02:02:10 -0700
committerssmith2006-05-14 02:02:10 -0700
commit0d39716d6493ab31780dc7bba9d376bd7218f233 (patch)
tree0ba1c581db67a5318cd85ee3a201cb12714a4fa7 /bencode.erl
parentbe5e8817ca5570b66f57f2d56148c88ae73a8531 (diff)
Misc updates in preparation for encoder
Diffstat (limited to 'bencode.erl')
-rw-r--r--bencode.erl34
1 files changed, 20 insertions, 14 deletions
diff --git a/bencode.erl b/bencode.erl
index aaf737e..fb8e9f3 100644
--- a/bencode.erl
+++ b/bencode.erl
@@ -1,10 +1,17 @@
-module(bencode).
--export([bdecode/1]).
+-export([bdecode/1, bencode/1]).
-import(string, [substr/2, substr/3, to_integer/1, chr/2]).
+%% %% %% %% %% %% %% %% Decoding %% %% %% %% %% %% %% %%
+
+bencode(Val) when is_integer(Val) ->
+ "i" ++ integer_to_list(Val) ++ "e".
+
+%% %% %% %% %% %% %% %% Decoding %% %% %% %% %% %% %% %%
+
%% String
bdecode([Char | _Rest] = Str) when Char >= $0, Char =< $9 ->
ColIdx = chr(Str, $:),
@@ -22,34 +29,33 @@ bdecode([Char | Rest]) when Char == $i ->
%% List
bdecode([Char | Rest]) when Char == $l ->
- {List, Rem} = dolist(Rest),
+ {List, Rem} = declist(Rest),
{{list, List}, Rem};
%% Dict
bdecode([Char | Rest]) when Char == $d ->
- {Dict, Rem} = dodict(Rest),
+ {Dict, Rem} = decdict(Rest),
{{dict, Dict}, Rem}.
-dolist(Str) ->
- dolist(Str, []).
+declist(Str) ->
+ declist(Str, []).
-dolist([Char | Rest], List) when Char == $e ->
+declist([Char | Rest], List) when Char == $e ->
{List, Rest};
-dolist(Str, List) ->
+declist(Str, List) ->
{Result, Rest} = bdecode(Str),
- dolist(Rest, lists:append(List, [Result])).
+ declist(Rest, lists:append(List, [Result])).
-dodict(Str) ->
- dodict(Str, dict:new()).
+decdict(Str) ->
+ decdict(Str, dict:new()).
-dodict([Char | Rest], Dict) when Char == $e ->
+decdict([Char | Rest], Dict) when Char == $e ->
{Dict, Rest};
-dodict(Str, Dict) ->
+decdict(Str, Dict) ->
{{string, Key}, Rest} = bdecode(Str),
{Val, Rest2} = bdecode(Rest),
- dodict(Rest2, dict:store(Key, Val, Dict)).
-
+ decdict(Rest2, dict:store(Key, Val, Dict)).