mirror of
https://0xacab.org/sutty/sutty
synced 2024-11-24 13:26:21 +00:00
fix: convertir valores en constantes
los structs se comportan extraño, es posible declararles constantes internamente, pero luego no pueden ser llamadas desde afuera, como una clase normal. al incluirlas como modulos es posible lograr el comportamiento esperado de una clase.
This commit is contained in:
parent
76fd32bd92
commit
68f3839ab1
1 changed files with 13 additions and 12 deletions
|
@ -1,11 +1,17 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
module MetadataBooleanConstants
|
||||
TRUE_VALUES = %w[1 on true].freeze
|
||||
end
|
||||
|
||||
# Implementa valores por sí o por no
|
||||
#
|
||||
# Esto es increíblemente difícil de lograr que salga bien!
|
||||
class MetadataBoolean < MetadataTemplate
|
||||
# El valor por defecto es una versión booleana de lo que diga (o no
|
||||
# diga) el esquema
|
||||
include MetadataBooleanConstants
|
||||
|
||||
# Devolver el valor desde el esquema y si no existe, por defecto es
|
||||
# false
|
||||
#
|
||||
# @return [Boolean]
|
||||
def default_value
|
||||
|
@ -28,28 +34,23 @@ class MetadataBoolean < MetadataTemplate
|
|||
# * '1' => true
|
||||
# * false
|
||||
# * true
|
||||
#
|
||||
# @todo Esto debería estar definido en sanitize o save
|
||||
def value
|
||||
case self[:value]
|
||||
when NilClass
|
||||
document.data.fetch(name.to_s, default_value)
|
||||
when String
|
||||
true_values.include? self[:value]
|
||||
TRUE_VALUES.include? self[:value]
|
||||
else
|
||||
self[:value]
|
||||
end
|
||||
end
|
||||
|
||||
# Siempre guardar el valor de este campo a menos que sea nulo
|
||||
#
|
||||
# @return [Boolean]
|
||||
def empty?
|
||||
value.nil?
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
# Los valores que evalúan a verdadero
|
||||
#
|
||||
# XXX: memoizamos porque Struct no puede declarar constantes.
|
||||
def true_values
|
||||
@true_values ||= %w[1 on true].freeze
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue