just_state_machine 0.4.0 → 0.4.1
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.
- checksums.yaml +4 -4
 - data/README.md +3 -3
 - data/lib/jsm/base.rb +9 -8
 - data/lib/jsm/callbacks/chain.rb +0 -1
 - data/lib/jsm/version.rb +1 -1
 - metadata +2 -2
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA1:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: 6dd85cf3308e7d6f0527471ab0fe85945e991327
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: 68c3b37cbae7d79ea3cbad4dd89cb8e2b3cb149e
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: d99607447c78028062f5681c6e3dd6ecfa7e8e3d728b491db51ee17cce8847f56cb90a0051950b4e83d832e4fa13a39c63824dbc787587be348ad7ebea5d4d61
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: 19aef30e55e7650abc00cc19d832ee3462545931ae5e451eaec1eca468d8ef3ea5dbca6528c7151af29a51981b7ae687acb57ab6c8410cda76dec3ccd9b61880
         
     | 
    
        data/README.md
    CHANGED
    
    | 
         @@ -29,6 +29,7 @@ To use `JSM`, a state machine class need to be created. Define your state machin 
     | 
|
| 
       29 
29 
     | 
    
         
             
            * transition
         
     | 
| 
       30 
30 
     | 
    
         
             
            * state validation
         
     | 
| 
       31 
31 
     | 
    
         
             
            * attribute(the client state value)
         
     | 
| 
      
 32 
     | 
    
         
            +
            * callback
         
     | 
| 
       32 
33 
     | 
    
         | 
| 
       33 
