define(function(require) {
    'use strict';

    var ComponentShortcutsManager;

    var _ = require('underscore');
    var config = require('module').config();
    config = _.extend({
        reservedKeys: ['options']
    }, config);

    ComponentShortcutsManager = {
        reservedKeys: config.reservedKeys,

        shortcuts: {},

        /**
         * @param {String} key
         * @param {Object} shortcut
         */
        add: function(key, shortcut) {
            if (this.reservedKeys.indexOf(key) !== -1) {
                throw new Error('Component shortcut `' + key + '` is reserved!');
            }

            if (this.shortcuts[key]) {
                throw new Error('Component shortcut `' + key + '` already exists!');
            }

            shortcut.dataKey = 'pageComponent' + _.capitalize(key);
            shortcut.dataAttr = 'data-page-component-' + key;

            this.shortcuts[key] = shortcut;
        },

        /**
         * @param {string} key
         */
        remove: function(key) {
            delete this.shortcuts[key];
        },

        /**
         * @returns {object}
         */
        getAll: function() {
            return this.shortcuts;
        },

        /**
         * Prepare component data by element attributes and shortcut config
         *
         * @param {object} shortcut
         * @param {object|string} dataOptions
         * @return {object}
         */
        getComponentData: function(shortcut, dataOptions) {
            var module = shortcut.moduleName || dataOptions;

            var options = dataOptions;
            if (!_.isObject(options)) {
                options = {};
                if (shortcut.scalarOption) {
                    options[shortcut.scalarOption] = dataOptions;
                }
            }
            options = _.defaults({}, options, shortcut.options);

            return {
                pageComponentModule: module,
                pageComponentOptions: options
            };
        }
    };

    return ComponentShortcutsManager;
});

@@ -458,24 +458,61 @@
 shortcut) %7B%0A
+            var capitalizeKey = '';%0A%0A
             
@@ -784,32 +784,154 @@
 %0A            %7D%0A%0A
+            _.each(key.split('-'), function(item) %7B%0A                capitalizeKey += _.capitalize(item);%0A            %7D);%0A%0A
             shor
@@ -963,18 +963,16 @@
 nent' + 
-_.
 capitali
@@ -973,21 +973,19 @@
 pitalize
-(k
+K
 ey
-)
 ;%0A      

Print Document - print links are not clicable