Sha256: 059f453017ebe448ca9890701217d348dbc5c6bfab4504750a916452ef121542

Contents?: true

Size: 1.24 KB

Versions: 8

Compression:

Stored size: 1.24 KB

Contents

module Jazzy
  class SourceMark
    attr_accessor :name
    attr_accessor :has_start_dash
    attr_accessor :has_end_dash

    def initialize(mark_string = nil)
      return unless mark_string

      # Format: 'MARK: - NAME -' with dashes optional
      mark_string.sub!(/^MARK: /, '')

      if mark_string.empty?
        # Empty
        return
      elsif mark_string == '-'
        # Separator
        self.has_start_dash = true
        return
      end

      self.has_start_dash = mark_string.start_with?('- ')
      self.has_end_dash = mark_string.end_with?(' -')

      start_index = has_start_dash ? 2 : 0
      end_index = has_end_dash ? -3 : -1

      self.name = mark_string[start_index..end_index]
    end

    def self.new_generic_requirements(requirements)
      marked_up = requirements.gsub(/\b([^=:]\S*)\b/, '`\1`')
      text = "Available where #{marked_up}"
      new(text)
    end

    def empty?
      !name && !has_start_dash && !has_end_dash
    end

    def copy(other)
      self.name = other.name
      self.has_start_dash = other.has_start_dash
      self.has_end_dash = other.has_end_dash
    end

    # Can we merge the contents of another mark into our own?
    def can_merge?(other)
      other.empty? || other.name == name
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
jazzy-0.13.7 lib/jazzy/source_mark.rb
jazzy-0.13.6 lib/jazzy/source_mark.rb
jazzy-0.13.5 lib/jazzy/source_mark.rb
jazzy-0.13.4 lib/jazzy/source_mark.rb
jazzy-0.13.3 lib/jazzy/source_mark.rb
jazzy-0.13.2 lib/jazzy/source_mark.rb
jazzy-0.13.1 lib/jazzy/source_mark.rb
jazzy-0.13.0 lib/jazzy/source_mark.rb