2 // Copyright 2008 Grégory Burri
4 // This file is part of Euphorik.
6 // Euphorik is free software: you can redistribute it and/or modify
7 // it under the terms of the GNU General Public License as published by
8 // the Free Software Foundation, either version 3 of the License, or
9 // (at your option) any later version.
11 // Euphorik is distributed in the hope that it will be useful,
12 // but WITHOUT ANY WARRANTY; without even the implied warranty of
13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 // GNU General Public License for more details.
16 // You should have received a copy of the GNU General Public License
17 // along with Euphorik. If not, see <http://www.gnu.org/licenses/>.
20 * Gestion du fragment d'url, permet de le modifier en direct.
22 Fragment = function() {
23 var thisFragment
= this;
24 // remplacement des codes de type %22 (en hexa)
25 var replaceHtmlCode = function(str
) {
26 return str
.replace(/%(\d\d)/g, function(text
, code
) {
27 return String
.fromCharCode(parseInt(code
, 16));
31 if (!window
.location
.hash
) {
35 var fragmentsStr
= replaceHtmlCode(window
.location
.hash
.slice(1)).split(";");
36 fragmentsStr
.each(function(i
, tuple
) {
37 tuple
= tuple
.split("=");
38 thisFragment
.fragments
[tuple
[0]] = JSON
.parse(tuple
[1]);
41 ;; console
.log(error
);
45 Fragment
.prototype.setVal = function(name
, val
) {
46 this.fragments
[name
] = val
;
49 Fragment
.prototype.getVal = function(name
) {
50 return this.fragments
[name
];
53 Fragment
.prototype.delVal = function(name
) {
54 delete this.fragments
[name
];
57 Fragment
.prototype.eraseAllVal = function() {
61 Fragment
.prototype.each = function(fun
) {
62 objectEach(this.fragments
, function(name
, val
) {
67 Fragment
.prototype.write = function() {
68 var fragmentsStr
= "";
70 objectEach(this.fragments
, function(name
, val
) {
71 fragmentsStr
+= (first
? "" : ";") + name
+ "=" + JSON
.stringify(val
);
74 window
.location
.hash
= fragmentsStr
;