module RuboCop::Ext::RegexpParser::Expression::Base
def build_location
def build_location return { body: expression } unless (q = quantifier) body = expression.adjust(end_pos: -q.text.length) q_loc = expression.with(begin_pos: body.end_pos) { body: body, quantifier: q_loc } end
def expression
def expression @expression ||= origin.adjust(begin_pos: ts, end_pos: ts + full_length) end
def expression
def expression end_pos = start_index + full_length @expression ||= origin.adjust(begin_pos: start_index, end_pos: end_pos) end
def loc
^ end
^ begin
^^^^^ body
^^^^ quantifier
^^^^^^^^^ expression
[a-z]{2,}
E.g.
- begin/end: for `[` and `]` (only CharacterSet for now)
- quantifier: for `+`, `{1,2}`, etc.
- expression: complete expression
@returns a location map like `parser` does, with:
def loc @loc ||= Map.new(expression, **build_location) end
def start_index
def start_index # ts is a byte index; convert it to a character index @start_index ||= source.byteslice(0, ts).length end