💡 Repasa comentarios de la cabecera de funciones
This commit is contained in:
parent
c985744ab0
commit
0643948052
29 changed files with 182 additions and 182 deletions
|
|
@ -22,7 +22,7 @@ impl BorderColor {
|
||||||
const BORDER: &str = "border";
|
const BORDER: &str = "border";
|
||||||
const BORDER_PREFIX: &str = "border-";
|
const BORDER_PREFIX: &str = "border-";
|
||||||
|
|
||||||
// Devuelve el sufijo de la clase `border-*`, o `None` si no define ninguna clase.
|
/// Devuelve el sufijo de la clase `border-*`, o `None` si no define ninguna clase.
|
||||||
#[rustfmt::skip]
|
#[rustfmt::skip]
|
||||||
#[inline]
|
#[inline]
|
||||||
const fn suffix(self) -> Option<&'static str> {
|
const fn suffix(self) -> Option<&'static str> {
|
||||||
|
|
@ -35,7 +35,7 @@ impl BorderColor {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Añade la clase `border-*` a la cadena de clases.
|
/// Añade la clase `border-*` a la cadena de clases.
|
||||||
#[inline]
|
#[inline]
|
||||||
pub(crate) fn push_class(self, classes: &mut String) {
|
pub(crate) fn push_class(self, classes: &mut String) {
|
||||||
if let Some(suffix) = self.suffix() {
|
if let Some(suffix) = self.suffix() {
|
||||||
|
|
|
||||||
|
|
@ -19,7 +19,7 @@ pub enum BreakPoint {
|
||||||
}
|
}
|
||||||
|
|
||||||
impl BreakPoint {
|
impl BreakPoint {
|
||||||
// Devuelve la identificación del punto de ruptura.
|
/// Devuelve la identificación del punto de ruptura.
|
||||||
#[rustfmt::skip]
|
#[rustfmt::skip]
|
||||||
#[inline]
|
#[inline]
|
||||||
pub(crate) const fn as_str(self) -> &'static str {
|
pub(crate) const fn as_str(self) -> &'static str {
|
||||||
|
|
@ -33,11 +33,11 @@ impl BreakPoint {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Añade el punto de ruptura con un prefijo y un sufijo (opcional) separados por un guion `-` a
|
/// Añade el punto de ruptura con un prefijo y un sufijo (opcional) separados por un guion `-` a
|
||||||
// la cadena de clases.
|
/// la cadena de clases.
|
||||||
//
|
///
|
||||||
// - Para `None` - `prefix` o `prefix-suffix` (si `suffix` no está vacío).
|
/// - Para `None` - `prefix` o `prefix-suffix` (si `suffix` no está vacío).
|
||||||
// - Para `SM..XXL` - `prefix-{breakpoint}` o `prefix-{breakpoint}-{suffix}`.
|
/// - Para `SM..XXL` - `prefix-{breakpoint}` o `prefix-{breakpoint}-{suffix}`.
|
||||||
#[inline]
|
#[inline]
|
||||||
pub(crate) fn push_class(self, classes: &mut String, prefix: &str, suffix: &str) {
|
pub(crate) fn push_class(self, classes: &mut String, prefix: &str, suffix: &str) {
|
||||||
if prefix.is_empty() {
|
if prefix.is_empty() {
|
||||||
|
|
@ -60,28 +60,28 @@ impl BreakPoint {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Devuelve la clase para el punto de ruptura, con un prefijo y un sufijo opcional, separados
|
/// Devuelve la clase para el punto de ruptura, con un prefijo y un sufijo opcional, separados
|
||||||
// por un guion `-`.
|
/// por un guion `-`.
|
||||||
//
|
///
|
||||||
// - Para `None` - `prefix` o `prefix-suffix` (si `suffix` no está vacío).
|
/// - Para `None` - `prefix` o `prefix-suffix` (si `suffix` no está vacío).
|
||||||
// - Para `SM..XXL` - `prefix-{breakpoint}` o `prefix-{breakpoint}-{suffix}`.
|
/// - Para `SM..XXL` - `prefix-{breakpoint}` o `prefix-{breakpoint}-{suffix}`.
|
||||||
// - Si `prefix` está vacío devuelve `""`.
|
/// - Si `prefix` está vacío devuelve `""`.
|
||||||
//
|
///
|
||||||
// # Ejemplos
|
/// # Ejemplos
|
||||||
//
|
///
|
||||||
// ```rust
|
/// ```rust
|
||||||
// # use pagetop_bootsier::prelude::*;
|
/// # use pagetop_bootsier::prelude::*;
|
||||||
// let bp = BreakPoint::MD;
|
/// let bp = BreakPoint::MD;
|
||||||
// assert_eq!(bp.class_with("col", ""), "col-md");
|
/// assert_eq!(bp.class_with("col", ""), "col-md");
|
||||||
// assert_eq!(bp.class_with("col", "6"), "col-md-6");
|
/// assert_eq!(bp.class_with("col", "6"), "col-md-6");
|
||||||
//
|
///
|
||||||
// let bp = BreakPoint::None;
|
/// let bp = BreakPoint::None;
|
||||||
// assert_eq!(bp.class_with("offcanvas", ""), "offcanvas");
|
/// assert_eq!(bp.class_with("offcanvas", ""), "offcanvas");
|
||||||
// assert_eq!(bp.class_with("col", "12"), "col-12");
|
/// assert_eq!(bp.class_with("col", "12"), "col-12");
|
||||||
//
|
///
|
||||||
// let bp = BreakPoint::LG;
|
/// let bp = BreakPoint::LG;
|
||||||
// assert_eq!(bp.class_with("", "3"), "");
|
/// assert_eq!(bp.class_with("", "3"), "");
|
||||||
// ```
|
/// ```
|
||||||
#[inline]
|
#[inline]
|
||||||
pub(crate) fn class_with(self, prefix: &str, suffix: &str) -> String {
|
pub(crate) fn class_with(self, prefix: &str, suffix: &str) -> String {
|
||||||
if prefix.is_empty() {
|
if prefix.is_empty() {
|
||||||
|
|
|
||||||
|
|
@ -23,7 +23,7 @@ impl ButtonColor {
|
||||||
const BTN_OUTLINE_PREFIX: &str = "btn-outline-";
|
const BTN_OUTLINE_PREFIX: &str = "btn-outline-";
|
||||||
const BTN_LINK: &str = "btn-link";
|
const BTN_LINK: &str = "btn-link";
|
||||||
|
|
||||||
// Añade la clase `btn-*` a la cadena de clases.
|
/// Añade la clase `btn-*` a la cadena de clases.
|
||||||
#[inline]
|
#[inline]
|
||||||
pub(crate) fn push_class(self, classes: &mut String) {
|
pub(crate) fn push_class(self, classes: &mut String) {
|
||||||
if let Self::Default = self {
|
if let Self::Default = self {
|
||||||
|
|
@ -106,7 +106,7 @@ impl ButtonSize {
|
||||||
const BTN_SM: &str = "btn-sm";
|
const BTN_SM: &str = "btn-sm";
|
||||||
const BTN_LG: &str = "btn-lg";
|
const BTN_LG: &str = "btn-lg";
|
||||||
|
|
||||||
// Añade la clase de tamaño `btn-sm` o `btn-lg` a la cadena de clases.
|
/// Añade la clase de tamaño `btn-sm` o `btn-lg` a la cadena de clases.
|
||||||
#[inline]
|
#[inline]
|
||||||
pub(crate) fn push_class(self, classes: &mut String) {
|
pub(crate) fn push_class(self, classes: &mut String) {
|
||||||
if let Self::Default = self {
|
if let Self::Default = self {
|
||||||
|
|
|
||||||
|
|
@ -23,7 +23,7 @@ pub enum Color {
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Color {
|
impl Color {
|
||||||
// Devuelve el nombre del color.
|
/// Devuelve el nombre del color.
|
||||||
#[rustfmt::skip]
|
#[rustfmt::skip]
|
||||||
#[inline]
|
#[inline]
|
||||||
pub(crate) const fn as_str(self) -> &'static str {
|
pub(crate) const fn as_str(self) -> &'static str {
|
||||||
|
|
@ -94,7 +94,7 @@ impl Opacity {
|
||||||
const OPACITY: &str = "opacity";
|
const OPACITY: &str = "opacity";
|
||||||
const OPACITY_PREFIX: &str = "-opacity";
|
const OPACITY_PREFIX: &str = "-opacity";
|
||||||
|
|
||||||
// Devuelve el sufijo para `*opacity-*`, o `None` si no define ninguna clase.
|
/// Devuelve el sufijo para `*opacity-*`, o `None` si no define ninguna clase.
|
||||||
#[rustfmt::skip]
|
#[rustfmt::skip]
|
||||||
#[inline]
|
#[inline]
|
||||||
const fn suffix(self) -> Option<&'static str> {
|
const fn suffix(self) -> Option<&'static str> {
|
||||||
|
|
@ -109,8 +109,8 @@ impl Opacity {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Añade la opacidad a la cadena de clases usando el prefijo dado (`bg`, `border`, `text`, o
|
/// Añade la opacidad a la cadena de clases usando el prefijo dado (`bg`, `border`, `text`, o
|
||||||
// vacío para `opacity-*`).
|
/// vacío para `opacity-*`).
|
||||||
#[inline]
|
#[inline]
|
||||||
pub(crate) fn push_class(self, classes: &mut String, prefix: &str) {
|
pub(crate) fn push_class(self, classes: &mut String, prefix: &str) {
|
||||||
if let Some(suffix) = self.suffix() {
|
if let Some(suffix) = self.suffix() {
|
||||||
|
|
@ -127,18 +127,18 @@ impl Opacity {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Devuelve la clase de opacidad con el prefijo dado (`bg`, `border`, `text`, o vacío para
|
/// Devuelve la clase de opacidad con el prefijo dado (`bg`, `border`, `text`, o vacío para
|
||||||
// `opacity-*`).
|
/// `opacity-*`).
|
||||||
//
|
///
|
||||||
// # Ejemplos
|
/// # Ejemplos
|
||||||
//
|
///
|
||||||
// ```rust
|
/// ```rust
|
||||||
// # use pagetop_bootsier::prelude::*;
|
/// # use pagetop_bootsier::prelude::*;
|
||||||
// assert_eq!(Opacity::Opaque.class_with(""), "opacity-100");
|
/// assert_eq!(Opacity::Opaque.class_with(""), "opacity-100");
|
||||||
// assert_eq!(Opacity::Half.class_with("bg"), "bg-opacity-50");
|
/// assert_eq!(Opacity::Half.class_with("bg"), "bg-opacity-50");
|
||||||
// assert_eq!(Opacity::SemiTransparent.class_with("text"), "text-opacity-25");
|
/// assert_eq!(Opacity::SemiTransparent.class_with("text"), "text-opacity-25");
|
||||||
// assert_eq!(Opacity::Default.class_with("bg"), "");
|
/// assert_eq!(Opacity::Default.class_with("bg"), "");
|
||||||
// ```
|
/// ```
|
||||||
#[inline]
|
#[inline]
|
||||||
pub(crate) fn class_with(self, prefix: &str) -> String {
|
pub(crate) fn class_with(self, prefix: &str) -> String {
|
||||||
if let Some(suffix) = self.suffix() {
|
if let Some(suffix) = self.suffix() {
|
||||||
|
|
@ -206,7 +206,7 @@ impl ColorBg {
|
||||||
const BG: &str = "bg";
|
const BG: &str = "bg";
|
||||||
const BG_PREFIX: &str = "bg-";
|
const BG_PREFIX: &str = "bg-";
|
||||||
|
|
||||||
// Devuelve el sufijo de la clase `bg-*`, o `None` si no define ninguna clase.
|
/// Devuelve el sufijo de la clase `bg-*`, o `None` si no define ninguna clase.
|
||||||
#[rustfmt::skip]
|
#[rustfmt::skip]
|
||||||
#[inline]
|
#[inline]
|
||||||
const fn suffix(self) -> Option<&'static str> {
|
const fn suffix(self) -> Option<&'static str> {
|
||||||
|
|
@ -223,7 +223,7 @@ impl ColorBg {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Añade la clase de fondo `bg-*` a la cadena de clases.
|
/// Añade la clase de fondo `bg-*` a la cadena de clases.
|
||||||
#[inline]
|
#[inline]
|
||||||
pub(crate) fn push_class(self, classes: &mut String) {
|
pub(crate) fn push_class(self, classes: &mut String) {
|
||||||
if let Some(suffix) = self.suffix() {
|
if let Some(suffix) = self.suffix() {
|
||||||
|
|
@ -305,7 +305,7 @@ impl ColorText {
|
||||||
const TEXT: &str = "text";
|
const TEXT: &str = "text";
|
||||||
const TEXT_PREFIX: &str = "text-";
|
const TEXT_PREFIX: &str = "text-";
|
||||||
|
|
||||||
// Devuelve el sufijo de la clase `text-*`, o `None` si no define ninguna clase.
|
/// Devuelve el sufijo de la clase `text-*`, o `None` si no define ninguna clase.
|
||||||
#[rustfmt::skip]
|
#[rustfmt::skip]
|
||||||
#[inline]
|
#[inline]
|
||||||
const fn suffix(self) -> Option<&'static str> {
|
const fn suffix(self) -> Option<&'static str> {
|
||||||
|
|
@ -322,7 +322,7 @@ impl ColorText {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Añade la clase de texto `text-*` a la cadena de clases.
|
/// Añade la clase de texto `text-*` a la cadena de clases.
|
||||||
#[inline]
|
#[inline]
|
||||||
pub(crate) fn push_class(self, classes: &mut String) {
|
pub(crate) fn push_class(self, classes: &mut String) {
|
||||||
if let Some(suffix) = self.suffix() {
|
if let Some(suffix) = self.suffix() {
|
||||||
|
|
|
||||||
|
|
@ -25,8 +25,8 @@ pub enum ScaleSize {
|
||||||
}
|
}
|
||||||
|
|
||||||
impl ScaleSize {
|
impl ScaleSize {
|
||||||
// Devuelve el sufijo para el tamaño (`"-0"`, `"-1"`, etc.), o `None` si no define ninguna
|
/// Devuelve el sufijo para el tamaño (`"-0"`, `"-1"`, etc.), o `None` si no define ninguna
|
||||||
// clase, o `""` para el tamaño automático.
|
/// clase, o `""` para el tamaño automático.
|
||||||
#[rustfmt::skip]
|
#[rustfmt::skip]
|
||||||
#[inline]
|
#[inline]
|
||||||
const fn suffix(self) -> Option<&'static str> {
|
const fn suffix(self) -> Option<&'static str> {
|
||||||
|
|
@ -42,7 +42,7 @@ impl ScaleSize {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Añade el tamaño a la cadena de clases usando el prefijo dado.
|
/// Añade el tamaño a la cadena de clases usando el prefijo dado.
|
||||||
#[inline]
|
#[inline]
|
||||||
pub(crate) fn push_class(self, classes: &mut String, prefix: &str) {
|
pub(crate) fn push_class(self, classes: &mut String, prefix: &str) {
|
||||||
if !prefix.is_empty() {
|
if !prefix.is_empty() {
|
||||||
|
|
@ -57,16 +57,16 @@ impl ScaleSize {
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Devuelve la clase del tamaño para el prefijo, o una cadena vacía si no aplica (reservado).
|
/* Devuelve la clase del tamaño para el prefijo, o una cadena vacía si no aplica (reservado).
|
||||||
//
|
///
|
||||||
// # Ejemplo
|
/// # Ejemplo
|
||||||
//
|
///
|
||||||
// ```rust
|
/// ```rust
|
||||||
// # use pagetop_bootsier::prelude::*;
|
/// # use pagetop_bootsier::prelude::*;
|
||||||
// assert_eq!(ScaleSize::Auto.class_with("border"), "border");
|
/// assert_eq!(ScaleSize::Auto.class_with("border"), "border");
|
||||||
// assert_eq!(ScaleSize::Zero.class_with("m"), "m-0");
|
/// assert_eq!(ScaleSize::Zero.class_with("m"), "m-0");
|
||||||
// assert_eq!(ScaleSize::Three.class_with("p"), "p-3");
|
/// assert_eq!(ScaleSize::Three.class_with("p"), "p-3");
|
||||||
// assert_eq!(ScaleSize::None.class_with("border"), "");
|
/// assert_eq!(ScaleSize::None.class_with("border"), "");
|
||||||
// ```
|
/// ```
|
||||||
#[inline]
|
#[inline]
|
||||||
pub(crate) fn class_with(self, prefix: &str) -> String {
|
pub(crate) fn class_with(self, prefix: &str) -> String {
|
||||||
if !prefix.is_empty() {
|
if !prefix.is_empty() {
|
||||||
|
|
|
||||||
|
|
@ -29,8 +29,8 @@ pub enum RoundedRadius {
|
||||||
impl RoundedRadius {
|
impl RoundedRadius {
|
||||||
const ROUNDED: &str = "rounded";
|
const ROUNDED: &str = "rounded";
|
||||||
|
|
||||||
// Devuelve el sufijo para `*rounded-*`, o `None` si no define ninguna clase, o `""` para el
|
/// Devuelve el sufijo para `*rounded-*`, o `None` si no define ninguna clase, o `""` para el
|
||||||
// redondeo por defecto.
|
/// redondeo por defecto.
|
||||||
#[rustfmt::skip]
|
#[rustfmt::skip]
|
||||||
#[inline]
|
#[inline]
|
||||||
const fn suffix(self) -> Option<&'static str> {
|
const fn suffix(self) -> Option<&'static str> {
|
||||||
|
|
@ -48,8 +48,8 @@ impl RoundedRadius {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Añade el redondeo de esquinas a la cadena de clases usando el prefijo dado (`rounded-top`,
|
/// Añade el redondeo de esquinas a la cadena de clases usando el prefijo dado (`rounded-top`,
|
||||||
// `rounded-bottom-start`, o vacío para `rounded-*`).
|
/// `rounded-bottom-start`, o vacío para `rounded-*`).
|
||||||
#[inline]
|
#[inline]
|
||||||
pub(crate) fn push_class(self, classes: &mut String, prefix: &str) {
|
pub(crate) fn push_class(self, classes: &mut String, prefix: &str) {
|
||||||
if let Some(suffix) = self.suffix() {
|
if let Some(suffix) = self.suffix() {
|
||||||
|
|
@ -65,19 +65,19 @@ impl RoundedRadius {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Devuelve la clase para el redondeo de esquinas con el prefijo dado (`rounded-top`,
|
/// Devuelve la clase para el redondeo de esquinas con el prefijo dado (`rounded-top`,
|
||||||
// `rounded-bottom-start`, o vacío para `rounded-*`).
|
/// `rounded-bottom-start`, o vacío para `rounded-*`).
|
||||||
//
|
///
|
||||||
// # Ejemplos
|
/// # Ejemplos
|
||||||
//
|
///
|
||||||
// ```rust
|
/// ```rust
|
||||||
// # use pagetop_bootsier::prelude::*;
|
/// # use pagetop_bootsier::prelude::*;
|
||||||
// assert_eq!(RoundedRadius::Scale2.class_with(""), "rounded-2");
|
/// assert_eq!(RoundedRadius::Scale2.class_with(""), "rounded-2");
|
||||||
// assert_eq!(RoundedRadius::Zero.class_with("rounded-top"), "rounded-top-0");
|
/// assert_eq!(RoundedRadius::Zero.class_with("rounded-top"), "rounded-top-0");
|
||||||
// assert_eq!(RoundedRadius::Scale3.class_with("rounded-top-end"), "rounded-top-end-3");
|
/// assert_eq!(RoundedRadius::Scale3.class_with("rounded-top-end"), "rounded-top-end-3");
|
||||||
// assert_eq!(RoundedRadius::Circle.class_with(""), "rounded-circle");
|
/// assert_eq!(RoundedRadius::Circle.class_with(""), "rounded-circle");
|
||||||
// assert_eq!(RoundedRadius::None.class_with("rounded-bottom-start"), "");
|
/// assert_eq!(RoundedRadius::None.class_with("rounded-bottom-start"), "");
|
||||||
// ```
|
/// ```
|
||||||
#[inline]
|
#[inline]
|
||||||
pub(crate) fn class_with(self, prefix: &str) -> String {
|
pub(crate) fn class_with(self, prefix: &str) -> String {
|
||||||
if let Some(suffix) = self.suffix() {
|
if let Some(suffix) = self.suffix() {
|
||||||
|
|
|
||||||
|
|
@ -48,7 +48,7 @@ impl Margin {
|
||||||
|
|
||||||
// **< Margin HELPERS >*************************************************************************
|
// **< Margin HELPERS >*************************************************************************
|
||||||
|
|
||||||
// Devuelve el prefijo `m*` según el lado.
|
/// Devuelve el prefijo `m*` según el lado.
|
||||||
#[rustfmt::skip]
|
#[rustfmt::skip]
|
||||||
#[inline]
|
#[inline]
|
||||||
const fn side_prefix(&self) -> &'static str {
|
const fn side_prefix(&self) -> &'static str {
|
||||||
|
|
@ -63,7 +63,7 @@ impl Margin {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Devuelve el sufijo del tamaño (`auto`, `0`..`5`), o `None` si no define clase.
|
/// Devuelve el sufijo del tamaño (`auto`, `0`..`5`), o `None` si no define clase.
|
||||||
#[rustfmt::skip]
|
#[rustfmt::skip]
|
||||||
#[inline]
|
#[inline]
|
||||||
const fn size_suffix(&self) -> Option<&'static str> {
|
const fn size_suffix(&self) -> Option<&'static str> {
|
||||||
|
|
@ -80,8 +80,8 @@ impl Margin {
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Añade la clase de **margin** a la cadena de clases (reservado).
|
/* Añade la clase de **margin** a la cadena de clases (reservado).
|
||||||
//
|
///
|
||||||
// No añade nada si `size` es `ScaleSize::None`.
|
/// No añade nada si `size` es `ScaleSize::None`.
|
||||||
#[inline]
|
#[inline]
|
||||||
pub(crate) fn push_class(self, classes: &mut String) {
|
pub(crate) fn push_class(self, classes: &mut String) {
|
||||||
let Some(size) = self.size_suffix() else {
|
let Some(size) = self.size_suffix() else {
|
||||||
|
|
@ -148,7 +148,7 @@ impl Padding {
|
||||||
|
|
||||||
// **< Padding HELPERS >************************************************************************
|
// **< Padding HELPERS >************************************************************************
|
||||||
|
|
||||||
// Devuelve el prefijo `p*` según el lado.
|
/// Devuelve el prefijo `p*` según el lado.
|
||||||
#[rustfmt::skip]
|
#[rustfmt::skip]
|
||||||
#[inline]
|
#[inline]
|
||||||
const fn prefix(&self) -> &'static str {
|
const fn prefix(&self) -> &'static str {
|
||||||
|
|
@ -163,9 +163,9 @@ impl Padding {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Devuelve el sufijo del tamaño (`0`..`5`), o `None` si no define clase.
|
/// Devuelve el sufijo del tamaño (`0`..`5`), o `None` si no define clase.
|
||||||
//
|
///
|
||||||
// Nota: `ScaleSize::Auto` **no aplica** a padding ⇒ devuelve `None`.
|
/// Nota: `ScaleSize::Auto` **no aplica** a padding ⇒ devuelve `None`.
|
||||||
#[rustfmt::skip]
|
#[rustfmt::skip]
|
||||||
#[inline]
|
#[inline]
|
||||||
const fn suffix(&self) -> Option<&'static str> {
|
const fn suffix(&self) -> Option<&'static str> {
|
||||||
|
|
@ -182,8 +182,8 @@ impl Padding {
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Añade la clase de **padding** a la cadena de clases (reservado).
|
/* Añade la clase de **padding** a la cadena de clases (reservado).
|
||||||
//
|
///
|
||||||
// No añade nada si `size` es `ScaleSize::None` o `ScaleSize::Auto`.
|
/// No añade nada si `size` es `ScaleSize::None` o `ScaleSize::Auto`.
|
||||||
#[inline]
|
#[inline]
|
||||||
pub(crate) fn push_class(self, classes: &mut String) {
|
pub(crate) fn push_class(self, classes: &mut String) {
|
||||||
let Some(size) = self.suffix() else {
|
let Some(size) = self.suffix() else {
|
||||||
|
|
@ -192,9 +192,9 @@ impl Padding {
|
||||||
self.breakpoint.push_class(classes, self.prefix(), size);
|
self.breakpoint.push_class(classes, self.prefix(), size);
|
||||||
} */
|
} */
|
||||||
|
|
||||||
// Devuelve la clase de **padding** como cadena (`"px-2"`, `"pe-sm-4"`, etc.).
|
/// Devuelve la clase de **padding** como cadena (`"px-2"`, `"pe-sm-4"`, etc.).
|
||||||
//
|
///
|
||||||
// Si `size` es `ScaleSize::None` o `ScaleSize::Auto`, devuelve `""`.
|
/// Si `size` es `ScaleSize::None` o `ScaleSize::Auto`, devuelve `""`.
|
||||||
#[inline]
|
#[inline]
|
||||||
pub fn to_class(self) -> String {
|
pub fn to_class(self) -> String {
|
||||||
let Some(size) = self.suffix() else {
|
let Some(size) = self.suffix() else {
|
||||||
|
|
|
||||||
|
|
@ -22,7 +22,7 @@ pub enum AutoClose {
|
||||||
}
|
}
|
||||||
|
|
||||||
impl AutoClose {
|
impl AutoClose {
|
||||||
// Devuelve el valor para `data-bs-auto-close`, o `None` si es el comportamiento por defecto.
|
/// Devuelve el valor para `data-bs-auto-close`, o `None` si es el comportamiento por defecto.
|
||||||
#[rustfmt::skip]
|
#[rustfmt::skip]
|
||||||
#[inline]
|
#[inline]
|
||||||
pub(crate) const fn as_str(self) -> Option<&'static str> {
|
pub(crate) const fn as_str(self) -> Option<&'static str> {
|
||||||
|
|
@ -59,7 +59,7 @@ pub enum Direction {
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Direction {
|
impl Direction {
|
||||||
// Mapea la dirección teniendo en cuenta si se agrupa con otros menús [`Dropdown`].
|
/// Mapea la dirección teniendo en cuenta si se agrupa con otros menús [`Dropdown`].
|
||||||
#[rustfmt::skip ]
|
#[rustfmt::skip ]
|
||||||
#[inline]
|
#[inline]
|
||||||
const fn as_str(self, grouped: bool) -> &'static str {
|
const fn as_str(self, grouped: bool) -> &'static str {
|
||||||
|
|
@ -74,8 +74,8 @@ impl Direction {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Añade la dirección de despliegue a la cadena de clases teniendo en cuenta si se agrupa con
|
/// Añade la dirección de despliegue a la cadena de clases teniendo en cuenta si se agrupa con
|
||||||
// otros menús [`Dropdown`].
|
/// otros menús [`Dropdown`].
|
||||||
#[inline]
|
#[inline]
|
||||||
pub(crate) fn push_class(self, classes: &mut String, grouped: bool) {
|
pub(crate) fn push_class(self, classes: &mut String, grouped: bool) {
|
||||||
if grouped {
|
if grouped {
|
||||||
|
|
@ -93,8 +93,8 @@ impl Direction {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Devuelve la clase asociada a la dirección teniendo en cuenta si se agrupa con otros menús
|
/// Devuelve la clase asociada a la dirección teniendo en cuenta si se agrupa con otros menús
|
||||||
// [`Dropdown`], o `""` si no corresponde ninguna.
|
/// [`Dropdown`], o `""` si no corresponde ninguna.
|
||||||
#[inline]
|
#[inline]
|
||||||
pub(crate) fn class_with(self, grouped: bool) -> String {
|
pub(crate) fn class_with(self, grouped: bool) -> String {
|
||||||
let mut classes = String::new();
|
let mut classes = String::new();
|
||||||
|
|
@ -138,7 +138,7 @@ impl MenuAlign {
|
||||||
classes.push_str(class);
|
classes.push_str(class);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Añade las clases de alineación a `classes` (sin incluir la base `dropdown-menu`).
|
/// Añade las clases de alineación a `classes` (sin incluir la base `dropdown-menu`).
|
||||||
#[inline]
|
#[inline]
|
||||||
pub(crate) fn push_class(self, classes: &mut String) {
|
pub(crate) fn push_class(self, classes: &mut String) {
|
||||||
match self {
|
match self {
|
||||||
|
|
@ -206,7 +206,7 @@ pub enum MenuPosition {
|
||||||
}
|
}
|
||||||
|
|
||||||
impl MenuPosition {
|
impl MenuPosition {
|
||||||
// Devuelve el valor para `data-bs-offset` o `None` si no aplica.
|
/// Devuelve el valor para `data-bs-offset` o `None` si no aplica.
|
||||||
#[inline]
|
#[inline]
|
||||||
pub(crate) fn data_offset(self) -> Option<String> {
|
pub(crate) fn data_offset(self) -> Option<String> {
|
||||||
match self {
|
match self {
|
||||||
|
|
@ -215,7 +215,7 @@ impl MenuPosition {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Devuelve el valor para `data-bs-reference` o `None` si no aplica.
|
/// Devuelve el valor para `data-bs-reference` o `None` si no aplica.
|
||||||
#[inline]
|
#[inline]
|
||||||
pub(crate) fn data_reference(self) -> Option<&'static str> {
|
pub(crate) fn data_reference(self) -> Option<&'static str> {
|
||||||
match self {
|
match self {
|
||||||
|
|
|
||||||
|
|
@ -31,7 +31,7 @@ pub enum Size {
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Size {
|
impl Size {
|
||||||
// Devuelve el valor del atributo `style` en función del tamaño, o `None` si no aplica.
|
/// Devuelve el valor del atributo `style` en función del tamaño, o `None` si no aplica.
|
||||||
#[inline]
|
#[inline]
|
||||||
pub(crate) fn to_style(self) -> Option<String> {
|
pub(crate) fn to_style(self) -> Option<String> {
|
||||||
match self {
|
match self {
|
||||||
|
|
@ -70,7 +70,7 @@ impl Source {
|
||||||
const IMG_FLUID: &str = "img-fluid";
|
const IMG_FLUID: &str = "img-fluid";
|
||||||
const IMG_THUMBNAIL: &str = "img-thumbnail";
|
const IMG_THUMBNAIL: &str = "img-thumbnail";
|
||||||
|
|
||||||
// Devuelve la clase base asociada a la imagen según la fuente.
|
/// Devuelve la clase base asociada a la imagen según la fuente.
|
||||||
#[inline]
|
#[inline]
|
||||||
fn as_str(&self) -> &'static str {
|
fn as_str(&self) -> &'static str {
|
||||||
match self {
|
match self {
|
||||||
|
|
@ -93,7 +93,7 @@ impl Source {
|
||||||
classes.push_str(s);
|
classes.push_str(s);
|
||||||
} */
|
} */
|
||||||
|
|
||||||
// Devuelve la clase asociada a la imagen según la fuente.
|
/// Devuelve la clase asociada a la imagen según la fuente.
|
||||||
#[inline]
|
#[inline]
|
||||||
pub(crate) fn to_class(&self) -> String {
|
pub(crate) fn to_class(&self) -> String {
|
||||||
let s = self.as_str();
|
let s = self.as_str();
|
||||||
|
|
|
||||||
|
|
@ -60,7 +60,7 @@ impl ItemKind {
|
||||||
classes.push_str(class);
|
classes.push_str(class);
|
||||||
} */
|
} */
|
||||||
|
|
||||||
// Devuelve las clases asociadas al tipo de elemento.
|
/// Devuelve las clases asociadas al tipo de elemento.
|
||||||
#[inline]
|
#[inline]
|
||||||
pub(crate) fn to_class(&self) -> String {
|
pub(crate) fn to_class(&self) -> String {
|
||||||
self.as_str().to_owned()
|
self.as_str().to_owned()
|
||||||
|
|
|
||||||
|
|
@ -21,7 +21,7 @@ impl Kind {
|
||||||
const PILLS: &str = "nav-pills";
|
const PILLS: &str = "nav-pills";
|
||||||
const UNDERLINE: &str = "nav-underline";
|
const UNDERLINE: &str = "nav-underline";
|
||||||
|
|
||||||
// Devuelve la clase base asociada al tipo de menú, o una cadena vacía si no aplica.
|
/// Devuelve la clase base asociada al tipo de menú, o una cadena vacía si no aplica.
|
||||||
#[rustfmt::skip]
|
#[rustfmt::skip]
|
||||||
#[inline]
|
#[inline]
|
||||||
const fn as_str(self) -> &'static str {
|
const fn as_str(self) -> &'static str {
|
||||||
|
|
@ -33,7 +33,7 @@ impl Kind {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Añade la clase asociada al tipo de menú a la cadena de clases.
|
/// Añade la clase asociada al tipo de menú a la cadena de clases.
|
||||||
#[inline]
|
#[inline]
|
||||||
pub(crate) fn push_class(self, classes: &mut String) {
|
pub(crate) fn push_class(self, classes: &mut String) {
|
||||||
let class = self.as_str();
|
let class = self.as_str();
|
||||||
|
|
@ -83,7 +83,7 @@ impl Layout {
|
||||||
const FILL: &str = "nav-fill";
|
const FILL: &str = "nav-fill";
|
||||||
const JUSTIFIED: &str = "nav-justified";
|
const JUSTIFIED: &str = "nav-justified";
|
||||||
|
|
||||||
// Devuelve la clase base asociada a la distribución y orientación del menú.
|
/// Devuelve la clase base asociada a la distribución y orientación del menú.
|
||||||
#[rustfmt::skip]
|
#[rustfmt::skip]
|
||||||
#[inline]
|
#[inline]
|
||||||
const fn as_str(self) -> &'static str {
|
const fn as_str(self) -> &'static str {
|
||||||
|
|
@ -98,7 +98,7 @@ impl Layout {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Añade la clase asociada a la distribución y orientación del menú a la cadena de clases.
|
/// Añade la clase asociada a la distribución y orientación del menú a la cadena de clases.
|
||||||
#[inline]
|
#[inline]
|
||||||
pub(crate) fn push_class(self, classes: &mut String) {
|
pub(crate) fn push_class(self, classes: &mut String) {
|
||||||
let class = self.as_str();
|
let class = self.as_str();
|
||||||
|
|
@ -112,7 +112,7 @@ impl Layout {
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Devuelve la clase asociada a la distribución y orientación del menú, o una cadena vacía si no
|
/* Devuelve la clase asociada a la distribución y orientación del menú, o una cadena vacía si no
|
||||||
// aplica (reservado).
|
/// aplica (reservado).
|
||||||
#[inline]
|
#[inline]
|
||||||
pub(crate) fn to_class(self) -> String {
|
pub(crate) fn to_class(self) -> String {
|
||||||
self.as_str().to_owned()
|
self.as_str().to_owned()
|
||||||
|
|
|
||||||
|
|
@ -64,7 +64,7 @@ pub enum Position {
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Position {
|
impl Position {
|
||||||
// Devuelve la clase base asociada a la posición de la barra de navegación.
|
/// Devuelve la clase base asociada a la posición de la barra de navegación.
|
||||||
#[inline]
|
#[inline]
|
||||||
const fn as_str(self) -> &'static str {
|
const fn as_str(self) -> &'static str {
|
||||||
match self {
|
match self {
|
||||||
|
|
@ -76,7 +76,7 @@ impl Position {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Añade la clase asociada a la posición de la barra de navegación a la cadena de clases.
|
/// Añade la clase asociada a la posición de la barra de navegación a la cadena de clases.
|
||||||
#[inline]
|
#[inline]
|
||||||
pub(crate) fn push_class(self, classes: &mut String) {
|
pub(crate) fn push_class(self, classes: &mut String) {
|
||||||
let class = self.as_str();
|
let class = self.as_str();
|
||||||
|
|
@ -90,7 +90,7 @@ impl Position {
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Devuelve la clase asociada a la posición de la barra de navegación, o cadena vacía si no
|
/* Devuelve la clase asociada a la posición de la barra de navegación, o cadena vacía si no
|
||||||
// aplica (reservado).
|
/// aplica (reservado).
|
||||||
#[inline]
|
#[inline]
|
||||||
pub(crate) fn to_class(self) -> String {
|
pub(crate) fn to_class(self) -> String {
|
||||||
self.as_str().to_string()
|
self.as_str().to_string()
|
||||||
|
|
|
||||||
|
|
@ -48,7 +48,7 @@ pub enum Placement {
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Placement {
|
impl Placement {
|
||||||
// Devuelve la clase base asociada a la posición de aparición del panel.
|
/// Devuelve la clase base asociada a la posición de aparición del panel.
|
||||||
#[rustfmt::skip]
|
#[rustfmt::skip]
|
||||||
#[inline]
|
#[inline]
|
||||||
const fn as_str(self) -> &'static str {
|
const fn as_str(self) -> &'static str {
|
||||||
|
|
@ -60,7 +60,7 @@ impl Placement {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Añade la clase asociada a la posición de aparición del panel a la cadena de clases.
|
/// Añade la clase asociada a la posición de aparición del panel a la cadena de clases.
|
||||||
#[inline]
|
#[inline]
|
||||||
pub(crate) fn push_class(self, classes: &mut String) {
|
pub(crate) fn push_class(self, classes: &mut String) {
|
||||||
if !classes.is_empty() {
|
if !classes.is_empty() {
|
||||||
|
|
@ -89,7 +89,7 @@ pub enum Visibility {
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Visibility {
|
impl Visibility {
|
||||||
// Devuelve la clase base asociada al estado inicial del panel.
|
/// Devuelve la clase base asociada al estado inicial del panel.
|
||||||
#[inline]
|
#[inline]
|
||||||
const fn as_str(self) -> &'static str {
|
const fn as_str(self) -> &'static str {
|
||||||
match self {
|
match self {
|
||||||
|
|
@ -98,7 +98,7 @@ impl Visibility {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Añade la clase asociada al estado inicial del panel a la cadena de clases.
|
/// Añade la clase asociada al estado inicial del panel a la cadena de clases.
|
||||||
#[inline]
|
#[inline]
|
||||||
pub(crate) fn push_class(self, classes: &mut String) {
|
pub(crate) fn push_class(self, classes: &mut String) {
|
||||||
let class = self.as_str();
|
let class = self.as_str();
|
||||||
|
|
|
||||||
|
|
@ -104,7 +104,7 @@ use pagetop::prelude::*;
|
||||||
pub struct MyExtension;
|
pub struct MyExtension;
|
||||||
|
|
||||||
impl Extension for MyExtension {
|
impl Extension for MyExtension {
|
||||||
// Servicio web que publica los recursos de `guides` en `/ruta/a/guides`.
|
/// Servicio web que publica los recursos de `guides` en `/ruta/a/guides`.
|
||||||
fn configure_service(&self, scfg: &mut service::web::ServiceConfig) {
|
fn configure_service(&self, scfg: &mut service::web::ServiceConfig) {
|
||||||
static_files_service!(scfg, guides => "/ruta/a/guides");
|
static_files_service!(scfg, guides => "/ruta/a/guides");
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -50,7 +50,7 @@ impl Application {
|
||||||
Self::internal_prepare(Some(root_extension))
|
Self::internal_prepare(Some(root_extension))
|
||||||
}
|
}
|
||||||
|
|
||||||
// Método interno para preparar la aplicación, opcionalmente con una extensión.
|
/// Método interno para preparar la aplicación, opcionalmente con una extensión.
|
||||||
fn internal_prepare(root_extension: Option<ExtensionRef>) -> Self {
|
fn internal_prepare(root_extension: Option<ExtensionRef>) -> Self {
|
||||||
// Al arrancar muestra una cabecera para la aplicación.
|
// Al arrancar muestra una cabecera para la aplicación.
|
||||||
Self::show_banner();
|
Self::show_banner();
|
||||||
|
|
@ -73,7 +73,7 @@ impl Application {
|
||||||
Self
|
Self
|
||||||
}
|
}
|
||||||
|
|
||||||
// Muestra una cabecera para la aplicación basada en la configuración.
|
/// Muestra una cabecera para la aplicación basada en la configuración.
|
||||||
fn show_banner() {
|
fn show_banner() {
|
||||||
use colored::Colorize;
|
use colored::Colorize;
|
||||||
use terminal_size::{terminal_size, Width};
|
use terminal_size::{terminal_size, Width};
|
||||||
|
|
@ -164,7 +164,7 @@ impl Application {
|
||||||
Self::service_app()
|
Self::service_app()
|
||||||
}
|
}
|
||||||
|
|
||||||
// Configura el servicio web de la aplicación.
|
/// Configura el servicio web de la aplicación.
|
||||||
fn service_app() -> service::App<
|
fn service_app() -> service::App<
|
||||||
impl service::Factory<
|
impl service::Factory<
|
||||||
service::Request,
|
service::Request,
|
||||||
|
|
|
||||||
|
|
@ -52,7 +52,7 @@ impl<C: Component> AfterRender<C> {
|
||||||
self
|
self
|
||||||
}
|
}
|
||||||
|
|
||||||
// Despacha las acciones.
|
/// Despacha las acciones.
|
||||||
#[inline]
|
#[inline]
|
||||||
pub(crate) fn dispatch(component: &mut C, cx: &mut Context) {
|
pub(crate) fn dispatch(component: &mut C, cx: &mut Context) {
|
||||||
// Primero despacha las acciones para el tipo de componente.
|
// Primero despacha las acciones para el tipo de componente.
|
||||||
|
|
|
||||||
|
|
@ -52,7 +52,7 @@ impl<C: Component> BeforeRender<C> {
|
||||||
self
|
self
|
||||||
}
|
}
|
||||||
|
|
||||||
// Despacha las acciones.
|
/// Despacha las acciones.
|
||||||
#[inline]
|
#[inline]
|
||||||
pub(crate) fn dispatch(component: &mut C, cx: &mut Context) {
|
pub(crate) fn dispatch(component: &mut C, cx: &mut Context) {
|
||||||
// Primero despacha las acciones para el tipo de componente.
|
// Primero despacha las acciones para el tipo de componente.
|
||||||
|
|
|
||||||
|
|
@ -34,7 +34,7 @@ impl AfterRenderBody {
|
||||||
self
|
self
|
||||||
}
|
}
|
||||||
|
|
||||||
// Despacha las acciones.
|
/// Despacha las acciones.
|
||||||
#[inline(always)]
|
#[inline(always)]
|
||||||
#[allow(clippy::inline_always)]
|
#[allow(clippy::inline_always)]
|
||||||
pub(crate) fn dispatch(page: &mut Page) {
|
pub(crate) fn dispatch(page: &mut Page) {
|
||||||
|
|
|
||||||
|
|
@ -34,7 +34,7 @@ impl BeforeRenderBody {
|
||||||
self
|
self
|
||||||
}
|
}
|
||||||
|
|
||||||
// Despacha las acciones.
|
/// Despacha las acciones.
|
||||||
#[inline(always)]
|
#[inline(always)]
|
||||||
#[allow(clippy::inline_always)]
|
#[allow(clippy::inline_always)]
|
||||||
pub(crate) fn dispatch(page: &mut Page) {
|
pub(crate) fn dispatch(page: &mut Page) {
|
||||||
|
|
|
||||||
|
|
@ -34,7 +34,7 @@ impl<C: Component> AfterRender<C> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Despacha las acciones.
|
/// Despacha las acciones.
|
||||||
#[inline]
|
#[inline]
|
||||||
pub(crate) fn dispatch(component: &mut C, cx: &mut Context) {
|
pub(crate) fn dispatch(component: &mut C, cx: &mut Context) {
|
||||||
dispatch_actions(
|
dispatch_actions(
|
||||||
|
|
|
||||||
|
|
@ -34,7 +34,7 @@ impl<C: Component> BeforeRender<C> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Despacha las acciones.
|
/// Despacha las acciones.
|
||||||
#[inline]
|
#[inline]
|
||||||
pub(crate) fn dispatch(component: &mut C, cx: &mut Context) {
|
pub(crate) fn dispatch(component: &mut C, cx: &mut Context) {
|
||||||
dispatch_actions(
|
dispatch_actions(
|
||||||
|
|
|
||||||
|
|
@ -41,7 +41,7 @@ impl<C: Component> PrepareRender<C> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Despacha las acciones. Se detiene en cuanto una renderiza.
|
/// Despacha las acciones. Se detiene en cuanto una renderiza.
|
||||||
#[inline]
|
#[inline]
|
||||||
pub(crate) fn dispatch(component: &C, cx: &mut Context) -> PrepareMarkup {
|
pub(crate) fn dispatch(component: &C, cx: &mut Context) -> PrepareMarkup {
|
||||||
let mut render_component = PrepareMarkup::None;
|
let mut render_component = PrepareMarkup::None;
|
||||||
|
|
|
||||||
44
src/core.rs
44
src/core.rs
|
|
@ -30,28 +30,28 @@ impl TypeInfo {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Extrae un rango de segmentos de `type_name` (tokens separados por `::`).
|
/// Extrae un rango de segmentos de `type_name` (tokens separados por `::`).
|
||||||
//
|
///
|
||||||
// Los argumentos `start` y `end` identifican los índices de los segmentos teniendo en cuenta:
|
/// Los argumentos `start` y `end` identifican los índices de los segmentos teniendo en cuenta:
|
||||||
//
|
///
|
||||||
// * Los índices positivos cuentan **desde la izquierda**, empezando en `0`.
|
/// * Los índices positivos cuentan **desde la izquierda**, empezando en `0`.
|
||||||
// * Los índices negativos cuentan **desde la derecha**, `-1` es el último.
|
/// * Los índices negativos cuentan **desde la derecha**, `-1` es el último.
|
||||||
// * Si `end` es `None`, el corte llega hasta el último segmento.
|
/// * Si `end` es `None`, el corte llega hasta el último segmento.
|
||||||
// * Si la selección resulta vacía por índices desordenados o segmento inexistente, se devuelve
|
/// * Si la selección resulta vacía por índices desordenados o segmento inexistente, se devuelve
|
||||||
// la cadena vacía.
|
/// la cadena vacía.
|
||||||
//
|
///
|
||||||
// Ejemplos (con `type_name = "alloc::vec::Vec<i32>"`):
|
/// Ejemplos (con `type_name = "alloc::vec::Vec<i32>"`):
|
||||||
//
|
///
|
||||||
// | Llamada | Resultado |
|
/// | Llamada | Resultado |
|
||||||
// |------------------------------|--------------------------|
|
/// |------------------------------|--------------------------|
|
||||||
// | `partial(..., 0, None)` | `"alloc::vec::Vec<i32>"` |
|
/// | `partial(..., 0, None)` | `"alloc::vec::Vec<i32>"` |
|
||||||
// | `partial(..., 1, None)` | `"vec::Vec<i32>"` |
|
/// | `partial(..., 1, None)` | `"vec::Vec<i32>"` |
|
||||||
// | `partial(..., -1, None)` | `"Vec<i32>"` |
|
/// | `partial(..., -1, None)` | `"Vec<i32>"` |
|
||||||
// | `partial(..., 0, Some(-2))` | `"alloc::vec"` |
|
/// | `partial(..., 0, Some(-2))` | `"alloc::vec"` |
|
||||||
// | `partial(..., -5, None)` | `"alloc::vec::Vec<i32>"` |
|
/// | `partial(..., -5, None)` | `"alloc::vec::Vec<i32>"` |
|
||||||
//
|
///
|
||||||
// La porción devuelta vive tanto como `'static` porque `type_name` es `'static` y sólo se
|
/// La porción devuelta vive tanto como `'static` porque `type_name` es `'static` y sólo se
|
||||||
// presta.
|
/// presta.
|
||||||
fn partial(type_name: &'static str, start: isize, end: Option<isize>) -> &'static str {
|
fn partial(type_name: &'static str, start: isize, end: Option<isize>) -> &'static str {
|
||||||
let maxlen = type_name.len();
|
let maxlen = type_name.len();
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -12,13 +12,13 @@ static ACTIONS: LazyLock<RwLock<HashMap<ActionKey, ActionsList>>> =
|
||||||
|
|
||||||
// **< AÑADIR ACCIONES >****************************************************************************
|
// **< AÑADIR ACCIONES >****************************************************************************
|
||||||
|
|
||||||
// Registra una nueva acción en el sistema.
|
/// Registra una nueva acción en el sistema.
|
||||||
//
|
///
|
||||||
// Si ya existen acciones con la misma `ActionKey`, la acción se añade a la misma lista. Si no, se
|
/// Si ya existen acciones con la misma `ActionKey`, la acción se añade a la misma lista. Si no, se
|
||||||
// crea una nueva lista.
|
/// crea una nueva lista.
|
||||||
//
|
///
|
||||||
// Las extensiones llamarán a esta función durante su inicialización para instalar acciones
|
/// Las extensiones llamarán a esta función durante su inicialización para instalar acciones
|
||||||
// personalizadas que modifiquen el comportamiento del *core* o de otros componentes.
|
/// personalizadas que modifiquen el comportamiento del *core* o de otros componentes.
|
||||||
pub(crate) fn add_action(action: ActionBox) {
|
pub(crate) fn add_action(action: ActionBox) {
|
||||||
let key = ActionKey::new(
|
let key = ActionKey::new(
|
||||||
action.type_id(),
|
action.type_id(),
|
||||||
|
|
|
||||||
|
|
@ -55,7 +55,7 @@ impl Child {
|
||||||
|
|
||||||
// **< Child HELPERS >**************************************************************************
|
// **< Child HELPERS >**************************************************************************
|
||||||
|
|
||||||
// Devuelve el [`UniqueId`] del tipo del componente, si existe.
|
/// Devuelve el [`UniqueId`] del tipo del componente, si existe.
|
||||||
#[inline]
|
#[inline]
|
||||||
fn type_id(&self) -> Option<UniqueId> {
|
fn type_id(&self) -> Option<UniqueId> {
|
||||||
self.0.as_ref().map(|c| c.read().type_id())
|
self.0.as_ref().map(|c| c.read().type_id())
|
||||||
|
|
@ -156,7 +156,7 @@ impl<C: Component> Typed<C> {
|
||||||
|
|
||||||
// **< Typed HELPERS >**************************************************************************
|
// **< Typed HELPERS >**************************************************************************
|
||||||
|
|
||||||
// Método interno para convertir un componente tipado en un [`Child`].
|
/// Método interno para convertir un componente tipado en un [`Child`].
|
||||||
#[inline]
|
#[inline]
|
||||||
fn into(self) -> Child {
|
fn into(self) -> Child {
|
||||||
if let Some(c) = &self.0 {
|
if let Some(c) = &self.0 {
|
||||||
|
|
@ -216,7 +216,7 @@ impl Children {
|
||||||
Children::default().with_child(ChildOp::Add(child))
|
Children::default().with_child(ChildOp::Add(child))
|
||||||
}
|
}
|
||||||
|
|
||||||
// Fusiona varias listas de `Children` en una sola.
|
/// Fusiona varias listas de `Children` en una sola.
|
||||||
pub(crate) fn merge(mixes: &[Option<&Children>]) -> Self {
|
pub(crate) fn merge(mixes: &[Option<&Children>]) -> Self {
|
||||||
let mut opt = Children::default();
|
let mut opt = Children::default();
|
||||||
for m in mixes.iter().flatten() {
|
for m in mixes.iter().flatten() {
|
||||||
|
|
@ -321,7 +321,7 @@ impl Children {
|
||||||
|
|
||||||
// **< Children HELPERS >***********************************************************************
|
// **< Children HELPERS >***********************************************************************
|
||||||
|
|
||||||
// Añade más de un componente hijo al final de la lista (en el orden recibido).
|
/// Añade más de un componente hijo al final de la lista (en el orden recibido).
|
||||||
#[inline]
|
#[inline]
|
||||||
fn add_many<I>(&mut self, iter: I) -> &mut Self
|
fn add_many<I>(&mut self, iter: I) -> &mut Self
|
||||||
where
|
where
|
||||||
|
|
@ -331,7 +331,7 @@ impl Children {
|
||||||
self
|
self
|
||||||
}
|
}
|
||||||
|
|
||||||
// Inserta un hijo después del componente con el `id` dado, o al final si no se encuentra.
|
/// Inserta un hijo después del componente con el `id` dado, o al final si no se encuentra.
|
||||||
#[inline]
|
#[inline]
|
||||||
fn insert_after_id(&mut self, id: impl AsRef<str>, child: Child) -> &mut Self {
|
fn insert_after_id(&mut self, id: impl AsRef<str>, child: Child) -> &mut Self {
|
||||||
let id = Some(id.as_ref());
|
let id = Some(id.as_ref());
|
||||||
|
|
@ -342,7 +342,7 @@ impl Children {
|
||||||
self
|
self
|
||||||
}
|
}
|
||||||
|
|
||||||
// Inserta un hijo antes del componente con el `id` dado, o al principio si no se encuentra.
|
/// Inserta un hijo antes del componente con el `id` dado, o al principio si no se encuentra.
|
||||||
#[inline]
|
#[inline]
|
||||||
fn insert_before_id(&mut self, id: impl AsRef<str>, child: Child) -> &mut Self {
|
fn insert_before_id(&mut self, id: impl AsRef<str>, child: Child) -> &mut Self {
|
||||||
let id = Some(id.as_ref());
|
let id = Some(id.as_ref());
|
||||||
|
|
@ -353,14 +353,14 @@ impl Children {
|
||||||
self
|
self
|
||||||
}
|
}
|
||||||
|
|
||||||
// Inserta un hijo al principio de la colección.
|
/// Inserta un hijo al principio de la colección.
|
||||||
#[inline]
|
#[inline]
|
||||||
fn prepend(&mut self, child: Child) -> &mut Self {
|
fn prepend(&mut self, child: Child) -> &mut Self {
|
||||||
self.0.insert(0, child);
|
self.0.insert(0, child);
|
||||||
self
|
self
|
||||||
}
|
}
|
||||||
|
|
||||||
// Inserta más de un componente hijo al principio de la lista (manteniendo el orden recibido).
|
/// Inserta más de un componente hijo al principio de la lista (manteniendo el orden recibido).
|
||||||
#[inline]
|
#[inline]
|
||||||
fn prepend_many<I>(&mut self, iter: I) -> &mut Self
|
fn prepend_many<I>(&mut self, iter: I) -> &mut Self
|
||||||
where
|
where
|
||||||
|
|
@ -371,7 +371,7 @@ impl Children {
|
||||||
self
|
self
|
||||||
}
|
}
|
||||||
|
|
||||||
// Elimina el primer hijo con el `id` dado.
|
/// Elimina el primer hijo con el `id` dado.
|
||||||
#[inline]
|
#[inline]
|
||||||
fn remove_by_id(&mut self, id: impl AsRef<str>) -> &mut Self {
|
fn remove_by_id(&mut self, id: impl AsRef<str>) -> &mut Self {
|
||||||
let id = Some(id.as_ref());
|
let id = Some(id.as_ref());
|
||||||
|
|
@ -381,7 +381,7 @@ impl Children {
|
||||||
self
|
self
|
||||||
}
|
}
|
||||||
|
|
||||||
// Sustituye el primer hijo con el `id` dado por otro componente.
|
/// Sustituye el primer hijo con el `id` dado por otro componente.
|
||||||
#[inline]
|
#[inline]
|
||||||
fn replace_by_id(&mut self, id: impl AsRef<str>, child: Child) -> &mut Self {
|
fn replace_by_id(&mut self, id: impl AsRef<str>, child: Child) -> &mut Self {
|
||||||
let id = Some(id.as_ref());
|
let id = Some(id.as_ref());
|
||||||
|
|
@ -394,7 +394,7 @@ impl Children {
|
||||||
self
|
self
|
||||||
}
|
}
|
||||||
|
|
||||||
// Elimina todos los componentes hijo de la lista.
|
/// Elimina todos los componentes hijo de la lista.
|
||||||
#[inline]
|
#[inline]
|
||||||
fn reset(&mut self) -> &mut Self {
|
fn reset(&mut self) -> &mut Self {
|
||||||
self.0.clear();
|
self.0.clear();
|
||||||
|
|
|
||||||
|
|
@ -19,7 +19,7 @@ pub static DEFAULT_THEME: LazyLock<ThemeRef> =
|
||||||
|
|
||||||
// **< TEMA POR NOMBRE >****************************************************************************
|
// **< TEMA POR NOMBRE >****************************************************************************
|
||||||
|
|
||||||
// Devuelve el tema identificado por su [`short_name()`](AnyInfo::short_name).
|
/// Devuelve el tema identificado por su [`short_name()`](AnyInfo::short_name).
|
||||||
pub fn theme_by_short_name(short_name: &'static str) -> Option<ThemeRef> {
|
pub fn theme_by_short_name(short_name: &'static str) -> Option<ThemeRef> {
|
||||||
let short_name = short_name.to_lowercase();
|
let short_name = short_name.to_lowercase();
|
||||||
match THEMES
|
match THEMES
|
||||||
|
|
|
||||||
|
|
@ -106,7 +106,7 @@ impl PrepareMarkup {
|
||||||
self.render().into_string()
|
self.render().into_string()
|
||||||
}
|
}
|
||||||
|
|
||||||
// Integra el renderizado fácilmente en la macro [`html!`].
|
/// Integra el renderizado fácilmente en la macro [`html!`].
|
||||||
pub(crate) fn render(&self) -> Markup {
|
pub(crate) fn render(&self) -> Markup {
|
||||||
match self {
|
match self {
|
||||||
PrepareMarkup::None => html! {},
|
PrepareMarkup::None => html! {},
|
||||||
|
|
|
||||||
|
|
@ -113,14 +113,14 @@ impl Favicon {
|
||||||
self
|
self
|
||||||
}
|
}
|
||||||
|
|
||||||
// Función interna que centraliza la creación de las etiquetas `<link>`.
|
/// Función interna que centraliza la creación de las etiquetas `<link>`.
|
||||||
//
|
///
|
||||||
// - `icon_rel`: indica el tipo de recurso (`"icon"`, `"apple-touch-icon"`, etc.).
|
/// - `icon_rel`: indica el tipo de recurso (`"icon"`, `"apple-touch-icon"`, etc.).
|
||||||
// - `icon_source`: URL del recurso.
|
/// - `icon_source`: URL del recurso.
|
||||||
// - `icon_sizes`: tamaños opcionales.
|
/// - `icon_sizes`: tamaños opcionales.
|
||||||
// - `icon_color`: color opcional (solo relevante para `mask-icon`).
|
/// - `icon_color`: color opcional (solo relevante para `mask-icon`).
|
||||||
//
|
///
|
||||||
// También infiere automáticamente el tipo MIME (`type`) según la extensión del archivo.
|
/// También infiere automáticamente el tipo MIME (`type`) según la extensión del archivo.
|
||||||
fn add_icon_item(
|
fn add_icon_item(
|
||||||
mut self,
|
mut self,
|
||||||
icon_rel: &str,
|
icon_rel: &str,
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@
|
||||||
//! #[derive(serde::Deserialize)]
|
//! #[derive(serde::Deserialize)]
|
||||||
//! struct NuevoUsuario { nombre: String, email: String }
|
//! struct NuevoUsuario { nombre: String, email: String }
|
||||||
//!
|
//!
|
||||||
//! // Manejador configurado para la ruta POST "/usuarios".
|
//! /// Manejador configurado para la ruta POST "/usuarios".
|
||||||
//! async fn crear_usuario(payload: Json<NuevoUsuario>) -> HttpResponse {
|
//! async fn crear_usuario(payload: Json<NuevoUsuario>) -> HttpResponse {
|
||||||
//! // `payload` ya es `NuevoUsuario`; si la deserialización falla,
|
//! // `payload` ya es `NuevoUsuario`; si la deserialización falla,
|
||||||
//! // devolverá automáticamente 400 Bad Request con un cuerpo JSON que describe el error.
|
//! // devolverá automáticamente 400 Bad Request con un cuerpo JSON que describe el error.
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue