bumbleworks 0.0.28 → 0.0.29
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/lib/bumbleworks/support.rb +19 -0
- data/lib/bumbleworks/task.rb +22 -0
- data/lib/bumbleworks/version.rb +1 -1
- data/lib/bumbleworks/workitem_entity_storage.rb +15 -0
- data/spec/lib/bumbleworks/support_spec.rb +46 -0
- data/spec/lib/bumbleworks/task_spec.rb +50 -0
- data/spec/lib/bumbleworks/workitem_entity_storage_spec.rb +22 -0
- metadata +1 -1
data/lib/bumbleworks/support.rb
CHANGED
@@ -33,5 +33,24 @@ module Bumbleworks
|
|
33
33
|
end
|
34
34
|
constant
|
35
35
|
end
|
36
|
+
|
37
|
+
def tokenize(string)
|
38
|
+
return nil if string.nil?
|
39
|
+
string = string.gsub(/&/, ' and ').
|
40
|
+
gsub(/[ \/]+/, '_').
|
41
|
+
gsub(/([a-z\d])([A-Z])/,'\1_\2').
|
42
|
+
downcase
|
43
|
+
end
|
44
|
+
|
45
|
+
def humanize(string)
|
46
|
+
return nil if string.nil?
|
47
|
+
tokenize(string).gsub(/_/, ' ').
|
48
|
+
gsub(/^\w/) { $&.upcase }
|
49
|
+
end
|
50
|
+
|
51
|
+
def titleize(string)
|
52
|
+
return nil if string.nil?
|
53
|
+
humanize(string).gsub(/\b('?[a-z])/) { $1.capitalize }
|
54
|
+
end
|
36
55
|
end
|
37
56
|
end
|
data/lib/bumbleworks/task.rb
CHANGED
@@ -157,8 +157,30 @@ module Bumbleworks
|
|
157
157
|
})
|
158
158
|
end
|
159
159
|
|
160
|
+
def to_s(options = {})
|
161
|
+
titleize(options)
|
162
|
+
end
|
163
|
+
|
164
|
+
def titleize(options = {})
|
165
|
+
displayify(:titleize, options)
|
166
|
+
end
|
167
|
+
|
168
|
+
def humanize(options = {})
|
169
|
+
displayify(:humanize, options)
|
170
|
+
end
|
171
|
+
|
160
172
|
private
|
161
173
|
|
174
|
+
def displayify(modifier, options = {})
|
175
|
+
task_name = Bumbleworks::Support.send(modifier, nickname)
|
176
|
+
|
177
|
+
if options[:entity] != false && !(entity_fields = entity_fields(modifier => true)).empty?
|
178
|
+
"#{task_name}: #{entity_fields[:type]} #{entity_fields[:identifier]}"
|
179
|
+
else
|
180
|
+
task_name
|
181
|
+
end
|
182
|
+
end
|
183
|
+
|
162
184
|
def storage_participant
|
163
185
|
self.class.storage_participant
|
164
186
|
end
|
data/lib/bumbleworks/version.rb
CHANGED
@@ -22,6 +22,21 @@ module Bumbleworks
|
|
22
22
|
entity_id && entity_type
|
23
23
|
end
|
24
24
|
|
25
|
+
def entity_fields(options = {})
|
26
|
+
return {} unless has_entity_fields?
|
27
|
+
type = if options[:humanize] == true
|
28
|
+
Bumbleworks::Support.humanize(entity_type)
|
29
|
+
elsif options[:titleize] == true
|
30
|
+
Bumbleworks::Support.titleize(entity_type)
|
31
|
+
else
|
32
|
+
entity_type
|
33
|
+
end
|
34
|
+
{
|
35
|
+
:type => type,
|
36
|
+
:identifier => entity_id
|
37
|
+
}
|
38
|
+
end
|
39
|
+
|
25
40
|
private
|
26
41
|
|
27
42
|
def entity_id
|
@@ -59,4 +59,50 @@ describe Bumbleworks::Support do
|
|
59
59
|
}.to raise_error(NameError)
|
60
60
|
end
|
61
61
|
end
|
62
|
+
|
63
|
+
describe '.tokenize' do
|
64
|
+
it 'creates snake_case version of string' do
|
65
|
+
described_class.tokenize('Albus Dumbledore & his_friend').should == 'albus_dumbledore_and_his_friend'
|
66
|
+
end
|
67
|
+
|
68
|
+
it 'uncamelizes' do
|
69
|
+
described_class.tokenize('thisStrangeJavalikeWord').should == 'this_strange_javalike_word'
|
70
|
+
end
|
71
|
+
|
72
|
+
it 'returns nil if given nil' do
|
73
|
+
described_class.tokenize(nil).should be_nil
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
describe '.humanize' do
|
78
|
+
it 'creates humanized version of snaky string' do
|
79
|
+
described_class.humanize('mops_are_so_moppy').should == 'Mops are so moppy'
|
80
|
+
end
|
81
|
+
|
82
|
+
it 'created humanized version of camely string' do
|
83
|
+
described_class.humanize('thisStrangeJavalikeWord').should == 'This strange javalike word'
|
84
|
+
end
|
85
|
+
|
86
|
+
it 'returns nil if given nil' do
|
87
|
+
described_class.humanize(nil).should be_nil
|
88
|
+
end
|
89
|
+
end
|
90
|
+
|
91
|
+
describe '.titleize' do
|
92
|
+
it 'creates titleized version of snaky string' do
|
93
|
+
described_class.titleize('mops_are_so_moppy').should == 'Mops Are So Moppy'
|
94
|
+
end
|
95
|
+
|
96
|
+
it 'created titleized version of camely string' do
|
97
|
+
described_class.titleize('thisStrangeJavalikeWord').should == 'This Strange Javalike Word'
|
98
|
+
end
|
99
|
+
|
100
|
+
it 'created titleized version of humany string' do
|
101
|
+
described_class.titleize('You are a wonderful toothbrush').should == 'You Are A Wonderful Toothbrush'
|
102
|
+
end
|
103
|
+
|
104
|
+
it 'returns nil if given nil' do
|
105
|
+
described_class.titleize(nil).should be_nil
|
106
|
+
end
|
107
|
+
end
|
62
108
|
end
|
@@ -672,4 +672,54 @@ describe Bumbleworks::Task do
|
|
672
672
|
}.to raise_error(Bumbleworks::Task::AvailabilityTimeout)
|
673
673
|
end
|
674
674
|
end
|
675
|
+
|
676
|
+
describe '#humanize' do
|
677
|
+
it "returns humanized version of task name when no entity" do
|
678
|
+
task = described_class.new(workflow_item)
|
679
|
+
task.humanize.should == 'Go to work'
|
680
|
+
end
|
681
|
+
|
682
|
+
it "returns humanized version of task name with entity" do
|
683
|
+
task = described_class.new(workflow_item)
|
684
|
+
task[:entity_id] = '45'
|
685
|
+
task[:entity_type] = 'RhubarbSandwich'
|
686
|
+
task.humanize.should == 'Go to work: Rhubarb sandwich 45'
|
687
|
+
end
|
688
|
+
|
689
|
+
it "returns humanized version of task name without entity if requested" do
|
690
|
+
task = described_class.new(workflow_item)
|
691
|
+
task[:entity_id] = '45'
|
692
|
+
task[:entity_type] = 'RhubarbSandwich'
|
693
|
+
task.humanize(:entity => false).should == 'Go to work'
|
694
|
+
end
|
695
|
+
end
|
696
|
+
|
697
|
+
describe '#to_s' do
|
698
|
+
it "is aliased to #titleize" do
|
699
|
+
task = described_class.new(workflow_item)
|
700
|
+
task.stub(:titleize).with(:the_args).and_return(:see_i_told_you_so)
|
701
|
+
task.to_s(:the_args).should == :see_i_told_you_so
|
702
|
+
end
|
703
|
+
end
|
704
|
+
|
705
|
+
describe '#titleize' do
|
706
|
+
it "returns titleized version of task name when no entity" do
|
707
|
+
task = described_class.new(workflow_item)
|
708
|
+
task.titleize.should == 'Go To Work'
|
709
|
+
end
|
710
|
+
|
711
|
+
it "returns titleized version of task name with entity" do
|
712
|
+
task = described_class.new(workflow_item)
|
713
|
+
task[:entity_id] = '45'
|
714
|
+
task[:entity_type] = 'RhubarbSandwich'
|
715
|
+
task.titleize.should == 'Go To Work: Rhubarb Sandwich 45'
|
716
|
+
end
|
717
|
+
|
718
|
+
it "returns titleized version of task name without entity if requested" do
|
719
|
+
task = described_class.new(workflow_item)
|
720
|
+
task[:entity_id] = '45'
|
721
|
+
task[:entity_type] = 'RhubarbSandwich'
|
722
|
+
task.titleize(:entity => false).should == 'Go To Work'
|
723
|
+
end
|
724
|
+
end
|
675
725
|
end
|
@@ -98,4 +98,26 @@ describe Bumbleworks::WorkitemEntityStorage do
|
|
98
98
|
feh.entity(:reload => true).identifier.should == '15'
|
99
99
|
end
|
100
100
|
end
|
101
|
+
|
102
|
+
describe "#entity_fields" do
|
103
|
+
it 'returns empty hash if no entity' do
|
104
|
+
feh = FakeEntityHolder.new
|
105
|
+
feh.entity_fields.should == {}
|
106
|
+
end
|
107
|
+
|
108
|
+
it 'returns class name and identifier by default' do
|
109
|
+
feh = FakeEntityHolder.new('entity_id' => '15', 'entity_type' => 'LovelyEntity')
|
110
|
+
feh.entity_fields.should == { :type => 'LovelyEntity', :identifier => '15' }
|
111
|
+
end
|
112
|
+
|
113
|
+
it 'humanizes class name when requested' do
|
114
|
+
feh = FakeEntityHolder.new('entity_id' => '15', 'entity_type' => 'LovelyEntity')
|
115
|
+
feh.entity_fields(:humanize => true).should == { :type => 'Lovely entity', :identifier => '15' }
|
116
|
+
end
|
117
|
+
|
118
|
+
it 'titleizes class name when requested' do
|
119
|
+
feh = FakeEntityHolder.new('entity_id' => '15', 'entity_type' => 'LovelyEntity')
|
120
|
+
feh.entity_fields(:titleize => true).should == { :type => 'Lovely Entity', :identifier => '15' }
|
121
|
+
end
|
122
|
+
end
|
101
123
|
end
|