HourExpression.js 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. "use strict";
  2. /**
  3. * An $hour pipeline expression.
  4. * @see evaluateInternal
  5. * @class HourExpression
  6. * @namespace mungedb-aggregate.pipeline.expressions
  7. * @module mungedb-aggregate
  8. * @constructor
  9. **/
  10. var HourExpression = module.exports = function HourExpression(){
  11. base.call(this);
  12. }, klass = HourExpression, base = require("./FixedArityExpressionT")(klass, 1), proto = klass.prototype = Object.create(base.prototype, {constructor:{value:klass}});
  13. //STATIC MEMBERS
  14. klass.extract = function extract(date) {
  15. return date.getUTCHours();
  16. };
  17. klass.opName = "$hour";
  18. // PROTOTYPE MEMBERS
  19. proto.getOpName = function getOpName(){
  20. return klass.opName;
  21. };
  22. // DEPENDENCIES
  23. var Expression = require("./Expression");
  24. /**
  25. * Takes a date and returns the hour between 0 and 23.
  26. * @method evaluateInternal
  27. **/
  28. proto.evaluateInternal = function evaluateInternal(vars){
  29. var date = this.operands[0].evaluateInternal(vars);
  30. return klass.extract(date);
  31. };
  32. /** Register Expression */
  33. Expression.registerExpression(klass.opName,base.parse);