Method: Cosensee::LineParser#parse_url

Defined in:
lib/cosensee/line_parser.rb

#parse_url(line) ⇒ Object



140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
# File 'lib/cosensee/line_parser.rb', line 140

def parse_url(line)
  return line if line.parsed?

  parsed = []

  line.content.each do |elem|
    if elem.is_a?(String)
      loop do
        matched = elem.match(%r{(^|.*?)(https?://[^\s]+)})
        if matched
          parsed << "#{matched.pre_match}#{matched[1]}"
          parsed << Cosensee::Node::Link.new(matched[2], matched[2])
          elem = matched.post_match
        else
          parsed << elem
          break # loop
        end
      end
    else
      parsed << elem
    end
  end

  line.update(content: clean_elements(parsed))
end