Versión: 4.1.1

Descripción

Emerald es una librería JavaScript extensible, creada para uso experimental, útil para:

Instalación

Compatible con cualquier intérprete JavaScript o browser moderno. Requiere conocimiento sólido del lenguaje de programación JavaScript.

Colocar dentro de la etiqueta head del HTML:

<script src="https://emerald.okzgn.com/emerald-v-4-1-1.js"></script>

Funciones

  1. Función principal para manejar datos.
  2. Deep. Función para recorrer objetos/arrays multinivel con índices textuales.
  3. Each. Función para recorrer arrays/nodos multinivel con índices numéricos.
  4. Is/Are. Función para identificar tipos de datos.
  5. Método is/are. Función para comparar/comprobar tipos de datos.
  6. Run. Función para ejecutar todas las funciones dentro de objetos/arrays.
  7. Type. Función para identificar el tipo de datos primitivo.
  8. Assign. Función para extender/fusionar objetos de manera personalizada.
  9. Count. Función para contar varios tipos de datos.
  10. Lista de tipos de datos genéricos disponibles.
  11. Constructor de tipos de datos personalizados.
  12. Funciones autoasignables para tipos de datos.
  13. Funciones para el DOM, para seleccionar y manipular nodos.
  14. $. Función para ejecutarse al cargar el DOM.
  15. On. Función para vincular un evento y un manejador con un nodo del DOM.
  16. Off. Función para desvincular eventos y manejadores de un nodo del DOM.
  17. DomQuery. Tipo de dato para seleccionar nodos del DOM.
  18. DomQuery.on. Función para vincular eventos y manejadores con nodos seleccionados del DOM.
  19. DomQuery.off. Función para desvincular eventos y manejadores de nodos seleccionados del DOM.
  20. DomQuery.each. Función para aplicar callbacks a nodos seleccionados del DOM.
  21. DomQuery.attr. Función para obtener un atributo de un nodo seleccionado del DOM.
  22. DomQuery.property. Función para obtener una propiedad de un nodo seleccionado del DOM.

Documentación

_( ):Función principal para manejar datos.

Encierra datos de cualquier tipo para manejarse o procesarse, soporta múltiples argumentos. Se infieren los tipos de datos y sus funciones correspondientes a partir de el/los argumento(s).

Sintaxis normal:
_(cualquier_dato);
Sintaxis multiargumento:
_(cualquier_dato_1, /* ..., */ cualquier_dato_n);
Retorno:

Objeto con las siguientes propiedades y funciones:

Ejemplo:
_([], 2, { n: false }, new Date(), /[a-z]/, null);

_({ }).deep( ):Función para recorrer objetos/arrays multinivel con índices textuales.

Recorre el objeto/array del primer argumento de la función principal, ejecutando un callback para cada ítem de cada nivel. El primer argumento puede contener datos mixtos.

Sintaxis:
_(objeto).deep(FUNCION, NIVEL, INDICE);
Argumentos:
Retorno:

Objeto con propiedad count con el número de ítems recorridos.

Ejemplo:
_({
	a: 1,
	b: {
		c: '2',
		d: [3, { e: '4', f: 5 }],
		g: '6'
	},
	h: 7
}).deep(function(llave, valor, indice, nivel){
	console.log(llave, valor, indice, nivel);
}, true);

_([ ]).each( ):Función para recorrer arrays/nodos multinivel con índices numéricos.

Recorre el array o lista de nodos del primer argumento de la función principal, ejecutando un callback para cada ítem de cada nivel. El primer argumento puede contener datos mixtos.

Sintaxis:
_(array).each(FUNCION, OPCIONES, INDICE);
Argumentos:
Retorno:

Objeto con propiedad count con el número de ítems recorridos.

Ejemplo:
_([
	'1',
	2,
	'3',
	/5/,
	[6, 7, 8, 9],
	document.querySelectorAll('a'),
	'11'
]).each(function(indice, valor, indice_particular){
	console.log(indice, valor, indice_particular);
}, { simple: true, reverse: true }, 1);

is( )
are( )
:Función para identificar tipos de datos.

Identifica todos los tipos de datos que corresponden al primer argumento o a los argumentos de la función (en caso de tipos multiargumentos). La función are es un alias de is. Los tipos de datos primitivos y predefinidos utilizan solo el primer argumento.

Sintaxis normal:
is(cualquier_dato);
are(cualquier_dato);
Sintaxis multiargumento:
is(cualquier_dato, /* ...,*/ cualquier_dato_n);
are(cualquier_dato, /* ...,*/ cualquier_dato_n);
Retorno:

Array con los nombres en minúsculas de los tipos de datos identificados.

Ejemplo:
is(/[a-z]/);

_( ).is( )
_( ).are( )
:Función para comparar/comprobar tipos de datos.

Devuelve true o false si todos los tipos de datos especificados en los argumentos del método coinciden o no, con: el primer argumento o los argumentos de la función principal (en caso de tipos multiargumentos).

Sintaxis normal:
_(cualquier_dato).is(nombre_tipo_datos);
_(cualquier_dato).are(nombre_tipo_datos);
Sintaxis multiargumento:
_(cualquier_dato, /* ...,*/ cualquier_dato_n).is(nombre_tipo_datos, /*...,*/ nombre_tipo_datos_n);
_(cualquier_dato, /* ...,*/ cualquier_dato_n).are(nombre_tipo_datos, /*...,*/ nombre_tipo_datos_n);
Argumentos:
Retorno:

