Skip to content

Commit f93ec99

Browse files
committed
Add config_file
1 parent 4c012e5 commit f93ec99

File tree

7 files changed

+18
-8
lines changed

7 files changed

+18
-8
lines changed

lib/ruby_header_parser/config.rb

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,9 @@ class Config
77
# @return [Hash]
88
attr_reader :data
99

10-
def initialize
11-
yaml = File.read(File.join(__dir__.to_s, "..", "..", "config", "default.yml"))
10+
# @param config_file [String]
11+
def initialize(config_file)
12+
yaml = File.read(config_file)
1213
@data = YAML.safe_load(yaml, aliases: true, permitted_classes: [Regexp])
1314
end
1415

lib/ruby_header_parser/parser.rb

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,15 +30,18 @@ class Parser # rubocop:disable Metrics/ClassLength
3030
# @param include_paths [Array<String>]
3131
# @param dist_preprocessed_header_file [String,nil] Destination path to the output of preprocessed ruby.h.
3232
# (default: `"#{Dir.tmpdir}/ruby_preprocessed.h"`)
33+
# @param config_file [String,nil] Path to config file (default: `config/default.yml`)
3334
#
3435
# @note `dist_preprocessed_header_file` is used as the output destination for temporary files when the parser
3536
# is executed
3637
def initialize(dist_preprocessed_header_file: nil, header_file: DEFAULT_HEADER_FILE,
37-
include_paths: DEFAULT_INCLUDE_PATHS)
38+
include_paths: DEFAULT_INCLUDE_PATHS, config_file: nil)
3839
@header_file = header_file
3940
@include_paths = include_paths
4041
@dist_preprocessed_header_file = dist_preprocessed_header_file || File.join(Dir.tmpdir, "ruby_preprocessed.h")
41-
@config = Config.new
42+
43+
config_file ||= File.expand_path("../../config/default.yml", __dir__.to_s)
44+
@config = Config.new(config_file)
4245
end
4346

4447
# @return [Array<RubyHeaderParser::FunctionDefinition>]

sig/ruby_header_parser/config.rbs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ module RubyHeaderParser
22
class Config
33
attr_reader data: Hash[untyped, untyped]
44

5-
def initialize: () -> void
5+
def initialize: (String config_file) -> void
66

77
def function_arg_pointer_hint: (function_name: String, pos: Integer) -> (:ref | :array | :ref_array | :function | :sref | :str_array | :in_ref)
88

sig/ruby_header_parser/parser.rbs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,8 @@ module RubyHeaderParser
1111
def initialize: (
1212
?dist_preprocessed_header_file: String?,
1313
?header_file: String,
14-
?include_paths: Array[String]
14+
?include_paths: Array[String],
15+
?config_file: String?
1516
) -> void
1617

1718
def extract_function_definitions: () -> Array[FunctionDefinition]

spec/ruby_header_parser/config_spec.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# frozen_string_literal: true
22

33
RSpec.describe RubyHeaderParser::Config do
4-
let(:config) { RubyHeaderParser::Config.new }
4+
let(:config) { RubyHeaderParser::Config.new(default_config_file) }
55

66
describe "#function_arg_pointer_hint" do
77
subject { config.function_arg_pointer_hint(function_name:, pos:) }

spec/ruby_header_parser/parser_spec.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
RSpec.describe RubyHeaderParser::Parser do
44
include_context "uses temp dir"
55

6-
let(:parser) { RubyHeaderParser::Parser.new(dist_preprocessed_header_file:) }
6+
let(:parser) { RubyHeaderParser::Parser.new(dist_preprocessed_header_file:, config_file: default_config_file) }
77
let(:dist_preprocessed_header_file) { File.join(temp_dir, "ruby_preprocessed.h") }
88

99
describe "#extract_function_definitions" do

spec/spec_helper.rb

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,3 +26,8 @@
2626
meta[:aggregate_failures] = true
2727
end
2828
end
29+
30+
# @return [String]
31+
def default_config_file
32+
File.expand_path("../config/default.yml", __dir__)
33+
end

0 commit comments

Comments
 (0)