source: Dev/trunk/src/client/util/build/replace.js @ 524

Last change on this file since 524 was 483, checked in by hendrikvanantwerpen, 11 years ago

Added Dojo 1.9.3 release.

File size: 1.6 KB
Line 
1define(["./fs"], function(fs){
2        var cached = {};
3
4        return function(contents, replacement){
5                var encoding = "utf8";
6                if(replacement instanceof Array){
7                        // replacement is a vector of replacement instructions; maybe the first item is an encoding
8                        if(typeof replacement[0]=="string"){
9                                encoding = replacement[0];
10                                replacement = replacement.slice(1);
11                        }
12                }else{
13                        // replacement is a single replacement [search, replacement, type] triple
14                        replacement = [replacement];
15                }
16                // at this point, encoding has been determined and replacement is a vector of [search, replacement, type] triples
17
18                replacement.forEach(function(item){
19                        var
20                                searchText = item[0],
21                                replacementText = item[1],
22                                type = item[2];
23                        if(type=="file"){
24                                // replacementText gives a filename that holds the replacement text
25                                // TODO add type AMD module
26                                replacementText = (cached[filename] = cached[filename] || fs.readFileSynch(replacementText, encoding));
27                        }
28                        if(searchText instanceof RegExp){
29                                contents = contents.replace(searchText, replacementText);
30                        }else if(typeof searchText=="function"){
31                                contents = searchText(contents);
32                        }else{
33                                // replace all occurences of searchText with replacementText
34                                var
35                                        searchTextLength = searchText.length,
36                                        replacementTextLength = replacementText.length,
37                                        start = contents.indexOf(searchText);
38                                while(start!=-1){
39                                        contents = contents.substring(0, start) + replacementText + contents.substring(start + searchTextLength);
40                                        start = contents.indexOf(searchText, start + replacementTextLength);
41                                }
42                        }
43                });
44                return contents;
45        };
46});
47
Note: See TracBrowser for help on using the repository browser.