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)


111
112
113
114
115
116
117
118
119
120
121
# File 'lib/theme_check/position.rb', line 111

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.



109
110
111
# File 'lib/theme_check/position.rb', line 109

def contents
  @contents
end

#needleObject (readonly)

Returns the value of attribute needle.



109
110
111
# File 'lib/theme_check/position.rb', line 109

def needle
  @needle
end

Instance Method Details

#end_columnObject



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

def end_column
  end_row_column[1]
end

#end_indexObject

0-indexed, exclusive



129
130
131
# File 'lib/theme_check/position.rb', line 129

def end_index
  start_index + needle.size
end

#end_rowObject



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

def end_row
  end_row_column[0]
end

#start_columnObject



137
138
139
# File 'lib/theme_check/position.rb', line 137

def start_column
  start_row_column[1]
end

#start_indexObject

0-indexed, inclusive



124
125
126
# File 'lib/theme_check/position.rb', line 124

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

#start_rowObject



133
134
135
# File 'lib/theme_check/position.rb', line 133

def start_row
  start_row_column[0]
end