class XcodeArchiveCache::BuildSettings::Parser

Constants

SETTING_ALL_CHARACTERS
SETTING_ENTRY_PART_CHARACTERS
SETTING_NAME_CHARACTERS
SETTING_NAME_GROUP
SETTING_VALUE_GROUP

Attributes

setting_entry_name_regex[R]

@return [Regexp]

setting_entry_part_regex[R]
setting_entry_regex[R]

@return [Regexp]

setting_name_regex[R]

@return [Regexp]

setting_value_regex[R]

@return [Regexp]

Public Class Methods

new() click to toggle source
# File lib/build_settings/parser.rb, line 17
def initialize
  @setting_name_regex = Regexp.new("^(?<#{SETTING_NAME_GROUP}>#{SETTING_NAME_CHARACTERS})\s=")
  @setting_value_regex = Regexp.new("^#{SETTING_NAME_CHARACTERS}\s=\s(?<#{SETTING_VALUE_GROUP}>.+)$")
  @setting_entry_regex = create_entry_regex
  @setting_entry_part_regex = Regexp.new("#{SETTING_ENTRY_PART_CHARACTERS}")
  @setting_entry_name_regex = Regexp.new(SETTING_NAME_CHARACTERS)
end

Public Instance Methods

create_entry_regex(characters = SETTING_ALL_CHARACTERS) click to toggle source

@param [String] characters

@return [Regexp]

# File lib/build_settings/parser.rb, line 69
def create_entry_regex(characters = SETTING_ALL_CHARACTERS)
  Regexp.new("\\$[({]#{characters}[)}]")
end
find_all_entries(string) click to toggle source

@param [String] string

@return [Array<String>]

# File lib/build_settings/parser.rb, line 29
def find_all_entries(string)
  return nil if string == nil

  string.scan(setting_entry_regex)
      .map {|entry| 
      parts = entry.scan(setting_entry_part_regex)
      name = parts.first
      modifiers = parts.drop(1)

      name != nil ? SettingEntry.new(name, modifiers, entry) : nil
    }
      .compact
end
parse_name(string) click to toggle source

@param [String] string

@return [String]

# File lib/build_settings/parser.rb, line 47
def parse_name(string)
  match = setting_name_regex.match(string)
  return nil unless match

  match[SETTING_NAME_GROUP]
end
parse_value(string) click to toggle source

@param [String] string

@return [String]

# File lib/build_settings/parser.rb, line 58
def parse_value(string)
  match = setting_value_regex.match(string)
  return nil unless match

  match[SETTING_VALUE_GROUP]
end