Sha256: eac0838fe64be209523399d063123b1fa9bd1d342415310ffc97ed66b78b92fe

Contents?: true

Size: 1.1 KB

Versions: 8

Compression:

Stored size: 1.1 KB

Contents

require "uri"

module Coradoc
  module Element
    module Inline
      class Link < Base
        attr_accessor :path, :title, :name, :right_constrain

        declare_children :path, :title, :name

        def initialize(options = {})
          @path = options.fetch(:path, nil)
          @title = options.fetch(:title, nil)
          @name = options.fetch(:name, nil)
          @right_constrain = options.fetch(:right_constrain, false)
        end

        def to_adoc
          link = @path
          unless @path.to_s&.match?(URI::DEFAULT_PARSER.make_regexp)
            link = "link:#{link}"
          end

          name_empty = @name.to_s.empty?
          title_empty = @title.to_s.empty?
          valid_empty_name_link = link.start_with?(%r{https?://})

          link << if name_empty && !title_empty
                    "[#{@title}]"
                  elsif !name_empty
                    "[#{@name}]"
                  elsif valid_empty_name_link && !right_constrain
                    ""
                  else
                    "[]"
                  end
          link
        end
      end
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
coradoc-1.1.6 lib/coradoc/element/inline/link.rb
coradoc-1.1.5 lib/coradoc/element/inline/link.rb
coradoc-1.1.4 lib/coradoc/element/inline/link.rb
coradoc-1.1.3 lib/coradoc/element/inline/link.rb
coradoc-1.1.2 lib/coradoc/element/inline/link.rb
coradoc-1.1.1 lib/coradoc/element/inline/link.rb
coradoc-1.1.0 lib/coradoc/element/inline/link.rb
coradoc-1.0.0 lib/coradoc/element/inline/link.rb