obtener un front_matter limpio
This commit is contained in:
parent
6d3a3739b3
commit
66e37ca736
2 changed files with 24 additions and 4 deletions
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Reference in a new issue