lib/hackpad/cli/api.rb in hackpad-cli-0.1.1 vs lib/hackpad/cli/api.rb in hackpad-cli-0.1.2
- old
+ new
@@ -1,8 +1,9 @@
require 'oauth'
require 'net/http'
require 'json'
+require 'reverse_markdown'
module Hackpad
module Cli
class ApiException < StandardError
@@ -31,19 +32,36 @@
def read_options(id)
get "/api/1.0/pad/#{id}/options"
end
def read(id, ext)
- get "/api/1.0/pad/#{id}/content.#{ext}", false
+ realext = (ext == 'md') ? 'html' : ext
+ get "/api/1.0/pad/#{id}/content.#{realext}", false, (ext == 'md')
end
- def get(url, json = true)
+ def get(url, json = true, to_md = false)
res = @token.get url, 'User-Agent' => "hackpad-cli v#{Hackpad::Cli::VERSION}"
if res.is_a? Net::HTTPSuccess
- json ? JSON.parse(res.body) : res.body
+ if json
+ JSON.parse(res.body)
+ else
+ if to_md
+ cleanup_md(res.body)
+ else
+ res.body
+ end
+ end
else
fail ApiException, "HTTP error, code #{res.code}"
end
+ end
+
+ def cleanup_md(text)
+ back = ReverseMarkdown.convert(text, github_flavored: true).strip
+ back.sub!(/<head>.*<\/head>\n/m, '')
+ back.gsub!(/-([^\n]+)\n\n -/m, "-\\1\n -")
+ back.gsub!(/\n( )*-([^\n]+)\n?\n( )*-([^\n]+)\n?\n/m, "\n\\1-\\2\n\\3-\\4\n")
+ back.gsub(/\n\n\*\*([^\*]+)\*\*\n\n/, "\n\n### \\1\n\n")
end
end
end
end