Method: Cosensee::LineParser#parse_double_bracket

Defined in:
lib/cosensee/line_parser.rb

#parse_double_bracket(line) ⇒ Object



166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
# File 'lib/cosensee/line_parser.rb', line 166

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

  parsed = []

  line.content.each do |elem|
    if elem.is_a?(String)
      loop do
        matched = elem.match(/\[\[(.+?)\]\]/)
        if matched
          parsed << matched.pre_match
          parsed << Cosensee::Node::DoubleBracket.new(content: [matched[1]], raw: matched[0])
          elem = matched.post_match
        else
          parsed << elem
          break # loop
        end
      end
    else
      parsed << elem
    end
  end

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