Sha256: 99816f348ada0beb863c336ee1efbf1971909ec2c1289c89ae722179f707f123

Contents?: true

Size: 656 Bytes

Versions: 11

Compression:

Stored size: 656 Bytes

Contents

require 'ripper'

module Hamlit
  module Concerns
    module Lexable
      TYPE_POSITION = 1

      def skip_tokens!(tokens, *types)
        while types.include?(type_of(tokens.first))
          tokens.shift
        end
      end

      def type_of(token)
        return nil unless token
        token[TYPE_POSITION]
      end

      # Convert ripper's position to StringScanner's one.
      def convert_position(text, row, col)
        return col if row <= 1

        pos   = col
        lines = text.split("\n")
        (0..(row - 2)).each do |row_index|
          pos += lines[row_index].bytesize + 1
        end
        pos
      end
    end
  end
end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
hamlit-1.7.2 lib/hamlit/concerns/lexable.rb
hamlit-1.7.1 lib/hamlit/concerns/lexable.rb
hamlit-1.7.0 lib/hamlit/concerns/lexable.rb
hamlit-1.6.7 lib/hamlit/concerns/lexable.rb
hamlit-1.6.6 lib/hamlit/concerns/lexable.rb
hamlit-1.6.5 lib/hamlit/concerns/lexable.rb
hamlit-1.6.4 lib/hamlit/concerns/lexable.rb
hamlit-1.6.3 lib/hamlit/concerns/lexable.rb
hamlit-1.6.2 lib/hamlit/concerns/lexable.rb
hamlit-1.6.1 lib/hamlit/concerns/lexable.rb
hamlit-1.6.0 lib/hamlit/concerns/lexable.rb