| module Sass::Source |
| class Position |
| # The one-based line of the document associated with the position. |
| # |
| # @return [Integer] |
| attr_accessor :line |
| |
| # The one-based offset in the line of the document associated with the |
| # position. |
| # |
| # @return [Integer] |
| attr_accessor :offset |
| |
| # @param line [Integer] The source line |
| # @param offset [Integer] The source offset |
| def initialize(line, offset) |
| @line = line |
| @offset = offset |
| end |
| |
| # @return [String] A string representation of the source position. |
| def inspect |
| "#{line.inspect}:#{offset.inspect}" |
| end |
| |
| # @param str [String] The string to move through. |
| # @return [Position] The source position after proceeding forward through |
| # `str`. |
| def after(str) |
| newlines = str.count("\n") |
| Position.new(line + newlines, |
| if newlines == 0 |
| offset + str.length |
| else |
| str.length - str.rindex("\n") - 1 |
| end) |
| end |
| end |
| end |