text: import buildMatchPatternFn from '../../../_lib/buildMatchPatternFn/index'
  import buildMatchFn from '../../../_lib/buildMatchFn/index'
  
  var matchOrdinalNumberPattern = /^(第\s*)?\d+(日|時|分|秒)?/i
  var parseOrdinalNumberPattern = /\d+/i
  
  var matchEraPatterns = {
    narrow: /^(前)/i,
    abbreviated: /^(前)/i,
    wide: /^(公元前|公元)/i,
  }
  var parseEraPatterns = {
    any: [/^(前)/i, /^(公元)/i],
  }
  
  var matchQuarterPatterns = {
    narrow: /^[1234]/i,
    abbreviated: /^第[一二三四]季/i,
    wide: /^第[一二三四]季度/i,
  }
  var parseQuarterPatterns = {
    any: [/(1|一)/i, /(2|二)/i, /(3|三)/i, /(4|四)/i],
  }
  
  var matchMonthPatterns = {
    narrow: /^(一|二|三|四|五|六|七|八|九|十[二一])/i,
    abbreviated: /^(一|二|三|四|五|六|七|八|九|十[二一]|\d|1[12])月/i,
    wide: /^(一|二|三|四|五|六|七|八|九|十[二一])月/i,
  }
  var parseMonthPatterns = {
    narrow: [
      /^一/i,
      /^二/i,
      /^三/i,
      /^四/i,
      /^五/i,
      /^六/i,
      /^七/i,
      /^八/i,
      /^九/i,
      /^十(?!(一|二))/i,
      /^十一/i,
      /^十二/i,
    ],
    any: [
      /^一|1/i,
      /^二|2/i,
      /^三|3/i,
      /^四|4/i,
      /^五|5/i,
      /^六|6/i,
      /^七|7/i,
      /^八|8/i,
      /^九|9/i,
      /^十(?!(一|二))|10/i,
      /^十一|11/i,
      /^十二|12/i,
    ],
  }
  
  var matchDayPatterns = {
    narrow: /^[一二三四五六日]/i,
    short: /^[一二三四五六日]/i,
    abbreviated: /^週[一二三四五六日]/i,
    wide: /^星期[一二三四五六日]/i,
  }
  var parseDayPatterns = {
    any: [/日/i, /一/i, /二/i, /三/i, /四/i, /五/i, /六/i],
  }
  
  var matchDayPeriodPatterns = {
    any: /^(上午?|下午?|午夜|[中正]午|早上?|下午|晚上?|凌晨)/i,
  }
  var parseDayPeriodPatterns = {
    any: {
      am: /^上午?/i,
      pm: /^下午?/i,
      midnight: /^午夜/i,
      noon: /^[中正]午/i,
      morning: /^早上/i,
      afternoon: /^下午/i,
      evening: /^晚上?/i,
      night: /^凌晨/i,
    },
  }
  
  var match = {
    ordinalNumber: buildMatchPatternFn({
      matchPattern: matchOrdinalNumberPattern,
      parsePattern: parseOrdinalNumberPattern,
      valueCallback: function (value) {
        return parseInt(value, 10)
      },
    }),
  
    era: buildMatchFn({
      matchPatterns: matchEraPatterns,
      defaultMatchWidth: 'wide',
      parsePatterns: parseEraPatterns,
      defaultParseWidth: 'any',
    }),
  
    quarter: buildMatchFn({
      matchPatterns: matchQuarterPatterns,
      defaultMatchWidth: 'wide',
      parsePatterns: parseQuarterPatterns,
      defaultParseWidth: 'any',
      valueCallback: function (index) {
        return index + 1
      },
    }),
  
    month: buildMatchFn({
      matchPatterns: matchMonthPatterns,
      defaultMatchWidth: 'wide',
      parsePatterns: parseMonthPatterns,
      defaultParseWidth: 'any',
    }),
  
    day: buildMatchFn({
      matchPatterns: matchDayPatterns,
      defaultMatchWidth: 'wide',
      parsePatterns: parseDayPatterns,
      defaultParseWidth: 'any',
    }),
  
    dayPeriod: buildMatchFn({
      matchPatterns: matchDayPeriodPatterns,
      defaultMatchWidth: 'any',
      parsePatterns: parseDayPeriodPatterns,
      defaultParseWidth: 'any',
    }),
  }
  
  export default match
  