Sha256: 7c6c950878e075c82f6c63e512c7281ebdafd1033249df638c4226149c5f4a6a
Contents?: true
Size: 1.14 KB
Versions: 3
Compression:
Stored size: 1.14 KB
Contents
# frozen_string_literal: true # Functions for detecting an enum. module EnumModule def enum?(back_card) return false unless valid?(back_card) return true if ordered_or_headered?(back_card) return false if detect_non_ol(back_card) || !same_prefix?(back_card) true end def ordered?(back_card) back_card.each_with_index do |item, index| return false unless item.start_with?("#{index + 1}. ") end true end private def valid?(back_card) back_card.is_a?(Array) && back_card.any? end def ordered_or_headered?(back_card) ordered?(back_card) || enum_with_header?(back_card) end def detect_non_ol(back_card) back_card.each { |element| return true unless element[/^[-+*]\s.*/] } false end def enum_with_header?(back_card) return false if back_card.first[/^[-+*]\s.*/] back_card[1..back_card.size].each do |element| return false unless element[/^[-+*]\s.*/] end true end def same_prefix?(back_card) prefix = back_card.first[0, 2] back_card_rest = back_card - [back_card.first] back_card_rest.all? { |list_item| list_item.start_with?(prefix) } end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
rast-1.0.0 | examples/enum_module.rb |
rast-0.19.1 | examples/enum_module.rb |
rast-0.19.0 | examples/enum_module.rb |