Module: Objc2swiftAssistant

Defined in:
lib/objc2swift_assistant/processing_element.rb,
lib/assistant.rb,
lib/objc2swift_assistant/version.rb,
lib/objc2swift_assistant/file_sets.rb,
lib/objc2swift_assistant/objc_2_swift.rb,
lib/objc2swift_assistant/code_recognizer.rb,
lib/objc2swift_assistant/objc_variable_types.rb,
lib/objc2swift_assistant/file_hierarchical_config.rb,
lib/objc2swift_assistant/objc_2_swift_type_mapping.rb,
lib/objc2swift_assistant/objc_2_swift_configuration.rb,
lib/objc2swift_assistant/recognizers/recognizer_keys.rb,
lib/objc2swift_assistant/objc_2_swift_block_conversion.rb,
lib/objc2swift_assistant/recognizers/method_recognizer.rb,
lib/objc2swift_assistant/recognizers/category_recognizer.rb,
lib/objc2swift_assistant/recognizers/protocol_recognizer.rb,
lib/objc2swift_assistant/recognizers/interface_recognizer.rb,
lib/objc2swift_assistant/recognizers/pragma_mark_recognizer.rb,
lib/objc2swift_assistant/recognizers/implementation_recognizer.rb,
lib/objc2swift_assistant/recognizers/at_sign_directives_recognizer.rb,
lib/objc2swift_assistant/recognizers/property_declaration_recognizer.rb

Overview

require_relative ‘file_sets’ require_relative ‘recognizers/recognizer_keys’ require_relative ‘objc_2_swift_type_mapping’ require_relative ‘objc_2_swift_block_conversion’

Defined Under Namespace

Classes: AbstractCategoryRegion, Assistant, AtDirectiveRecognizer, AtDirectiveRegion, CategoryDeclarationRecognizer, CategoryDeclarationRegion, CategoryImplRecognizer, CategoryImplementationRegion, ClassInterfaceRegion, ClassRootRegion, CodeRecognizer, DirectoryNode, FailableProcessingElement, FileHierarchicalConfig, FileHierarchicalConfigNode, FileSet, GeneratedSwiftFileNode, GeneratedSwiftFileSet, ImplementationRecognizer, ImplementationRegion, InterfaceRecognizer, MethodRecognizer, MethodRegion, MigrationRegion, ObjC2SwiftCategoryConverter, ObjC2SwiftClassConverter, ObjC2SwiftClassLikeConverter, ObjC2SwiftCodeConverter, ObjC2SwiftConfigNode, ObjC2SwiftConfiguration, ObjC2SwiftEnumConverter, ObjC2SwiftFileConverter, ObjC2SwiftMethodConverter, ObjC2SwiftPropertyConverter, ObjC2SwiftProtocolConverter, ObjCAbstractParameter, ObjCBlockParameter, ObjCDirectoryNode, ObjCFileNode, ObjCFileSet, ObjCMethodParameter, ObjCProperty, ObjCReturnType, Objc2SwiftBlockConverter, Objc2SwiftBlockSignature, Objc2SwiftTypeMapper, Objc2SwiftTypeMapping, PragmaMarkRecognizer, PragmaMarkRegion, ProcessedSourceFile, PropertyDeclarationRecognizer, PropertyDeclarationRegion, ProtocolRecognizer, ProtocolRegion, ScannedFileSet, SourceFileNode

Constant Summary collapse

