{"version":3,"file":"option-parser.cjs","sources":["../../../src/remark-plugins/util/option-parser.ts"],"sourcesContent":["import type { ParseRangeResult } from '../interfaces/option-parser';\n\n/**\n * Options parser for custom tag\n */\nexport const OptionParser = {\n  /**\n   * Parse range expression\n   *\n   * <ul>\n   *  <li>ex:</li>\n   *  <ul>\n   *    <li>1:2 -> { start: 1, end: 2 }</li>\n   *    <li>1:  -> { start: 1, end: -1 }</li>\n   *    <li>2+3 -> { start: 1, end: 5 }</li>\n   *  </ul>\n   * </ul>\n   *\n   * @see https://regex101.com/r/w4KCwC/4\n   *\n   * @static\n   * @param {string} str\n   * @returns {ParseRangeResult}\n   */\n  parseRange(str: string): ParseRangeResult | null {\n    if (str == null) {\n      return null;\n    }\n\n    // see: https://regex101.com/r/w4KCwC/4\n    const match = str.match(/^(-?[0-9]+)(([:+]{1})(-?[0-9]+)?)?$/);\n    if (!match) {\n      return null;\n    }\n\n    // determine start\n    let start: number;\n    let end = -1;\n\n    // has operator\n    if (match[3] != null) {\n      start = +match[1];\n      const operator = match[3];\n\n      // determine end\n      if (operator === ':') {\n        end = +match[4] || -1; // set last(-1) if undefined\n      } else if (operator === '+') {\n        end = +match[4] || 0; // plus zero if undefined\n        end += start;\n      }\n    }\n    // don't have operator\n    else {\n      start = 1;\n      end = +match[1];\n    }\n\n    return { start, end };\n  },\n};\n"],"names":["OptionParser","str","match","start","end","operator"],"mappings":"gFAKO,MAAMA,EAAe,CAmB1B,WAAWC,EAAsC,CAC/C,GAAIA,GAAO,KACF,OAAA,KAIH,MAAAC,EAAQD,EAAI,MAAM,qCAAqC,EAC7D,GAAI,CAACC,EACI,OAAA,KAIL,IAAAC,EACAC,EAAM,GAGN,GAAAF,EAAM,CAAC,GAAK,KAAM,CACZC,EAAA,CAACD,EAAM,CAAC,EACV,MAAAG,EAAWH,EAAM,CAAC,EAGpBG,IAAa,IACTD,EAAA,CAACF,EAAM,CAAC,GAAK,GACVG,IAAa,MAChBD,EAAA,CAACF,EAAM,CAAC,GAAK,EACZE,GAAAD,EACT,MAIQA,EAAA,EACFC,EAAA,CAACF,EAAM,CAAC,EAGT,MAAA,CAAE,MAAAC,EAAO,IAAAC,CAAI,CAAA,CAExB"}