class TwitterCldr::Resources::ReadmeRenderer

Attributes

assertion_failures[R]
text[R]

Public Class Methods

new(text) click to toggle source
# File lib/twitter_cldr/resources/readme_renderer.rb, line 16
def initialize(text)
  @text = text
  @assertion_failures = []
end

Public Instance Methods

datetime() click to toggle source
# File lib/twitter_cldr/resources/readme_renderer.rb, line 25
def datetime
  @datetime ||= DateTime.new(2014, 2, 14, 12, 20, 5, 0)
end
render() click to toggle source
# File lib/twitter_cldr/resources/readme_renderer.rb, line 21
def render
  ERB.new(text).result(binding)
end
time() click to toggle source
# File lib/twitter_cldr/resources/readme_renderer.rb, line 29
def time
  @time ||= Time.gm(2014, 2, 14, 12, 20, 5, 0)
end

Private Instance Methods

assert(got, expected) click to toggle source
# File lib/twitter_cldr/resources/readme_renderer.rb, line 35
def assert(got, expected)
  if got.is_a?(String) && expected.is_a?(String)
    got = got.localize.normalize(using: :NFKC).to_s
    expected = expected.localize.normalize(using: :NFKC).to_s
  end

  unless objs_equal?(got, expected)
    line_num = line_num_from_stack_trace(Kernel.caller)
    assertion_failures << ReadmeAssertionFailure.new(
      "Expected `#{got.inspect}` to be `#{expected.inspect}` in README on line #{line_num}",
      line_num
    )
  end

  got
end
assert_false(got) click to toggle source
# File lib/twitter_cldr/resources/readme_renderer.rb, line 65
def assert_false(got)
  assert(got, false)
end
assert_no_error(proc) click to toggle source
# File lib/twitter_cldr/resources/readme_renderer.rb, line 69
def assert_no_error(proc)
  error = nil
  begin
    proc.call
  rescue => e
    line_num = line_num_from_stack_trace(Kernel.caller)
    assertion_failures << ReadmeAssertionFailure.new(
      "Expected README line #{line_num} not to raise an exception, but it did:\n#{e.message}\n#{e.backtrace.join("\n")}",
      line_num
    )
  end
end
assert_true(got) click to toggle source
# File lib/twitter_cldr/resources/readme_renderer.rb, line 61
def assert_true(got)
  assert(got, true)
end
ellipsize(obj) click to toggle source
# File lib/twitter_cldr/resources/readme_renderer.rb, line 88
def ellipsize(obj)
  case obj
    when Array
      "[#{obj.map(&:inspect).join(", ")}, ... ]"
    when Hash
      hash_text = obj.map { |key, val| "#{key.inspect} => #{val.inspect}" }.join(", ")
      "{ ... #{hash_text} ... }"
  end
end
line_num_from_stack_trace(trace) click to toggle source
# File lib/twitter_cldr/resources/readme_renderer.rb, line 84
def line_num_from_stack_trace(trace)
  trace[0].split(":")[1].to_i  # kind of a hack...
end
objs_equal?(obj1, obj2) click to toggle source
# File lib/twitter_cldr/resources/readme_renderer.rb, line 52
def objs_equal?(obj1, obj2)
  case obj1
    when Array
      obj1 - obj2 == []
    else
      obj1 == obj2
  end
end
slice_hash(hash, keys) click to toggle source
# File lib/twitter_cldr/resources/readme_renderer.rb, line 98
def slice_hash(hash, keys)
  hash.inject({}) do |ret, (key, val)|
    ret[key] = val if keys.include?(key)
    ret
  end
end