instance method find_offset

Ruby on Rails 7.1.6

Since v7.1.6 Private

Available in: v7.1.6 v7.2.3 v8.0.4 v8.1.2

Signature

find_offset(compiled, source_tokens, error_column)

No documentation comment.

Parameters

compiled req
source_tokens req
error_column req
Source
# File actionview/lib/action_view/template/handlers/erb.rb, line 108
        def find_offset(compiled, source_tokens, error_column)
          compiled = StringScanner.new(compiled)

          passed_tokens = []

          while tok = source_tokens.shift
            tok_name, str = *tok
            case tok_name
            when :TEXT
              loop do
                break if compiled.match?(str)
                compiled.getch
              end
              raise LocationParsingError unless compiled.scan(str)
            when :CODE
              if compiled.pos > error_column
                raise LocationParsingError, "We went too far"
              end

              if compiled.pos + str.bytesize >= error_column
                offset = error_column - compiled.pos
                return passed_tokens.map(&:last).join.bytesize + offset
              else
                unless compiled.scan(str)
                  raise LocationParsingError, "Couldn't find code snippet"
                end
              end
            when :OPEN
              next_tok = source_tokens.first.last
              loop do
                break if compiled.match?(next_tok)
                compiled.getch
              end
            when :CLOSE
              next_tok = source_tokens.first.last
              loop do
                break if compiled.match?(next_tok)
                compiled.getch
              end
            else
              raise LocationParsingError, "Not implemented: #{tok.first}"
            end

            passed_tokens << tok
          end
        end

Defined in actionview/lib/action_view/template/handlers/erb.rb line 108 · View on GitHub · Improve this page · Find usages on GitHub

Defined in ActionView::Template::Handlers::ERB

Type at least 2 characters to search.

↑↓ navigate · open · esc close