Class: RubyLsp::Ree::YamlFileParser
- Inherits:
-
Object
- Object
- RubyLsp::Ree::YamlFileParser
- Defined in:
- lib/ruby_lsp/ruby_lsp_ree/utils/yaml_file_parser.rb
Class Method Summary collapse
- .deep_transform_keys_in_object!(object, &block) ⇒ Object
- .find_key_in_node(current_node, key) ⇒ Object
- .normalize_hash_keys(res) ⇒ Object
- .parse(file_path) ⇒ Object
- .parse_with_key_coordinates(file_path) ⇒ Object
Class Method Details
.deep_transform_keys_in_object!(object, &block) ⇒ Object
37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
# File 'lib/ruby_lsp/ruby_lsp_ree/utils/yaml_file_parser.rb', line 37 def self.deep_transform_keys_in_object!(object, &block) case object when Hash object.keys.each do |key| value = object.delete(key) object[yield(key)] = deep_transform_keys_in_object!(value, &block) end object when Array object.map! { |e| deep_transform_keys_in_object!(e, &block) } else object end end |
.find_key_in_node(current_node, key) ⇒ Object
27 28 29 30 31 |
# File 'lib/ruby_lsp/ruby_lsp_ree/utils/yaml_file_parser.rb', line 27 def self.find_key_in_node(current_node, key) matched_key_el = current_node.detect{ _1[0].value == key } return [nil, nil] unless matched_key_el matched_key_el end |
.normalize_hash_keys(res) ⇒ Object
33 34 35 |
# File 'lib/ruby_lsp/ruby_lsp_ree/utils/yaml_file_parser.rb', line 33 def self.normalize_hash_keys(res) deep_transform_keys_in_object!(res){ |k| k.value } end |
.parse(file_path) ⇒ Object
12 13 14 15 16 17 18 |
# File 'lib/ruby_lsp/ruby_lsp_ree/utils/yaml_file_parser.rb', line 12 def self.parse(file_path) parser = Psych::Parser.new(Psych::TreeBuilder.new) parser.parse(File.read(file_path, encoding: 'utf-8')) parse_result = NodeVisitor.create.accept(parser.handler.root) normalize_hash_keys(parse_result.first) end |
.parse_with_key_coordinates(file_path) ⇒ Object
20 21 22 23 24 25 |
# File 'lib/ruby_lsp/ruby_lsp_ree/utils/yaml_file_parser.rb', line 20 def self.parse_with_key_coordinates(file_path) parser = Psych::Parser.new(Psych::TreeBuilder.new) parser.parse(File.read(file_path, encoding: 'utf-8')) NodeVisitor.create.accept(parser.handler.root).first end |