class Object
Constants
- BLACK
- BOLD
- BRIGHT_BLACK
- BRIGHT_BLACK_BACKGROUND
- BRIGHT_RED_BACKGROUND
- BRIGHT_WHITE
- DIM
- GUTTER_STYLE
- INDICATORS
- RANGE_BEGIN
- RANGE_END
- RANGE_STYLE
- RESET
- WHITE
- WHITE_BACKGROUND
Public Instance Methods
check_field_by_index(field, index)
click to toggle source
# File lib/enolib/lookup.rb, line 50 def check_field_by_index(field, index) return false if index < field[:ranges][:line][RANGE_BEGIN] return { element: field, instruction: field } if index <= field[:ranges][:line][RANGE_END] return false unless field.has_key?(:continuations) && index <= field[:continuations].last[:ranges][:line][RANGE_END] field[:continuations].each do |continuation| return { element: field, instruction: nil } if index < continuation[:ranges][:line][RANGE_BEGIN] return { element: field, instruction: continuation } if index <= continuation[:ranges][:line][RANGE_END] end end
check_field_by_line(field, line)
click to toggle source
# File lib/enolib/lookup.rb, line 38 def check_field_by_line(field, line) return false if line < field[:line] return { element: field, instruction: field } if line == field[:line] return false unless field.has_key?(:continuations) && line <= field[:continuations].last[:line] field[:continuations].each do |continuation| return { element: field, instruction: continuation } if line == continuation[:line] return { element: field, instruction: nil } if line < continuation[:line] end end
check_fieldset_by_index(fieldset, index)
click to toggle source
# File lib/enolib/lookup.rb, line 88 def check_fieldset_by_index(fieldset, index) return false if index < fieldset[:ranges][:line][RANGE_BEGIN] return { element: fieldset, instruction: fieldset } if index <= fieldset[:ranges][:line][RANGE_END] return false unless fieldset.has_key?(:entries) && index <= fieldset[:entries].last[:ranges][:line][RANGE_END] fieldset[:entries].each do |entry| if index < entry[:ranges][:line][RANGE_BEGIN] if entry.has_key?(:comments) && index >= entry[:comments][0][:ranges][:line][RANGE_BEGIN] return { element: entry, instruction: entry[:comments].find { |comment| index <= comment[:ranges][:line][RANGE_END] } } end return { element: fieldset, instruction: nil } end return { element: entry, instruction: entry } if index <= entry[:ranges][:line][RANGE_END] match_in_entry = check_field_by_index(entry, index) return match_in_entry if match_in_entry end end
check_fieldset_by_line(fieldset, line)
click to toggle source
# File lib/enolib/lookup.rb, line 62 def check_fieldset_by_line(fieldset, line) return false if line < fieldset[:line] return { element: fieldset, instruction: fieldset } if line == fieldset[:line] return false unless fieldset.has_key?(:entries) && line <= fieldset[:entries].last[:line] fieldset[:entries].each do |entry| return { element: entry, instruction: entry } if line == entry[:line] if line < entry[:line] if entry.has_key?(:comments) && line >= entry[:comments][0][:line] return { element: entry, instruction: entry[:comments].find { |comment| line == comment[:line] } } end return { element: fieldset, instruction: nil } end match_in_entry = check_field_by_line(entry, line) return match_in_entry if match_in_entry end end
check_in_section_by_index(section, index)
click to toggle source
# File lib/enolib/lookup.rb, line 207 def check_in_section_by_index(section, index) section[:elements].reverse_each do |element| if element.has_key?(:comments) next if index < element[:comments][0][:ranges][:line][RANGE_BEGIN] if index <= element[:comments][-1][:ranges][:line][RANGE_END] return { element: element, instruction: element[:comments].find { |comment| index <= comment[:ranges][:line][RANGE_END] } } end end next if index < element[:ranges][:line][RANGE_BEGIN] return { element: element, instruction: element } if index <= element[:ranges][:line][RANGE_END] case element[:type] when :field match_in_field = check_field_by_index(element, index) return match_in_field if match_in_field when :fieldset match_in_fieldset = check_fieldset_by_index(element, index) return match_in_fieldset if match_in_fieldset when :list match_in_list = check_list_by_index(element, index) return match_in_list if match_in_list when :multiline_field_begin unless element.has_key?(:template) match_in_multiline_field = check_multiline_field_by_index(element, index) return match_in_multiline_field if match_in_multiline_field end when :section return check_in_section_by_index(element, index) end break end { element: section, instruction: nil } end
check_in_section_by_line(section, line)
click to toggle source
# File lib/enolib/lookup.rb, line 165 def check_in_section_by_line(section, line) section[:elements].reverse_each do |element| if element.has_key?(:comments) next if line < element[:comments][0][:line] if line <= element[:comments][-1][:line] return { element: element, instruction: element[:comments].find { |comment| line == comment[:line] } } end end next if element[:line] > line return { element: element, instruction: element } if element[:line] == line case element[:type] when :field match_in_field = check_field_by_line(element, line) return match_in_field if match_in_field when :fieldset match_in_fieldset = check_fieldset_by_line(element, line) return match_in_fieldset if match_in_fieldset when :list match_in_list = check_list_by_line(element, line) return match_in_list if match_in_list when :multiline_field_begin unless element.has_key?(:template) match_in_multiline_field = check_multiline_field_by_line(element, line) return match_in_multiline_field if match_in_multiline_field end when :section return check_in_section_by_line(element, line) end break end { element: section, instruction: nil } end
check_list_by_index(list, index)
click to toggle source
# File lib/enolib/lookup.rb, line 139 def check_list_by_index(list, index) return false if index < list[:ranges][:line][RANGE_BEGIN] return { element: list, instruction: list } if index <= list[:ranges][:line][RANGE_END] return false unless list.has_key?(:items) && index > list[:items].last[:ranges][:line][RANGE_END] list[:items].each do |item| if index < item[:ranges][:line][RANGE_BEGIN] if item.has_key?(:comments) && index >= item[:comments][0][:ranges][:line][RANGE_BEGIN] return { element: item, instruction: item[:comments].find { |comment| index <= comment[:ranges][:line][RANGE_END] } } end return { element: list, instruction: nil } end return { element: item, instruction: item } if index <= item[:ranges][:line][RANGE_END] match_in_item = check_field_by_index(item, index) return match_in_item if match_in_item end end
check_list_by_line(list, line)
click to toggle source
# File lib/enolib/lookup.rb, line 114 def check_list_by_line(list, line) return false if line < list[:line] return { element: list, instruction: list } if line == list[:line] return false unless list.has_key?(:items) && line > list[:items].last[:line] list[:items].each do |item| return { element: item, instruction: item } if line == item[:line] if line < item[:line] if item.has_key?(:comments) && line >= item[:comments][0][:line] return { element: item, instruction: item[:comments].find { |comment| line == comment[:line] } } end return { element: list, instruction: nil } end match_in_item = check_field_by_line(item, line) return match_in_item if match_in_item end end
check_multiline_field_by_index(field, index)
click to toggle source
# File lib/enolib/lookup.rb, line 22 def check_multiline_field_by_index(field, index) return false if index < field[:ranges][:line][RANGE_BEGIN] || index > field[:end][:ranges][:line][RANGE_END] if index <= field[:ranges][:line][RANGE_END] { element: field, instruction: field } elsif index >= field[:end][:ranges][:line][RANGE_BEGIN] { element: field, instruction: field[:end] } else { element: field, instruction: field[:lines].find { |candidate| index <= candidate[:ranges][:line][RANGE_END] } } end end
check_multiline_field_by_line(field, line)
click to toggle source
# File lib/enolib/lookup.rb, line 6 def check_multiline_field_by_line(field, line) return false if line < field[:line] || line > field[:end][:line] if line == field[:line] { element: field, instruction: field } elsif line == field[:end][:line] { element: field, instruction: field[:end] } else { element: field, instruction: field[:lines].find { |candidate| candidate[:line] == line } } end end