Module: Kril::SchemaExtractor
- Defined in:
- lib/kril/schema_extractor.rb
Overview
Extracts schemas from avro generated java files.
Class Method Summary collapse
- .dejavafy(java_string) ⇒ Object
-
.extract(source_dir:, output_dir:) ⇒ Object
Parse schemas from avro generated java files and load them into the schema repository.
- .find_java_files(root_dir) ⇒ Object
- .parse_avro_java_class(file) ⇒ Object
Class Method Details
.dejavafy(java_string) ⇒ Object
33 34 35 |
# File 'lib/kril/schema_extractor.rb', line 33 def dejavafy(java_string) java_string.split('","').join.gsub(/\\?\\"/, '"') end |
.extract(source_dir:, output_dir:) ⇒ Object
Parse schemas from avro generated java files and load them into the schema repository.
source_dir - root directory of java files [String] output_dir - schema repository [String] returns - [nil]
12 13 14 15 16 17 18 |
# File 'lib/kril/schema_extractor.rb', line 12 def self.extract(source_dir:, output_dir:) find_java_files(source_dir) do |file| schema = parse_avro_java_class(file) SchemaHandler.new(schemas_path: output_dir).process(schema) end nil end |
.find_java_files(root_dir) ⇒ Object
22 23 24 25 26 27 28 29 30 31 |
# File 'lib/kril/schema_extractor.rb', line 22 def find_java_files(root_dir) old_dir = Dir.pwd Dir.chdir(root_dir) java_files = File.join('**', '*.java') Dir.glob(java_files) do |file| yield File.new(file) end ensure Dir.chdir(old_dir) end |
.parse_avro_java_class(file) ⇒ Object
37 38 39 40 41 42 43 |
# File 'lib/kril/schema_extractor.rb', line 37 def parse_avro_java_class(file) result = file.each_line do |line| extraction = line[/SCHEMA.*parse\("(.*)"\);/, 1] break dejavafy(extraction) if extraction end result.is_a?(File) ? nil : result end |