mirror of
				https://github.com/JuanCanham/HackMyResume.git
				synced 2025-11-04 14:57:26 +00:00 
			
		
		
		
	Add baseline keyword analysis.
This commit is contained in:
		
							
								
								
									
										70
									
								
								src/inspectors/keyword-inspector.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										70
									
								
								src/inspectors/keyword-inspector.js
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,70 @@
 | 
			
		||||
/**
 | 
			
		||||
Keyword analysis for HackMyResume.
 | 
			
		||||
@license MIT. See LICENSE.md for details.
 | 
			
		||||
@module keyword-inspector.js
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
(function() {
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  var _ = require('underscore');
 | 
			
		||||
  var FluentDate = require('../core/fluent-date');
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
  Analyze the resume's use of keywords.
 | 
			
		||||
  @class keywordInspector
 | 
			
		||||
  */
 | 
			
		||||
  var keywordInspector = module.exports = {
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
    A unique name for this inspector.
 | 
			
		||||
    */
 | 
			
		||||
    moniker: 'keyword-inspector',
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
    Run the Keyword Inspector on a resume.
 | 
			
		||||
    @method run
 | 
			
		||||
    @return An collection of statistical keyword data.
 | 
			
		||||
    */
 | 
			
		||||
    run: function( rez ) {
 | 
			
		||||
 | 
			
		||||
      // http://stackoverflow.com/a/2593661/4942583
 | 
			
		||||
      function regex_quote(str) {
 | 
			
		||||
        return (str + '').replace(/[.?*+^$[\]\\(){}|-]/ig, "\\$&");
 | 
			
		||||
      };
 | 
			
		||||
 | 
			
		||||
      var searchable = '';
 | 
			
		||||
      rez.transformStrings( [], function trxString( key, val ) {
 | 
			
		||||
        searchable += val;
 | 
			
		||||
      });
 | 
			
		||||
 | 
			
		||||
      return rez.keywords().map(function(kw) {
 | 
			
		||||
        var regex = new RegExp( regex_quote( kw ), 'ig');
 | 
			
		||||
        var myArray, count = 0;
 | 
			
		||||
        while ((myArray = regex.exec( searchable )) !== null) {
 | 
			
		||||
          count++;
 | 
			
		||||
        }
 | 
			
		||||
        return {
 | 
			
		||||
          name: kw,
 | 
			
		||||
          count: count
 | 
			
		||||
        };
 | 
			
		||||
 | 
			
		||||
      });
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
}());
 | 
			
		||||
		Reference in New Issue
	
	Block a user