Current section
Files
Jump to
Current section
Files
lib/liquid/block.ex
defmodule Liquid.Block do
defstruct name: nil, markup: nil, condition: nil, parts: [], iterator: [], nodelist: [], elselist: [], blank: false
alias Liquid.Tag, as: Tag
alias Liquid.Block, as: Block
def create(markup) do
destructure [name, rest], String.split(markup, " ", parts: 2)
%Block{name: name |> String.to_atom, markup: 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