5
0
Fork 0
mirror of https://0xacab.org/sutty/sutty synced 2024-11-22 21:56:21 +00:00
panel/config/initializers/core_extensions.rb
f 3dacdf82bf testear que lo que diga sutty termine en jekyll
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.
2021-05-14 11:15:32 -03:00

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