VERSION =
"0.3.2"
SUBDIR_KEY =
'subdirs'
PATH_KEY =
'path'
LOG_LEVEL_NONE =
0
LOG_LEVEL_ERRORS =
1
LOG_LEVEL_WARNINGS =
2
LOG_LEVEL_VERBOSE =
3
LOG_LEVEL_DEBUG =
4
LOG_LEVELS_BY_NAME =
{
    "error" => LOG_LEVEL_ERRORS,
    "warning" => LOG_LEVEL_WARNINGS ,
    "verbose" => LOG_LEVEL_VERBOSE ,
    "debug" => LOG_LEVEL_DEBUG,
    "none" => LOG_LEVEL_NONE
}
COMPANY_NAME_KEY =
'company_name'
OMIT_FILE_KEY =
'omit_file'
EMIT_ORIGINAL_SIGNATURES_KEY =
'emit_original_signatures'
EMIT_ORIGINAL_BODIES_KEY =
'emit_original_bodies'
EMIT_UNCONVERTED_CONTENT_KEY =
'emit_unconverted_content'
ALL_CONFIG_KEYS =
[
    COMPANY_NAME_KEY,
    OMIT_FILE_KEY,
    EMIT_ORIGINAL_SIGNATURES_KEY,
    EMIT_ORIGINAL_BODIES_KEY,
    EMIT_UNCONVERTED_CONTENT_KEY
]
CLASS_INTERFACE_KEY =
:class_interface
CLASS_IMPLEMENTATION_KEY =
:class_implementation
ENUM_DECLARATION_KEY =
:enum_declaration
PROPERTY_DECLARATION_KEY =
:property_declaration
CAT_EXT_DECLARARATION_KEY =
:category_or_extension_declaration
EXTENSION_DECLARARATION_KEY =
:extension_declaration
CATEGORY_DECLARARATION_KEY =
:category_declaration
CATEGORY_IMPLEMENTATION_KEY =
:category_implementation
PROTOCOL_DECLARATION_KEY =
:protocol_declaration
PRAGMA_MARK_KEY =
:pragma_mark
AT_DIRECTIVE_KEY =
:at_directive
METHOD_INDETERMINATE_KEY =
:method_declatation_or_implementation
METHOD_DECLARATION_KEY =
:method_declaration
METHOD_IMPLEMENTATION_KEY =
:method_implementation
CATEGORY_DECLARATION_REGEX =
/^\s*(@interface)\s*(?<class_name>\w*)\s*\((?<category_name>\w*)\)/
CATEGORY_IMPLEMENTATION_REGEX =
/^\s*(@implementation)\s*(?<class_name>\w*)\s*\((?<category_name>\w*)\)/
PRAGMA_MARK_REGEX =
/^\s*((#pragma mark)|(\/\/\s*MARK\s*\:))(?<mark_text>.*)/
DIRECTIVE_REGEX =
/^\s*@(?<directive>((required)|(optional)|(public)|(private)|(protected)))/
@@type_mapping =
Objc2SwiftTypeMapper.new()

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.cleanup_method_body_lines(file_lines) ⇒ Object



11
12
13
14
15
16
17
18
19
20
# File 'lib/objc2swift_assistant/objc_2_swift.rb', line 11

def cleanup_method_body_lines( file_lines )
  cleaned_up = []
  file_lines.each do |line|
    no_trailing = line.rstrip
    next if no_trailing.strip == '@end'
    cleaned_up << no_trailing if no_trailing.length > 0
  end

  cleaned_up
end

.de_comment_line(line) ⇒ Object



6
7
8
9
10
11
12
13
14
# File 'lib/objc2swift_assistant/code_recognizer.rb', line 6

def de_comment_line( line )
  new_line = line
  m = line.match( /^(?<uncommented>.*)\/\/(?<comment>.*)/ )
  unless m.nil?
    new_line = m[ 'uncommented' ].strip
  end

  return new_line
end

.de_comment_lines(lines) ⇒ Object



17
18
19
20
21
22
# File 'lib/objc2swift_assistant/code_recognizer.rb', line 17

def de_comment_lines( lines )
  # Line Comments
  return lines.map do |line|
    Objc2swiftAssistant::de_comment_line( line )
  end
end

.is_getter_method_name(property_name, method_name) ⇒ Object



25
26
27
28
# File 'lib/objc2swift_assistant/code_recognizer.rb', line 25

def is_getter_method_name( property_name, method_name )
  #TODO: add boolean rules
  return property_name == method_name
end

.is_setter_method_name(property_name, method_name) ⇒ Object



32
33
34
35
# File 'lib/objc2swift_assistant/code_recognizer.rb', line 32

def is_setter_method_name( property_name, method_name )
  setter_name = "set" + property_name[0, 1].upcase + property_name[1..-1]
  return method_name == setter_name
end

.prepare_class_header_lines(file_lines) ⇒ Object



23
24
25
26
27
28
29
30
31
# File 'lib/objc2swift_assistant/objc_2_swift.rb', line 23

def prepare_class_header_lines( file_lines )
  cleaned_up = []
  file_lines.each do |line|
    no_trailing = line.rstrip
    cleaned_up << '// ' + no_trailing if no_trailing.length > 0
  end

  cleaned_up
end

.prepare_method_body_lines(lines) ⇒ Object



34
35
36
37
38
39
40
41
# File 'lib/objc2swift_assistant/objc_2_swift.rb', line 34

def prepare_method_body_lines( lines )
  raw_body_lines = cleanup_method_body_lines( lines )
  body_lines = raw_body_lines.map do |line|
    '// ' + line
  end

  body_lines
end

Instance Method Details

#descriptionObject



32
33
34
35
36
37
38
# File 'lib/objc2swift_assistant/recognizers/pragma_mark_recognizer.rb', line 32

def description()
  if @is_block_property
    return generic_description( "Block Property: prop_name=#{@prop_name} block_return_type=#{@block_return_type} block_args=#{@block_args}" )
  else
    return generic_description( "type_name=#{@type_name} is_pointer=#{@is_pointer} prop_name=#{@prop_name}" )
  end
end