Never been to DZone Snippets before?

Snippets is a public source code repository. Easily build up your personal collection of code snippets, categorize them with tags / keywords, and share them with the world

About this user

Fjölnir �sgeirsson http://ninjakitten.us

« Newer Snippets
Older Snippets »
Showing 1-5 of 5 total  RSS 

Matrix rotator

This method rotates a matrix
Example output:
~/Desktop% ruby rotate.rb
normal
12345
00000
fooba
rotated left
50a
40b
30o
20o
10f
rotated right
f01
o02
o03
b04
a05

def rotateMatrix(matrix, direction)
  # - You must Rotate the matrix neo!
  oldMap = matrix

  # Get the number of lines in the old map (they're the new columns)
  lineCount = oldMap.size
  # Get the number of columns in the old map (We have that many rows now)
  columnCount = oldMap[0].size
  @map = []
  columnCount.times { @map.push [] }

  # Loop through every line in the old map, retrieve the appropriate column
  # and make a horizontal column with it's contents
  # we'll take one (old)line at a time and rotate it.
  onLine = 0
  oldMap.each do |oldLine|
    onColumn = 0
    oldLine.each do
      case direction
      when :right
        @map[(columnCount - 1) - onColumn][(lineCount - 1) - onLine] = oldLine[(columnCount - 1) - onColumn]
      when :left
        @map[onColumn][onLine] = oldLine[(columnCount - 1) - onColumn]
      end
      onColumn += 1
    end
    onLine += 1
  end
  @map
end

def rotateRight(matrix)
  rotateMatrix(matrix, :right)
end

def rotateLeft(matrix)
  rotateMatrix(matrix, :left)
end

Alphabetical sorter

// This function sorts an array of objects that include this code, alphabetically
// That's nothing new, except this sorts strings starting with a number correctly!

  # ---
  # Sorting
  # ---
def <=>(other)
    regex = /^[\d]+/
    if self.title =~ regex
      our_num = Regexp.last_match[0].to_i
      if other.title =~ regex
        other_num = Regexp.last_match[0].to_i
        return our_num <=> other_num
      end
    end
    self.title <=> other.title
  end

File icon giver/getter/whatever

This code uses acts_as_attachment (that's the attachment.filename) but you can of course replace it with anything.
It gets the file extension then looks up that extension in a dir full of files named extension.png
if none is found, unknown.png is used


<%
extension = File.extname(attachment.filename).gsub(/\./, "")
# get a file icon
icon_path = nil
Dir.entries("#{RAILS_ROOT}/public/images/filetypes").each do |entry|
	entry_extension = File.extname(entry)
	if entry.gsub(entry_extension, "") === extension
		icon_path = "/images/filetypes/" + entry
		break
	end
end
icon_path = "/images/filetypes/unknown.png" if icon_path.nil?
 %>
<%= image_tag icon_path %>
<span class="attachment_name"><%= attachment.filename %></span><br />

all_children!

This snippet just gives you all the children of a model that acts_as_tree

  def all_children
    Page.all_children_for self
  end
  
  def self.all_children_for(parent, arr = [])
    parent.children.each { |child| arr.push child }
    parent.children.each { |child| all_children_for child, arr }
    arr
  end

Youtube url code

This is a part of a ruby-cocoa app I'm writing.
(TubeSock is just terrible)

require 'net/http'
require 'uri'

class YouTubeMovie
  attr_accessor :viewer_url, :movie_url, :get_params
  def initialize(url)
    @viewer_url = url
    setMovieURL
  end
  def setMovieURL
    # Get the viewer page html
    req = Net::HTTP::Get.new @viewer_url
    viewer_page = nil
    res = Net::HTTP.start(@viewer_url.host, @viewer_url.port) do |request|
      viewer_page = request.request(req)
    end
    # Extract the required info.
    # in the html there's a line like so:
    # var fo = new SWFObject("/player2.swf?video_id=AUnPDmmnF0U&l=1363&t=OEgsToPDskJUmKC_b_nXO_yUrNLKSY18&nc=13369344", "movie_player", "450", "370", 7, "#FFFFFF");
    # we want to extract the ?video_id=AUnPDmmnF0U&l=1363&t=OEgsToPDskJUmKC_b_nXO_yUrNLKSY18&nc=13369344
    # this regex does that...
    regex = Regexp.new(/\?video_id=[\w]+&l=[\w]+&t=[\w]+&nc=[\d]+/)
    @get_params = regex.match(viewer_page.body).to_s
    @movie_url = URI.parse('http://www.youtube.com/get_video' + @get_params)
    p 'movie url: ' + @movie_url.to_s
  end
end
« Newer Snippets
Older Snippets »
Showing 1-5 of 5 total  RSS