module RuWEB::SewSource

Gets source

Public Instance Methods

init(raw) click to toggle source
# File lib/ruweb/sewsource.rb, line 8
def init(raw)
  @source = sew(raw)
end

Private Instance Methods

generate_source_block_from(link, pad) click to toggle source
# File lib/ruweb/sewsource.rb, line 26
def generate_source_block_from(link, pad)
  msg = "\n\n:::info\n▶️ [#{Time.now}] #{link}\n:::\n\n"
  "#{msg}#{pad}#{msg.gsub('▶️', '⏹️')}"
end
remove_metadata(markdown) click to toggle source
# File lib/ruweb/sewsource.rb, line 31
def remove_metadata(markdown)
  markdown.sub(/^---\n+(.|\n)+?---(\n+|$)/, '')
end
sew(markdown) click to toggle source
# File lib/ruweb/sewsource.rb, line 14
def sew(markdown)
  regex = /\u005F\[(.+?)\]\((.+?)\)/
  markdown = markdown.gsub(regex) do |match|
    name  = match.gsub(regex, '\1').strip
    uri   = match.gsub(regex, '\2').strip
    puts  "🕷️ ruweb: other pad detected: sewing '#{name}' from '#{uri}'"
    pad   = remove_metadata(RuWEB::Read.init(uri))
    generate_source_block_from(match[1..-1], pad)
  end
  markdown.scan(regex).any? ? sew(markdown) : markdown
end