Skip to content

Instantly share code, notes, and snippets.

@jimweirich
jimweirich / sqrt_spec.rb
Created August 10, 2013 21:19
Square Root function
# -*- coding: utf-8 -*-
Sqrt = ->(n) {
guess = n / 2.0
loop do
if (guess**2 - n) < 0.0001
return guess
end
guess = (guess + n/guess) / 2.0
end
@jimweirich
jimweirich / attrs.rb
Created August 7, 2013 16:18
Trivial non-factory for valid attributes.
require 'date'
# Trivial collection of valid attributes for Active Record objects.
#
# Usage:
#
# emp = Employee.new(Attrs.for(:employee))
#
module Attrs
Attributes = { }
@jimweirich
jimweirich / assertions.rb
Last active December 20, 2015 09:59
Proof of concept for Pre/Post condition assertions based on RSpec/Given
require 'given/natural_assertion'
require 'given/line_extractor'
class Object
def self._Gvn_location_of(block)
eval "[__FILE__, __LINE__]", block.binding
end
end
module Given
@jimweirich
jimweirich / arg_matching_spec.rb
Created July 19, 2013 01:02
Argument matching
require 'rspec/given'
class Array
def ===(other)
size == other.size &&
zip(other).all? { |a, b| a === b }
end
end
describe "Arg Matching" do
@jimweirich
jimweirich / minitest-given-push.sh
Created July 10, 2013 00:34
Can't push minitest-given
$ gem push minitest-given-3.0.0.beta.3.gem
Pushing gem to https://rubygems.org...
You do not have permission to push to this gem.
$
@jimweirich
jimweirich / cpu.rb
Last active December 18, 2015 16:49
Can people run this script and see if it gives accurate count of CPUs on their system. Report results in the comments please. Thanks! Oh! And don't forget to report what kind of system you are running this on (linux, windows, mac, etc.). UPDATE: Revised version that uses the Java runtime if running under JRuby.
require 'rbconfig'
# Based on a script at:
# http://stackoverflow.com/questions/891537/ruby-detect-number-of-cpus-installed
class CpuCounter
def self.count
new.count
end
def count
printf "Latitude? "
latitude_degrees = gets.to_f
latitude = latitude_degrees * Math::PI / 180.0
angular_velocity = 2 * Math::PI / (24 * 60 * 60) # Radians per second
radius_at_equator = 6_371_000 # meters
radius_at_latitude = radius_at_equator * Math.cos(latitude)
describe 'EventBus methods cascade' do
Invariant { result.should == EventBus }
context 'clear' do
When(:result) { EventBus.clear }
Then { }
end
context 'publish' do
When(:result) { EventBus.publish('aa123bb', {}) }
@jimweirich
jimweirich / pullrequest.rb
Created May 5, 2013 00:51
Script I use to pull in pull requests from GitHub
#!/usr/bin/ruby -wKU
if ARGV.empty?
puts "Usage: pullrequest user:branch"
exit 1
end
url = `git config --get remote.origin.url`
unless %r{([^/]+)\.git$} =~ url
puts "Unable to determine repo from url (#{url})"
@jimweirich
jimweirich / expression.rb
Last active December 16, 2015 22:49
Simple example of Parslet.
require 'parslet'
class Expressions < Parslet::Parser
rule(:operator) { match("[+*/-]").as(:op) }
rule(:operation) { operator >> space >> vector.as(:args) }
rule(:space) { match('\s').repeat(1) }
rule(:numbers) { space >> number }
rule(:vector) { (number >> numbers.repeat(1)).as(:vec) }
rule(:number) { match("[0-9]").repeat(1).as(:number) }
rule(:expr) { vector | number | operation }