mirror of
https://github.com/aasm/aasm
synced 2023-03-27 23:22:41 -04:00
cleanup, move to jeweler, nuke gemspec
This commit is contained in:
parent
6618c50b75
commit
dc068014af
11 changed files with 87 additions and 749 deletions
5
.document
Normal file
5
.document
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
README.rdoc
|
||||||
|
lib/**/*.rb
|
||||||
|
bin/*
|
||||||
|
features/**/*.feature
|
||||||
|
LICENSE
|
9
.gitignore
vendored
9
.gitignore
vendored
|
@ -1,5 +1,6 @@
|
||||||
rdoc
|
|
||||||
pkg
|
|
||||||
coverage
|
|
||||||
*~
|
|
||||||
*.sw?
|
*.sw?
|
||||||
|
*~
|
||||||
|
.DS_Store
|
||||||
|
coverage
|
||||||
|
pkg
|
||||||
|
rdoc
|
||||||
|
|
35
CHANGELOG
35
CHANGELOG
|
@ -1,35 +0,0 @@
|
||||||
* Fixed compatibility issue with Ruby 1.9.1
|
|
||||||
|
|
||||||
* In AR persistence, move state column from class level variables into the StateMachine object for the class
|
|
||||||
|
|
||||||
* allowed :to array and :on_transition callback [Kevin Triplett]
|
|
||||||
|
|
||||||
* Support enter and exit actions on states
|
|
||||||
|
|
||||||
* Use named_scope in AR persistence layer, if available [Jan De Poorter]
|
|
||||||
|
|
||||||
* Incremented version number
|
|
||||||
|
|
||||||
* Cleaned up aasm_states_for_select to return the value as a string
|
|
||||||
|
|
||||||
* Specs and bug fixes for the ActiveRecordPersistence, keeping persistence columns in sync
|
|
||||||
Allowing for nil values in states for active record
|
|
||||||
Only set state to default state before_validation_on_create
|
|
||||||
New rake task to uninstall, build and reinstall the gem (useful for development)
|
|
||||||
Changed scott's email address to protect it from spambots when publishing rdocs
|
|
||||||
New non-(!) methods that allow for firing events without persisting [Jeff Dean]
|
|
||||||
|
|
||||||
* Added aasm_states_for_select that will return a select friendly collection of states.
|
|
||||||
|
|
||||||
* Add some event callbacks, #aasm_event_fired(from, to), and #aasm_event_failed(event)
|
|
||||||
Based on transition logging suggestion [Artem Vasiliev] and timestamp column suggestion [Mike Ferrier]
|
|
||||||
|
|
||||||
* Add #aasm_events_for_state and #aasm_events_for_current_state [Joao Paulo Lins]
|
|
||||||
|
|
||||||
* Ensure that a state is written for a new record even if aasm_current_state or
|
|
||||||
{state}= are never called.
|
|
||||||
|
|
||||||
* Fix AR persistence so new records have their state set. [Joao Paulo Lins]
|
|
||||||
|
|
||||||
* Make #event! methods return a boolean [Joel Chippindale]
|
|
||||||
|
|
152
Rakefile
152
Rakefile
|
@ -1,95 +1,75 @@
|
||||||
# Copyright 2008 Scott Barron (scott@elitists.net)
|
require 'rubygems'
|
||||||
# All rights reserved
|
require 'rake'
|
||||||
|
|
||||||
# This file may be distributed under an MIT style license.
|
|
||||||
# See MIT-LICENSE for details.
|
|
||||||
|
|
||||||
begin
|
begin
|
||||||
require 'rubygems'
|
require 'jeweler'
|
||||||
require 'rake/gempackagetask'
|
Jeweler::Tasks.new do |gem|
|
||||||
require 'rake/testtask'
|
gem.name = "ttilley-aasm"
|
||||||
require 'rake/rdoctask'
|
gem.summary = %Q{State machine mixin for Ruby objects}
|
||||||
require 'spec/rake/spectask'
|
gem.description = %Q{AASM is a continuation of the acts as state machine rails plugin, built for plain Ruby objects.}
|
||||||
rescue Exception
|
gem.homepage = "http://github.com/ttilley/aasm"
|
||||||
nil
|
gem.authors = ["Scott Barron", "Scott Petersen", "Travis Tilley"]
|
||||||
|
gem.email = "ttilley@gmail.com"
|
||||||
|
gem.add_development_dependency "rspec"
|
||||||
|
# gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
|
||||||
|
end
|
||||||
|
Jeweler::GemcutterTasks.new
|
||||||
|
rescue LoadError
|
||||||
|
puts "Jeweler (or a dependency) not available. Install it with: sudo gem install jeweler"
|
||||||
end
|
end
|
||||||
|
|
||||||
if `ruby -Ilib -raasm -e "print AASM.Version"` =~ /([0-9.]+)$/
|
require 'spec/rake/spectask'
|
||||||
CURRENT_VERSION = $1
|
Spec::Rake::SpecTask.new(:spec) do |spec|
|
||||||
else
|
spec.libs << 'lib' << 'spec'
|
||||||
CURRENT_VERSION = '0.0.0'
|
spec.spec_files = FileList['spec/**/*_spec.rb']
|
||||||
|
spec.spec_opts = ['-cfs']
|
||||||
end
|
end
|
||||||
$package_version = CURRENT_VERSION
|
|
||||||
|
|
||||||
PKG_FILES = FileList['[A-Z]*',
|
Spec::Rake::SpecTask.new(:rcov) do |spec|
|
||||||
'lib/**/*.rb',
|
spec.libs << 'lib' << 'spec'
|
||||||
'doc/**/*'
|
spec.pattern = 'spec/**/*_spec.rb'
|
||||||
]
|
spec.rcov = true
|
||||||
|
end
|
||||||
|
|
||||||
|
task :spec => :check_dependencies
|
||||||
|
|
||||||
|
begin
|
||||||
|
require 'reek/rake_task'
|
||||||
|
Reek::RakeTask.new do |t|
|
||||||
|
t.fail_on_error = true
|
||||||
|
t.verbose = false
|
||||||
|
t.source_files = 'lib/**/*.rb'
|
||||||
|
end
|
||||||
|
rescue LoadError
|
||||||
|
task :reek do
|
||||||
|
abort "Reek is not available. In order to run reek, you must: sudo gem install reek"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
begin
|
||||||
|
require 'roodi'
|
||||||
|
require 'roodi_task'
|
||||||
|
RoodiTask.new do |t|
|
||||||
|
t.verbose = false
|
||||||
|
end
|
||||||
|
rescue LoadError
|
||||||
|
task :roodi do
|
||||||
|
abort "Roodi is not available. In order to run roodi, you must: sudo gem install roodi"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
task :default => :spec
|
||||||
|
|
||||||
|
require 'rake/rdoctask'
|
||||||
|
Rake::RDocTask.new do |rdoc|
|
||||||
|
if File.exist?('VERSION')
|
||||||
|
version = File.read('VERSION')
|
||||||
|
else
|
||||||
|
version = ""
|
||||||
|
end
|
||||||
|
|
||||||
desc 'Generate documentation for the acts as state machine plugin.'
|
|
||||||
rd = Rake::RDocTask.new(:rdoc) do |rdoc|
|
|
||||||
rdoc.rdoc_dir = 'html'
|
|
||||||
rdoc.template = 'doc/jamis.rb'
|
|
||||||
rdoc.rdoc_dir = 'rdoc'
|
rdoc.rdoc_dir = 'rdoc'
|
||||||
rdoc.title = 'AASM'
|
rdoc.title = "ttilley-aasm #{version}"
|
||||||
rdoc.options << '--line-numbers' << '--inline-source' << '--main' << 'README.rdoc' << '--title' << 'AASM'
|
rdoc.rdoc_files.include('README*')
|
||||||
rdoc.rdoc_files.include('README.rdoc', 'MIT-LICENSE', 'TODO', 'CHANGELOG')
|
rdoc.rdoc_files.include('lib/**/*.rb')
|
||||||
rdoc.rdoc_files.include('lib/*.rb', 'lib/**/*.rb', 'doc/**/*.rdoc')
|
|
||||||
end
|
end
|
||||||
|
|
||||||
if !defined?(Gem)
|
|
||||||
puts "Package target requires RubyGEMs"
|
|
||||||
else
|
|
||||||
spec = Gem::Specification.new do |s|
|
|
||||||
s.name = 'aasm'
|
|
||||||
s.version = $package_version
|
|
||||||
s.summary = 'State machine mixin for Ruby objects'
|
|
||||||
s.description = <<EOF
|
|
||||||
AASM is a continuation of the acts as state machine rails plugin, built for plain Ruby objects.
|
|
||||||
EOF
|
|
||||||
|
|
||||||
s.files = PKG_FILES.to_a
|
|
||||||
s.require_path = 'lib'
|
|
||||||
s.has_rdoc = true
|
|
||||||
s.extra_rdoc_files = rd.rdoc_files.reject {|fn| fn =~ /\.rb$/}.to_a
|
|
||||||
s.rdoc_options = rd.options
|
|
||||||
|
|
||||||
s.authors = ['Scott Barron', 'Scott Petersen', 'Travis Tilley']
|
|
||||||
s.email = 'ttilley@gmail.com'
|
|
||||||
s.homepage = 'http://github.com/ttilley/aasm'
|
|
||||||
end
|
|
||||||
|
|
||||||
package_task = Rake::GemPackageTask.new(spec) do |pkg|
|
|
||||||
pkg.need_zip = true
|
|
||||||
pkg.need_tar = true
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
if !defined?(Spec)
|
|
||||||
puts "spec and cruise targets require RSpec"
|
|
||||||
else
|
|
||||||
desc "Run all examples with RCov"
|
|
||||||
Spec::Rake::SpecTask.new('cruise') do |t|
|
|
||||||
t.spec_files = FileList['spec/**/*.rb']
|
|
||||||
t.rcov = true
|
|
||||||
t.rcov_opts = ['--exclude', 'spec', '--exclude', 'Library', '--exclude', 'rcov.rb']
|
|
||||||
end
|
|
||||||
|
|
||||||
desc "Run all examples"
|
|
||||||
Spec::Rake::SpecTask.new('spec') do |t|
|
|
||||||
t.spec_files = FileList['spec/**/*.rb']
|
|
||||||
t.rcov = false
|
|
||||||
t.spec_opts = ['-cfs']
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
if !defined?(Gem)
|
|
||||||
puts "Package target requires RubyGEMs"
|
|
||||||
else
|
|
||||||
desc "sudo gem uninstall aasm && rake gem && sudo gem install pkg/aasm-3.0.0.gem"
|
|
||||||
task :reinstall do
|
|
||||||
puts `sudo gem uninstall aasm && rake gem && sudo gem install pkg/aasm-3.0.0.gem`
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
task :default => [:spec]
|
|
||||||
|
|
9
TODO
9
TODO
|
@ -1,9 +0,0 @@
|
||||||
Before Next Release:
|
|
||||||
|
|
||||||
* Add #aasm_next_state_for_event
|
|
||||||
* Add #aasm_next_states_for_event
|
|
||||||
|
|
||||||
Cool ideas from users:
|
|
||||||
|
|
||||||
* Support multiple state machines on one object (Chris Nelson)
|
|
||||||
* http://justbarebones.blogspot.com/2007/11/actsasstatemachine-enhancements.html (Chetan Patil)
|
|
1
VERSION
Normal file
1
VERSION
Normal file
|
@ -0,0 +1 @@
|
||||||
|
2.1.2
|
19
aasm.gemspec
19
aasm.gemspec
|
@ -1,19 +0,0 @@
|
||||||
PKG_FILES = ["CHANGELOG", "MIT-LICENSE", "Rakefile", "README.rdoc", "TODO", "lib/aasm.rb", "lib/aasm/aasm.rb", "lib/aasm/event.rb", "lib/aasm/persistence/active_record_persistence.rb", "lib/aasm/persistence.rb", "lib/aasm/state.rb", "lib/aasm/state_machine.rb", "lib/aasm/state_transition.rb", "doc/jamis.rb"]
|
|
||||||
|
|
||||||
Gem::Specification.new do |s|
|
|
||||||
s.name = 'aasm'
|
|
||||||
s.version = "2.1.1"
|
|
||||||
s.summary = 'State machine mixin for Ruby objects'
|
|
||||||
s.description = <<-EOF
|
|
||||||
AASM is a continuation of the acts as state machine rails plugin, built for plain Ruby objects. This fork adds Ruby 1.9.1 compatibility.
|
|
||||||
EOF
|
|
||||||
s.files = PKG_FILES
|
|
||||||
s.require_path = 'lib'
|
|
||||||
s.has_rdoc = true
|
|
||||||
s.extra_rdoc_files = ['README.rdoc', 'MIT-LICENSE', 'TODO', 'CHANGELOG']
|
|
||||||
s.rdoc_options = ['--line-numbers', '--inline-source', '--main', 'README.rdoc', '--title', 'AASM']
|
|
||||||
|
|
||||||
s.author = 'Scott Barron, David Palm'
|
|
||||||
s.email = 'scott@elitists.net, dvdplm@gmail.com'
|
|
||||||
s.homepage = 'http://github.com/dvdplm/aasm'
|
|
||||||
end
|
|
591
doc/jamis.rb
591
doc/jamis.rb
|
@ -1,591 +0,0 @@
|
||||||
module RDoc
|
|
||||||
module Page
|
|
||||||
|
|
||||||
FONTS = "\"Bitstream Vera Sans\", Verdana, Arial, Helvetica, sans-serif"
|
|
||||||
|
|
||||||
STYLE = <<CSS
|
|
||||||
a {
|
|
||||||
color: #00F;
|
|
||||||
text-decoration: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
a:hover {
|
|
||||||
color: #77F;
|
|
||||||
text-decoration: underline;
|
|
||||||
}
|
|
||||||
|
|
||||||
body, td, p {
|
|
||||||
font-family: %fonts%;
|
|
||||||
background: #FFF;
|
|
||||||
color: #000;
|
|
||||||
margin: 0px;
|
|
||||||
font-size: small;
|
|
||||||
}
|
|
||||||
|
|
||||||
#content {
|
|
||||||
margin: 2em;
|
|
||||||
}
|
|
||||||
|
|
||||||
#description p {
|
|
||||||
margin-bottom: 0.5em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.sectiontitle {
|
|
||||||
margin-top: 1em;
|
|
||||||
margin-bottom: 1em;
|
|
||||||
padding: 0.5em;
|
|
||||||
padding-left: 2em;
|
|
||||||
background: #005;
|
|
||||||
color: #FFF;
|
|
||||||
font-weight: bold;
|
|
||||||
border: 1px dotted black;
|
|
||||||
}
|
|
||||||
|
|
||||||
.attr-rw {
|
|
||||||
padding-left: 1em;
|
|
||||||
padding-right: 1em;
|
|
||||||
text-align: center;
|
|
||||||
color: #055;
|
|
||||||
}
|
|
||||||
|
|
||||||
.attr-name {
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
|
|
||||||
.attr-desc {
|
|
||||||
}
|
|
||||||
|
|
||||||
.attr-value {
|
|
||||||
font-family: monospace;
|
|
||||||
}
|
|
||||||
|
|
||||||
.file-title-prefix {
|
|
||||||
font-size: large;
|
|
||||||
}
|
|
||||||
|
|
||||||
.file-title {
|
|
||||||
font-size: large;
|
|
||||||
font-weight: bold;
|
|
||||||
background: #005;
|
|
||||||
color: #FFF;
|
|
||||||
}
|
|
||||||
|
|
||||||
.banner {
|
|
||||||
background: #005;
|
|
||||||
color: #FFF;
|
|
||||||
border: 1px solid black;
|
|
||||||
padding: 1em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.banner td {
|
|
||||||
background: transparent;
|
|
||||||
color: #FFF;
|
|
||||||
}
|
|
||||||
|
|
||||||
h1 a, h2 a, .sectiontitle a, .banner a {
|
|
||||||
color: #FF0;
|
|
||||||
}
|
|
||||||
|
|
||||||
h1 a:hover, h2 a:hover, .sectiontitle a:hover, .banner a:hover {
|
|
||||||
color: #FF7;
|
|
||||||
}
|
|
||||||
|
|
||||||
.dyn-source {
|
|
||||||
display: none;
|
|
||||||
background: #FFE;
|
|
||||||
color: #000;
|
|
||||||
border: 1px dotted black;
|
|
||||||
margin: 0.5em 2em 0.5em 2em;
|
|
||||||
padding: 0.5em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.dyn-source .cmt {
|
|
||||||
color: #00F;
|
|
||||||
font-style: italic;
|
|
||||||
}
|
|
||||||
|
|
||||||
.dyn-source .kw {
|
|
||||||
color: #070;
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
|
|
||||||
.method {
|
|
||||||
margin-left: 1em;
|
|
||||||
margin-right: 1em;
|
|
||||||
margin-bottom: 1em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.description pre {
|
|
||||||
padding: 0.5em;
|
|
||||||
border: 1px dotted black;
|
|
||||||
background: #FFE;
|
|
||||||
}
|
|
||||||
|
|
||||||
.method .title {
|
|
||||||
font-family: monospace;
|
|
||||||
font-size: large;
|
|
||||||
border-bottom: 1px dashed black;
|
|
||||||
margin-bottom: 0.3em;
|
|
||||||
padding-bottom: 0.1em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.method .description, .method .sourcecode {
|
|
||||||
margin-left: 1em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.description p, .sourcecode p {
|
|
||||||
margin-bottom: 0.5em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.method .sourcecode p.source-link {
|
|
||||||
text-indent: 0em;
|
|
||||||
margin-top: 0.5em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.method .aka {
|
|
||||||
margin-top: 0.3em;
|
|
||||||
margin-left: 1em;
|
|
||||||
font-style: italic;
|
|
||||||
text-indent: 2em;
|
|
||||||
}
|
|
||||||
|
|
||||||
h1 {
|
|
||||||
padding: 1em;
|
|
||||||
border: 1px solid black;
|
|
||||||
font-size: x-large;
|
|
||||||
font-weight: bold;
|
|
||||||
color: #FFF;
|
|
||||||
background: #007;
|
|
||||||
}
|
|
||||||
|
|
||||||
h2 {
|
|
||||||
padding: 0.5em 1em 0.5em 1em;
|
|
||||||
border: 1px solid black;
|
|
||||||
font-size: large;
|
|
||||||
font-weight: bold;
|
|
||||||
color: #FFF;
|
|
||||||
background: #009;
|
|
||||||
}
|
|
||||||
|
|
||||||
h3, h4, h5, h6 {
|
|
||||||
padding: 0.2em 1em 0.2em 1em;
|
|
||||||
border: 1px dashed black;
|
|
||||||
color: #000;
|
|
||||||
background: #AAF;
|
|
||||||
}
|
|
||||||
|
|
||||||
.sourcecode > pre {
|
|
||||||
padding: 0.5em;
|
|
||||||
border: 1px dotted black;
|
|
||||||
background: #FFE;
|
|
||||||
}
|
|
||||||
|
|
||||||
CSS
|
|
||||||
|
|
||||||
XHTML_PREAMBLE = %{<?xml version="1.0" encoding="%charset%"?>
|
|
||||||
<!DOCTYPE html
|
|
||||||
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
|
||||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
|
||||||
}
|
|
||||||
|
|
||||||
HEADER = XHTML_PREAMBLE + <<ENDHEADER
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<title>%title%</title>
|
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=%charset%" />
|
|
||||||
<link rel="stylesheet" href="%style_url%" type="text/css" media="screen" />
|
|
||||||
|
|
||||||
<script language="JavaScript" type="text/javascript">
|
|
||||||
// <![CDATA[
|
|
||||||
|
|
||||||
function toggleSource( id )
|
|
||||||
{
|
|
||||||
var elem
|
|
||||||
var link
|
|
||||||
|
|
||||||
if( document.getElementById )
|
|
||||||
{
|
|
||||||
elem = document.getElementById( id )
|
|
||||||
link = document.getElementById( "l_" + id )
|
|
||||||
}
|
|
||||||
else if ( document.all )
|
|
||||||
{
|
|
||||||
elem = eval( "document.all." + id )
|
|
||||||
link = eval( "document.all.l_" + id )
|
|
||||||
}
|
|
||||||
else
|
|
||||||
return false;
|
|
||||||
|
|
||||||
if( elem.style.display == "block" )
|
|
||||||
{
|
|
||||||
elem.style.display = "none"
|
|
||||||
link.innerHTML = "show source"
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
elem.style.display = "block"
|
|
||||||
link.innerHTML = "hide source"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function openCode( url )
|
|
||||||
{
|
|
||||||
window.open( url, "SOURCE_CODE", "width=400,height=400,scrollbars=yes" )
|
|
||||||
}
|
|
||||||
// ]]>
|
|
||||||
</script>
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body>
|
|
||||||
ENDHEADER
|
|
||||||
|
|
||||||
FILE_PAGE = <<HTML
|
|
||||||
<table border='0' cellpadding='0' cellspacing='0' width="100%" class='banner'>
|
|
||||||
<tr><td>
|
|
||||||
<table width="100%" border='0' cellpadding='0' cellspacing='0'><tr>
|
|
||||||
<td class="file-title" colspan="2"><span class="file-title-prefix">File</span><br />%short_name%</td>
|
|
||||||
<td align="right">
|
|
||||||
<table border='0' cellspacing="0" cellpadding="2">
|
|
||||||
<tr>
|
|
||||||
<td>Path:</td>
|
|
||||||
<td>%full_path%
|
|
||||||
IF:cvsurl
|
|
||||||
(<a href="%cvsurl%">CVS</a>)
|
|
||||||
ENDIF:cvsurl
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>Modified:</td>
|
|
||||||
<td>%dtm_modified%</td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
</td></tr>
|
|
||||||
</table>
|
|
||||||
</td></tr>
|
|
||||||
</table><br>
|
|
||||||
HTML
|
|
||||||
|
|
||||||
###################################################################
|
|
||||||
|
|
||||||
CLASS_PAGE = <<HTML
|
|
||||||
<table width="100%" border='0' cellpadding='0' cellspacing='0' class='banner'><tr>
|
|
||||||
<td class="file-title"><span class="file-title-prefix">%classmod%</span><br />%full_name%</td>
|
|
||||||
<td align="right">
|
|
||||||
<table cellspacing=0 cellpadding=2>
|
|
||||||
<tr valign="top">
|
|
||||||
<td>In:</td>
|
|
||||||
<td>
|
|
||||||
START:infiles
|
|
||||||
HREF:full_path_url:full_path:
|
|
||||||
IF:cvsurl
|
|
||||||
(<a href="%cvsurl%">CVS</a>)
|
|
||||||
ENDIF:cvsurl
|
|
||||||
END:infiles
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
IF:parent
|
|
||||||
<tr>
|
|
||||||
<td>Parent:</td>
|
|
||||||
<td>
|
|
||||||
IF:par_url
|
|
||||||
<a href="%par_url%">
|
|
||||||
ENDIF:par_url
|
|
||||||
%parent%
|
|
||||||
IF:par_url
|
|
||||||
</a>
|
|
||||||
ENDIF:par_url
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
ENDIF:parent
|
|
||||||
</table>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
HTML
|
|
||||||
|
|
||||||
###################################################################
|
|
||||||
|
|
||||||
METHOD_LIST = <<HTML
|
|
||||||
<div id="content">
|
|
||||||
IF:diagram
|
|
||||||
<table cellpadding='0' cellspacing='0' border='0' width="100%"><tr><td align="center">
|
|
||||||
%diagram%
|
|
||||||
</td></tr></table>
|
|
||||||
ENDIF:diagram
|
|
||||||
|
|
||||||
IF:description
|
|
||||||
<div class="description">%description%</div>
|
|
||||||
ENDIF:description
|
|
||||||
|
|
||||||
IF:requires
|
|
||||||
<div class="sectiontitle">Required Files</div>
|
|
||||||
<ul>
|
|
||||||
START:requires
|
|
||||||
<li>HREF:aref:name:</li>
|
|
||||||
END:requires
|
|
||||||
</ul>
|
|
||||||
ENDIF:requires
|
|
||||||
|
|
||||||
IF:toc
|
|
||||||
<div class="sectiontitle">Contents</div>
|
|
||||||
<ul>
|
|
||||||
START:toc
|
|
||||||
<li><a href="#%href%">%secname%</a></li>
|
|
||||||
END:toc
|
|
||||||
</ul>
|
|
||||||
ENDIF:toc
|
|
||||||
|
|
||||||
IF:methods
|
|
||||||
<div class="sectiontitle">Methods</div>
|
|
||||||
<ul>
|
|
||||||
START:methods
|
|
||||||
<li>HREF:aref:name:</li>
|
|
||||||
END:methods
|
|
||||||
</ul>
|
|
||||||
ENDIF:methods
|
|
||||||
|
|
||||||
IF:includes
|
|
||||||
<div class="sectiontitle">Included Modules</div>
|
|
||||||
<ul>
|
|
||||||
START:includes
|
|
||||||
<li>HREF:aref:name:</li>
|
|
||||||
END:includes
|
|
||||||
</ul>
|
|
||||||
ENDIF:includes
|
|
||||||
|
|
||||||
START:sections
|
|
||||||
IF:sectitle
|
|
||||||
<div class="sectiontitle"><a nem="%secsequence%">%sectitle%</a></div>
|
|
||||||
IF:seccomment
|
|
||||||
<div class="description">
|
|
||||||
%seccomment%
|
|
||||||
</div>
|
|
||||||
ENDIF:seccomment
|
|
||||||
ENDIF:sectitle
|
|
||||||
|
|
||||||
IF:classlist
|
|
||||||
<div class="sectiontitle">Classes and Modules</div>
|
|
||||||
%classlist%
|
|
||||||
ENDIF:classlist
|
|
||||||
|
|
||||||
IF:constants
|
|
||||||
<div class="sectiontitle">Constants</div>
|
|
||||||
<table border='0' cellpadding='5'>
|
|
||||||
START:constants
|
|
||||||
<tr valign='top'>
|
|
||||||
<td class="attr-name">%name%</td>
|
|
||||||
<td>=</td>
|
|
||||||
<td class="attr-value">%value%</td>
|
|
||||||
</tr>
|
|
||||||
IF:desc
|
|
||||||
<tr valign='top'>
|
|
||||||
<td> </td>
|
|
||||||
<td colspan="2" class="attr-desc">%desc%</td>
|
|
||||||
</tr>
|
|
||||||
ENDIF:desc
|
|
||||||
END:constants
|
|
||||||
</table>
|
|
||||||
ENDIF:constants
|
|
||||||
|
|
||||||
IF:attributes
|
|
||||||
<div class="sectiontitle">Attributes</div>
|
|
||||||
<table border='0' cellpadding='5'>
|
|
||||||
START:attributes
|
|
||||||
<tr valign='top'>
|
|
||||||
<td class='attr-rw'>
|
|
||||||
IF:rw
|
|
||||||
[%rw%]
|
|
||||||
ENDIF:rw
|
|
||||||
</td>
|
|
||||||
<td class='attr-name'>%name%</td>
|
|
||||||
<td class='attr-desc'>%a_desc%</td>
|
|
||||||
</tr>
|
|
||||||
END:attributes
|
|
||||||
</table>
|
|
||||||
ENDIF:attributes
|
|
||||||
|
|
||||||
IF:method_list
|
|
||||||
START:method_list
|
|
||||||
IF:methods
|
|
||||||
<div class="sectiontitle">%type% %category% methods</div>
|
|
||||||
START:methods
|
|
||||||
<div class="method">
|
|
||||||
<div class="title">
|
|
||||||
IF:callseq
|
|
||||||
<a name="%aref%"></a><b>%callseq%</b>
|
|
||||||
ENDIF:callseq
|
|
||||||
IFNOT:callseq
|
|
||||||
<a name="%aref%"></a><b>%name%</b>%params%
|
|
||||||
ENDIF:callseq
|
|
||||||
IF:codeurl
|
|
||||||
[ <a href="javascript:openCode('%codeurl%')">source</a> ]
|
|
||||||
ENDIF:codeurl
|
|
||||||
</div>
|
|
||||||
IF:m_desc
|
|
||||||
<div class="description">
|
|
||||||
%m_desc%
|
|
||||||
</div>
|
|
||||||
ENDIF:m_desc
|
|
||||||
IF:aka
|
|
||||||
<div class="aka">
|
|
||||||
This method is also aliased as
|
|
||||||
START:aka
|
|
||||||
<a href="%aref%">%name%</a>
|
|
||||||
END:aka
|
|
||||||
</div>
|
|
||||||
ENDIF:aka
|
|
||||||
IF:sourcecode
|
|
||||||
<div class="sourcecode">
|
|
||||||
<p class="source-link">[ <a href="javascript:toggleSource('%aref%_source')" id="l_%aref%_source">show source</a> ]</p>
|
|
||||||
<div id="%aref%_source" class="dyn-source">
|
|
||||||
<pre>
|
|
||||||
%sourcecode%
|
|
||||||
</pre>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
ENDIF:sourcecode
|
|
||||||
</div>
|
|
||||||
END:methods
|
|
||||||
ENDIF:methods
|
|
||||||
END:method_list
|
|
||||||
ENDIF:method_list
|
|
||||||
END:sections
|
|
||||||
</div>
|
|
||||||
HTML
|
|
||||||
|
|
||||||
FOOTER = <<ENDFOOTER
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
ENDFOOTER
|
|
||||||
|
|
||||||
BODY = HEADER + <<ENDBODY
|
|
||||||
!INCLUDE! <!-- banner header -->
|
|
||||||
|
|
||||||
<div id="bodyContent">
|
|
||||||
#{METHOD_LIST}
|
|
||||||
</div>
|
|
||||||
|
|
||||||
#{FOOTER}
|
|
||||||
ENDBODY
|
|
||||||
|
|
||||||
########################## Source code ##########################
|
|
||||||
|
|
||||||
SRC_PAGE = XHTML_PREAMBLE + <<HTML
|
|
||||||
<html>
|
|
||||||
<head><title>%title%</title>
|
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=%charset%">
|
|
||||||
<style>
|
|
||||||
.ruby-comment { color: green; font-style: italic }
|
|
||||||
.ruby-constant { color: #4433aa; font-weight: bold; }
|
|
||||||
.ruby-identifier { color: #222222; }
|
|
||||||
.ruby-ivar { color: #2233dd; }
|
|
||||||
.ruby-keyword { color: #3333FF; font-weight: bold }
|
|
||||||
.ruby-node { color: #777777; }
|
|
||||||
.ruby-operator { color: #111111; }
|
|
||||||
.ruby-regexp { color: #662222; }
|
|
||||||
.ruby-value { color: #662222; font-style: italic }
|
|
||||||
.kw { color: #3333FF; font-weight: bold }
|
|
||||||
.cmt { color: green; font-style: italic }
|
|
||||||
.str { color: #662222; font-style: italic }
|
|
||||||
.re { color: #662222; }
|
|
||||||
</style>
|
|
||||||
</head>
|
|
||||||
<body bgcolor="white">
|
|
||||||
<pre>%code%</pre>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
HTML
|
|
||||||
|
|
||||||
########################## Index ################################
|
|
||||||
|
|
||||||
FR_INDEX_BODY = <<HTML
|
|
||||||
!INCLUDE!
|
|
||||||
HTML
|
|
||||||
|
|
||||||
FILE_INDEX = XHTML_PREAMBLE + <<HTML
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=%charset%">
|
|
||||||
<style>
|
|
||||||
<!--
|
|
||||||
body {
|
|
||||||
background-color: #EEE;
|
|
||||||
font-family: #{FONTS};
|
|
||||||
color: #000;
|
|
||||||
margin: 0px;
|
|
||||||
}
|
|
||||||
.banner {
|
|
||||||
background: #005;
|
|
||||||
color: #FFF;
|
|
||||||
padding: 0.2em;
|
|
||||||
font-size: small;
|
|
||||||
font-weight: bold;
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
.entries {
|
|
||||||
margin: 0.25em 1em 0 1em;
|
|
||||||
font-size: x-small;
|
|
||||||
}
|
|
||||||
a {
|
|
||||||
color: #00F;
|
|
||||||
text-decoration: none;
|
|
||||||
white-space: nowrap;
|
|
||||||
}
|
|
||||||
a:hover {
|
|
||||||
color: #77F;
|
|
||||||
text-decoration: underline;
|
|
||||||
}
|
|
||||||
-->
|
|
||||||
</style>
|
|
||||||
<base target="docwin">
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<div class="banner">%list_title%</div>
|
|
||||||
<div class="entries">
|
|
||||||
START:entries
|
|
||||||
<a href="%href%">%name%</a><br>
|
|
||||||
END:entries
|
|
||||||
</div>
|
|
||||||
</body></html>
|
|
||||||
HTML
|
|
||||||
|
|
||||||
CLASS_INDEX = FILE_INDEX
|
|
||||||
METHOD_INDEX = FILE_INDEX
|
|
||||||
|
|
||||||
INDEX = XHTML_PREAMBLE + <<HTML
|
|
||||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
|
||||||
<head>
|
|
||||||
<title>%title%</title>
|
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=%charset%">
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<frameset cols="20%,*">
|
|
||||||
<frameset rows="15%,35%,50%">
|
|
||||||
<frame src="fr_file_index.html" title="Files" name="Files" />
|
|
||||||
<frame src="fr_class_index.html" name="Classes" />
|
|
||||||
<frame src="fr_method_index.html" name="Methods" />
|
|
||||||
</frameset>
|
|
||||||
IF:inline_source
|
|
||||||
<frame src="%initial_page%" name="docwin">
|
|
||||||
ENDIF:inline_source
|
|
||||||
IFNOT:inline_source
|
|
||||||
<frameset rows="80%,20%">
|
|
||||||
<frame src="%initial_page%" name="docwin">
|
|
||||||
<frame src="blank.html" name="source">
|
|
||||||
</frameset>
|
|
||||||
ENDIF:inline_source
|
|
||||||
<noframes>
|
|
||||||
<body bgcolor="white">
|
|
||||||
Click <a href="html/index.html">here</a> for a non-frames
|
|
||||||
version of this page.
|
|
||||||
</body>
|
|
||||||
</noframes>
|
|
||||||
</frameset>
|
|
||||||
|
|
||||||
</html>
|
|
||||||
HTML
|
|
||||||
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
|
|
|
@ -4,10 +4,6 @@ require File.join(File.dirname(__FILE__), 'state_machine')
|
||||||
require File.join(File.dirname(__FILE__), 'persistence')
|
require File.join(File.dirname(__FILE__), 'persistence')
|
||||||
|
|
||||||
module AASM
|
module AASM
|
||||||
def self.Version
|
|
||||||
'2.1.1'
|
|
||||||
end
|
|
||||||
|
|
||||||
class InvalidTransition < RuntimeError
|
class InvalidTransition < RuntimeError
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -1,2 +1,11 @@
|
||||||
|
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
||||||
|
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
||||||
|
|
||||||
|
require 'aasm'
|
||||||
|
|
||||||
require 'spec'
|
require 'spec'
|
||||||
require File.join(File.dirname(__FILE__), '..', 'lib', 'aasm', 'aasm')
|
require 'spec/autorun'
|
||||||
|
|
||||||
|
Spec::Runner.configure do |config|
|
||||||
|
|
||||||
|
end
|
||||||
|
|
Loading…
Reference in a new issue