# all files / features/ComponentEditor/Models/ ParameterModel.js

100% Statements 23/23
100% Branches 0/0
100% Functions 11/11
100% Lines 23/23

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68

    1

    1

    1
    1

    1

    46
    9

    2

    3

    2

    2

    9

    46
    1
    1

    2

    2

    46

    1
    2
    2

    1

    46

     'use strict';

    // Utilities:
    var _ = require('lodash');

    // Module:
    var ComponentEditor = require('../ComponentEditor');

    // Dependencies:
    var camelcase = require('change-case').camel;
    require('../../../Core/Services/ASTCreatorService');

    var createParameterModelConstructor = function (
        astCreatorService
    ) {
        var ParameterModel = function ParameterModel (action) {
            Object.defineProperties(this, {
                action: {
                    get: function () {
                        return action;
                    }
                },
                variableName: {
                    get: function () {
                        return camelcase(this.name);
                    }
                },
                meta: {
                    get: function () {
                        return {
                            name: this.name
                        };
                    }
                },
                ast: {
                    get: function () {
                        return toAST.call(this);
                    }
                }
            });

            this.name = '';
        };

        ParameterModel.prototype.getAllVariableNames = function () {
            var currentParameter = this;
            return _.chain(this.action.parameters)
            .reject(function (parameter) {
                return parameter === currentParameter;
            }).map(function (object) {
                return object.name;
            }).compact().value();
        };

        return ParameterModel;

        function toAST () {
            var ast = astCreatorService;
            return ast.identifier(this.variableName);
        }
    };

    ComponentEditor.factory('ParameterModel', function (
        astCreatorService
    ) {
        return createParameterModelConstructor(astCreatorService);
    });