Sha256: 63ac155e935f621c4ff1d6c95945ea053c903a447fd913ac3ae65277a191ffe8

Contents?: true

Size: 997 Bytes

Versions: 9

Compression:

Stored size: 997 Bytes

Contents

module Symbols
  def symbols_from_library(library)
    syms = `nm -g #{library}`.split("\n")

    result = classes_from_symbols(syms)
    result + constants_from_symbols(syms)
  end

  module_function :symbols_from_library

  :private

  def classes_from_symbols(syms)
    classes = syms.select { |klass| klass[/OBJC_CLASS_\$_/] }
    classes = classes.select { |klass| klass !~ /_NS|_UI/ }
    classes = classes.uniq
    classes.map! { |klass| klass.gsub(/^.*\$_/, '') }
  end

  def constants_from_symbols(syms)
    consts = syms.select { |const| const[/ S /] }
    consts = consts.select { |const| const !~ /OBJC|\.eh/ }
    consts = consts.uniq
    consts = consts.map! { |const| const.gsub(/^.* _/, '') }

    other_consts = syms.select { |const| const[/ T /] }
    other_consts = other_consts.uniq
    other_consts = other_consts.map! { |const| const.gsub(/^.* _/, '') }

    consts + other_consts
  end

  module_function :classes_from_symbols
  module_function :constants_from_symbols
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
cocoapods-packager-1.1.0 lib/cocoapods-packager/symbols.rb
cocoapods-packager-1.0.2 lib/cocoapods-packager/symbols.rb
cocoapods-packager-1.0.1 lib/cocoapods-packager/symbols.rb
cocoapods-packager-1.0.0 lib/cocoapods-packager/symbols.rb
cocoapods-packager-0.9.0 lib/cocoapods-packager/symbols.rb
cocoapods-packager-0.5.0 lib/cocoapods-packager/symbols.rb
cocoapods-packager-0.4.0 lib/symbols.rb
cocoapods-packager-0.3.0 lib/symbols.rb
cocoapods-packager-0.2.0 lib/symbols.rb