Mash/L v2.0 - Lenguaje

De Toeska Semantic Wiki

Contenido

Type System

number

string

boolean

map

array

xml

json

xslt

null?

Recursos

Todo recurso se obtiene a través de una URL.

Imports

Los scripts Mash/L son componibles. A través de un import, todos los recursos y mashups definidos quedan disponibles en el ámbito actual.

import <URL>
import http://www.holo.com/jaja.mashl;

Use

Liga una URL a un nombre de variable.

use <TYPE> <URL> as <VARNAME>
use xslt http://www.holo.com/xml2json.xsl as xml2json;

Variables

Inline XML

<VARNAME> = <<XML
<XML CONTENT>
XML
documento = <<XML
<root>
    <a att="ja">
        </b>
    </a>
</root>
XML

Inline JSON

Operadores

Numéricos

operador aridad descripción ejemplo
+ binaria, infija suma
1 + 1
- binaria, infija resta
0 - 1
- unaria, prefija cambio signo
-5.1
* binaria, infija multiplicación
6 * 7
/ binaria, infija división
7.0 / 2
 % binaria, infija módulo
6 % 2

Strings

operador aridad descripción ejemplo
+ binaria, infija concatenación
"holo" + "!"

Lógicos

operador aridad descripción ejemplo
== binaria, infija igual a
1 == 1
 != binaria, infija distinto a
"a" != "b"
 ! unaria, prefija negación
!false
< binaria, infija menor que
6 < 7
> binaria, infija mayor que
7.0 > 2
<= binaria, infija menor o igual que
5 <= 5.0
>= binaria, infija mayor o igual que
6 >= 2
&& binaria, infija and
true && false
|| binaria, infija or
false || true

Mapas

operador aridad descripción ejemplo
[] binaria, infija? indexación asociativa
datos["clave"]
.size unaria, sufija número de elementos
datos.size
.empty unaria, sufija indica si el mapa está vacio
datos.empty
.clear unaria, sufija elimina todos los elementos
datos.clear
.contains(<KEY>) binaria?, sufija indica si existe elemento con cierta clave
datos.contains("clave")
.remove(<KEY>) binaria?, sufija remueve elemento con cierta clave
datos.remove("clave")

Arrays

operador aridad descripción ejemplo
[] binaria, infija? indexación
datos[0]
.size unaria, sufija número de elementos
datos.size
.empty unaria, sufija indica si el array está vacio
datos.empty
.clear unaria, sufija elimina todos los elementos
datos.clear
.contains(<VALUE>) binaria?, sufija indica si existe cierto elemento
datos.contains("clave")
.remove(<INDEX>) binaria?, sufija remueve elemento con cierto índice
datos.remove(1)

XML

operador aridad descripción ejemplo
[] binaria, infija? retorna valor de atributo
nodo["atributo"]
.child() binaria, sufija retorna enésimo nodo hijo
nodo.child(2)
.childs unaria, sufija retorna arreglo de nodos hijos
nodo.childs()
.find binaria, sufija retorna arreglo de nodos en base a consulta xpath
nodo.find("/node[@att='1']")

JSON

Estructuras de decisión

if-else

if (<BOOLEAN>)
{
    ...
}
else if (<BOOLEAN>)
{
    ...
}
else
{
    ...
}

if-else ternario

<BOOLEAN> ? <TRUE_EXPR> : <FALSE_EXPR>;

Expresiones

Estructuras de control

while

while (<BOOLEAN>)
{
    ...
}

foreach

foreach (<VARIABLE> in <ITERABLE>)
{
    ...
}

Mashups

mashup <NOMBRE> (<ARG>[:<TIPO>], ...):<TIPO> [<MIMME>]
{
    ...
}

Extensiones

Java

JAVA <CLASS CANONICAL NAME>.<METHOD>(<TYPE>,...):
   <NOMBRE> (<ARG>[:<TIPO>], ...):<TIPO> [<MIMME>]

Ruby

Javascript

Herramientas personales