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