Class: EmployMe::Parser::Title::Strategies::PatternMatch

Inherits:
Object
  • Object
show all
Defined in:
lib/employ_me/parser/title/strategies/pattern_match.rb

Class Method Summary collapse

Class Method Details

.perform(root_node) ⇒ Object

Return [title, seniority]



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
# File 'lib/employ_me/parser/title/strategies/pattern_match.rb', line 7

def self.perform(root_node)
  tree = [root_node]

  # Depth First Search
  while tree.size > 0
    curr_node = tree.shift

    if curr_node.children.all? { |child| child.name == "comment" || child.name == 'text' }
      curr_node_text = curr_node.text

      # Title: Principal Machine Learning Engineer
      regex = Regexp.new('Principal Machine Learning Engineer', Regexp::IGNORECASE)
      result = regex.match(curr_node_text)

      if result
        return ['Principal Machine Learning Engineer', 'staff']
      end

      # Title: Staff Data Engineer
      regex = Regexp.new('Staff Data Engineer', Regexp::IGNORECASE)
      result = regex.match(curr_node_text)

      if result
        return ['Staff Data Engineer', 'staff']
      end

      # Title: Staff iOS Engineer
      regex = Regexp.new('Staff iOS Engineer', Regexp::IGNORECASE)
      result = regex.match(curr_node_text)

      if result
        return ['Staff iOS Engineer', 'staff']
      end

      # Title: Staff Software Engineer
      regex = Regexp.new('Staff Software Engineer', Regexp::IGNORECASE)
      result = regex.match(curr_node_text)

      if result
        return ['Staff Software Engineer', 'staff']
      end

      # Title: Senior Data Engineer
      regex = Regexp.new('Senior Data Engineer', Regexp::IGNORECASE)
      result = regex.match(curr_node_text)

      if result
        return ['Senior Data Engineer', 'senior']
      end

      # Title: Senior Frontend Engineer
      regex = Regexp.new('Senior Frontend Engineer', Regexp::IGNORECASE)
      result = regex.match(curr_node_text)

      if result
        return ['Senior Frontend Engineer', 'senior']
      end

      # Title: Senior Full Stack Engineer
      regex = Regexp.new('Senior Full Stack Engineer', Regexp::IGNORECASE)
      result = regex.match(curr_node_text)

      if result
        return ['Senior Full Stack Engineer', 'senior']
      end

      # Title: Senior iOS Engineer
      regex = Regexp.new('Senior iOS Engineer', Regexp::IGNORECASE)
      result = regex.match(curr_node_text)

      if result
        return ['Senior iOS Engineer', 'senior']
      end

      # Title: Senior Machine Learning Engineer
      regex = Regexp.new('Senior Machine Learning Engineer', Regexp::IGNORECASE)
      result = regex.match(curr_node_text)

      if result
        return ['Senior Machine Learning Engineer', 'senior']
      end

      # Title: Senior Security Engineer
      regex = Regexp.new('Senior Security Engineer', Regexp::IGNORECASE)
      result = regex.match(curr_node_text)

      if result
        return ['Senior Security Engineer', 'senior']
      end

      # Title: Senior Site Reliability Engineer
      regex = Regexp.new('Senior Site Reliability Engineer', Regexp::IGNORECASE)
      result = regex.match(curr_node_text)

      if result
        return ['Senior Site Reliability Engineer', 'senior']
      end

      # Title: Senior Software Engineer
      regex = Regexp.new('Senior Software Engineer', Regexp::IGNORECASE)
      result = regex.match(curr_node_text)

      if result
        return ['Senior Software Engineer', 'senior']
      end

      # Title: Front-End Software Engineer
      regex = Regexp.new('Front-End Software Engineer', Regexp::IGNORECASE)
      result = regex.match(curr_node_text)

      if result
        return ['Front-End Software Engineer', 'midlevel']
      end

      # Title: Software Engineer
      regex = Regexp.new('Software Engineer', Regexp::IGNORECASE)
      result = regex.match(curr_node_text)

      if result
        return ['Software Engineer', 'midlevel']
      end
    end

    tree.concat(curr_node.children)
  end

  nil
end