mirror of
https://0xacab.org/sutty/sutty
synced 2024-11-26 09:16:22 +00:00
3dacdf82bf
agregué el método `Jekyll::Document#reset` para que no queden datos de la versión anterior, porque jekyll mergea la información. además, para evitar bugs en las plantillas, se mantienen los arrays vacíos en el front matter para que se puedan seguir usando métodos de arrays, como each y sort.
109 lines
3.1 KiB
Ruby
109 lines
3.1 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
String.include CoreExtensions::String::StripTags
|
|
Jekyll::Document.include CoreExtensions::Jekyll::Document::Path
|
|
|
|
# Definir tags de Liquid que provienen de complementos para que siempre
|
|
# devuelvan contenido vacío.
|
|
%w[seo feed_meta turbolinks].each do |tag|
|
|
Liquid::Template.register_tag(tag, Jekyll::Tags::Empty)
|
|
end
|
|
|
|
Liquid::Template.register_tag('base', Jekyll::Tags::Base)
|
|
|
|
module ActionDispatch
|
|
# Redefinir el formateo de URLs de Rails para eliminar parámetros
|
|
# selectivamente
|
|
module Journey
|
|
Formatter.class_eval do
|
|
alias_method :generate_original, :generate
|
|
|
|
# Eliminar el locale a menos que estemos generando la URL para un
|
|
# Post. Esto es para que las URLs no lleven un ?locale=XX
|
|
# innecesario y además porque generan conflictos en la subida de
|
|
# archivos de ActionText.
|
|
def generate(name, options, path_parameters)
|
|
options.delete(:locale) unless options[:controller] == 'posts'
|
|
|
|
generate_original(name, options, path_parameters)
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
# Lazy Loading de Jekyll, deshabilitando la instanciación de elementos
|
|
# que no necesitamos. Esto permite que podamos leer el sitio por partes
|
|
# en lugar de todo junto.
|
|
#
|
|
# TODO: Aplicar monkey patches en otro lado...
|
|
module Jekyll
|
|
Reader.class_eval do
|
|
# No necesitamos otros posts
|
|
def retrieve_posts(_); end
|
|
|
|
# No necesitamos otros directorios
|
|
def retrieve_dirs(_, _, _); end
|
|
|
|
# No necesitamos las páginas
|
|
def retrieve_pages(_, _); end
|
|
|
|
# No necesitamos los archivos estáticos
|
|
def retrieve_static_files(_, _); end
|
|
|
|
# Solo lee los datos
|
|
def read_data
|
|
@site.data = DataReader.new(site).read(site.config['data_dir'])
|
|
end
|
|
|
|
# Lee todos los artículos del sitio
|
|
def read_collections
|
|
read_directories
|
|
read_included_excludes
|
|
sort_files!
|
|
CollectionReader.new(site).read
|
|
end
|
|
end
|
|
|
|
# No necesitamos los archivos de la plantilla
|
|
ThemeAssetsReader.class_eval do
|
|
def read; end
|
|
end
|
|
|
|
# Aplazar la lectura del documento
|
|
Document.class_eval do
|
|
alias_method :read!, :read
|
|
def read; end
|
|
|
|
# Permitir restablecer el documento sin crear uno nuevo
|
|
def reset
|
|
@path = @extname = @has_yaml_header = @relative_path = nil
|
|
@basename_without_ext = @data = @basename = nil
|
|
@renderer = @url_placeholders = @url = nil
|
|
@to_liquid = @write_p = @excerpt_separator = @id = nil
|
|
@related_posts = @cleaned_relative_path = self.content = nil
|
|
end
|
|
end
|
|
|
|
# Prevenir la instanciación de Time
|
|
#
|
|
# @see {https://github.com/jekyll/jekyll/pull/8425}
|
|
Utils.class_eval do
|
|
def parse_date(input, msg = 'Input could not be parsed.')
|
|
@parse_date_cache ||= {}
|
|
@parse_date_cache[input] ||= Time.parse(input).localtime
|
|
rescue ArgumentError
|
|
raise Errors::InvalidDateError, "Invalid date '#{input}': #{msg}"
|
|
end
|
|
end
|
|
end
|
|
|
|
# JekyllData::Reader del plugin jekyll-data modifica Jekyll::Site#reader
|
|
# para también leer los datos que vienen en el theme.
|
|
module JekyllData
|
|
Reader.class_eval do
|
|
def read_data
|
|
super
|
|
read_theme_data
|
|
end
|
|
end
|
|
end
|