34 
     | 
    
         
             
            ```ruby
         
     | 
| 
       34 
35 
     | 
    
         
             
            class UserStateMachine < Jsm::Base
         
     | 
| 
         @@ -340,10 +341,9 @@ class UserStateMachine < Jsm::Base 
     | 
|
| 
       340 
341 
     | 
    
         
             
            end
         
     | 
| 
       341 
342 
     | 
    
         | 
| 
       342 
343 
     | 
    
         
             
            # Client Class
         
     | 
| 
       343 
     | 
    
         
            -
            class User
         
     | 
| 
       344 
     | 
    
         
            -
              include ActiveModel::Model
         
     | 
| 
      
 344 
     | 
    
         
            +
            class User < ActiveRecord::Base
         
     | 
| 
       345 
345 
     | 
    
         
             
              include Jsm::Client
         
     | 
| 
       346 
     | 
    
         
            -
              include Jsm::Client:: 
     | 
| 
      
 346 
     | 
    
         
            +
              include Jsm::Client::ActiveRecord
         
     | 
| 
       347 
347 
     | 
    
         
             
              jsm_use UserStateMachine # your state machine class here
         
     | 
| 
       348 
348 
     | 
    
         | 
| 
       349 
349 
     | 
    
         
             
              attr_accessor :title # same with attribute_name in UserStateMachine
         
     | 
    
        data/lib/jsm/base.rb
    CHANGED
    
    | 
         @@ -20,21 +20,18 @@ class Jsm::Base 
     | 
|
| 
       20 
20 
     | 
    
         
             
              # example:
         
     | 
| 
       21 
21 
     | 
    
         
             
              # state :x, initial: true
         
     | 
| 
       22 
22 
     | 
    
         
             
              def self.state(name, params = {})
         
     | 
| 
       23 
     | 
    
         
            -
                 
     | 
| 
       24 
     | 
    
         
            -
                @states.add_state(name, initial: params[:initial])
         
     | 
| 
      
 23 
     | 
    
         
            +
                raw_states.add_state(name, initial: params[:initial])
         
     | 
| 
       25 
24 
     | 
    
         
             
              end
         
     | 
| 
       26 
25 
     | 
    
         | 
| 
       27 
26 
     | 
    
         
             
              # list of all states
         
     | 
| 
       28 
27 
     | 
    
         
             
              def self.states
         
     | 
| 
       29 
     | 
    
         
            -
                 
     | 
| 
      
 28 
     | 
    
         
            +
                raw_states.list
         
     | 
| 
       30 
29 
     | 
    
         
             
              end
         
     | 
| 
       31 
30 
     | 
    
         | 
| 
       32 
31 
     | 
    
         
             
              # return initial_state
         
     | 
| 
       33 
32 
     | 
    
         
             
              # if empty return nil
         
     | 
| 
       34 
33 
     | 
    
         
             
              def self.initial_state
         
     | 
| 
       35 
     | 
    
         
            -
                 
     | 
| 
       36 
     | 
    
         
            -
                 @states.initial_state
         
     | 
| 
       37 
     | 
    
         
            -
               end
         
     | 
| 
      
 34 
     | 
    
         
            +
                raw_states.initial_state
         
     | 
| 
       38 
35 
     | 
    
         
             
              end
         
     | 
| 
       39 
36 
     | 
    
         | 
| 
       40 
37 
     | 
    
         
             
              # add new event to the class and add its transition
         
     | 
| 
         @@ -53,7 +50,7 @@ class Jsm::Base 
     | 
|
| 
       53 
50 
     | 
    
         | 
| 
       54 
51 
     | 
    
         
             
              # get list of all events
         
     | 
| 
       55 
52 
     | 
    
         
             
              def self.events
         
     | 
| 
       56 
     | 
    
         
            -
                @events
         
     | 
| 
      
 53 
     | 
    
         
            +
                @events ||= {}
         
     | 
| 
       57 
54 
     | 
    
         
             
              end
         
     | 
| 
       58 
55 
     | 
    
         | 
| 
       59 
56 
     | 
    
         
             
              # add validation of a state(when changes to the targeted state, check whether passed this validation or not)
         
     | 
| 
         @@ -64,7 +61,7 @@ class Jsm::Base 
     | 
|
| 
       64 
61 
     | 
    
         
             
              # end
         
     | 
| 
       65 
62 
     | 
    
         
             
              def self.validate(state_name, &block)
         
     | 
| 
       66 
63 
     | 
    
         
             
                unless @states.has_state?(state_name)
         
     | 
| 
       67 
     | 
    
         
            -
                  raise Jsm::InvalidStateError, "there is no state  
     | 
| 
      
 64 
     | 
    
         
            +
                  raise Jsm::InvalidStateError, "there is no state #{state_name}"
         
     | 
| 
       68 
65 
     | 
    
         
             
                end
         
     | 
| 
       69 
66 
     | 
    
         | 
| 
       70 
67 
     | 
    
         
             
                validators.add_validator(state_name, Jsm::Validator.new(:state, state_name, &block))
         
     | 
| 
         @@ -81,6 +78,10 @@ class Jsm::Base 
     | 
|
| 
       81 
78 
     | 
    
         
             
                end
         
     | 
| 
       82 
79 
     | 
    
         
             
              end
         
     | 
| 
       83 
80 
     | 
    
         | 
| 
      
 81 
     | 
    
         
            +
              def self.raw_states
         
     | 
| 
      
 82 
     | 
    
         
            +
                @states ||= Jsm::States.new
         
     | 
| 
      
 83 
     | 
    
         
            +
              end
         
     | 
| 
      
 84 
     | 
    
         
            +
             
     | 
| 
       84 
85 
     | 
    
         
             
              def initialize(klass)
         
     | 
| 
       85 
86 
     | 
    
         
             
                @klass = klass
         
     | 
| 
       86 
87 
     | 
    
         
             
                Jsm::ClientExtension.decorate(@klass, state_machine: self.class)
         
     | 
    
        data/lib/jsm/callbacks/chain.rb
    CHANGED
    
    
    
        data/lib/jsm/version.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | 
         @@ -1,14 +1,14 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: just_state_machine
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 0.4. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 0.4.1
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - wendy0402
         
     | 
| 
       8 
8 
     | 
    
         
             
            autorequire: 
         
     | 
| 
       9 
9 
     | 
    
         
             
            bindir: exe
         
     | 
| 
       10 
10 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       11 
     | 
    
         
            -
            date: 2015- 
     | 
| 
      
 11 
     | 
    
         
            +
            date: 2015-11-02 00:00:00.000000000 Z
         
     | 
| 
       12 
12 
     | 
    
         
             
            dependencies:
         
     | 
| 
       13 
13 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       14 
14 
     | 
    
         
             
              name: bundler
         
     |