Sha256: d090703c59ba6429b6fe00f94612409c67de12083a7c3eb26c9cd8406d207f5d

Contents?: true

Size: 952 Bytes

Versions: 4

Compression:

Stored size: 952 Bytes

Contents

# encoding: utf-8
class ModsDisplay::Abstract < ModsDisplay::Field

  def label
    super || "Abstract"
  end

  def text
    return link_value(super) unless super.nil?
    link_value(@value.text)
  end

  private

  def link_value(val)
    val = val.dup
    # http://daringfireball.net/2010/07/improved_regex_for_matching_urls
    url = /(?i)\b(?:https?:\/\/|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}\/)(?:[^\s()<>]+|\([^\s()<>]+|\([^\s()<>]+\)*\))+(?:\([^\s()<>]+|\([^\s()<>]+\)*\)|[^\s`!()\[\]{};:'".,<>?«»“”‘’])/i
    # http://www.regular-expressions.info/email.html
    email = /[A-Z0-9_\.%\+\-\']+@(?:[A-Z0-9\-]+\.)+(?:[A-Z]{2,4}|museum|travel)/i
    matches = [val.scan(url), val.scan(email)].flatten
    matches.each do |match|
      if match =~ email
        val = val.gsub(match, "<a href='mailto:#{match}'>#{match}</a>")
      else
        val = val.gsub(match, "<a href='#{match}'>#{match}</a>")
      end
    end
    val
  end

end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
mods_display-0.0.1.beta4 lib/mods_display/fields/abstract.rb
mods_display-0.0.1.beta3 lib/mods_display/fields/abstract.rb
mods_display-0.0.1.beta2 lib/mods_display/fields/abstract.rb
mods_display-0.0.1.beta1 lib/mods_display/fields/abstract.rb