Class: EmployMe::Parser::Title::Strategies::PatternMatch
- Inherits:
-
Object
- Object
- EmployMe::Parser::Title::Strategies::PatternMatch
- Defined in:
- lib/employ_me/parser/title/strategies/pattern_match.rb
Class Method Summary collapse
-
.perform(root_node) ⇒ Object
Return [title, seniority].
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 |