CETEIcean 1.4.0 → 1.7.0
Sign up to get free protection for your applications and to get access to all the features.
- package/.vscode/settings.json +6 -0
- package/README.md +8 -0
- package/package.json +7 -6
- package/rollup.config.js +2 -2
- package/src/CETEI.js +13 -4
- package/src/behaviors.js +5 -0
- package/src/defaultBehaviors.js +0 -5
- package/src/utilities.js +6 -1
- package/test/TCW22.html +16 -2
- package/tutorial_en/README.md +3 -1
- package/tutorial_es/README.md +104 -25
- package/tutorial_es/screenshots/ceteicean_es1.png +0 -0
- package/tutorial_es/screenshots/ceteicean_es2.png +0 -0
- package/tutorial_es/screenshots/ceteicean_es3.png +0 -0
- package/tutorial_es/screenshots/ceteicean_es4.png +0 -0
- package/tutorial_es/screenshots/ceteicean_es5.png +0 -0
package/README.md
CHANGED
@@ -44,6 +44,14 @@ CETEIcean.getHTML5("URL_TO_YOUR_TEI.xml", function(data) {
|
|
44
44
|
})
|
45
45
|
```
|
46
46
|
|
47
|
+
By default, CETEIcean saves and restores the scroll position for a document via a URL fragment. To turn this behavior off, particularly when using CETEIcean for Server Side Rendering, you can set the `ignoreFragmentId` option to `true`:
|
48
|
+
|
49
|
+
```js
|
50
|
+
new CETEI({
|
51
|
+
ignoreFragmentId: true
|
52
|
+
})
|
53
|
+
```
|
54
|
+
|
47
55
|
### Other methods
|
48
56
|
|
49
57
|
#### getHTML5( url, callback, perElementFn )
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "CETEIcean",
|
3
|
-
"version": "1.
|
3
|
+
"version": "1.7.0",
|
4
4
|
"description": "JavaScript library to load a TEI XML document and register it as HTML5 custom elements.",
|
5
5
|
"main": "src/CETEI.js",
|
6
6
|
"keywords": [
|
@@ -16,12 +16,13 @@
|
|
16
16
|
"url": "https://github.com/TEIC/CETEIcean.git"
|
17
17
|
},
|
18
18
|
"devDependencies": {
|
19
|
-
"babel
|
20
|
-
"babel
|
21
|
-
"
|
19
|
+
"@babel/core": "^7.15.5",
|
20
|
+
"@babel/preset-env": "7.15.6",
|
21
|
+
"@rollup/plugin-babel": "^5.3.0",
|
22
|
+
"babel-preset-env": "^1.7.0",
|
23
|
+
"http-server": "^14.1.1",
|
22
24
|
"onchange": "^6.1.1",
|
23
|
-
"rollup": "
|
24
|
-
"rollup-plugin-babel": "^3.0.3",
|
25
|
+
"rollup": "^2.57.0",
|
25
26
|
"rollup-plugin-terser": "1.0.1",
|
26
27
|
"terser": "^3.17.0"
|
27
28
|
},
|
package/rollup.config.js
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
import babel from 'rollup
|
1
|
+
import babel from '@rollup/plugin-babel';
|
2
2
|
import { terser } from 'rollup-plugin-terser';
|
3
3
|
|
4
4
|
export default {
|
@@ -16,7 +16,7 @@ export default {
|
|
16
16
|
"modules": false,
|
17
17
|
"targets": {
|
18
18
|
"chrome": 65,
|
19
|
-
"safari":
|
19
|
+
"safari": 13,
|
20
20
|
"firefox": 60
|
21
21
|
}
|
22
22
|
}]
|
package/src/CETEI.js
CHANGED
@@ -30,6 +30,7 @@ class CETEI {
|
|
30
30
|
this.hasStyle = false;
|
31
31
|
this.prefixDefs = [];
|
32
32
|
this.debug = this.options.debug === true ? true : false;
|
33
|
+
this.discardContent = this.options.discardContent === true ? true : false;
|
33
34
|
|
34
35
|
if (this.options.base) {
|
35
36
|
this.base = this.options.base;
|
@@ -50,6 +51,7 @@ class CETEI {
|
|
50
51
|
window.removeEventListener("ceteiceanload", CETEI.restorePosition);
|
51
52
|
}
|
52
53
|
}
|
54
|
+
|
53
55
|
}
|
54
56
|
|
55
57
|
/*
|
@@ -95,8 +97,8 @@ class CETEI {
|
|
95
97
|
*/
|
96
98
|
makeHTML5(XML, callback, perElementFn){
|
97
99
|
// XML is assumed to be a string
|
98
|
-
|
99
|
-
return this.domToHTML5(XML_dom, callback, perElementFn);
|
100
|
+
this.XML_dom = ( new DOMParser() ).parseFromString(XML, "text/xml");
|
101
|
+
return this.domToHTML5(this.XML_dom, callback, perElementFn);
|
100
102
|
}
|
101
103
|
|
102
104
|
/*
|
@@ -272,7 +274,11 @@ append(fn, elt) {
|
|
272
274
|
}
|
273
275
|
|
274
276
|
appendBasic(elt, content) {
|
275
|
-
|
277
|
+
if (this.discardContent) {
|
278
|
+
elt.innerHTML = "";
|
279
|
+
} else {
|
280
|
+
utilities.hideContent(elt, true);
|
281
|
+
}
|
276
282
|
elt.appendChild(content);
|
277
283
|
}
|
278
284
|
|
@@ -298,11 +304,14 @@ childExists(elt, name) {
|
|
298
304
|
strings or an object with CSS selector keys and either functions
|
299
305
|
or arrays as described above. Returns a closure around a function
|
300
306
|
that can be called in the element constructor or applied to an
|
301
|
-
individual element.
|
307
|
+
individual element. An empty array is considered a no-op.
|
302
308
|
|
303
309
|
Called by the getHandler() and getFallback() methods
|
304
310
|
*/
|
305
311
|
decorator(template) {
|
312
|
+
if (Array.isArray(template) && template.length == 0) {
|
313
|
+
return function(e) {};
|
314
|
+
}
|
306
315
|
if (Array.isArray(template) && !Array.isArray(template[0])) {
|
307
316
|
return this.applyDecorator(template)
|
308
317
|
}
|
package/src/behaviors.js
CHANGED
@@ -19,6 +19,11 @@ export function addBehaviors(bhvs) {
|
|
19
19
|
}
|
20
20
|
}
|
21
21
|
}
|
22
|
+
if (bhvs["functions"]) {
|
23
|
+
for (let fn of Object.keys(bhvs["functions"])) {
|
24
|
+
this.utilities[fn] = bhvs["functions"][fn];
|
25
|
+
}
|
26
|
+
}
|
22
27
|
if (bhvs["handlers"]) {
|
23
28
|
console.log("Behavior handlers are no longer used.")
|
24
29
|
}
|
package/src/defaultBehaviors.js
CHANGED
@@ -84,11 +84,6 @@ export default {
|
|
84
84
|
document.querySelector("head").appendChild(title);
|
85
85
|
}]
|
86
86
|
],
|
87
|
-
"cell": [
|
88
|
-
["[cols]", function(elt) {
|
89
|
-
elt.setAttribute("style", "grid-column: " + this.getOrdinality(elt) + " / span " + elt.getAttribute("cols") + ";");
|
90
|
-
}]
|
91
|
-
]
|
92
87
|
},
|
93
88
|
"teieg": {
|
94
89
|
"egXML": function(elt) {
|
package/src/utilities.js
CHANGED
@@ -71,6 +71,12 @@ export function hideContent(elt, rewriteIds = true) {
|
|
71
71
|
hidden.setAttribute("data-original", "");
|
72
72
|
for (let node of Array.from(elt.childNodes)) {
|
73
73
|
if (node !== hidden) {
|
74
|
+
if (node.nodeType === Node.ELEMENT_NODE) {
|
75
|
+
node.setAttribute("data-processed", "");
|
76
|
+
for (let e of node.querySelectorAll("*")) {
|
77
|
+
e.setAttribute("data-processed", "");
|
78
|
+
}
|
79
|
+
}
|
74
80
|
hidden.appendChild(elt.removeChild(node));
|
75
81
|
}
|
76
82
|
}
|
@@ -202,7 +208,6 @@ export function serialize(el, stripElt, ws) {
|
|
202
208
|
return str;
|
203
209
|
}
|
204
210
|
|
205
|
-
|
206
211
|
export function unEscapeEntities(str) {
|
207
212
|
return str.replace(/>/, ">")
|
208
213
|
.replace(/"/, "\"")
|
package/test/TCW22.html
CHANGED
@@ -2,11 +2,25 @@
|
|
2
2
|
<html>
|
3
3
|
<head>
|
4
4
|
<meta charset="utf-8">
|
5
|
-
<link rel="stylesheet" href="
|
5
|
+
<link rel="stylesheet" href="https://teic.github.io/css/tei.css" title="no title" charset="utf-8">
|
6
6
|
<script src="https://cdn.polyfill.io/v1/polyfill.js?features=modernizr:promises&unknown=polyfill" charset="utf-8"></script>
|
7
7
|
<script src="../dist/CETEI.js" charset="utf-8"></script>
|
8
8
|
<script type="text/javascript">
|
9
|
-
|
9
|
+
let ct = new CETEI();
|
10
|
+
let b = {
|
11
|
+
"tei": {
|
12
|
+
"title": [
|
13
|
+
["tei-titlestmt>tei-title", function(e) {
|
14
|
+
let head = document.createElement("tei-head");
|
15
|
+
head.innerHTML = e.innerHTML;
|
16
|
+
let body = this.dom.querySelector("tei-body");
|
17
|
+
body.insertBefore(head, body.firstElementChild);
|
18
|
+
}]
|
19
|
+
]
|
20
|
+
}
|
21
|
+
}
|
22
|
+
ct.addBehaviors(b);
|
23
|
+
ct.getHTML5('https://raw.githubusercontent.com/TEIC/Documentation/master/TCW/tcw22.xml?new=' + Date.now(), function(data) {
|
10
24
|
document.getElementsByTagName("body")[0].appendChild(data);
|
11
25
|
});
|
12
26
|
</script>
|
package/tutorial_en/README.md
CHANGED
@@ -1,4 +1,6 @@
|
|
1
|
-
# Getting Started with CETEIcean
|
1
|
+
# Getting Started with CETEIcean and TEI Publishing
|
2
|
+
|
3
|
+
[CETEIcean](https://github.com/TEIC/CETEIcean) is a JavaScript program that makes it easy to publish (Text Encoding Initiative XML)[https://tei-c.org/release/doc/tei-p5-doc/en/html/index.html] files on the web. You will need some background in TEI and its uses in order to understand what CETEIcean is doing. Introductory materials can be found at [TEI by Example](https://teibyexample.org/).
|
2
4
|
|
3
5
|
This tutorial will walk you through the steps to publish a TEI file online using CETEIcean. We will start with a simple (though quite large) file in TEI P5 form, `fpn-washington.xml`, which we want to display in a web browser.
|
4
6
|
|
package/tutorial_es/README.md
CHANGED
@@ -1,12 +1,25 @@
|
|
1
|
-
# Introducción a la publicación de archivos TEI con CETEIcean
|
1
|
+
# Introducción a la publicación web de archivos TEI con CETEIcean
|
2
2
|
|
3
|
-
Nota
|
3
|
+
**Nota:** Para seguir este tutorial de forma comprensiva debes saber qué es el lenguaje de marcado XML-TEI desarrollado por la [Text Encoding Initiative o TEI](https://tei-c.org/) y cuál es su función como lenguaje estándar en la edición digital académica de textos de Ciencias Sociales y Humanidades. Puedes encontrar recursos y tutoriales en español sobre codificación de textos con TEI en [TTHub](https://tthub.io/). Asimismo, te recomendamos esta introducción a TEI a la que puedes acceder desde esta lección de Programming Historian en español [Introducción a la codificación de textos en TEI (parte 1)](http://programminghistorian.github.io/ph-submissions/es/lecciones/introduccion-a-tei-1).
|
4
4
|
|
5
|
-
|
5
|
+
## Introducción y software que usaremos
|
6
|
+
Para quienes se inician en el uso de TEI, uno de los escollos más comunes es que, una vez que se han codificado los textos con este lenguaje de marcado, es difícil saber cómo hacer para publicarlos en línea. Para ser visualizados en un navegador, los archivos XML-TEI deben ser transformados primero a [HTML](https://es.wikipedia.org/wiki/HTML) mediante el uso de plantillas [XSLT](https://es.wikipedia.org/wiki/Extensible_Stylesheet_Language_Transformations). Sin embargo, este proceso requiere de conocimientos técnicos y herramientas que no siempre se encuentran al alcance de todos los humanistas digitales, especialmente de quienes se acercan al uso de TEI por primera vez, quienes aún no conocen en profundidad el manejo de software de edición, o quienes no cuentan con acceso a servidores propios. [CETEIcean](https://github.com/TEIC/CETEIcean) es un software de edición digital que permite visualizar archivos XML-TEI en el navegador sin que necesitemos aplicarles una transformación XSLT.
|
6
7
|
|
7
|
-
|
8
|
+
Este tutorial te guiará a través de los pasos necesarios para publicar un archivo TEI en línea utilizando CETEIcean, una librería abierta escrita en el lenguaje de programación [JavaScript](https://www.javascript.com/). CETEIcean permite que los documentos TEI se muestren en un navegador web sin transformarlos primero a [HTML](https://es.wikipedia.org/wiki/HTML). CETEIcean carga el archivo TEI dinámicamente en el navegador y cambia el nombre de los elementos de TEI por otros en HTML, de tal forma que estos nos permitan visualizar en el navegador web los fenómenos textuales que marcamos en nuestros archivos usando TEI.
|
8
9
|
|
9
|
-
|
10
|
+
En primer lugar, una aclaración sobre la visualización de tu trabajo: El método por defecto de CETEIcean para mostrar archivos TEI consiste en cargar los archivos desde otra ubicación. Sin embargo, no todos los navegadores te permitirán cargar los archivos si estos se encuentran almacenados en tu computadora. Puedes hacer el intento, pero si eso no funciona, tendrás que generar un servidor local, colocar los archivos en un servidor en línea, o utilizar un editor de código con funciones de previsualización. Para el caso de este tutorial, seguiremos esta última opción, ya que usaremos el editor [Atom](https://atom.io), con el plugin `atom-html-preview`.
|
11
|
+
|
12
|
+
Deberás entonces descargar e instalar [Atom](https://atom.io) antes de continuar con este tutorial. Luego, instala el plug-in `atom-html-preview` que podrás encontrar abriendo el menú de opciones de Atom (file > settings o cntrl+). En la pantalla de Settings ve a la pestaña "Install" y en el cuadro de diálogo introudce `atom-html-preview`. Cuando aparezca el plug-in que estamos buscando en la lista de resultado debes hacer clic en el botón azul que dice "Install":
|
13
|
+
|
14
|
+
![instalación plug-in](https://github.com/TEIC/CETEIcean/blob/master/tutorial_es/screenshots/ceteicean_es1.png)
|
15
|
+
|
16
|
+
No obstante, existen otras opciones libres para editar archivos TEI y generar previsualizaciones de HTML, como [Jedit](http://www.jedit.org/) o [Visual Studio Code](https://code.visualstudio.com/), y versiones propietarias como [Oxygen](https://www.oxygenxml.com/).
|
17
|
+
|
18
|
+
|
19
|
+
Usaremos como texto de prueba la crónica conocida como *La Argentina Manuscrita*, del hispano-guaraní Ruy Díaz de Guzmán. Este texto del siglo XVII hace uso del topónimo Argentina por primera vez, para referirse a los extensos territorios del Cono Sur que componían el Río de la Plata y sus adyacencias, es decir, territorios de la actual Argentina, Paraguay, Uruguay, sur de Brasil y Bolivia. Puedes encontrar una edición digital completa del texto en: [http://hdlab.space/La-Argentina-Manuscrita](http://hdlab.space/La-Argentina-Manuscrita). Comenzaremos con un archivo simple (aunque un tanto extenso) en formato TEI P5, que queremos hacer visible en un navegador web: [`Ruy_Diaz-La_Argentina_Manuscrita.xml`](http://hdlab.space/La-Argentina-Manuscrita/assets/Ruy_Diaz-La_argentina_manuscrita.tei.xml). Para descargar el archivo haz click derecho sobre el enlace de descarga y selecciona la opción 'Save Link As...'.
|
20
|
+
|
21
|
+
## Paso 1: Crear una estructura para nuestros archivos
|
22
|
+
Comenzaremos por establecer una estructura para nuestros archivos, es decir, una carpeta contenedora con el nombre 'tutorial_es' con las subcarpetas y archivos que te indicaremos a continuación. Puedes descargar el directorio completo de [CETEIcean en GitHub](https://github.com/TEIC/CETEIcean) y trabajar en la carpeta 'tutorial_es', o puedes descargar los archivos individualmente, siempre y cuando mantengan la misma estructura que en GitHub, que es la siguiente:
|
10
23
|
|
11
24
|
```
|
12
25
|
tutorial_es/
|
@@ -23,7 +36,7 @@ Comenzaremos por establecer una estructura de directorios para nuestros archivos
|
|
23
36
|
--- README.md (el archivo que estas leyendo)
|
24
37
|
```
|
25
38
|
|
26
|
-
|
39
|
+
El siguiente paso será crear un archivo nuevo en Atom. Para ello puede ir a File > New o utilizar el atajo Ctrl + N ( Cmd + N en Mac). En este documento deberás copiar y pegar el siguiente contenido:
|
27
40
|
|
28
41
|
```html
|
29
42
|
<!DOCTYPE html>
|
@@ -40,7 +53,7 @@ En el directorio raíz crea un archivo `index.html`, con el siguiente contenido:
|
|
40
53
|
</html>
|
41
54
|
```
|
42
55
|
|
43
|
-
Este archivo servirá como una estructura en la cual pondremos las instrucciones para mostrar
|
56
|
+
A continuación debes guardar este archivo en el directorio raíz (en nuestro caso la carpeta 'tutorial_es') con el nombre `index.html`. Este archivo servirá como una estructura en la cual pondremos las instrucciones para mostrar nuestros archivos TEI. Al igual que en TEI, los archivos HTML tienen un encabezado, llamado `head` y un cuerpo de texto, llamado `body`. A lo largo de este tutorial usaremos este archivo para agregar enlaces a nuestra CSS (Cascading Style Sheets,o, en español, hoja de estilo u [hoja de estilos en cascada](https://es.wikipedia.org/wiki/Hoja_de_estilos_en_cascada)) y a archivos de JavaScript, y escribiremos un poco de JavaScript para lograr una visualización de nuestro documento TEI que refleje los aspectos del marcado que nos interesa destacar. En la primera línea vacía del `<head>`, escribe:
|
44
57
|
|
45
58
|
```html
|
46
59
|
<link rel="stylesheet" href="css/tei.css">
|
@@ -53,30 +66,36 @@ Esto conectará nuestro archivo CSS con nuestra página HTML, dándole acceso a
|
|
53
66
|
<script src="js/CETEI.js"></script>
|
54
67
|
```
|
55
68
|
|
69
|
+
## Paso 2: Cargar y previsualizar el archivo TEI
|
70
|
+
Ahora ya estamos listos para cargar el archivo TEI. Para eso, debemos añadir en la siguiente línea o secuencia de comandos informáticos también conocida por sus siglas en inglés [*script*](https://es.wikipedia.org/wiki/Script), que nos permitirá recuperar el documento TEI de *La Argentina manuscrita* en nuestro archivo HTML (el que estamos editando en este momento):
|
56
71
|
|
57
|
-
|
72
|
+
```html
|
73
|
+
<script>
|
74
|
+
let c = new CETEI();
|
75
|
+
c.getHTML5('Ruy_Diaz-La_Argentina_Manuscrita.xml', function(data) {
|
76
|
+
document.getElementsByTagName("body")[0].appendChild(data);
|
77
|
+
});
|
78
|
+
</script>
|
79
|
+
```
|
58
80
|
|
59
|
-
En el
|
81
|
+
No necesitas ser un experto en [JavaScript](https://www.javascript.com/) para usar CETEIcean, pero aprender su funcionamiento básico puede ser de utilidad. Si deseas incluir funciones avanzadas, tendrás que aprender JavaScript. En la red para desarrolladores de Mozilla puedes encontrar una excelente [guía de JavaScript](https://developer.mozilla.org/es/docs/Web/JavaScript/Guide) en varias lenguas, incluido el español. Para el caso de este tutorial, solo te contaremos que las líneas de código que añadimos hacen varias cosas: en primer lugar, una variable `c` es definida como un nuevo objeto CETEI. Esto hará el trabajo de cargar y darle estilo a nuestro archivo fuente. A continuación, le indicaremos a `c` que cargue el archivo fuente y lo convierta en HTML ([Custom Elements](https://lenguajejs.com/webcomponents/nativos/bases-custom-elements/)), y también le daremos una función que tomará los resultados y los pondrá en el `<body>`de nuestro archivo `index.html`. En la línea `document.getElementsByTagName('body')`, que puedes ver en la imagen superior, se llama a una función que busca todos los elementos `<body>` y los devuelve en la forma de una lista ordenada (una lista en la cual se puede acceder a los miembros que la componen a través de su número índice). En nuestro ejemplo solo hay un elemento `<body>`, por lo que obtendremos una sola entrada en nuestra lista, con el índice 0. Este ítem, que es un elemento HTML, queda adjunto como un hijo del documento TEI que acabamos de cargar.
|
60
82
|
|
61
|
-
|
62
|
-
let c = new CETEI();
|
63
|
-
c.getHTML5('Ruy_Diaz-La_Argentina_Manuscrita.xml', function(data) {
|
64
|
-
document.getElementsByTagName("body")[0].appendChild(data);
|
65
|
-
});
|
66
|
-
```
|
83
|
+
En este punto deberías poder ejecutar una previsualización del HTML desde el menú "Packages" y así ver tu documento. Vamos a previsualizarlo con el plug-in que instalamos al inicio de este tutorial. Entonces, ve a la pestaña packages del menú superior y del menú que se despliega elige la opción "Preview HTML / Enable preview":
|
67
84
|
|
68
|
-
|
85
|
+
![previsualización html opciones](https://github.com/TEIC/CETEIcean/blob/master/tutorial_es/screenshots/ceteicean_es2.png)
|
69
86
|
|
70
|
-
|
87
|
+
![previsualización html resultado](https://github.com/TEIC/CETEIcean/blob/master/tutorial_es/screenshots/ceteicean_es3.png)
|
88
|
+
|
89
|
+
Si no estás usando Atom, puedes hacer esto colocando tus archivos en un servidor web. Si conoces el funcionamiento de GitHub, puedes utilizar GitHub Pages (aquí tienes un [tutorial](https://guides.github.com/features/pages/) en inglés), y crear un repositorio. Si tienes instalado Python en tu computadora, puedes ejecutar un servidor web simple en el directorio de este tutorial (en nuestro caso la carpeta 'tutorial_es'). Con este fin debes abrir la consola de comandos y comprobar que te encuentres en la carpeta deseada (en caso contrario puedes navegar hasta esa carpeta con el comando `cd + url del archivo`) e ingresar el comando:
|
71
90
|
|
72
91
|
```bash
|
73
92
|
python -m SimpleHTTPServer
|
74
93
|
```
|
75
94
|
|
95
|
+
También es posible que tu computadora ya tenga los programas necesarios para ejecutar un servidor web, o puedes instalar [MAMP](https://www.mamp.info) o algún otro programa similar. El objetivo de crear este servidor es vusalizar nuestros archivos TEI en el navegador como si estos se trataran de un contenido online.
|
76
96
|
|
77
|
-
|
78
|
-
|
79
|
-
Pero volvamos a nuestro trabajo en Atom. Esta primera visualización tendrá varios errores que deberemos arreglar. Comenzaremos por añadir una hoja de estilo para manipular los elementos de TEI en nuestro archivo y luego añadiremos funciones de CETEIcean para hacer modificaciones más complejas. Si todavía no le has echado un vistazo al archivo fuente XML, es un buen momento para hacerlo, para ver lo que CETEIcean ya está haciendo y lo que no. Notarás que las imágenes con gráficos están siendo cargadas correctamente (siempre que estés en línea, ya que las imágenes están alojadas en un sitio web). Podemos ver que el contenido del `teiHeader` no está siendo mostrado, y tampoco los comienzos de página y comienzos de línea, pero los elementos `div` y `p` están siendo formateados como bloques. Con un poco de investigación sobre las posibilidades de codificación de la TEI, verás que hay 7 tipos de elementos TEI en el 'body' de nuestro documento fuente:
|
97
|
+
## Paso 3: Mejorar la visualización de nuestro archivo
|
98
|
+
Esta primera visualización tendrá varios errores que deberemos arreglar. Para eso volveremos a nuestro trabajo en Atom. Comenzaremos por añadir una hoja de estilo para manipular los elementos de TEI en nuestro archivo y luego añadiremos funciones de CETEIcean para hacer modificaciones más complejas. Si todavía no le has echado un vistazo al archivo fuente XML, es un buen momento para hacerlo, para ver lo que CETEIcean ya está haciendo y lo que no. Podemos ver que el contenido del `teiHeader` no está siendo mostrado, y tampoco los comienzos de página y comienzos de línea, pero los elementos `div` y `p` están siendo formateados como bloques; también notarás que las notas aparecen en el cuerpo del texto entre paréntesis. Con un poco de investigación sobre las posibilidades de codificación de la TEI, verás que hay 7 tipos de elementos TEI en el `body` de nuestro documento fuente:
|
80
99
|
|
81
100
|
* div
|
82
101
|
* head
|
@@ -101,7 +120,7 @@ tei-p {
|
|
101
120
|
```
|
102
121
|
|
103
122
|
|
104
|
-
Algunas cosas para tener en cuenta: los nombres de los elementos en nuestros selectores CSS tienen el prefijo “tei-”, esto es necesario para que CETEIcean pueda convertir los elementos de TEI en elementos personalizados (Custom Elements) de HTML. Estas reglas establecen que los elementos div se visualicen como bloques (empiezan en una nueva línea y terminan con un corte), lo mismo sucede con los párrafos, que también tienen un espaciado superior y posterior. Decidir qué estilos aplicar a los elementos que todavía no tienen reglas de estilo puede no resultar sencillo, pero podemos comenzar eligiendo algunos de los casos más simples. En nuestro documento fuente se señalan los encabezados de los capítulos y de las diferentes secciones mediante el
|
123
|
+
Algunas cosas para tener en cuenta: los nombres de los elementos en nuestros selectores CSS tienen el prefijo “tei-”, esto es necesario para que CETEIcean pueda convertir los elementos de TEI en elementos personalizados ([Custom Elements](https://lenguajejs.com/webcomponents/nativos/bases-custom-elements/)) de HTML. Estas reglas establecen que los elementos `<div>` se visualicen como bloques (empiezan en una nueva línea y terminan con un corte), lo mismo sucede con los párrafos, que también tienen un espaciado superior y posterior. Decidir qué estilos aplicar a los elementos que todavía no tienen reglas de estilo puede no resultar sencillo, pero podemos comenzar eligiendo algunos de los casos más simples. En nuestro documento fuente se señalan los encabezados de los capítulos y de las diferentes secciones mediante el elemento `<head>`. Probablemente desearemos que estos encabezados se destaquen del cuerpo del texto, para lograrlo podemos utilizar CSS para darles un estilo diferente. Ahora debes abrir el archivo `tei.css` (que encontrarás en la carpeta "css") en Atom y al final del documento agregar las siguientes líneas:
|
105
124
|
|
106
125
|
```css
|
107
126
|
tei-head {
|
@@ -111,7 +130,7 @@ tei-head {
|
|
111
130
|
```
|
112
131
|
|
113
132
|
Verás que esta no es una solución perfecta, ya que tenemos diferentes niveles de elementos `<div>`, y sería apropiado que los encabezados de diferentes niveles tuvieran diferentes tamaños para identificarlos. Debido a que los elementos `<div>` de nuestro archivo TEI no indican a qué nivel pertenecen, esto puede resultar difícil de lograr con CSS. Sin embargo, también podemos utilizar los comportamientos (behaviors) de CETEIcean para dar formato.
|
114
|
-
En HTML, la convención es representar los diferentes niveles de encabezados con los elementos `h1`, `h2`, `h3`, etc. (hasta `h6`). Podemos lograr esto utilizando un comportamiento. En tu archivo index.html añade lo siguiente entre la primera y la segunda línea del código que se encuentra entre las etiquetas
|
133
|
+
En HTML, la convención es representar los diferentes niveles de encabezados con los elementos `h1`, `h2`, `h3`, etc. (hasta `h6`). Podemos lograr esto utilizando un comportamiento. En tu archivo `index.html` añade lo siguiente entre la primera y la segunda línea del código que se encuentra entre las etiquetas `<script></script>` (Es decir, entre `"let c = new CETEI();"` y `"c.getHTML5('Ruy_Diaz-La_Argentina_Manuscrita.xml'…"`):
|
115
134
|
|
116
135
|
```js
|
117
136
|
let comportamientos = {
|
@@ -130,9 +149,53 @@ En HTML, la convención es representar los diferentes niveles de encabezados con
|
|
130
149
|
```
|
131
150
|
|
132
151
|
Esto creará un objeto Javascript y le asignará la variable `comportamientos`, que luego enlazaremos con el objeto `CETEI` que creamos antes, usando el método `addBehaviors`. En el interior de ese objeto tenemos una sección etiquetada como “tei” (que es el prefijo para todos nuestros elementos personalizados), y dentro de esta se definen los comportamientos para los elementos. Cuando CETEIcean encuentra una coincidencia para el nombre de un elemento, como “head” (ten en cuenta que se utiliza el nombre de TEI sin el prefijo), aplica los comportamientos que encuentra.
|
133
|
-
Este nuevo comportamiento toma una función de JavaScript
|
152
|
+
Este nuevo comportamiento toma una función de JavaScript, lo que hace que el elemento sea procesado como un parámetro (el `e`). Esto crea la variable `nivel`, que contiene el nivel de encabezamiento de la `<tei-div>` que contiene el `<tei-head>`, crea un elemento `<h[nivel]>` con el nivel correspondiente, y copia el contenido del elemento original en el nuevo elemento de encabezado. CETEIcean esconderá el contenido de `<tei-head>` y, en cambio, mostrará el contenido del nuevo elemento de encabezado. Te en cuenta que este código tiene un problema potencial: un documento con muchas divisiones anidadas unas dentro de otras podría llegar a producir un elemento de encabezado superior al límite admitido por HTML (por ejemplo un elemento `<h7>`). Nuestro documento fuente no tiene más de dos niveles de anidamiento, pero para utilizarlo en otras fuentes sería prudente revisar que el anidamiento no supere el nivel del elemento `<h6>`.
|
153
|
+
|
154
|
+
Si en este punto previsualizamos nuestro HTML en Atom, obtendremos el siguiente el resultado:
|
155
|
+
|
156
|
+
![ejemplo previo](https://github.com/TEIC/CETEIcean/blob/master/tutorial_es/screenshots/ceteicean_es4.png)
|
157
|
+
|
158
|
+
Con esta previsualización hemos mejorado notablemente la presentación de nuestro documento, pero las notas de la edición todavía dificultan la lectura del texto. Para solucionar este problema agregaremos un comportamiento más a nuestro script. Sin embargo, para lograr este objetivo, tendremos que usar una secuencia de comandos un tanto más extensa y compleja que la anterior. Copia y pega el siguiente texto entre las líneas `"tei": {` y `"head": function(e) {` que se encuentran en el segundo elemento `<script>` de nuestro documento `index.html`:
|
134
159
|
|
135
|
-
|
160
|
+
|
161
|
+
```js
|
162
|
+
"note": function(e){
|
163
|
+
if (!this.noteIndex){
|
164
|
+
this["noteIndex"] = 1;
|
165
|
+
} else {
|
166
|
+
this.noteIndex++;
|
167
|
+
}
|
168
|
+
let id = "note" + this.noteIndex;
|
169
|
+
let link = document.createElement("a");
|
170
|
+
link.setAttribute("id", "src" + id);
|
171
|
+
link.setAttribute("href", "#" + id);
|
172
|
+
link.innerHTML = this.noteIndex;
|
173
|
+
let content = document.createElement("sup");
|
174
|
+
if (e.previousSibling.localName == "tei-note") {
|
175
|
+
content.appendChild(document.createTextNode(","));
|
176
|
+
}
|
177
|
+
content.appendChild(link);
|
178
|
+
let notes = this.dom.querySelector("ol.notes");
|
179
|
+
if (!notes) {
|
180
|
+
notes = document.createElement("ol");
|
181
|
+
notes.setAttribute("class", "notes");
|
182
|
+
this.dom.appendChild(notes);
|
183
|
+
}
|
184
|
+
let note = document.createElement("li");
|
185
|
+
note.id = id;
|
186
|
+
note.innerHTML = "<a href=\"#src" + id + "\">^</a> " + e.innerHTML
|
187
|
+
notes.appendChild(note);
|
188
|
+
return content;
|
189
|
+
},
|
190
|
+
```
|
191
|
+
|
192
|
+
A los fines de completar este tutorial no es necesario entender el funcionamiento de cada línea de este comportamiento, pero si observas el resultado de la previsualización, notarás que al incluirlo las notas aparecen al final del texto, hipervinculadas con sus respectivas referencias:
|
193
|
+
|
194
|
+
![ejemplo final](https://github.com/TEIC/CETEIcean/blob/master/tutorial_es/screenshots/ceteicean_es5.png)
|
195
|
+
|
196
|
+
## Paso 4: Para seguir trabajando con CETEIcean
|
197
|
+
|
198
|
+
CETEIcean posee una cantidad de comportamientos integrados. Puedes reemplazar o desactivar estos comportamientos integrados añadiéndoles valores. Si, por ejemplo, deseas mostrar el contenido del TEI Header, que está oculto por defecto, puedes añadir la siguiente línea a nuestro `<script>` debajo de `"tei": {`:
|
136
199
|
|
137
200
|
```js
|
138
201
|
"teiHeader": null,
|
@@ -140,4 +203,20 @@ CETEIcean posee una cantidad de comportamientos integrados. Puedes reemplazar o
|
|
140
203
|
|
141
204
|
Si haces esto, puede que desees agregar estilos de CSS o comportamientos para elegir la forma en la que se visualizará el contenido del TEI Header en el navegador.
|
142
205
|
|
143
|
-
En este tutorial no agotamos todas las posibilidades
|
206
|
+
En este tutorial no agotamos todas las posibilidades para la presentación de nuestro documento fuente. Te invitamos a que continúes experimentando por tu cuenta en las diferentes formas en las que un marcado de TEI puede visualizarse en un navegador usando CETEICean. Puedes encontrar más información en [CETEIcean](http://teic.github.io/CETEIcean/).
|
207
|
+
|
208
|
+
## Referencias
|
209
|
+
|
210
|
+
Allés Torrent, Susanna; del Rio Riande, Gimena, y Calarco, Gabriel. 2018-. TTHub. Text Technologies Hub. Recursos sobre tecnologías del texto y edición digital. Accesible desde: https://tthub.io/.
|
211
|
+
|
212
|
+
Atom. A hackable text editor for the 21st Century. Accesible desde: https://atom.io.
|
213
|
+
|
214
|
+
Cayless, Hugh y Viglianti, Raffaele. CETEIcean. Accesible desde: http://teic.github.io/CETEIcean/.
|
215
|
+
|
216
|
+
del Rio Riande, Gimena; De León, Romina, y Hernández, Nidia. 2019. *Historia de la conquista del Río de la Plata o La Argentina manuscrita*. Accesible desde: http://hdlab.space/La-Argentina-Manuscrita/
|
217
|
+
|
218
|
+
Jedit. Programmer's text editor. Stable Version: 5.6.0. Accesible desde: http://www.jedit.org/
|
219
|
+
|
220
|
+
Oxygen. XML Editor. Accesible desde: https://www.oxygenxml.com/
|
221
|
+
|
222
|
+
Visual Studio Code. Accesible desde: https://code.visualstudio.com/
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|