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! load_front_matter!
merge_with_front_matter! front_matter.stringify_keys merge_with_front_matter! front_matter.stringify_keys
end end
end end
# Limpiar los errores # Limpiar los errores
@ -244,15 +243,16 @@ class Post
private 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 def front_matter_from_template
# XXX: Llamamos a @template en lugar de template porque sino # XXX: Llamamos a @template en lugar de template porque sino
# entramos en una race condition # entramos en una race condition
return {} unless @template return {} unless @template
ft = template_fields.map(&:to_front_matter).reduce(Hash.new, :merge)
# Convertimos el slug en layout # Convertimos el slug en layout
ft = template.front_matter.dup ft['layout'] = template.slug
ft['layout'] = ft.delete('slug')
ft ft
end end

View file

@ -48,6 +48,21 @@ class Post
@type @type
end 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 # El campo es requerido si es complejo y se especifica que lo sea
def required? def required?
complex? && contents.dig('required') complex? && contents.dig('required')
@ -90,6 +105,11 @@ class Post
end end
end end
# Convierte la plantilla en el formato de front_matter
def to_front_matter
{ key => empty_value }
end
def array? def array?
value.is_a? Array value.is_a? Array
end end