Inspired by Literate CoffeeScript.
$ cat hello.rb.md
Here's a simple program
puts "Hello, world"
$ ruby litrb.rb < hello.rb.md
Hello, world
| # stolen from http://github.com/cschneid/irclogger/blob/master/lib/partials.rb | |
| # and made a lot more robust by me | |
| # this implementation uses erb by default. if you want to use any other template mechanism | |
| # then replace `erb` on line 13 and line 17 with `haml` or whatever | |
| module Sinatra::Partials | |
| def partial(template, *args) | |
| template_array = template.to_s.split('/') | |
| template = template_array[0..-2].join('/') + "/_#{template_array[-1]}" | |
| options = args.last.is_a?(Hash) ? args.pop : {} | |
| options.merge!(:layout => false) |
| # Recursively diff two hashes, showing only the differing values. | |
| # By Henrik Nyh <http://henrik.nyh.se> 2009-07-14 under the MIT license. | |
| # | |
| # Example: | |
| # | |
| # a = { | |
| # "same" => "same", | |
| # "diff" => "a", | |
| # "only a" => "a", | |
| # "nest" => { |
| echo 'export PATH=$HOME/local/bin:$PATH' >> ~/.bashrc | |
| . ~/.bashrc | |
| mkdir ~/local | |
| mkdir ~/node-latest-install | |
| cd ~/node-latest-install | |
| curl http://nodejs.org/dist/node-latest.tar.gz | tar xz --strip-components=1 | |
| ./configure --prefix=~/local | |
| make install # ok, fine, this step probably takes more than 30 seconds... | |
| curl https://www.npmjs.org/install.sh | sh |
| # An application template for Rails 3 | |
| gem "factory_girl_rails", :group => [:development, :test] | |
| gem "factory_girl_generator", :group => [:development, :test] | |
| gem "rspec", :group => [:development, :test] | |
| gem "rspec-rails", :group => [:development, :test] | |
| gem "haml" | |
| gem "haml-rails" | |
| gem "authlogic", :git => "git://github.com/odorcicd/authlogic.git", :branch => "rails3" | |
| # coding: utf-8 | |
| require 'sinatra' | |
| set server: 'thin', connections: [] | |
| get '/' do | |
| halt erb(:login) unless params[:user] | |
| erb :chat, locals: { user: params[:user].gsub(/\W/, '') } | |
| end | |
| get '/stream', provides: 'text/event-stream' do |
| class Hash | |
| # options: | |
| # :exclude => [keys] - keys need to be symbols | |
| def to_ostruct_recursive(options = {}) | |
| convert_to_ostruct_recursive(self, options) | |
| end | |
| private | |
| def convert_to_ostruct_recursive(obj, options) | |
| result = obj |
| source :rubygems | |
| gem 'shotgun', :group=>:development | |
| gem 'rack-cache' | |
| gem 'sinatra', :require => 'sinatra/base' | |
| gem 'sinatra-support' | |
| gem 'haml' |
| #!/usr/bin/env ruby | |
| # coding: utf-8 | |
| require 'benchmark' | |
| @count = 2_000_000 | |
| @lenght = 49 | |
| @pre_compute_16 = Array.new((2**16)) { |f| f.to_s(2).count('1') } | |
| Strategy = Struct.new(:name, :method, :before) |
Inspired by Literate CoffeeScript.
$ cat hello.rb.md
Here's a simple program
puts "Hello, world"
$ ruby litrb.rb < hello.rb.md
Hello, world
| #!/usr/bin/env ruby | |
| class RubyArchive | |
| require 'rubygems/package' | |
| require 'zlib' | |
| attr_reader :path | |
| class Archive |