text: // Process inline footnotes (^[...])
  
  import parseLinkLabel from '../helpers/parse_link_label';
  
  
  export default function footnote_inline(state, silent) {
    var labelStart,
        labelEnd,
        footnoteId,
        oldLength,
        max = state.posMax,
        start = state.pos;
  
    if (start + 2 >= max) { return false; }
    if (state.src.charCodeAt(start) !== 0x5E/* ^ */) { return false; }
    if (state.src.charCodeAt(start + 1) !== 0x5B/* [ */) { return false; }
    if (state.level >= state.options.maxNesting) { return false; }
  
    labelStart = start + 2;
    labelEnd = parseLinkLabel(state, start + 1);
  
    // parser failed to find ']', so it's not a valid note
    if (labelEnd < 0) { return false; }
  
    // We found the end of the link, and know for a fact it's a valid link;
    // so all that's left to do is to call tokenizer.
    //
    if (!silent) {
      if (!state.env.footnotes) { state.env.footnotes = {}; }
      if (!state.env.footnotes.list) { state.env.footnotes.list = []; }
      footnoteId = state.env.footnotes.list.length;
  
      state.pos = labelStart;
      state.posMax = labelEnd;
  
      state.push({
        type: 'footnote_ref',
        id: footnoteId,
        level: state.level
      });
      state.linkLevel++;
      oldLength = state.tokens.length;
      state.parser.tokenize(state);
      state.env.footnotes.list[footnoteId] = { tokens: state.tokens.splice(oldLength) };
      state.linkLevel--;
    }
  
    state.pos = labelEnd + 1;
    state.posMax = max;
    return true;
  };
  