Class: ThemeCheck::StrictPosition

Inherits:
Object
  • Object
show all
Includes:
PositionHelper
Defined in:
lib/theme_check/position.rb

Overview

This method is stricter than Position in the sense that it doesn’t accept invalid inputs. Makes for code that is easier to understand.

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from PositionHelper

#bounded, #from_index_to_row_column, #from_row_column_to_index

Constructor Details

#initialize(needle, contents, start_index) ⇒ StrictPosition

Returns a new instance of StrictPosition.

Raises:

  • (ArgumentError)


122
123
124
125
126
127
128
129
130
131
132
# File 'lib/theme_check/position.rb', line 122

def initialize(needle, contents, start_index)
  raise ArgumentError, 'Bad start_index' unless start_index.is_a?(Integer)
  raise ArgumentError, 'Bad contents' unless contents.is_a?(String)
  raise ArgumentError, 'Bad needle' unless needle.is_a?(String) || !contents.index(needle, start_index)

  @needle = needle
  @contents = contents
  @start_index = start_index
  @start_row_column = nil
  @end_row_column = nil
end

Instance Attribute Details

#contentsObject (readonly)

Returns the value of attribute contents.



120
121
122
# File 'lib/theme_check/position.rb', line 120

def contents
  @contents
end

#needleObject (readonly)

Returns the value of attribute needle.



120
121
122
# File 'lib/theme_check/position.rb', line 120

def needle
  @needle
end

Instance Method Details

#end_columnObject



156
157
158
# File 'lib/theme_check/position.rb', line 156

def end_column
  end_row_column[1]
end

#end_indexObject

0-indexed, exclusive



140
141
142
# File 'lib/theme_check/position.rb', line 140

def end_index
  start_index + needle.size
end

#end_rowObject



152
153
154
# File 'lib/theme_check/position.rb', line 152

def end_row
  end_row_column[0]
end

#start_columnObject



148
149
150
# File 'lib/theme_check/position.rb', line 148

def start_column
  start_row_column[1]
end

#start_indexObject

0-indexed, inclusive



135
136
137
# File 'lib/theme_check/position.rb', line 135

def start_index
  @contents.index(needle, @start_index)
end

#start_rowObject



144
145
146
# File 'lib/theme_check/position.rb', line 144

def start_row
  start_row_column[0]
end