Source:attr2-options.js

(function() {
  'use strict';
  /**
   * @memberof ngmap
   * @ngdoc service
   * @name Attr2Options
   * @param {service} $parse angular html parser
   * @param {service} $timeout angular window.setTimeout service
   * @param {service} NavigatorGeolocation Google NavigatorGeolocation wrapper
   * @param {service} GeoCoder Google GeoCoder wrapper
   * @description 
   *   Converts html attributes to google api v3 object options
   */
  var Attr2Options = function($parse, $timeout, NavigatorGeolocation, GeoCoder) { 
    /**
     * Convert input to Google Map option input
     * @memberof Attr2Options
     * @param {Objec} input a value to convert
     * @param {Hash} options to convert the input
     * @returns {Hash} attributes
     */
    var toOptionValue = function(input, options) {
      // .. code ..
    };
    /**
     * filters attributes by skipping angularjs methods $.. $$..
     * @memberof Attr2Options
     * @param {Hash} attrs tag attributes
     * @returns {Hash} filterd attributes
     */
    var filter = function(attrs) {
      // .. code ..
    };
    /**
     * converts attributes hash to Google Maps API v3 options  
     * ```
     *  . converts numbers to number   
     *  . converts class-like string to google maps instance   
     *    i.e. `LatLng(1,1)` to `new google.maps.LatLng(1,1)`  
     *  . converts constant-like string to google maps constant    
     *    i.e. `MapTypeId.HYBRID` to `google.maps.MapTypeId.HYBRID`   
     *    i.e. `HYBRID"` to `google.maps.MapTypeId.HYBRID`  
     * ```
     * @memberof Attr2Options
     * @param {Hash} attrs tag attributes
     * @param {scope} scope angularjs scope
     * @returns {Hash} options converted attributess
     */
    var getOptions = function(attrs, scope) {
      // .. code ..
    };
    /**
     * converts attributes hash to scope-specific event function 
     * @memberof Attr2Options
     * @param {scope} scope angularjs scope
     * @param {Hash} attrs tag attributes
     * @returns {Hash} events converted events
     */
    var getEvents = function(scope, attrs) {
      // .. code ..
    };
    /**
     * Return options of Google map control, i.e streetview, pan, etc, not a general control
     * @memberof Attr2Options
     * @param {Hash} filtered filtered tag attributes
     * @returns {Hash} Google Map options
     */
    var getControlOptions = function(filtered) {
      // .. code ..
    };
    return {
      filter: filter,
      getOptions: getOptions,
      getEvents: getEvents,
      getControlOptions: getControlOptions,
      toOptionValue: toOptionValue,
      orgAttributes: orgAttributes
    }; // return
  }; 
  angular.module('ngMap').service('Attr2Options', Attr2Options);
})();