mingle_event_changes 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
data/README ADDED
@@ -0,0 +1,20 @@
1
+
2
+ = Mingle Event Changes
3
+
4
+ Parse out Mingle Event Feed content element of the entry. Better and simpler API for accessing event changes.
5
+
6
+ == How to use
7
+
8
+ require 'mingle_event_changes'
9
+
10
+ xml = <<-XML
11
+ <changes>
12
+ <change type="card-creation" >
13
+ </change>
14
+ <change type="card-copied-to" >
15
+ <source url="http://your.mingle.server:8080/api/v2/projects/one/cards/2.xml"/>
16
+ <destination url="http://your.mingle.server:8080/api/v2/projects/two/cards/3.xml"></destination>
17
+ </change>
18
+ </changes>
19
+ XML
20
+ changes = MingleEventChanges.parse(xml)
@@ -0,0 +1,89 @@
1
+ module MingleEventChanges
2
+ class PropertyDefinition
3
+ include SAXMachine
4
+ element :name
5
+ element :position
6
+ element :data_type
7
+ element :is_numeric
8
+ attribute :url
9
+
10
+ def is_numeric?
11
+ is_numeric == 'true'
12
+ end
13
+ end
14
+
15
+ class CardTypeValue
16
+ include SAXMachine
17
+ element :name
18
+ element :card_type, :value => :url, :as => :url
19
+ end
20
+
21
+ class Change
22
+ include SAXMachine
23
+ attribute :type
24
+ end
25
+
26
+ class CardCopyChange < Change
27
+ element :source, :value => :url, :as => :source_url
28
+ element :destination, :value => :url, :as => :destination_url
29
+ end
30
+
31
+ class NameChange < Change
32
+ element :old_value
33
+ element :new_value
34
+ end
35
+
36
+ class PropertyChange < Change
37
+ element :property_definition, :class => PropertyDefinition
38
+ element :old_value
39
+ element :new_value
40
+ end
41
+
42
+ class CardTypeChange < Change
43
+ element :old_value, :class => CardTypeValue
44
+ element :new_value, :class => CardTypeValue
45
+ end
46
+
47
+ class TagChange < Change
48
+ element :tag
49
+ end
50
+
51
+ class AttachmentChange < Change
52
+ element :url
53
+ element :file_name
54
+ end
55
+
56
+ class CommentChange < Change
57
+ element :comment
58
+ end
59
+
60
+ class Changes
61
+ include SAXMachine
62
+ TYPES = {
63
+ 'card-copied-to' => CardCopyChange,
64
+ 'card-copied-from' => CardCopyChange,
65
+ 'card-creation' => Change,
66
+ 'card-deletion' => Change,
67
+ 'card-type-change' => CardTypeChange,
68
+ 'description-change' => Change,
69
+ 'property-change' => PropertyChange,
70
+ 'name-change' => NameChange,
71
+ 'tag-addition' => TagChange,
72
+ 'tag-removal' => TagChange,
73
+ 'attachment-addition' => AttachmentChange,
74
+ 'attachment-removal' => AttachmentChange,
75
+ 'attachment-replacement' => AttachmentChange,
76
+ 'comment-addition' => CommentChange,
77
+ 'system-comment-addition' => CommentChange,
78
+ 'page-creation' => Change
79
+ }.each do |type, clazz|
80
+ elements :change, :as => "#{type.gsub(/-/, '_')}_changes", :class => clazz, :with => {:type => type}
81
+ end
82
+
83
+ def changes
84
+ TYPES.keys.map do |k|
85
+ send("#{k.gsub(/-/, '_')}_changes")
86
+ end.flatten
87
+ end
88
+ end
89
+ end
@@ -0,0 +1,10 @@
1
+
2
+ require 'sax-machine'
3
+ require 'mingle_event_changes/change'
4
+
5
+ module MingleEventChanges
6
+ module_function
7
+ def parse(xml)
8
+ Changes.parse(xml).changes
9
+ end
10
+ end
metadata ADDED
@@ -0,0 +1,66 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: mingle_event_changes
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Xiao Li
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2013-03-02 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: sax-machine
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
30
+ description:
31
+ email: swing1979@gmail.com
32
+ executables: []
33
+ extensions: []
34
+ extra_rdoc_files: []
35
+ files:
36
+ - README
37
+ - lib/mingle_event_changes/change.rb
38
+ - lib/mingle_event_changes.rb
39
+ homepage: http://github.com/xli/mingle_event_changes
40
+ licenses:
41
+ - MIT
42
+ post_install_message:
43
+ rdoc_options: []
44
+ require_paths:
45
+ - lib
46
+ required_ruby_version: !ruby/object:Gem::Requirement
47
+ none: false
48
+ requirements:
49
+ - - ! '>='
50
+ - !ruby/object:Gem::Version
51
+ version: '0'
52
+ required_rubygems_version: !ruby/object:Gem::Requirement
53
+ none: false
54
+ requirements:
55
+ - - ! '>='
56
+ - !ruby/object:Gem::Version
57
+ version: '0'
58
+ requirements: []
59
+ rubyforge_project:
60
+ rubygems_version: 1.8.25
61
+ signing_key:
62
+ specification_version: 3
63
+ summary: Parse out Mingle Event Feed content element of the entry. Better and simpler
64
+ API for accessing event changes.
65
+ test_files: []
66
+ has_rdoc: