Class: I18nContextGenerator::Searcher
- Inherits:
-
Object
- Object
- I18nContextGenerator::Searcher
- Includes:
- CommentMasking, MatchFiltering, SourceDiscovery
- Defined in:
- lib/i18n_context_generator/searcher.rb,
lib/i18n_context_generator/searcher/comment_masking.rb,
lib/i18n_context_generator/searcher/match_filtering.rb,
lib/i18n_context_generator/searcher/source_discovery.rb
Overview
Finds where translation keys are used in iOS and Android source code.
Defined Under Namespace
Modules: CommentMasking, MatchFiltering, SourceDiscovery Classes: DiscoveredLocalization, Match
Constant Summary collapse
- IOS_TYPE_DECLARATION_PATTERN =
/\b(class|struct|enum|extension)\s+(\w+)/
Constants included from SourceDiscovery
SourceDiscovery::IOS_COMMENT_ARGUMENT_PATTERN
Instance Method Summary collapse
-
#initialize(source_paths:, ignore_patterns:, context_lines: 15, platform: nil, swift_functions: nil) ⇒ Searcher
constructor
A new instance of Searcher.
- #search(key, resource_type: nil) ⇒ Object
Methods included from SourceDiscovery
#discover_localization_entries
Constructor Details
#initialize(source_paths:, ignore_patterns:, context_lines: 15, platform: nil, swift_functions: nil) ⇒ Searcher
Returns a new instance of Searcher.
39 40 41 42 43 44 45 46 47 48 49 50 51 |
# File 'lib/i18n_context_generator/searcher.rb', line 39 def initialize(source_paths:, ignore_patterns:, context_lines: 15, platform: nil, swift_functions: nil) @source_paths = source_paths @path_policy = PathPolicy.new(ignore_patterns: ignore_patterns, roots: source_paths) @context_lines = context_lines @platform = platform || detect_platform @localization_syntax = LocalizationSyntax.new(swift_functions: swift_functions) # Cache discovered files for repeated searches @files_cache = nil @files_cache_mutex = Mutex.new @file_lines_cache = Concurrent::Map.new @searchable_file_lines_cache = Concurrent::Map.new end |
Instance Method Details
#search(key, resource_type: nil) ⇒ Object
53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 |
# File 'lib/i18n_context_generator/searcher.rb', line 53 def search(key, resource_type: nil) patterns = build_search_patterns(key, resource_type: resource_type) files = discover_files direct_matches = [] files.each do |file| matches = search_file(file, patterns, key) direct_matches.concat(matches) end all_matches = if @platform == :ios search_ios_wrapper_usages(direct_matches, files) + direct_matches else direct_matches end filter_matches(all_matches, key) end |