Current section

Files

Jump to
liquid lib liquid block.ex
Raw

lib/liquid/block.ex

defmodule Liquid.Block do
defstruct name: nil, markup: nil, condition: nil, parts: [], iterator: [], nodelist: [], elselist: []
alias Liquid.Tag, as: Tag
alias Liquid.Block, as: Block
def create(markup) do
[name|rest] = String.split(markup, " ")
name = String.to_atom(name)
%Block{name: name, markup: Enum.join(rest, " ")}
end
def split(nodes), do: split(nodes, [:else])
def split(%Block{nodelist: nodelist}, namelist), do: split(nodelist, namelist)
def split(nodelist, namelist) when is_list(nodelist) do
Enum.split_while(nodelist, fn(x) ->
!(is_map(x) and x.__struct__ == Tag and Enum.member?(namelist, x.name))
end)
end
end