Sha256: 30087e8e288c769b904f88b64eaa32b0205f2b4d3512cadad1aace0ad654e59c

Contents?: true

Size: 866 Bytes

Versions: 1

Compression:

Stored size: 866 Bytes

Contents

require 'typhoeus'
require 'parslet'
require_relative "humans_rb/version"
require_relative "humans_rb/parser"
require_relative "humans_rb/transform"

class HumansRb
  def initialize(url_or_string)
    @url_or_string = url_or_string
  end

  def body
    if @url_or_string =~ /^http/
      @url_or_string << "/humans.txt" if !(@url_or_string =~ /humans\.txt$/)
      @url_or_string = Typhoeus.get(@url_or_string, accept_encoding: "gzip").body
    end

    normalize_string(@url_or_string)
  end

  def parse
    Transform.new.apply(Parser.new.parse(body))
  rescue Parslet::ParseFailed => failure
    puts failure.cause.ascii_tree
  end

  private

  def normalize_string(string)
    string = string.force_encoding("UTF-8")
    string = string.encode("UTF-8", :invalid => :replace, :replace => "")
    string = string.gsub(/^\uFEFF/, "")
    string << "\n"
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
humans_rb-0.0.4 lib/humans_rb.rb