dojo/cache.js

  • Provides:

    • dojo.cache
  • dojo.cache

    • type
      Function
    • summary
      A getter and setter for storing the string content associated with the
      module and url arguments.
    • parameters:
      • module: (typeof String||Object)
        If a String, the module name to use for the base part of the URL, similar to module argument
        to `dojo.moduleUrl`. If an Object, something that has a .toString() method that
        generates a valid path for the cache item. For example, a dojo._Url object.
      • url: (typeof String)
        The rest of the path to append to the path derived from the module argument. If
        module is an object, then this second argument should be the "value" argument instead.
      • value: (typeof String||Object)
        If a String, the value to use in the cache for the module/url combination.
        If an Object, it can have two properties: value and sanitize. The value property
        should be the value to use in the cache, and sanitize can be set to true or false,
        to indicate if XML declarations should be removed from the value and if the HTML
        inside a body tag in the value should be extracted as the real value. The value argument
        or the value property on the value argument are usually only used by the build system
        as it inlines cache content.
    • source: [view]
      define("dojo/cache", ["dojo"], function(dojo){




      dojo.cache = {
       // summary:
       //   A way to cache string content that is fetchable via `dojo.moduleUrl`.
      };




       var cache = {};
       dojo.cache = function(/*String||Object*/module, /*String*/url, /*String||Object?*/value){
        // summary:
        //   A getter and setter for storing the string content associated with the
        //   module and url arguments.
        // description:
        //   module and url are used to call `dojo.moduleUrl()` to generate a module URL.
        //   If value is specified, the cache value for the moduleUrl will be set to
        //   that value. Otherwise, dojo.cache will fetch the moduleUrl and store it
        //   in its internal cache and return that cached value for the URL. To clear
        //   a cache value pass null for value. Since XMLHttpRequest (XHR) is used to fetch the
        //   the URL contents, only modules on the same domain of the page can use this capability.
        //   The build system can inline the cache values though, to allow for xdomain hosting.
        // module: String||Object
        //   If a String, the module name to use for the base part of the URL, similar to module argument
        //   to `dojo.moduleUrl`. If an Object, something that has a .toString() method that
        //   generates a valid path for the cache item. For example, a dojo._Url object.
        // url: String
        //   The rest of the path to append to the path derived from the module argument. If
        //   module is an object, then this second argument should be the "value" argument instead.
        // value: String||Object?
        //   If a String, the value to use in the cache for the module/url combination.
        //   If an Object, it can have two properties: value and sanitize. The value property
        //   should be the value to use in the cache, and sanitize can be set to true or false,
        //   to indicate if XML declarations should be removed from the value and if the HTML
        //   inside a body tag in the value should be extracted as the real value. The value argument
        //   or the value property on the value argument are usually only used by the build system
        //   as it inlines cache content.
        // example:
        //  To ask dojo.cache to fetch content and store it in the cache (the dojo["cache"] style
        //   of call is used to avoid an issue with the build system erroneously trying to intern
        //   this example. To get the build system to intern your dojo.cache calls, use the
        //   "dojo.cache" style of call):
        //   | //If template.html contains "

      Hello

      " that will be
        //   | //the value for the text variable.
        //  | var text = dojo["cache"]("my.module", "template.html");
        // example:
        //  To ask dojo.cache to fetch content and store it in the cache, and sanitize the input
        //    (the dojo["cache"] style of call is used to avoid an issue with the build system
        //   erroneously trying to intern this example. To get the build system to intern your
        //   dojo.cache calls, use the "dojo.cache" style of call):
        //   | //If template.html contains "

      Hello

      ", the
        //   | //text variable will contain just "

      Hello

      ".
        //  | var text = dojo["cache"]("my.module", "template.html", {sanitize: true});
        // example:
        //  Same example as previous, but demostrates how an object can be passed in as
        //  the first argument, then the value argument can then be the second argument.
        //   | //If template.html contains "

      Hello

      ", the
        //   | //text variable will contain just "

      Hello

      ".
        //  | var text = dojo["cache"](new dojo._Url("my/module/template.html"), {sanitize: true});


        //Module could be a string, or an object that has a toString() method
        //that will return a useful path. If it is an object, then the "url" argument
        //will actually be the value argument.
        if(typeof module == "string"){
         var pathObj = dojo.moduleUrl(module, url);
        }else{
         pathObj = module;
         value = url;
        }
        var key = pathObj.toString();


        var val = value;
        if(value != undefined && !dojo.isString(value)){
         val = ("value" in value ? value.value : undefined);
        }


        var sanitize = value && value.sanitize ? true : false;


        if(typeof val == "string"){
         //We have a string, set cache value
         val = cache[key] = sanitize ? dojo.cache._sanitize(val) : val;
        }else if(val === null){
         //Remove cached value
         delete cache[key];
        }else{
         //Allow cache values to be empty strings. If key property does
         //not exist, fetch it.
         if(!(key in cache)){
          val = dojo._getText(key);
          cache[key] = sanitize ? dojo.cache._sanitize(val) : val;
         }
         val = cache[key];
        }
        return val; //String
    • description
      module and url are used to call `dojo.moduleUrl()` to generate a module URL.
      If value is specified, the cache value for the moduleUrl will be set to
      that value. Otherwise, dojo.cache will fetch the moduleUrl and store it
      in its internal cache and return that cached value for the URL. To clear
      a cache value pass null for value. Since XMLHttpRequest (XHR) is used to fetch the
      the URL contents, only modules on the same domain of the page can use this capability.
      The build system can inline the cache values though, to allow for xdomain hosting.
    • returns
      String
    • example
      To ask dojo.cache to fetch content and store it in the cache (the dojo["cache"] style
      of call is used to avoid an issue with the build system erroneously trying to intern
      this example. To get the build system to intern your dojo.cache calls, use the
      "dojo.cache" style of call):
      
      	//If template.html contains "<h1>Hello</h1>" that will be
      	//the value for the text variable.
      	var text = dojo["cache"]("my.module", "template.html");
    • example
      To ask dojo.cache to fetch content and store it in the cache, and sanitize the input
      (the dojo["cache"] style of call is used to avoid an issue with the build system
      erroneously trying to intern this example. To get the build system to intern your
      dojo.cache calls, use the "dojo.cache" style of call):
      
      	//If template.html contains "<html><body><h1>Hello</h1></body></html>", the
      	//text variable will contain just "<h1>Hello</h1>".
      	var text = dojo["cache"]("my.module", "template.html", {sanitize: true});
  • cache

    • type
      Object
    • summary
  • dojo.cache._sanitize

    • type
      Function
    • parameters:
      • val: (typeof String)
    • source: [view]
        if(val){
         val = val.replace(/^\s*<\?xml(\s)+version=[\'\"](\d)*.(\d)*[\'\"](\s)*\?>/im, "");
         var matches = val.match(/]*>\s*([\s\S]+)\s*<\/body>/im);
         if(matches){
          val = matches[1];
         }
        }else{
         val = "";
        }
        return val; //String
    • summary
      Strips &lt;?xml ...?&gt; declarations so that external SVG and XML
      documents can be added to a document without worry. Also, if the string
      is an HTML document, only the part inside the body tag is returned.
    • description
      Copied from dijit._Templated._sanitizeTemplateString.
    • returns
      String
  • dojo

    • type
      Object
    • summary