server/bo_client/app/initializers/options.js
changeset 28 b0b56e0f8c7f
child 537 d2e6ee099125
equal deleted inserted replaced
27:a2342f26c9de 28:b0b56e0f8c7f
       
     1 // Copied and modified from https://gist.github.com/walter/3e852e8ebc87535a3c91
       
     2 import Ember from 'ember';
       
     3 import config from 'bo-client/config/environment';
       
     4 
       
     5 
       
     6 
       
     7 export function initialize(application) {
       
     8     var OptionsReader = function OptionsReader() {
       
     9     this.readOptionsKeys = function() {
       
    10       var _mapType = function(val) {
       
    11         return "" === val ? null : "true" === val ? true : "false" === val ? false : (-1 !== val.indexOf(",") && (val = val.split(",")), val);
       
    12       };
       
    13 
       
    14       // Grab all the meta tags from the DOM.
       
    15       var metaTags = Ember.$("meta");
       
    16       var options = Ember.Object.create();
       
    17       var re = new RegExp(config.modulePrefix + '\.');
       
    18 
       
    19       // Process each of the discovered meta tags.
       
    20       for(var i=0; i < metaTags.length; i++) {
       
    21         var key = Ember.$(metaTags[i]).attr('name');
       
    22         var value = Ember.$(metaTags[i]).attr('content');
       
    23 
       
    24         // Does the meta tag start with our MODULE_PREFIX?
       
    25         if (re.test(key)) {
       
    26           var propertyName = Ember.String.camelize(key.substring(config.modulePrefix.length+1));
       
    27           options[propertyName] = _mapType(value);
       
    28         }
       
    29       }
       
    30       return options;
       
    31     };
       
    32   };
       
    33 
       
    34   var optionsReader = new OptionsReader();
       
    35 
       
    36   application.register('service:options', optionsReader.readOptionsKeys(), {singleton: true, instantiate: false});
       
    37 
       
    38 }
       
    39 
       
    40 export default {
       
    41   name: 'options',
       
    42   initialize
       
    43 };