Current section
Files
Jump to
Current section
Files
lib/tree.ex
defmodule CirruParser.Tree do
def appendItem(xs, level, buffer) when level == 0 do
xs ++ [buffer]
end
def appendItem(xs, level, buffer) do
res = appendItem (List.last xs), (level - 1), buffer
init = Enum.take xs, length(xs) - 1
init ++ [res]
end
defp nestingHelper(xs, n) when n <= 1 do
xs
end
defp nestingHelper(xs, n) do
[(nestingHelper xs, (n - 1))]
end
def createNesting(n) do
nestingHelper [], n
end
defp dollarHelper(before, listAfter) when listAfter == [] do
before
end
defp dollarHelper(before, listAfter) do
cursor = hd listAfter
cond do
(is_list cursor) ->
chunk = resolveDollar cursor
dollarHelper (before ++ [chunk]), (tl listAfter)
(cursor.text == "$") ->
chunk = resolveDollar (tl listAfter)
before ++ [chunk]
true ->
chunk = before ++ [cursor]
dollarHelper chunk, (tl listAfter)
end
end
def resolveDollar(xs) when xs == [] do
xs
end
def resolveDollar(xs) do
dollarHelper [], xs
end
defp commaHelper(before, listAfter) when listAfter == [] do
before
end
defp commaHelper(before, listAfter) do
cursor = hd listAfter
if (is_list cursor) and (cursor != []) do
head = hd cursor
cond do
(is_list head) ->
chunk = resolveComma cursor
commaHelper (before ++ [chunk]), (tl listAfter)
(head.text == ",") ->
chunk = resolveComma (tl cursor)
commaHelper before, (chunk ++ (tl listAfter))
true ->
chunk = resolveComma cursor
commaHelper (before ++ [chunk]), (tl listAfter)
end
else
commaHelper (before ++ [cursor]), (tl listAfter)
end
end
def resolveComma(xs) when xs == [] do
xs
end
def resolveComma(xs) do
commaHelper [], xs
end
end