| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- 'use strict';
- var Options = require('./Options.js');
- var feedback = require('./matcher/bruteforce/feedback.js');
- var feedback$1 = require('./matcher/date/feedback.js');
- var feedback$2 = require('./matcher/dictionary/feedback.js');
- var feedback$3 = require('./matcher/regex/feedback.js');
- var feedback$4 = require('./matcher/repeat/feedback.js');
- var feedback$5 = require('./matcher/sequence/feedback.js');
- var feedback$6 = require('./matcher/spatial/feedback.js');
- const defaultFeedback = {
- warning: '',
- suggestions: []
- };
- /*
- * -------------------------------------------------------------------------------
- * Generate feedback ---------------------------------------------------------------
- * -------------------------------------------------------------------------------
- */
- class Feedback {
- constructor() {
- this.matchers = {
- bruteforce: feedback,
- date: feedback$1,
- dictionary: feedback$2,
- regex: feedback$3,
- repeat: feedback$4,
- sequence: feedback$5,
- spatial: feedback$6
- };
- this.defaultFeedback = {
- warning: '',
- suggestions: []
- };
- this.setDefaultSuggestions();
- }
- setDefaultSuggestions() {
- this.defaultFeedback.suggestions.push(Options.default.translations.suggestions.useWords, Options.default.translations.suggestions.noNeed);
- }
- getFeedback(score, sequence) {
- if (sequence.length === 0) {
- return this.defaultFeedback;
- }
- if (score > 2) {
- return defaultFeedback;
- }
- const extraFeedback = Options.default.translations.suggestions.anotherWord;
- const longestMatch = this.getLongestMatch(sequence);
- let feedback = this.getMatchFeedback(longestMatch, sequence.length === 1);
- if (feedback !== null && feedback !== undefined) {
- feedback.suggestions.unshift(extraFeedback);
- if (feedback.warning == null) {
- feedback.warning = '';
- }
- } else {
- feedback = {
- warning: '',
- suggestions: [extraFeedback]
- };
- }
- return feedback;
- }
- getLongestMatch(sequence) {
- let longestMatch = sequence[0];
- const slicedSequence = sequence.slice(1);
- slicedSequence.forEach(match => {
- if (match.token.length > longestMatch.token.length) {
- longestMatch = match;
- }
- });
- return longestMatch;
- }
- getMatchFeedback(match, isSoleMatch) {
- if (this.matchers[match.pattern]) {
- return this.matchers[match.pattern](match, isSoleMatch);
- }
- if (Options.default.matchers[match.pattern] && 'feedback' in Options.default.matchers[match.pattern]) {
- return Options.default.matchers[match.pattern].feedback(match, isSoleMatch);
- }
- return defaultFeedback;
- }
- }
- module.exports = Feedback;
- //# sourceMappingURL=Feedback.js.map
|