true o false.

Ejemplo:
_(/[a-z]/).is('regexp', 'defined');

_( ).run( ):Función para ejecutar todas las funciones dentro de objetos/arrays.

Ejecuta cualquier función directa o que esté dentro de un objeto/array del primer argumento de la función principal, opcionalmente, con referencia para el contexto this y para argumentos.

Sintaxis:
_(funcion_u_objeto_array).run(contexto_this, argumentos);
Argumentos:
Retorno:

Devuelve true.

Ejemplo:
_(function(){ console.log(this, arguments) }).run(123, ['4', 5, '6', 7]);

type( ):Función para identificar el tipo de datos primitivo.

Identifica el tipo de datos primitivo del primer argumento, no soporta múltiples argumentos.

Sintaxis:
type(cualquier_dato);
Retorno:

Uno de los siguientes string:

Ejemplo:
type(document.querySelector('a'));

assign( ):Función para extender/fusionar objetos de manera personalizada.

Sintaxis:
assign()
Argumentos:
Retorno:

Ejemplo:
assign()

count( ):Función para contar varios tipos de datos.

Sintaxis:
count()
Argumentos:
Retorno:

Ejemplo:
count()

type:Lista de tipos de datos genéricos disponibles.

Ejemplo:

			
		

type[ ]:Constructor de tipos de datos personalizados.

Sintaxis:
type.nuevo_tipo_dato = {
	before: { },
	fn: { },
	recognition: function(a, b, c){
		return a == 1 && b == 2 && c == 3;
	}
}
Argumentos:
Retorno:

Ejemplo:
type.nuevo_tipo_dato = {
	recognition: function(a, b, c){
		return a == 1 && b == 2 && c == 3;
	}
};
is(1, 2, 3);

type[ ].before[ ]
type[ ].fn[ ]
:Funciones autoasignables para tipos de datos.

Sintaxis:
type.nuevo_tipo_dato.fn.metodo_nuevo: function(){ }
Argumentos:
Retorno:

Ejemplo:
type.nuevo_tipo_dato = {
	recognition: function(a, b, c){
		return a == 1 && b == 2 && c == 3;
	},
	fn: {
		metodo_nuevo: function(){
			console.log(this.args);
		}
	}
};
_(1, 2, 3).metodo_nuevo();

_( ):Funciones para el DOM, para seleccionar y manipular nodos.

Sintaxis:

			
Argumentos:
Retorno:

Ejemplo:

			
		

_( ):Función para ejecutarse al cargar el DOM.

Sintaxis:
$(function(){ /*...*/ });
Argumentos:
Retorno:

Ejemplo:
$(function(){ alert('Usas Emerald'); });

_( ).on( ):Función para vincular un evento y un manejador con un nodo del DOM.

Sintaxis:
_(nodo_dom).on(ID_EVENTO, FUNCION);
Argumentos:
Retorno:

Ejemplo:
_(document.querySelector('a')).on('click', function(event){ console.log(event); });

_( ).off( ):Función para desvincular eventos y manejadores de un nodo del DOM.

Sintaxis:
_(nodo_dom).off(ID_EVENTO)
Argumentos:
Retorno:

Ejemplo:
_(document.querySelector('a')).off('click');

_('>'):Tipo de dato para seleccionar nodos del DOM.

Sintaxis:
_('>selector_nodo')
Argumentos:
Retorno:

Ejemplo:
_('>*:not(div)')

_('>').on( ):Función para vincular eventos y manejadores con nodos seleccionados del DOM.

Sintaxis:
_('>selector_nodo').on(ID_EVENTO, FUNCION);
Argumentos:
Retorno:

Ejemplo:
_('>a').on('click', function(event){ alert(event.target.innerText); });

_('>').off( ):Función para desvincular eventos y manejadores de nodos seleccionados del DOM.

Sintaxis:
_('>selector_nodo').off(ID_EVENTO, FUNCION);
Argumentos:
Retorno:

Ejemplo:
_('>a').off('click');

_('>').each( ):Función para aplicar callbacks a nodos seleccionados del DOM.

Sintaxis:
_('>selector_nodo').each(FUNCION);
Argumentos:
Retorno:

Ejemplo:
_('>a').each(function(indice, elemento){ console.log(indice, elemento); });

_('>').attr( ):Función para obtener un atributo de un nodo seleccionado del DOM.

Sintaxis:
_('>selector_nodo').attr(ATRIBUTO);
Argumentos:
Retorno:

Ejemplo:
_('>a').attr('href');

_('>').property( ):Función para obtener una propiedad de un nodo seleccionado del DOM.

Sintaxis:
_('>selector_nodo').property(PROPIEDAD);
Argumentos:
Retorno:

Ejemplo:
_('>a').property('innerHTML');
Próximamente referencia completa de todas las funciones y generadores/manejadores de tipos de datos...

Pruebas (playground)

* Aparecerán primeras las últimas líneas impresas en consola (orden inverso).
* Luego de hacer clic en Ejecutar, haga clic en Detener para volver a empezar.
Salida de consola y resultado