commit 098388c6ea291cff7274b410e114089ba7b8d82f
parent 1a2140e52aa2e4d5fa85a3e53a5a5372312f447e
Author: Georges Dupéron <jahvascriptmaniac+github@free.fr>
Date: Sun, 5 Sep 2010 22:33:25 +0200
Refactor, encore et toujours...
Diffstat:
| M | editeur.js | | | 100 | +++++++++++++++++++++++++++++++++++++++---------------------------------------- |
1 file changed, 49 insertions(+), 51 deletions(-)
diff --git a/editeur.js b/editeur.js
@@ -1,3 +1,11 @@
+$(function() {
+ $(".éditeur-semantique").each(function(i,e) {
+ éditeurSémantique(e);
+ });
+});
+
+/* ===== Types de noeud ===== */
+
var MULTI_LIGNE = 0;
var MONO_LIGNE = 1;
var EN_LIGNE = 2;
@@ -11,7 +19,45 @@ $.fn.extend({
}
});
-var typesNoeud = {
+function squeletteAperçuNoeud(noeud) {
+ var ct = {};
+ ct[MULTI_LIGNE] = { tag: 'div', tagc: 'div', cat: 'multi-ligne' };
+ ct[MONO_LIGNE] = { tag: 'div', tagc: 'span', cat: 'mono-ligne' };
+ ct[EN_LIGNE] = { tag: 'span', tagc: 'span', cat: 'en-ligne' };
+ ct = ct[typesNoeud[noeud.type].catégorie];
+
+ var html = $('<' + ct.tag + ' class="noeud"/>').addClass(noeud.type).addClass(ct.cat);
+ var étiquette = $('<span class="étiquette"/>').appendTo(html);
+ var contenu = $('<' + ct.tagc + ' class="contenu"/>').appendTo(html);
+ return html;
+}
+
+var typeNoeudDéfaut = {
+ catégorie: EN_LIGNE,
+ enfants: ['texte'],
+ vues: {
+ aperçu: function() {
+ return squeletteAperçuNoeud(this)
+ .children(".contenu").appendVuesEnfants(this, 'aperçu').end();
+ },
+ edition: function() {
+ return $('<div class="info">Cliquez sur du texte pour le modifier.</div>');
+ }
+ },
+ vue: function (typeVue) {
+ return typesNoeud[this.type].vues[typeVue].call(this, typeVue);
+ },
+ propriétés: {}
+}
+
+function TypesNoeud(typesNoeud) {
+ for (var i in typesNoeud) {
+ this[i] = $.extend({}, typeNoeudDéfaut, typesNoeud[i]);
+ this[i].vues = $.extend({}, typeNoeudDéfaut.vues, typesNoeud[i].vues);
+ }
+}
+
+var typesNoeud = new TypesNoeud({
document: {
catégorie: MULTI_LIGNE,
enfants: ['titre', 'paragraphe'],
@@ -66,58 +112,10 @@ var typesNoeud = {
},
}
}
-};
-
-function squeletteAperçuNoeud(noeud) {
- var ct = {};
- ct[MULTI_LIGNE] = { tag: 'div', tagc: 'div', cat: 'multi-ligne' };
- ct[MONO_LIGNE] = { tag: 'div', tagc: 'span', cat: 'mono-ligne' };
- ct[EN_LIGNE] = { tag: 'span', tagc: 'span', cat: 'en-ligne' };
- ct = ct[typesNoeud[noeud.type].catégorie];
-
- var html = $('<' + ct.tag + ' class="noeud"/>').addClass(noeud.type).addClass(ct.cat);
- var étiquette = $('<span class="étiquette"/>').appendTo(html);
- var contenu = $('<' + ct.tagc + ' class="contenu"/>').appendTo(html);
- return html;
-}
-
-var typeNoeudDéfaut = {
- catégorie: EN_LIGNE,
- enfants: ['texte'],
- vues: {
- aperçu: function() {
- return squeletteAperçuNoeud(this)
- .children(".contenu").appendVuesEnfants(this, 'aperçu').end();
- },
- edition: function() {
- return $('<div class="info">Cliquez sur du texte pour le modifier.</div>');
- }
- },
- vue: function (typeVue) {
- return typesNoeud[this.type].vues[typeVue].call(this, typeVue);
- },
- propriétés: {}
-}
-
-function nettoyerTypesNoeud(typesNoeud) {
- var tn = {};
-
- for (var i in typesNoeud) {
- tn[i] = $.extend({}, typeNoeudDéfaut, typesNoeud[i]);
- tn[i].vues = $.extend({}, typeNoeudDéfaut.vues, typesNoeud[i].vues);
- }
-
- return tn;
-}
-
-typesNoeud = nettoyerTypesNoeud(typesNoeud);
-
-$(function() {
- $(".éditeur-semantique").each(function(i,e) {
- éditeurSémantique(e);
- });
});
+/* ===== Textarea => éditeur sémantique ===== */
+
function éditeurSémantique(textareaOrigine) {
// XML -> modèle
var textareaOrigine = $(textareaOrigine);