module MarkdownIt::Helpers::ParseLinkLabel

Public Instance Methods

parseLinkLabel(state, start, disableNested = false) click to toggle source
# File lib/motion-markdown-it/helpers/parse_link_label.rb, line 10
def parseLinkLabel(state, start, disableNested = false)
  labelEnd  = -1
  max       = state.posMax
  oldPos    = state.pos
  state.pos = start + 1
  level     = 1

  while (state.pos < max)
    marker = charCodeAt(state.src, state.pos)
    if (marker == 0x5D) # ]
      level -= 1
      if (level == 0)
        found = true
        break
      end
    end

    prevPos = state.pos
    state.md.inline.skipToken(state)
    if (marker == 0x5B) # [
      if (prevPos == state.pos - 1)
        # increase level if we find text `[`, which is not a part of any token
        level += 1
      elsif (disableNested)
        state.pos = oldPos
        return -1
      end
    end
  end

  if (found)
    labelEnd = state.pos
  end

  # restore old state
  state.pos = oldPos

  return labelEnd
end