ad816182ff4be9c58f62ff53819c26579862cfab
[erd-marker.git] / lib / erd_handler / label.rb
1 class Label
2
3 attr_reader :original, :processed
4
5 def initialize(original)
6 @original = original
7 @processed = [original]
8 end
9
10 def split(opts = {})
11 if opts.class == Regexp
12 regexp = opts
13 split_camel_case = true
14 else
15 regexp = opts[:regexp] || /[ _,.-]+/
16 if opts.has_key? :camel_case
17 split_camel_case = opts[:camel_case]
18 else
19 split_camel_case = true
20 end
21 end
22 @processed = @processed.map do |segment|
23 segment.split(regexp)
24 end.flatten
25
26 if split_camel_case
27 @processed = @processed.map do |segment|
28 segment.split(/(?=[A-Z])/)
29 end.flatten
30 end
31 self
32 end
33
34 def downcase
35 @processed = @processed.map do |segment| segment.downcase end
36 self
37 end
38
39 def stem(gb_english = false)
40 @processed = @processed.map do |segment| segment.stem(gb_english) end
41 self
42 end
43
44 def tidy
45 self.split.downcase.stem
46 end
47 end