CETEIcean 1.4.0 → 1.7.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,6 @@
1
+ {
2
+ "cSpell.words": [
3
+ "Ordinality",
4
+ "prefixdef"
5
+ ]
6
+ }
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.4.0",
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-core": "^6.26.0",
20
- "babel-preset-env": "^1.6.1",
21
- "http-server": "^0.12.3",
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": "0.62.0",
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-plugin-babel';
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": 11,
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
- let XML_dom = ( new DOMParser() ).parseFromString(XML, "text/xml");
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
- utilities.hideContent(elt, true);
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
  }
@@ -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="http://teic.github.io/css/tei.css" title="no title" charset="utf-8">
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
- (new CETEI).getHTML5('https://raw.githubusercontent.com/TEIC/Documentation/master/TCW/tcw22.xml?new=' + Date.now(), function(data) {
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>
@@ -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
 
@@ -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: para comprender este tutorial, 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. Algunos recursos en español sobre la TEI puedes encontrarlos en [TTHub](https://tthub.io/).
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
- Este tutorial te guiará a través de los pasos necesarios para publicar un archivo TEI en línea utilizando [CETEIcean](https://github.com/TEIC/CETEIcean), una librería abierta del 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. CETEIcean funciona cargando el archivo TEI dinámicamente, cambiando el nombre de los elementos para seguir las convenciones de elementos personalizados y registrándolos con el navegador. Comenzaremos con un archivo simple (aunque un tanto extenso) en formato TEI P5, `Ruy_Diaz-La_Argentina_Manuscrita.xml`, que queremos hacer visible en un navegador web.
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
- 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. No todos los navegadores te permitirán hacer esto cuando abras un archivo HTML directamente en el explorador de archivos de 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 texto con funciones de previsualización. El editor de texto [Atom](https://atom.io), con el plugin `atom-html-preview` es el ejemplo que utilizaremos para este tutorial, pero existen otras opciones libres para editar archivos TEI, como [Jedit](http://www.jedit.org/), y versiones propiestarias como [Oxygen](https://www.oxygenxml.com/). Debes descargar e instalar Atom, o algún editor de texto equivalente, antes de comenzar este tutorial. Un editor de texto es diferente de otros procesadores de texto usuales, como LibreOffice o Word, ya que, a diferencia de los segundos, los primeros editan solo archivos de texto plano.
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
- Comenzaremos por establecer una estructura de directorios para nuestros archivos. Puedes copiar la estructura de este tutorial, que se ve de la siguiente forma:
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
- En el directorio raíz crea un archivo `index.html`, con el siguiente contenido:
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 nuestro archivo TEI. Al igual que en TEI, los archivos HTML tienen un encabezado, llamado `head` y un cuerpo de texto, llamado `body`. Agregaremos 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 hacer que CETEIcean funcione. En la primera línea vacía del `<head>`, escribe:
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
- Ahora ya estamos listos para cargar el archivo. Añade otro elemento `<script></script>` a tu archivo `index.html`, esta vez sin el atributo `@src` (porque vamos a poner el script dentro de él).
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 interior de tu nuevo elemento 'script', añade estas líneas:
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
- ```js
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
- No necesitas ser un experto en JavaScript 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 encuentras una excelente [guía de JavaScript](https://developer.mozilla.org/es/docs/Web/JavaScript/Guide) en varias lenguas, incluido el español. 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), y también le daremos una función que tomará los resultados y los pondrá en el `<body>`de nuestro archivo index.html. `document.getElementsByTagName('body')` llama a una función disponible en objeto `document` (`document` es el documento HTML cargado en el navegador) que busca todos los elementos 'body' y los devuelve en la forma de una lista ordenada (una lista a través de la cual se puede acceder a los miembros que la componen a través de su número índice). 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.
85
+ ![previsualización html opciones](https://github.com/TEIC/CETEIcean/blob/master/tutorial_es/screenshots/ceteicean_es2.png)
69
86
 
70
- En este punto, si estás usando Atom, deberías poder ejecutar una previsualización del HTML desde el menú *Packages* y así ver tu documento. Si no estás usando Atom, como decíamos más arriba, 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 con el comando:
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
- 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.
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 elemnto`<head>`. Probablemente desearemos que estos encabezados se destaquen del cuerpo del teto, para lograrlo podemos utilizar CSS para darles un estilo diferente. Añade lo siguiente en el archivo `tei.css`:
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 <script></script>:
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. 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>`.
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
- CETEIcean posee una cantidad de comportamientos integrados. Puedes reemplazar o desactivar estos comportamientos integrados añadiéndoles valores. Si deseas mostrar el contenido del TEI Header, que está oculto por defecto, puedes añadir:
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 de trabajo con nuestro documento fuente. Te recomendamos que experimentes por tu cuenta en las diferentes formas en las que un marcado de TEI puede visualizarse en un navegador usando CETEICean. Puedes encontrar un ejemplo más acabado en la carpeta [example/](example).
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/