1 2 //HOW TO 3 //add class ag-var-bind to container element you want to overwrite data from. Functions handles all alements that have forementioned class 4 //syntax for binding metadata is #meta[<name of metatag>] 5 6 function ElementQuery(selector){ 7 this.elements = document.querySelectorAll(selector); 8 9 this.forEach = function(data){ 10 for(var k =0; k<this.length; k++){ 11 //Execute / assing functions included in data 12 data.call(null,this.elements[k],k); 13 } 14 return true; 15 } 16 17 this.length = this.elements.length 18 } 19 20 function initMetaBind(){ 21 22 //function to bind metadata to selected section 23 function MetaBind(str,element){ 24 //recognize all marked meta[<variable>] to data change 25 var regExBrack = /#meta\[([a-zA-Z0-9.-])+\]/g; 26 var tpl = str; 27 var matches = str.match(regExBrack); 28 var noMatchesErr = 'No matches found within '+str; 29 30 try{ 31 if(matches && matches.length > 0){ 32 console.log(matches) 33 matches.forEach(function(match){ 34 var target = match.slice(6,-1); 35 var meta = document.querySelector('meta[name="'+target+'"]'); 36 var metaAll = new ElementQuery('meta[name="'+target+'"]'); 37 var noMetaErr = 'No meta tag defined for '+match; 38 var noValErr = 'No value defined for '+match; 39 40 try{ 41 if (meta){ 42 var value; 43 44 if(metaAll.length > 1){ 45 var valArr = new Array; 46 metaAll.forEach(function(element){ 47 valArr.push(element.getAttribute('content')); 48 }) 49 if(metaAll.length == 2) 50 value = valArr.join(' and ') 51 else 52 value = valArr.join(', ') 53 }else { 54 value = meta.getAttribute('content') 55 } 56 57 58 if( value && value !== "GML"){ 59 element.classList.add('var-bind-complete'); 60 tpl = tpl.replace(match,value) 61 }else { 62 tpl = tpl.replace(match,'') 63 throw noValErr 64 } 65 }else{ 66 tpl = tpl.replace(match,'') 67 throw noMetaErr; 68 } 69 70 }catch(err){ 71 console.warn(err) 72 } 73 74 }) 75 76 return tpl; 77 78 }else throw noMatchesErr 79 80 81 82 }catch(err){ 83 console.warn(err) 84 return str 85 } 86 87 } 88 89 var targets = new ElementQuery('.ag-var-bind'); 90 91 targets.forEach(function(element){ 92 element.innerHTML = MetaBind(element.innerHTML,element) 93 }) 94 } 95 96 document.addEventListener('DOMContentLoaded',function(event){ 97 initMetaBind(); 98 })
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.