obtener un front_matter limpio

This commit is contained in:
f 2018-06-21 14:33:45 -03:00
parent 6d3a3739b3
commit 66e37ca736
No known key found for this signature in database
GPG key ID: F3FDAB97B5F9F7E7
2 changed files with 24 additions and 4 deletions

View file

@ -63,7 +63,6 @@ class Post
load_front_matter!
merge_with_front_matter! front_matter.stringify_keys
end
end
# Limpiar los errores
@ -244,15 +243,16 @@ class Post
private
# Completa el front_matter a partir de las variables de otro
# Completa el front_matter a partir de las variables de otro post que
# le sirve de plantilla
def front_matter_from_template
# XXX: Llamamos a @template en lugar de template porque sino
# entramos en una race condition
return {} unless @template
ft = template_fields.map(&:to_front_matter).reduce(Hash.new, :merge)
# Convertimos el slug en layout
ft = template.front_matter.dup
ft['layout'] = ft.delete('slug')
ft['layout'] = template.slug
ft
end

View file

@ -48,6 +48,21 @@ class Post
@type
end
# Devuelve los valores vacíos según el tipo
def empty_value
case
when string?
''
when nested?
# TODO devolver las keys también
{}
when array?
[]
when boolean?
false
end
end
# El campo es requerido si es complejo y se especifica que lo sea
def required?
complex? && contents.dig('required')
@ -90,6 +105,11 @@ class Post
end
end
# Convierte la plantilla en el formato de front_matter
def to_front_matter
{ key => empty_value }
end
def array?
value.is_a? Array
end