dm-is-state_machine 0.10.1 → 0.10.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/LICENSE CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2008 David James
1
+ Copyright (c) 2009 David James
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person obtaining
4
4
  a copy of this software and associated documentation files (the
data/Rakefile CHANGED
@@ -1,24 +1,29 @@
1
- require 'pathname'
1
+ require 'rubygems'
2
+ require 'rake'
2
3
 
3
- ROOT = Pathname(__FILE__).dirname.expand_path
4
- JRUBY = RUBY_PLATFORM =~ /java/
5
- WINDOWS = Gem.win_platform?
6
- SUDO = (WINDOWS || JRUBY) ? '' : ('sudo' unless ENV['SUDOLESS'])
4
+ begin
5
+ gem 'jeweler', '~> 1.4'
6
+ require 'jeweler'
7
7
 
8
- require ROOT + 'lib/dm-is-state_machine/is/version'
8
+ Jeweler::Tasks.new do |gem|
9
+ gem.name = 'dm-is-state_machine'
10
+ gem.summary = 'DataMapper plugin for creating state machines'
11
+ gem.description = gem.summary
12
+ gem.email = 'djwonk [a] collectiveinsight [d] net'
13
+ gem.homepage = 'http://github.com/datamapper/dm-more/tree/master/%s' % gem.name
14
+ gem.authors = [ 'David James' ]
9
15
 
10
- AUTHOR = 'David James'
11
- EMAIL = 'djwonk [a] collectiveinsight [d] net'
12
- GEM_NAME = 'dm-is-state_machine'
13
- GEM_VERSION = DataMapper::Is::StateMachine::VERSION
14
- GEM_DEPENDENCIES = [['dm-core', GEM_VERSION]]
15
- GEM_CLEAN = %w[ log pkg coverage ]
16
- GEM_EXTRAS = { :has_rdoc => true, :extra_rdoc_files => %w[ README.rdoc LICENSE TODO History.rdoc] }
16
+ gem.rubyforge_project = 'datamapper'
17
17
 
18
- PROJECT_NAME = 'datamapper'
19
- PROJECT_URL = "http://github.com/datamapper/dm-more/tree/master/#{GEM_NAME}"
20
- PROJECT_DESCRIPTION = PROJECT_SUMMARY = 'DataMapper plugin for creating state machines'
18
+ gem.add_dependency 'dm-core', '~> 0.10.2'
21
19
 
22
- [ ROOT, ROOT.parent ].each do |dir|
23
- Pathname.glob(dir.join('tasks/**/*.rb').to_s).each { |f| require f }
20
+ gem.add_development_dependency 'rspec', '~> 1.2.9'
21
+ gem.add_development_dependency 'yard', '~> 0.4.0'
22
+ end
23
+
24
+ Jeweler::GemcutterTasks.new
25
+
26
+ FileList['tasks/**/*.rake'].each { |task| import task }
27
+ rescue LoadError
28
+ puts 'Jeweler (or a dependency) not available. Install it with: gem install jeweler'
24
29
  end
data/VERSION ADDED
@@ -0,0 +1 @@
1
+ 0.10.2
@@ -0,0 +1,84 @@
1
+ # Generated by jeweler
2
+ # DO NOT EDIT THIS FILE DIRECTLY
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
4
+ # -*- encoding: utf-8 -*-
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = %q{dm-is-state_machine}
8
+ s.version = "0.10.2"
9
+
10
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
+ s.authors = ["David James"]
12
+ s.date = %q{2009-12-11}
13
+ s.description = %q{DataMapper plugin for creating state machines}
14
+ s.email = %q{djwonk [a] collectiveinsight [d] net}
15
+ s.extra_rdoc_files = [
16
+ "LICENSE",
17
+ "README.rdoc"
18
+ ]
19
+ s.files = [
20
+ "LICENSE",
21
+ "README.rdoc",
22
+ "Rakefile",
23
+ "VERSION",
24
+ "dm-is-state_machine.gemspec",
25
+ "lib/dm-is-state_machine.rb",
26
+ "lib/dm-is-state_machine/is/data/event.rb",
27
+ "lib/dm-is-state_machine/is/data/machine.rb",
28
+ "lib/dm-is-state_machine/is/data/state.rb",
29
+ "lib/dm-is-state_machine/is/dsl/event_dsl.rb",
30
+ "lib/dm-is-state_machine/is/dsl/state_dsl.rb",
31
+ "lib/dm-is-state_machine/is/state_machine.rb",
32
+ "spec/examples/invalid_events.rb",
33
+ "spec/examples/invalid_states.rb",
34
+ "spec/examples/invalid_transitions_1.rb",
35
+ "spec/examples/invalid_transitions_2.rb",
36
+ "spec/examples/slot_machine.rb",
37
+ "spec/examples/traffic_light.rb",
38
+ "spec/integration/invalid_events_spec.rb",
39
+ "spec/integration/invalid_states_spec.rb",
40
+ "spec/integration/invalid_transitions_spec.rb",
41
+ "spec/integration/slot_machine_spec.rb",
42
+ "spec/integration/traffic_light_spec.rb",
43
+ "spec/rcov.opts",
44
+ "spec/spec.opts",
45
+ "spec/spec_helper.rb",
46
+ "spec/unit/data/event_spec.rb",
47
+ "spec/unit/data/machine_spec.rb",
48
+ "spec/unit/data/state_spec.rb",
49
+ "spec/unit/dsl/event_dsl_spec.rb",
50
+ "spec/unit/dsl/state_dsl_spec.rb",
51
+ "spec/unit/state_machine_spec.rb",
52
+ "tasks/ci.rake",
53
+ "tasks/metrics.rake",
54
+ "tasks/spec.rake",
55
+ "tasks/yard.rake",
56
+ "tasks/yardstick.rake"
57
+ ]
58
+ s.homepage = %q{http://github.com/datamapper/dm-more/tree/master/dm-is-state_machine}
59
+ s.rdoc_options = ["--charset=UTF-8"]
60
+ s.require_paths = ["lib"]
61
+ s.rubyforge_project = %q{datamapper}
62
+ s.rubygems_version = %q{1.3.5}
63
+ s.summary = %q{DataMapper plugin for creating state machines}
64
+
65
+ if s.respond_to? :specification_version then
66
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
67
+ s.specification_version = 3
68
+
69
+ if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
70
+ s.add_runtime_dependency(%q<dm-core>, ["~> 0.10.2"])
71
+ s.add_development_dependency(%q<rspec>, ["~> 1.2.9"])
72
+ s.add_development_dependency(%q<yard>, ["~> 0.4.0"])
73
+ else
74
+ s.add_dependency(%q<dm-core>, ["~> 0.10.2"])
75
+ s.add_dependency(%q<rspec>, ["~> 1.2.9"])
76
+ s.add_dependency(%q<yard>, ["~> 0.4.0"])
77
+ end
78
+ else
79
+ s.add_dependency(%q<dm-core>, ["~> 0.10.2"])
80
+ s.add_dependency(%q<rspec>, ["~> 1.2.9"])
81
+ s.add_dependency(%q<yard>, ["~> 0.4.0"])
82
+ end
83
+ end
84
+
@@ -51,9 +51,9 @@ module DataMapper
51
51
  #
52
52
  # self.class_eval <<-RUBY, __FILE__, __LINE__ + 1
53
53
  # def #{name}!
54
- # machine.current_state_name = self.send(:"#{column}")
54
+ # machine.current_state_name = __send__(:"#{column}")
55
55
  # machine.fire_event(name, self)
56
- # self.send(:"#{column}="), machine.current_state_name
56
+ # __send__(:"#{column}="), machine.current_state_name
57
57
  # end
58
58
  # RUBY
59
59
 
@@ -106,16 +106,16 @@ module DataMapper
106
106
  if hook.respond_to?(:call)
107
107
  hook.call(self)
108
108
  else
109
- self.send(hook)
109
+ __send__(hook)
110
110
  end
111
111
  end
112
112
 
113
113
  def transition!(event_name)
114
114
  machine = model.instance_variable_get(:@is_state_machine)[:machine]
115
115
  column = machine.column
116
- machine.current_state_name = send(column)
116
+ machine.current_state_name = __send__(column)
117
117
  machine.fire_event(event_name, self)
118
- send("#{column}=", machine.current_state_name)
118
+ __send__("#{column}=", machine.current_state_name)
119
119
  end
120
120
 
121
121
  end # InstanceMethods
@@ -7,10 +7,6 @@ describe SlotMachine do
7
7
  @sm = SlotMachine.new
8
8
  end
9
9
 
10
- it "should have an 'id' column" do
11
- @sm.attributes.should have_key(:id)
12
- end
13
-
14
10
  it "should have a 'mode' column" do
15
11
  @sm.attributes.should have_key(:mode)
16
12
  end
@@ -7,10 +7,6 @@ describe TrafficLight do
7
7
  @t = TrafficLight.new
8
8
  end
9
9
 
10
- it "should have an 'id' column" do
11
- @t.attributes.should have_key(:id)
12
- end
13
-
14
10
  it "should have a 'color' column" do
15
11
  @t.attributes.should have_key(:color)
16
12
  end
data/spec/rcov.opts ADDED
@@ -0,0 +1,6 @@
1
+ --exclude "spec"
2
+ --sort coverage
3
+ --callsites
4
+ --xrefs
5
+ --profile
6
+ --text-summary
data/spec/spec.opts CHANGED
@@ -1,2 +1,4 @@
1
1
  --colour
2
2
  --loadby random
3
+ --format profile
4
+ --backtrace
data/tasks/ci.rake ADDED
@@ -0,0 +1 @@
1
+ task :ci => [ :verify_measurements, 'metrics:all' ]
@@ -0,0 +1,36 @@
1
+ begin
2
+ require 'metric_fu'
3
+ rescue LoadError
4
+ namespace :metrics do
5
+ task :all do
6
+ abort 'metric_fu is not available. In order to run metrics:all, you must: gem install metric_fu'
7
+ end
8
+ end
9
+ end
10
+
11
+ begin
12
+ require 'reek/adapters/rake_task'
13
+
14
+ Reek::RakeTask.new do |t|
15
+ t.fail_on_error = true
16
+ t.verbose = false
17
+ t.source_files = 'lib/**/*.rb'
18
+ end
19
+ rescue LoadError
20
+ task :reek do
21
+ abort 'Reek is not available. In order to run reek, you must: gem install reek'
22
+ end
23
+ end
24
+
25
+ begin
26
+ require 'roodi'
27
+ require 'roodi_task'
28
+
29
+ RoodiTask.new do |t|
30
+ t.verbose = false
31
+ end
32
+ rescue LoadError
33
+ task :roodi do
34
+ abort 'Roodi is not available. In order to run roodi, you must: gem install roodi'
35
+ end
36
+ end
data/tasks/spec.rake ADDED
@@ -0,0 +1,41 @@
1
+ spec_defaults = lambda do |spec|
2
+ spec.pattern = 'spec/**/*_spec.rb'
3
+ spec.libs << 'lib' << 'spec'
4
+ spec.spec_opts << '--options' << 'spec/spec.opts'
5
+ end
6
+
7
+ begin
8
+ require 'spec/rake/spectask'
9
+
10
+ Spec::Rake::SpecTask.new(:spec, &spec_defaults)
11
+ rescue LoadError
12
+ task :spec do
13
+ abort 'rspec is not available. In order to run spec, you must: gem install rspec'
14
+ end
15
+ end
16
+
17
+ begin
18
+ require 'rcov'
19
+ require 'spec/rake/verify_rcov'
20
+
21
+ Spec::Rake::SpecTask.new(:rcov) do |rcov|
22
+ spec_defaults.call(rcov)
23
+ rcov.rcov = true
24
+ rcov.rcov_opts = File.read('spec/rcov.opts').split(/\s+/)
25
+ end
26
+
27
+ RCov::VerifyTask.new(:verify_rcov => :rcov) do |rcov|
28
+ rcov.threshold = 100
29
+ end
30
+ rescue LoadError
31
+ %w[ rcov verify_rcov ].each do |name|
32
+ task name do
33
+ abort "rcov is not available. In order to run #{name}, you must: gem install rcov"
34
+ end
35
+ end
36
+ end
37
+
38
+ task :spec => :check_dependencies
39
+ task :rcov => :check_dependencies
40
+
41
+ task :default => :spec
data/tasks/yard.rake ADDED
@@ -0,0 +1,9 @@
1
+ begin
2
+ require 'yard'
3
+
4
+ YARD::Rake::YardocTask.new
5
+ rescue LoadError
6
+ task :yard do
7
+ abort 'YARD is not available. In order to run yard, you must: gem install yard'
8
+ end
9
+ end
@@ -0,0 +1,19 @@
1
+ begin
2
+ require 'pathname'
3
+ require 'yardstick/rake/measurement'
4
+ require 'yardstick/rake/verify'
5
+
6
+ # yardstick_measure task
7
+ Yardstick::Rake::Measurement.new
8
+
9
+ # verify_measurements task
10
+ Yardstick::Rake::Verify.new do |verify|
11
+ verify.threshold = 100
12
+ end
13
+ rescue LoadError
14
+ %w[ yardstick_measure verify_measurements ].each do |name|
15
+ task name.to_s do
16
+ abort "Yardstick is not available. In order to run #{name}, you must: gem install yardstick"
17
+ end
18
+ end
19
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dm-is-state_machine
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.10.1
4
+ version: 0.10.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - David James
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-09-30 00:00:00 -07:00
12
+ date: 2009-12-11 00:00:00 -08:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -18,29 +18,45 @@ dependencies:
18
18
  version_requirement:
19
19
  version_requirements: !ruby/object:Gem::Requirement
20
20
  requirements:
21
- - - "="
21
+ - - ~>
22
22
  - !ruby/object:Gem::Version
23
- version: 0.10.1
23
+ version: 0.10.2
24
+ version:
25
+ - !ruby/object:Gem::Dependency
26
+ name: rspec
27
+ type: :development
28
+ version_requirement:
29
+ version_requirements: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ~>
32
+ - !ruby/object:Gem::Version
33
+ version: 1.2.9
34
+ version:
35
+ - !ruby/object:Gem::Dependency
36
+ name: yard
37
+ type: :development
38
+ version_requirement:
39
+ version_requirements: !ruby/object:Gem::Requirement
40
+ requirements:
41
+ - - ~>
42
+ - !ruby/object:Gem::Version
43
+ version: 0.4.0
24
44
  version:
25
45
  description: DataMapper plugin for creating state machines
26
- email:
27
- - djwonk [a] collectiveinsight [d] net
46
+ email: djwonk [a] collectiveinsight [d] net
28
47
  executables: []
29
48
 
30
49
  extensions: []
31
50
 
32
51
  extra_rdoc_files:
33
- - README.rdoc
34
52
  - LICENSE
35
- - TODO
36
- - History.rdoc
53
+ - README.rdoc
37
54
  files:
38
- - History.rdoc
39
55
  - LICENSE
40
- - Manifest.txt
41
56
  - README.rdoc
42
57
  - Rakefile
43
- - TODO
58
+ - VERSION
59
+ - dm-is-state_machine.gemspec
44
60
  - lib/dm-is-state_machine.rb
45
61
  - lib/dm-is-state_machine/is/data/event.rb
46
62
  - lib/dm-is-state_machine/is/data/machine.rb
@@ -48,7 +64,6 @@ files:
48
64
  - lib/dm-is-state_machine/is/dsl/event_dsl.rb
49
65
  - lib/dm-is-state_machine/is/dsl/state_dsl.rb
50
66
  - lib/dm-is-state_machine/is/state_machine.rb
51
- - lib/dm-is-state_machine/is/version.rb
52
67
  - spec/examples/invalid_events.rb
53
68
  - spec/examples/invalid_states.rb
54
69
  - spec/examples/invalid_transitions_1.rb
@@ -60,6 +75,7 @@ files:
60
75
  - spec/integration/invalid_transitions_spec.rb
61
76
  - spec/integration/slot_machine_spec.rb
62
77
  - spec/integration/traffic_light_spec.rb
78
+ - spec/rcov.opts
63
79
  - spec/spec.opts
64
80
  - spec/spec_helper.rb
65
81
  - spec/unit/data/event_spec.rb
@@ -68,16 +84,18 @@ files:
68
84
  - spec/unit/dsl/event_dsl_spec.rb
69
85
  - spec/unit/dsl/state_dsl_spec.rb
70
86
  - spec/unit/state_machine_spec.rb
71
- - tasks/install.rb
72
- - tasks/spec.rb
87
+ - tasks/ci.rake
88
+ - tasks/metrics.rake
89
+ - tasks/spec.rake
90
+ - tasks/yard.rake
91
+ - tasks/yardstick.rake
73
92
  has_rdoc: true
74
93
  homepage: http://github.com/datamapper/dm-more/tree/master/dm-is-state_machine
75
94
  licenses: []
76
95
 
77
96
  post_install_message:
78
97
  rdoc_options:
79
- - --main
80
- - README.rdoc
98
+ - --charset=UTF-8
81
99
  require_paths:
82
100
  - lib
83
101
  required_ruby_version: !ruby/object:Gem::Requirement
data/History.rdoc DELETED
@@ -1,37 +0,0 @@
1
- === 0.10.1 / 2009-09-30
2
-
3
- * No changes this version
4
-
5
- === 0.10.0 / 2009-09-15
6
-
7
- * Updated to work with dm-core 0.10.0
8
-
9
- === 0.9.11 / 2009-03-29
10
-
11
- * No changes this version
12
-
13
- === 0.9.10 / 2009-01-19
14
-
15
- * No changes this version
16
-
17
- === 0.9.9 / 2009-01-04
18
-
19
- * 1 minor enhancement:
20
-
21
- * Added transition! to allow before/after hooks to execute on state
22
- transitions.
23
-
24
- === 0.9.8 / 2008-12-07
25
-
26
- * No changes this version
27
-
28
- === 0.9.7 / 2008-11-18
29
-
30
- * 4 minor enhancements:
31
-
32
- * Added support to pass a symbol to a transition, which will call the
33
- corresponding method. This means you don't have to put a whole
34
- Proc inside the state machine definition if you don't want to.
35
- * Added support for the :exit transition.
36
- * Created a new example called SlotMachine in /spec/integration
37
- * Updated README and TODO.
data/Manifest.txt DELETED
@@ -1,35 +0,0 @@
1
- History.rdoc
2
- LICENSE
3
- Manifest.txt
4
- README.rdoc
5
- Rakefile
6
- TODO
7
- lib/dm-is-state_machine.rb
8
- lib/dm-is-state_machine/is/data/event.rb
9
- lib/dm-is-state_machine/is/data/machine.rb
10
- lib/dm-is-state_machine/is/data/state.rb
11
- lib/dm-is-state_machine/is/dsl/event_dsl.rb
12
- lib/dm-is-state_machine/is/dsl/state_dsl.rb
13
- lib/dm-is-state_machine/is/state_machine.rb
14
- lib/dm-is-state_machine/is/version.rb
15
- spec/examples/invalid_events.rb
16
- spec/examples/invalid_states.rb
17
- spec/examples/invalid_transitions_1.rb
18
- spec/examples/invalid_transitions_2.rb
19
- spec/examples/slot_machine.rb
20
- spec/examples/traffic_light.rb
21
- spec/integration/invalid_events_spec.rb
22
- spec/integration/invalid_states_spec.rb
23
- spec/integration/invalid_transitions_spec.rb
24
- spec/integration/slot_machine_spec.rb
25
- spec/integration/traffic_light_spec.rb
26
- spec/spec.opts
27
- spec/spec_helper.rb
28
- spec/unit/data/event_spec.rb
29
- spec/unit/data/machine_spec.rb
30
- spec/unit/data/state_spec.rb
31
- spec/unit/dsl/event_dsl_spec.rb
32
- spec/unit/dsl/state_dsl_spec.rb
33
- spec/unit/state_machine_spec.rb
34
- tasks/install.rb
35
- tasks/spec.rb
data/TODO DELETED
@@ -1,52 +0,0 @@
1
- TODO
2
- ====
3
-
4
- * Take a look at using DataMapper's Enum type.
5
- - Does the Enum type support for all databases? (SQLite?)
6
-
7
-
8
- * I am not real happy with spec/unit/dsl:
9
- - The specs are brittle.
10
- - The specs don't actually test much.
11
-
12
- However, the integration specs are pretty thorough. Maybe each
13
- serves their own purpose.
14
-
15
-
16
- API QUESTIONS
17
- =============
18
-
19
- * Some people are asking for convenience methods.
20
-
21
- For example, instead of:
22
- light = TrafficLight.new
23
- light.color == "yellow"
24
-
25
- We could possibly offer:
26
- light.yellow?
27
-
28
- Advantages:
29
- - More compact syntax.
30
-
31
- Disadvantages:
32
- - Namespace pollution
33
- - Possible namespace collision if you have more than one state machine
34
- in your model.
35
-
36
-
37
- * Should skipping to a new state automatically trigger the :enter event?
38
-
39
-
40
- * Should we add loopback checking?
41
-
42
- In other words, if there is a transition defined from one state back to
43
- the same state, should the :enter and :exit events fire?
44
-
45
-
46
- * Should we add support for DataMapper callbacks? (e.g. after saving)
47
-
48
-
49
- SOMEDAY / MAYBE
50
- ===============
51
-
52
- * Consider trying out a nested state machine.
@@ -1,7 +0,0 @@
1
- module DataMapper
2
- module Is
3
- module StateMachine
4
- VERSION = '0.10.1'.freeze
5
- end
6
- end
7
- end
data/tasks/install.rb DELETED
@@ -1,13 +0,0 @@
1
- def sudo_gem(cmd)
2
- sh "#{SUDO} #{RUBY} -S gem #{cmd}", :verbose => false
3
- end
4
-
5
- desc "Install #{GEM_NAME} #{GEM_VERSION}"
6
- task :install => [ :package ] do
7
- sudo_gem "install pkg/#{GEM_NAME}-#{GEM_VERSION} --no-update-sources"
8
- end
9
-
10
- desc "Uninstall #{GEM_NAME} #{GEM_VERSION}"
11
- task :uninstall => [ :clobber ] do
12
- sudo_gem "uninstall #{GEM_NAME} -v#{GEM_VERSION} -Ix"
13
- end
data/tasks/spec.rb DELETED
@@ -1,25 +0,0 @@
1
- begin
2
- require 'spec/rake/spectask'
3
-
4
- task :default => [ :spec ]
5
-
6
- desc 'Run specifications'
7
- Spec::Rake::SpecTask.new(:spec) do |t|
8
- t.spec_opts << '--options' << 'spec/spec.opts' if File.exists?('spec/spec.opts')
9
- t.libs << 'lib' << 'spec' # needed for CI rake spec task, duplicated in spec_helper
10
-
11
- begin
12
- require 'rcov'
13
- t.rcov = JRUBY ? false : (ENV.has_key?('NO_RCOV') ? ENV['NO_RCOV'] != 'true' : true)
14
- t.rcov_opts << '--exclude' << 'spec'
15
- t.rcov_opts << '--text-summary'
16
- t.rcov_opts << '--sort' << 'coverage' << '--sort-reverse'
17
- rescue LoadError
18
- # rcov not installed
19
- rescue SyntaxError
20
- # rcov syntax invalid
21
- end
22
- end
23
- rescue LoadError
24
- # rspec not installed
25
- end