text: import buildMatchPatternFn from '../../../_lib/buildMatchPatternFn/index'
  import buildMatchFn from '../../../_lib/buildMatchFn/index'
  
  var matchOrdinalNumberPattern = /^第?\d+(日)?(年)?/i
  var parseOrdinalNumberPattern = /\d+/i
  
  var matchEraPatterns = {
    narrow: /^(B\.?C\.?|A\.?D\.?)/i,
    abbreviated: /^(紀元[前後]|西暦)/i,
    wide: /^(紀元[前後]|西暦)/i,
  }
  var parseEraPatterns = {
    narrow: [/^B/i, /^A/i],
    any: [/^(紀元前)/i, /^(西暦|紀元後)/i],
  }
  
  var matchQuarterPatterns = {
    narrow: /^[1234]/i,
    abbreviated: /^Q[1234]/i,
    wide: /^第[1234一二三四１２３４]四半期/i,
  }
  var parseQuarterPatterns = {
    any: [/(1|一|１)/i, /(2|二|２)/i, /(3|三|３)/i, /(4|四|４)/i],
  }
  
  var matchMonthPatterns = {
    narrow: /^([123456789]|1[012])/,
    abbreviated: /^([123456789]|1[012])月/i,
    wide: /^([123456789]|1[012])月/i,
  }
  var parseMonthPatterns = {
    any: [
      /^1\D/,
      /^2/,
      /^3/,
      /^4/,
      /^5/,
      /^6/,
      /^7/,
      /^8/,
      /^9/,
      /^10/,
      /^11/,
      /^12/,
    ],
  }
  
  var matchDayPatterns = {
    narrow: /^[日月火水木金土]/,
    short: /^[日月火水木金土]/,
    abbreviated: /^[日月火水木金土]/,
    wide: /^[日月火水木金土]曜日/,
  }
  var parseDayPatterns = {
    any: [/^日/, /^月/, /^火/, /^水/, /^木/, /^金/, /^土/],
  }
  
  var matchDayPeriodPatterns = {
    any: /^(AM|PM|午前|午後|正午|深夜|真夜中|夜|朝)/i,
  }
  var parseDayPeriodPatterns = {
    any: {
      am: /^(A|午前)/i,
      pm: /^(P|午後)/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
  