<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DZone Snippets: generator code</title>
    <link>http://snippets.dzone.com/posts</link>
    <pubDate>Fri, 16 May 2008 15:02:46 GMT</pubDate>
    <description>DZone Snippets: generator code</description>
    <item>
      <title>Creating a simple Ruby Class documenter</title>
      <link>http://snippets.dzone.com/posts/show/5156</link>
      <description>This Ruby code stores the class name, method names, and method parameters from a ruby file in an XML file.  I have a habit of forgetting what methods I use in my classes, with this code I should at least be able to build up a quick class browser.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;#!/usr/bin/ruby&lt;br /&gt;&lt;br /&gt;# file: ruby2xml.rb&lt;br /&gt;&lt;br /&gt;require 'rexml/document'&lt;br /&gt;include REXML&lt;br /&gt;&lt;br /&gt;class Ruby2XML&lt;br /&gt;&lt;br /&gt;  attr :doc&lt;br /&gt;  &lt;br /&gt;  def initialize(buffer)&lt;br /&gt;&lt;br /&gt;    @outline = buffer.scan(/^class\s+(\w+)(\s+)?|def\s+(\w+)(\s+)?\(?(.*(?=\)))?/)&lt;br /&gt;    @doc = Document.new&lt;br /&gt;    @doc.add_element('ruby')&lt;br /&gt;    o_class = Element.new('class')&lt;br /&gt;    o_class.add_attribute('name', get_class_name)&lt;br /&gt;    o_methods = Element.new('methods')&lt;br /&gt;    &lt;br /&gt;    #get the methods&lt;br /&gt;    1.upto(get_method_count) {|i| o_methods.add_element(add_method(@outline[i])) }&lt;br /&gt;    o_class.add_element(o_methods)&lt;br /&gt;    @doc.root.add_element o_class&lt;br /&gt;&lt;br /&gt;  end&lt;br /&gt;  &lt;br /&gt;  private # everything below this point is private&lt;br /&gt;  &lt;br /&gt;  def get_class_name()&lt;br /&gt;    @outline[0][0]&lt;br /&gt;  end&lt;br /&gt;  &lt;br /&gt;  def get_method_count&lt;br /&gt;    mc = -1&lt;br /&gt;    @outline.each {|m| mc += 1}&lt;br /&gt;    mc &lt;br /&gt;  end&lt;br /&gt;  &lt;br /&gt;  def add_method(amethod)&lt;br /&gt;    o_method = Element.new('method')&lt;br /&gt;    o_method.add_attribute('name',amethod[2]) #get the method name&lt;br /&gt;    o_params = Element.new('params')&lt;br /&gt;&lt;br /&gt;    if amethod[4] then # get the parameter names&lt;br /&gt;      amethod[4].split(',').each {|a| o_params.add_element(add_param(a.strip))}&lt;br /&gt;    end&lt;br /&gt;    &lt;br /&gt;    o_method.add_element(o_params)    &lt;br /&gt;    o_method&lt;br /&gt;  end&lt;br /&gt;  &lt;br /&gt;  def add_param(param)&lt;br /&gt;    o_param = Element.new('param')&lt;br /&gt;    o_param.text = param&lt;br /&gt;    o_param&lt;br /&gt;  end&lt;br /&gt;      &lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;if __FILE__ == $0&lt;br /&gt;&lt;br /&gt;  buffer = File.new('ruby2xml.rb').read&lt;br /&gt;  rx2 = Ruby2XML.new(buffer)&lt;br /&gt;  &lt;br /&gt;  file = File.new('ruby2xml.xml','w')&lt;br /&gt;  file.puts rx2.doc&lt;br /&gt;  file.close&lt;br /&gt;&lt;br /&gt;end&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Note: This is just my first attempt at building some kind of Ruby code documenter, but it should be good enough for my needs at the moment.&lt;br /&gt;&lt;br /&gt;output&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&lt;ruby&gt;&lt;br /&gt;  &lt;class name='Ruby2XML'&gt;&lt;br /&gt;    &lt;methods&gt;&lt;br /&gt;      &lt;method name='initialize'&gt;&lt;params&gt;&lt;param&gt;buffer&lt;/param&gt;&lt;/params&gt;&lt;/method&gt;&lt;br /&gt;      &lt;method name='get_class_name'&gt;&lt;params/&gt;&lt;/method&gt;&lt;br /&gt;      &lt;method name='get_method_count'&gt;&lt;params/&gt;&lt;/method&gt;&lt;br /&gt;      &lt;method name='add_method'&gt;&lt;params&gt;&lt;param&gt;amethod&lt;/param&gt;&lt;/params&gt;&lt;/method&gt;&lt;br /&gt;      &lt;method name='add_param'&gt;&lt;params&gt;&lt;param&gt;param&lt;/param&gt;&lt;/params&gt;&lt;/method&gt;&lt;br /&gt;    &lt;/methods&gt;&lt;br /&gt;  &lt;/class&gt;&lt;br /&gt;&lt;/ruby&gt;&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Tue, 19 Feb 2008 22:33:54 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/5156</guid>
      <author>jrobertson (James Robertson)</author>
    </item>
    <item>
      <title>Generate Ruby code using XML and XSL</title>
      <link>http://snippets.dzone.com/posts/show/4844</link>
      <description>This XSL code transforms an XML file into a basic Ruby file. See the previous post ('Transforming an XML file into an XSL file' &lt;a href="http://snipr.com/1usrh"&gt;http://snipr.com/1usrh&lt;/a&gt; [dzone.com]) for an example of the XML used.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&lt;?xml version="1.0" encoding="UTF-8"?&gt;&lt;br /&gt;&lt;xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"&gt;&lt;br /&gt;&lt;xsl:output method="text"/&gt;&lt;br /&gt;&lt;br /&gt;  &lt;xsl:template match="recordx"&gt;&lt;br /&gt;  &lt;xsl:variable name="project" select="summary/project" /&gt;&lt;br /&gt;  &lt;xsl:variable name="parent_element" select="summary/parent_element" /&gt;&lt;br /&gt;  &lt;xsl:text&gt;#!/usr/bin/ruby&lt;br /&gt;#file: &lt;/xsl:text&gt;&lt;xsl:value-of select="$project"/&gt;&lt;xsl:text&gt;.rb&lt;br /&gt;&lt;br /&gt;require 'recordx'&lt;br /&gt;&lt;br /&gt;class &lt;/xsl:text&gt;&lt;xsl:value-of select="$project"/&gt;&lt;xsl:text&gt; &amp;lt; RecordX&lt;br /&gt;&lt;br /&gt;  def initialize()&lt;br /&gt;    @project = "&lt;/xsl:text&gt;&lt;xsl:value-of select="$project"/&gt;&lt;xsl:text&gt;"&lt;br /&gt;    @parent_element = '&lt;/xsl:text&gt;&lt;xsl:value-of select="$parent_element"/&gt;&lt;xsl:text&gt;fields'&lt;br /&gt;    @proj = Projxml.new&lt;br /&gt;    @doc_vrecord = initialize_xml_class(SERVER_URL + '/' + @project + '/class_template.xml')&lt;br /&gt;    @doc_file = get_doc()&lt;br /&gt;  end&lt;br /&gt;  &lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;if __FILE__ == $0&lt;br /&gt;    r = &lt;/xsl:text&gt;&lt;xsl:value-of select="$project"/&gt;&lt;xsl:text&gt;.new()&lt;br /&gt;end&lt;br /&gt;  &lt;/xsl:text&gt;&lt;br /&gt;  &lt;/xsl:template&gt;&lt;br /&gt;  &lt;br /&gt;&lt;/xsl:stylesheet&gt;&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Wed, 05 Dec 2007 16:12:39 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/4844</guid>
      <author>jrobertson (James Robertson)</author>
    </item>
    <item>
      <title>Transforming an XML file into an XSL file</title>
      <link>http://snippets.dzone.com/posts/show/4842</link>
      <description>This XSL uses the XML for creating another XSL file which renders a web page containing records for a specific project, but I have found the projects I am working on use similar page layouts (ie. menu, body(articles), inputs, and buttons), so it makes sense to re-use a generic template.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&lt;?xml version="1.0" encoding="UTF-8"?&gt;&lt;br /&gt;&lt;xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"&gt;&lt;br /&gt;&lt;br /&gt;  &lt;xsl:template match="recordx"&gt;&lt;br /&gt;    &lt;xsl:variable name="colon"&gt;&lt;xsl:text&gt;:&lt;/xsl:text&gt;&lt;/xsl:variable&gt;&lt;br /&gt;    &lt;xsl:element name="xsl:stylesheet"&gt;&lt;br /&gt;      &lt;xsl:attribute name="xmlns{$colon}xsl"&gt;&lt;br /&gt;        &lt;xsl:text&gt;http://www.w3.org/1999/XSL/Transform&lt;/xsl:text&gt;&lt;br /&gt;      &lt;/xsl:attribute&gt;&lt;br /&gt;      &lt;xsl:attribute name="version"&gt;&lt;br /&gt;        &lt;xsl:text&gt;1.0&lt;/xsl:text&gt;&lt;br /&gt;      &lt;/xsl:attribute&gt;&lt;br /&gt;      &lt;xsl:element name="xsl:template"&gt;&lt;br /&gt;      &lt;xsl:attribute name="match"&gt;&lt;br /&gt;        &lt;xsl:value-of select="summary/project"/&gt;&lt;xsl:text&gt;page&lt;/xsl:text&gt;&lt;br /&gt;      &lt;/xsl:attribute&gt;&lt;br /&gt;      &lt;xsl:copy-of select="menu/*"/&gt;&lt;br /&gt;      &lt;xsl:copy-of select="articles/*"/&gt;&lt;br /&gt;      &lt;/xsl:element&gt;&lt;br /&gt;      &lt;xsl:element name="xsl:template"&gt;&lt;br /&gt;        &lt;xsl:attribute name="match"&gt;&lt;br /&gt;          &lt;xsl:value-of select="summary/project"/&gt;&lt;xsl:text&gt;page/inputs&lt;/xsl:text&gt;&lt;br /&gt;      &lt;/xsl:attribute&gt;&lt;br /&gt;      &lt;xsl:element name="div"&gt;&lt;br /&gt;        &lt;xsl:element name="dl"&gt; &lt;br /&gt;          &lt;xsl:for-each select="records/fields"&gt;&lt;br /&gt;            &lt;xsl:if test="c='true'"&gt;&lt;br /&gt;              &lt;xsl:element name="xsl:apply-templates"&gt;&lt;br /&gt;                &lt;xsl:attribute name="select"&gt;&lt;xsl:copy-of select="field"/&gt;&lt;/xsl:attribute&gt;&lt;br /&gt;              &lt;/xsl:element&gt;&lt;br /&gt;            &lt;/xsl:if&gt;&lt;br /&gt;          &lt;/xsl:for-each&gt;&lt;br /&gt;        &lt;/xsl:element&gt;&lt;br /&gt;      &lt;/xsl:element&gt;&lt;br /&gt;      &lt;/xsl:element&gt;      &lt;br /&gt;      &lt;xsl:call-template name="inputx" /&gt;      &lt;br /&gt;    &lt;/xsl:element&gt;&lt;br /&gt;  &lt;/xsl:template&gt;&lt;br /&gt;  &lt;br /&gt;  &lt;xsl:template name="inputx"&gt;&lt;br /&gt;    &lt;xsl:apply-templates select="records/fields"/&gt;&lt;br /&gt;  &lt;/xsl:template&gt;&lt;br /&gt;  &lt;br /&gt;  &lt;xsl:template match="records/fields"&gt;&lt;br /&gt;    &lt;xsl:if test="c='true'"&gt;&lt;br /&gt;    &lt;xsl:element name="xsl:template"&gt;&lt;br /&gt;      &lt;xsl:attribute name="match"&gt;&lt;xsl:value-of select="field"/&gt;&lt;/xsl:attribute&gt;&lt;br /&gt;        &lt;dt&gt;&lt;br /&gt;          &lt;xsl:element name="label"&gt;&lt;br /&gt;            &lt;xsl:attribute name="for"&gt;&lt;xsl:text&gt;title&lt;/xsl:text&gt;&lt;/xsl:attribute&gt;&lt;br /&gt;            &lt;xsl:element name="xsl:value-of"&gt;&lt;br /&gt;              &lt;xsl:attribute name="select"&gt;&lt;xsl:text&gt;@title&lt;/xsl:text&gt;&lt;/xsl:attribute&gt;&lt;br /&gt;            &lt;/xsl:element&gt;&lt;br /&gt;          &lt;/xsl:element&gt;&lt;br /&gt;        &lt;/dt&gt;&lt;br /&gt;        &lt;dd&gt;&lt;br /&gt;          &lt;xsl:element name="input"&gt;&lt;br /&gt;            &lt;xsl:attribute name="type"&gt;&lt;xsl:text&gt;text&lt;/xsl:text&gt;&lt;/xsl:attribute&gt;&lt;br /&gt;            &lt;xsl:attribute name="id"&gt;&lt;xsl:text&gt;title&lt;/xsl:text&gt;&lt;/xsl:attribute&gt;&lt;br /&gt;            &lt;xsl:attribute name="size"&gt;&lt;xsl:text&gt;{@size}&lt;/xsl:text&gt;&lt;/xsl:attribute&gt;            &lt;br /&gt;          &lt;/xsl:element&gt;&lt;br /&gt;        &lt;/dd&gt;&lt;br /&gt;    &lt;/xsl:element&gt;&lt;br /&gt;    &lt;/xsl:if&gt;&lt;br /&gt;  &lt;/xsl:template&gt;&lt;br /&gt;  &lt;br /&gt;&lt;/xsl:stylesheet&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;... and here's the XML which is used by the XSL above.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&lt;recordx&gt;&lt;br /&gt;&lt;summary&gt;&lt;project&gt;books&lt;/project&gt;&lt;parent_element&gt;book_entry&lt;/parent_element&gt;&lt;/summary&gt;&lt;br /&gt;&lt;menu&gt;&lt;br /&gt;  &lt;div id="gboxes"&gt;&lt;br /&gt;    &lt;ul&gt;&lt;br /&gt;      &lt;li&gt;&lt;a href="/empsearch/devsearch.xml?id=all"&gt;home&lt;/a&gt;&lt;/li&gt; &lt;br /&gt;      &lt;li&gt;&lt;a href="/main/development_blog.xml"&gt;development&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;    &lt;/ul&gt;&lt;br /&gt;  &lt;/div&gt;&lt;br /&gt;&lt;/menu&gt;&lt;br /&gt;&lt;articles&gt;&lt;br /&gt;  &lt;div id="articles"&gt;&lt;br /&gt;    &lt;h1&gt;www&lt;xsl:value-of select="@title" /&gt;&lt;/h1&gt;&lt;br /&gt;    &lt;div&gt;&lt;br /&gt;      &lt;xsl:apply-templates select="inputs"&gt;&lt;/xsl:apply-templates&gt;&lt;br /&gt;    &lt;/div&gt;&lt;br /&gt;    &lt;div&gt;&lt;br /&gt;      &lt;xsl:apply-templates select="buttons"&gt;&lt;/xsl:apply-templates&gt;&lt;br /&gt;    &lt;/div&gt;&lt;br /&gt;    &lt;span id="in1"&gt;&lt;/span&gt;&lt;br /&gt;  &lt;/div&gt; &lt;br /&gt;&lt;/articles&gt;&lt;br /&gt;&lt;records&gt;&lt;br /&gt;&lt;fields id='17647'&gt;&lt;field&gt;author&lt;/field&gt;&lt;c&gt;true&lt;/c&gt;&lt;r&gt;true&lt;/r&gt;&lt;u&gt;true&lt;/u&gt;&lt;/fields&gt;&lt;br /&gt;&lt;fields id='17675'&gt;&lt;field&gt;subject&lt;/field&gt;&lt;c&gt;true&lt;/c&gt;&lt;r&gt;true&lt;/r&gt;&lt;u&gt;false&lt;/u&gt;&lt;/fields&gt;&lt;br /&gt;&lt;fields id='17699'&gt;&lt;field&gt;rating&lt;/field&gt;&lt;c/&gt;&lt;r/&gt;&lt;u/&gt;&lt;/fields&gt;&lt;br /&gt;&lt;fields id='17700'&gt;&lt;field&gt;last_modified&lt;/field&gt;&lt;c/&gt;&lt;r/&gt;&lt;u/&gt;&lt;/fields&gt;&lt;br /&gt;&lt;/records&gt;&lt;br /&gt;&lt;/recordx&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;</description>
      <pubDate>Tue, 04 Dec 2007 19:56:00 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/4842</guid>
      <author>jrobertson (James Robertson)</author>
    </item>
    <item>
      <title>PHP password generator</title>
      <link>http://snippets.dzone.com/posts/show/4558</link>
      <description>This is a random &lt;A href="http://www.webtoolkit.info/php-password-generator.html"&gt;php password generator&lt;/a&gt;. This function is a complete, working password generator implementation for PHP. It allows the developer to customize the password: set password length and strength. Just include this function anywhere in your code and then use it.&lt;br /&gt;&lt;br /&gt;More code snippets you can find on &lt;a href="http://www.webtoolkit.info/"&gt;free code and tutorials website&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;function generatePassword($length=9, $strength=0) {&lt;br /&gt;    $vowels = 'aeuy';&lt;br /&gt;    $consonants = 'bdghjmnpqrstvz';&lt;br /&gt;    if ($strength &amp; 1) {&lt;br /&gt;        $consonants .= 'BDGHJLMNPQRSTVWXZ';&lt;br /&gt;    }&lt;br /&gt;    if ($strength &amp; 2) {&lt;br /&gt;        $vowels .= "AEUY";&lt;br /&gt;    }&lt;br /&gt;    if ($strength &amp; 4) {&lt;br /&gt;        $consonants .= '23456789';&lt;br /&gt;    }&lt;br /&gt;    if ($strength &amp; 8) {&lt;br /&gt;        $consonants .= '@#$%';&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    $password = '';&lt;br /&gt;    $alt = time() % 2;&lt;br /&gt;    srand(time());&lt;br /&gt;    for ($i = 0; $i &lt; $length; $i++) {&lt;br /&gt;        if ($alt == 1) {&lt;br /&gt;            $password .= $consonants[(rand() % strlen($consonants))];&lt;br /&gt;            $alt = 0;&lt;br /&gt;        } else {&lt;br /&gt;            $password .= $vowels[(rand() % strlen($vowels))];&lt;br /&gt;            $alt = 1;&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;    return $password;&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Wed, 19 Sep 2007 18:34:11 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/4558</guid>
      <author>justas (Justas)</author>
    </item>
    <item>
      <title>rails generator syntax</title>
      <link>http://snippets.dzone.com/posts/show/2800</link>
      <description>// generate application&lt;br /&gt;&lt;code&gt;&lt;br /&gt;rails projectname&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;// generate migration.&lt;br /&gt;&lt;code&gt;&lt;br /&gt;ruby script/generate migration migration_name&lt;br /&gt;ruby script/generate migration add_price&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;// generate model&lt;br /&gt;// we can give a list of columns and types&lt;br /&gt;// :string, :text, :integer, :decimal, :float, :date, ...&lt;br /&gt;&lt;code&gt;&lt;br /&gt;ruby script/generate model model_name&lt;br /&gt;ruby script/generate model user name:string hashed_password:string salt:string&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;// generate controller&lt;br /&gt;&lt;code&gt;&lt;br /&gt;ruby script/generate controller controller_name method_name(s)&lt;br /&gt;ruby script/generate controller store index&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;// generate scaffold&lt;br /&gt;&lt;code&gt;&lt;br /&gt;ruby script/generate scaffold model_name controller_name&lt;br /&gt;ruby script/generate scaffold product admin&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Sun, 08 Oct 2006 18:52:22 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/2800</guid>
      <author>ovhaag (Oliver Haag)</author>
    </item>
    <item>
      <title>Generate Rails fixture skeleton using ActiveRecord</title>
      <link>http://snippets.dzone.com/posts/show/2389</link>
      <description>In Rails 1.1.5, the basic generator generates the following code for the fixture used in database unit tests:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;# Read about fixtures at http://ar.rubyonrails.org/classes/Fixtures.html&lt;br /&gt;first:&lt;br /&gt;  id: 1&lt;br /&gt;another:&lt;br /&gt;  id: 2&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;As ActiveRecord provides database reflexion features, we can generate a fixture file with all the columns' name prepopulated for number and text types, such as:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;# Read about fixtures at http://ar.rubyonrails.org/classes/Fixtures.html&lt;br /&gt;first:&lt;br /&gt;  id: 1&lt;br /&gt;  short_title: short_title_first&lt;br /&gt;  title: title_first&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;This will be done by the following class:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;require_gem 'activerecord'&lt;br /&gt;&lt;br /&gt;class RailsFixturesGenerator&lt;br /&gt;&lt;br /&gt;  def generate(class_name)&lt;br /&gt;    &lt;br /&gt;    # Get the "Class" object from the class name        &lt;br /&gt;    model_class = Object.const_get(class_name)&lt;br /&gt;    &lt;br /&gt;    yaml_content =  "# Read about fixtures at http://ar.rubyonrails.org/classes/Fixtures.html\n"&lt;br /&gt;    yaml_content += "first:\n"&lt;br /&gt;    &lt;br /&gt;    # get if first!   &lt;br /&gt;    model_class.columns.each { |column|&lt;br /&gt;      &lt;br /&gt;      yaml_content += "  " + column.name + ": "&lt;br /&gt;      &lt;br /&gt;      if column.number?&lt;br /&gt;        yaml_content +=  "1"&lt;br /&gt;      end&lt;br /&gt;      if column.text?&lt;br /&gt;        # @todo /!\ max length&lt;br /&gt;        yaml_content +=  column.name + "_first"&lt;br /&gt;      end&lt;br /&gt;      &lt;br /&gt;      yaml_content += "\n"      &lt;br /&gt;    }  &lt;br /&gt;    &lt;br /&gt;    write_fixture_file(model_class, yaml_content)&lt;br /&gt;    &lt;br /&gt;    yaml_content            &lt;br /&gt;  end  &lt;br /&gt;  &lt;br /&gt;  # Write the &lt;fixture&gt; yaml file  in the test/fixtures folder&lt;br /&gt;  def write_fixture_file(model_class, yaml_content)&lt;br /&gt;    &lt;br /&gt;    path = ENV['DEST'] || "#{RAILS_ROOT}/test/fixtures"&lt;br /&gt;    db   = ENV['DB']   || 'test'&lt;br /&gt;    &lt;br /&gt;    File.open("#{path}/#{model_class.table_name}.yml", 'wb') do |file|    &lt;br /&gt;      file.write yaml_content &lt;br /&gt;      file.close    &lt;br /&gt;    end&lt;br /&gt;  end&lt;br /&gt;end&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Of course, I have an unit test that I wrote before the code ;-)&lt;br /&gt;This was my first "complex" method I wrote in Ruby so please bear with me. Any feedback is welcome. I want to write a Rails plugin in order to share the generators I will write. </description>
      <pubDate>Thu, 10 Aug 2006 20:34:39 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/2389</guid>
      <author>21croissants (Jean-Michel G)</author>
    </item>
    <item>
      <title>Another Pyrex Permutation Generator</title>
      <link>http://snippets.dzone.com/posts/show/2353</link>
      <description>// description of your code here&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;cdef class PermuteJ:&lt;br /&gt;&lt;br /&gt;   cdef int n, first&lt;br /&gt;   cdef int lst3[32]&lt;br /&gt;   cdef object lst, lst2&lt;br /&gt;&lt;br /&gt;   def __init__(self, lst):&lt;br /&gt;       cdef int i&lt;br /&gt;       self.lst = lst&lt;br /&gt;       self.lst2 = lst[:]&lt;br /&gt;       self.first = 0&lt;br /&gt;       self.n = len(lst) - 1&lt;br /&gt;       if self.n &gt;= 31:&lt;br /&gt;           raise Exception, "Are you kidding?"&lt;br /&gt;       for i from 0 &lt;= i &lt; len(lst):&lt;br /&gt;           self.lst3[i] = i&lt;br /&gt;&lt;br /&gt;   def __iter__(self):&lt;br /&gt;       return self&lt;br /&gt;&lt;br /&gt;   def __next__(self):&lt;br /&gt;       cdef int j, l, k, x, y, z, sn, length, neg1, neg2, neg3&lt;br /&gt;       cdef int* sl&lt;br /&gt;       cdef object output&lt;br /&gt;&lt;br /&gt;       if self.first == 0:&lt;br /&gt;           self.first = 1&lt;br /&gt;           return self.lst2&lt;br /&gt;       if self.n == 1:&lt;br /&gt;           return [self.lst[1], self.lst[0]]&lt;br /&gt;&lt;br /&gt;       sn = self.n&lt;br /&gt;       length = sn + 1&lt;br /&gt;       sl = self.lst3&lt;br /&gt;       neg1 = sn&lt;br /&gt;       neg2 = length - 2&lt;br /&gt;       neg3 = length - 3&lt;br /&gt;       while 1:&lt;br /&gt;           if sl[neg2] &lt; sl[neg1]:&lt;br /&gt;               sl[neg2], sl[neg1] = sl[neg1], sl[neg2]&lt;br /&gt;           elif sl[neg3] &lt; sl[neg2]:&lt;br /&gt;               if sl[neg3] &lt; sl[neg1]:&lt;br /&gt;                   sl[neg3], sl[neg2], sl[neg1] = sl[neg1], sl[neg3], sl[neg2]&lt;br /&gt;               else:&lt;br /&gt;                   sl[neg3], sl[neg2], sl[neg1] = sl[neg2], sl[neg1], sl[neg3]&lt;br /&gt;           else:&lt;br /&gt;               j = sn - 3&lt;br /&gt;               if j &lt; 0: raise StopIteration&lt;br /&gt;               y = sl[j]&lt;br /&gt;               x = sl[neg3]&lt;br /&gt;               z = sl[neg1]&lt;br /&gt;               while y &gt;= x:&lt;br /&gt;                   j = j - 1&lt;br /&gt;                   if j &lt; 0: raise StopIteration&lt;br /&gt;                   x = y&lt;br /&gt;                   y = sl[j]&lt;br /&gt;               if y &lt; z:&lt;br /&gt;                   sl[j] = z&lt;br /&gt;                   sl[j+1] = y&lt;br /&gt;                   sl[sn] = x&lt;br /&gt;               else:&lt;br /&gt;                   l = neg2&lt;br /&gt;                   while y &gt;= sl[l]:&lt;br /&gt;                       l = l - 1&lt;br /&gt;                   sl[j], sl[l] = sl[l], y&lt;br /&gt;                   sl[sn], sl[j+1] = sl[j+1], sl[sn]&lt;br /&gt;               k = j + 2&lt;br /&gt;               l = neg2&lt;br /&gt;               while k &lt; l:&lt;br /&gt;                   sl[k], sl[l] = sl[l], sl[k]&lt;br /&gt;                   k = k + 1&lt;br /&gt;                   l = l - 1&lt;br /&gt;&lt;br /&gt;           lst = self.lst&lt;br /&gt;           lst2 = self.lst2&lt;br /&gt;           for j from 0 &lt;= j &lt; length:&lt;br /&gt;               lst2[j] = sl[j]&lt;br /&gt;&lt;br /&gt;           return lst2&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Wed, 02 Aug 2006 23:59:41 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/2353</guid>
      <author>llimllib (Bill Mill)</author>
    </item>
    <item>
      <title>gen-sym</title>
      <link>http://snippets.dzone.com/posts/show/1150</link>
      <description>&lt;code&gt;&lt;br /&gt;REBOL [&lt;br /&gt;    Title: "Unique symbol generator"&lt;br /&gt;]&lt;br /&gt;&lt;br /&gt;gen-sym-ctx: context [&lt;br /&gt;    prefix: "&amp;"&lt;br /&gt;    counter: 0&lt;br /&gt;    clear: does [counter: 0]&lt;br /&gt;    set-prefix: func [value] [prefix: form value]&lt;br /&gt;    set 'gen-sym does [&lt;br /&gt;        counter: counter + 1&lt;br /&gt;        to word! join prefix counter&lt;br /&gt;    ]&lt;br /&gt;]&lt;br /&gt;&lt;br /&gt;repeat i 5 [print gen-sym]&lt;br /&gt;gen-sym-ctx/set-prefix 'G&lt;br /&gt;gen-sym-ctx/clear&lt;br /&gt;repeat i 5 [print gen-sym]&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Fri, 13 Jan 2006 04:19:51 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/1150</guid>
      <author>gregg.irwin (Gregg Irwin)</author>
    </item>
    <item>
      <title>Generate all permutation of a list</title>
      <link>http://snippets.dzone.com/posts/show/753</link>
      <description>From Michael Davies's &lt;a href=http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/252178&gt;recipe&lt;/a&gt;.&lt;br /&gt;&lt;code&gt;&lt;br /&gt;def all_perms(str):&lt;br /&gt;    if len(str) &lt;=1:&lt;br /&gt;        yield str&lt;br /&gt;    else:&lt;br /&gt;        for perm in all_perms(str[1:]):&lt;br /&gt;            for i in range(len(perm)+1):&lt;br /&gt;                yield perm[:i] + str[0:1] + perm[i:]&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;Some example usage&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&gt;&gt;&gt; for p in all_perms(['a','b','c']):&lt;br /&gt;	print p&lt;br /&gt;&lt;br /&gt;['a', 'b', 'c']&lt;br /&gt;['b', 'a', 'c']&lt;br /&gt;['b', 'c', 'a']&lt;br /&gt;['a', 'c', 'b']&lt;br /&gt;['c', 'a', 'b']&lt;br /&gt;['c', 'b', 'a']&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;A great use of generator and recursive call.</description>
      <pubDate>Tue, 20 Sep 2005 21:40:02 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/753</guid>
      <author>korakot (Korakot Chaovavanich)</author>
    </item>
  </channel>
</rss>
