<commit_before>angular
  .module('wb.inputHinter.directive', [])

  .directive('inputHinter', ['inputHinter',
    function (inputHinter) {
      return {
        restrict: 'A',
        link: function (scope, element, attr) {
          var userConfig = {
            waitBeforeDeleteMs: attr.waitBeforeDeleteMs,
            waitInBetweenMs: attr.waitInBetweenMs,
            writeSpeedMs: attr.writeSpeedMs,
            deleteSpeedMs: attr.deleteSpeedMs,
            delimiter: attr.delimiter
          };

          // Unset non-existing config values.
          angular.forEach(userConfig, function (key, val) {
            if( typeof val === 'undefined' ) {
              delete userConfig[key];
            }
          });

          var ticker = new inputHinter(userConfig);

          ticker.placeholders = attr.inputHinter.split('|');

          ticker.onTick = function (newPlaceholderText) {
            element.attr('placeholder', newPlaceholderText);
          };

          scope.Ticker.init();
        }
      };
    }
  ]);<commit_msg>Fixed directive bugs.<commit_after>angular
  .module('wb.inputHinter.directive', [])

  .directive('inputHinter', ['inputHinter',
    function (inputHinter) {
      return {
        restrict: 'A',
        link: function (scope, element, attr) {
          var userConfig = {
            waitBeforeDeleteMs: attr.waitBeforeDeleteMs,
            waitInBetweenMs: attr.waitInBetweenMs,
            writeSpeedMs: attr.writeSpeedMs,
            deleteSpeedMs: attr.deleteSpeedMs,
            delimiter: attr.delimiter
          };

          // Unset non-existing config values.
          angular.forEach(userConfig, function (val, key) {
            if( typeof val === 'undefined' ) {
              delete userConfig[key];
            }
          });

          var ticker = new inputHinter(userConfig);

          ticker.placeholders = attr.inputHinter.split('|');

          ticker.onTick = function (newPlaceholderText) {
            element.attr('placeholder', newPlaceholderText);
          };

          ticker.init();
        }
      };
    }
  ]);
{'fraction_non_alphanumeric': 0.11439466158245949, 'fraction_numerical': 0.0, 'mean_word_length': 1.8951724137931034, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '2047604', 'n_tokens_mistral': 582, 'n_tokens_neox': 566, 'n_words': 106}