text: import * as C from './constant';
  
  var padStart = function padStart(string, length, pad) {
    var s = String(string);
    if (!s || s.length >= length) return string;
    return "" + Array(length + 1 - s.length).join(pad) + string;
  };
  
  var padZoneStr = function padZoneStr(instance) {
    var negMinuts = -instance.utcOffset();
    var minutes = Math.abs(negMinuts);
    var hourOffset = Math.floor(minutes / 60);
    var minuteOffset = minutes % 60;
    return "" + (negMinuts <= 0 ? '+' : '-') + padStart(hourOffset, 2, '0') + ":" + padStart(minuteOffset, 2, '0');
  };
  
  var monthDiff = function monthDiff(a, b) {
    // function from moment.js in order to keep the same result
    var wholeMonthDiff = (b.year() - a.year()) * 12 + (b.month() - a.month());
    var anchor = a.clone().add(wholeMonthDiff, C.M);
    var c = b - anchor < 0;
    var anchor2 = a.clone().add(wholeMonthDiff + (c ? -1 : 1), C.M);
    return Number(-(wholeMonthDiff + (b - anchor) / (c ? anchor - anchor2 : anchor2 - anchor)) || 0);
  };
  
  var absFloor = function absFloor(n) {
    return n < 0 ? Math.ceil(n) || 0 : Math.floor(n);
  };
  
  var prettyUnit = function prettyUnit(u) {
    var special = {
      M: C.M,
      y: C.Y,
      w: C.W,
      d: C.D,
      h: C.H,
      m: C.MIN,
      s: C.S,
      ms: C.MS
    };
    return special[u] || String(u || '').toLowerCase().replace(/s$/, '');
  };
  
  var isUndefined = function isUndefined(s) {
    return s === undefined;
  };
  
  export default {
    s: padStart,
    z: padZoneStr,
    m: monthDiff,
    a: absFloor,
    p: prettyUnit,
    u: isUndefined
  };