Methods
- #
- A
- C
- D
- E
- G
- I
- N
- P
- S
- T
- U
- V
Included Modules
Constants
QUOTE_REGEXP_SQ | = | /\A([^'\\]*(?:\\.[^'\\]*)*)'/ |
escape with backslash |
||
QUOTE_REGEXP_DQ | = | /\A([^"\\]*(?:""[^"\\]*|\\.[^"\\]*)*)"/ |
escape with backslash and doubled dq |
||
ESCAPE_MAP | = | { "r" => "\r", "n" => "\n", "b" => "\b", "t" => "\t", } |
escaped char map |
||
DEFAULT_CONFIG_FILE | = | rb_str_new2(default_config_file) |
Class Public methods
new(filename = nil)
Link
Instance Public methods
[](section)
Link
[]=(section, pairs)
Link
add_value(section, key, value)
Link
each()
Link
get_value(section, key)
Link
inspect()
Link
parse(str)
Link
parse_config(io)
Link
section(name)
Link
sections()
Link
to_s()
Link
value(arg1, arg2 = nil)
Link
# File ../ruby/ext/openssl/lib/openssl/config.rb, line 231 def value(arg1, arg2 = nil) warn('Config#value is deprecated; use Config#get_value') if arg2.nil? section, key = 'default', arg1 else section, key = arg1, arg2 end section ||= 'default' section = 'default' if section.empty? get_key_string(section, key) end
Instance Protected methods
data()
Link
Instance Private methods
check_modify()
Link
clear_comments(line)
Link
# File ../ruby/ext/openssl/lib/openssl/config.rb, line 155 def clear_comments(line) # FCOMMENT if m = line.match(/\A([\t\n\f ]*);.*\z/) return m[1] end # COMMENT scanned = [] while m = line.match(/[#'"\]/) scanned << m.pre_match c = m[0] line = m.post_match case c when '#' line = nil break when "'", '"' regexp = (c == "'") ? QUOTE_REGEXP_SQ : QUOTE_REGEXP_DQ scanned << c if m = line.match(regexp) scanned << m[0] line = m.post_match else scanned << line line = nil break end when "\\" scanned << c scanned << line.slice!(0, 1) else raise 'must not reaced' end end scanned << line scanned.join end
extract_reference(value)
Link
# File ../ruby/ext/openssl/lib/openssl/config.rb, line 140 def extract_reference(value) rest = '' if m = value.match(/\(([^)]*)\)|\{([^}]*)\}/) value = m[1] || m[2] rest = m.post_match elsif [?(, ?{].include?(value[0]) raise ConfigError, "no close brace" end if m = value.match(/[a-zA-Z0-9_]*(?:::[a-zA-Z0-9_]*)?/) return m[0], m.post_match + rest else raise end end
get_definition(io)
Link
get_key_string(section, key)
Link
get_line(io)
Link
initialize_copy(other)
Link
parse_config_lines(io)
Link
# File ../ruby/ext/openssl/lib/openssl/config.rb, line 54 def parse_config_lines(io) section = 'default' data = {section => {}} while definition = get_definition(io) definition = clear_comments(definition) next if definition.empty? if definition[0] == ?[ if /\[([^\]]*)\]/ =~ definition section = $1.strip data[section] ||= {} else raise ConfigError, "missing close square bracket" end else if /\A([^:\s]*)(?:::([^:\s]*))?\s*=(.*)\z/ =~ definition if $2 section = $1 key = $2 else key = $1 end value = unescape_value(data, section, $3) (data[section] ||= {})[key] = value.strip else raise ConfigError, "missing equal sign" end end end data end
unescape_value(data, section, value)
Link
# File ../ruby/ext/openssl/lib/openssl/config.rb, line 97 def unescape_value(data, section, value) scanned = [] while m = value.match(/['"\$]/) scanned << m.pre_match c = m[0] value = m.post_match case c when "'" if m = value.match(QUOTE_REGEXP_SQ) scanned << m[1].gsub(/\(.)/, '\1') value = m.post_match else break end when '"' if m = value.match(QUOTE_REGEXP_DQ) scanned << m[1].gsub(/""/, '').gsub(/\(.)/, '\1') value = m.post_match else break end when "\\" c = value.slice!(0, 1) scanned << (ESCAPE_MAP[c] || c) when "$" ref, value = extract_reference(value) refsec = section if ref.index('::') refsec, ref = ref.split('::', 2) end if v = get_key_string(data, refsec, ref) scanned << v else raise ConfigError, "variable has no value" end else raise 'must not reaced' end end scanned << value scanned.join end