cocoapods-scancode 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 1d426792416ef88663bea134490c0fa6bf73e821439c68556ba68425889f5c53
4
+ data.tar.gz: 9e79580b6967aaea6ef4268dc957473af890482caae229f9fbbdd7d2e7b6543d
5
+ SHA512:
6
+ metadata.gz: 1f3e65773cc1d2d90fbdc2025e0d58862487b21bc9ae339b0a64ea23f7864b34c2d87aeb0bc3e09a2d6806ff1e747e38c2d8b74ed77725bb6fe003850047b596
7
+ data.tar.gz: a7b0429376e11884f353c6606ffebd54e4293fa1d21f2ec476bd17ca200b44313df6ac42508e015c4a90d494bd2c3a224d4c1e39418c9cebb1f27ec291d8a08a
@@ -0,0 +1,38 @@
1
+ require 'cocoapods-scancode/trig'
2
+
3
+ module Pod
4
+ class Command
5
+ # This is an example of a cocoapods plugin adding a top-level subcommand
6
+ # to the 'pod' command.
7
+ #
8
+ # You can also create subcommands of existing or new commands. Say you
9
+ # wanted to add a subcommand to `list` to show newly deprecated pods,
10
+ # (e.g. `pod list deprecated`), there are a few things that would need
11
+ # to change.
12
+ #
13
+ # - move this file to `lib/pod/command/list/deprecated.rb` and update
14
+ # the class to exist in the the Pod::Command::List namespace
15
+ # - change this class to extend from `List` instead of `Command`. This
16
+ # tells the plugin system that it is a subcommand of `list`.
17
+ # - edit `lib/cocoapods_plugins.rb` to require this file
18
+ #
19
+ # @todo Create a PR to add your plugin to CocoaPods/cocoapods.org
20
+ # in the `plugins.json` file, once your plugin is released.
21
+ #
22
+ class Scancode < Command
23
+ self.summary = 'scanc undefine key in code'
24
+
25
+ self.description = <<-DESC
26
+ help user scanc undefine key in code
27
+ DESC
28
+
29
+ self.arguments = []
30
+
31
+
32
+ def run
33
+ # UI.puts "Add your implementation for the cocoapods-scancode plugin in #{__FILE__}"
34
+ LocalizedScan.pipLine
35
+ end
36
+ end
37
+ end
38
+ end
@@ -0,0 +1 @@
1
+ require 'cocoapods-scancode/command/scancode'
@@ -0,0 +1,3 @@
1
+ module CocoapodsScancode
2
+ VERSION = "0.0.1"
3
+ end
@@ -0,0 +1,226 @@
1
+
2
+ # require 'file'
3
+ # $LOAD_PATH << '.'
4
+ require 'fileutils'
5
+ require 'find'
6
+ # -*- coding: UTF-8 -*-
7
+
8
+ class UnDefineKeyItem
9
+ def initialize(key,path)
10
+ @key = key
11
+ @filePath = path
12
+ end
13
+
14
+ def printKey
15
+ @key
16
+ end
17
+
18
+ def printFilePath
19
+ @filePath
20
+ end
21
+
22
+ def to_s
23
+ keystring = @key.decoder('utf-8')
24
+ "未定义key:#{keystring},filePath:#{@filePath}" # 对象的字符串格式
25
+ end
26
+ end
27
+
28
+ class LanguageModel
29
+
30
+ def initialize
31
+ @key = ''
32
+ @map = {"key"=>"key"}
33
+ end
34
+
35
+ def setKey(key)
36
+ @key = key
37
+ end
38
+
39
+ def setLanguageValue(newKey,value)
40
+ @map.store(newKey,value)
41
+ end
42
+
43
+ def to_s
44
+ "(key:#{@key},map:#{@map})" # 对象的字符串格式
45
+ end
46
+ end
47
+
48
+ class LocalizedScan
49
+ @@defineKeyDic = Hash.new
50
+ @@undefineKeyDic = Hash.new
51
+ #把资源包中的key都load进内存
52
+
53
+ def initialize
54
+
55
+ end
56
+
57
+ def self.loadBundleKey
58
+ bundPath = nil
59
+ #查找bundle路径
60
+ Find.find("./") do |filePath|
61
+ if filePath.end_with?("LMFramework.bundle")
62
+ bundPath = filePath
63
+ break
64
+ end
65
+ end
66
+ puts bundPath
67
+ Find.find(bundPath) do |filePath|
68
+ if filePath.end_with?("Localizable.strings")
69
+ self.findKey(filePath)
70
+ end
71
+ end
72
+ end
73
+
74
+ #提取出key
75
+ def self.findKey(filePath)
76
+ if File.exist?(filePath) == false
77
+ puts "#{filePath} 不存在-"
78
+ return
79
+ end
80
+ str = filePath.split('/')[-2]
81
+ lang = str.split('.')[0]
82
+ # puts "lang:#{lang}"
83
+ block = ""
84
+ File.open(filePath,"r").each_line{|line|
85
+ block += line
86
+ if line.end_with?("\";\n") and line.end_with?("\\\";\n") == false
87
+ left = block.index('"')
88
+ right = block.index('"',left+1)
89
+ key = block[left+1...right]
90
+ left = block.index('"',right+1)
91
+ right = block.rindex('"')
92
+ value = block[left+1...right]
93
+ if @@defineKeyDic[key] == nil
94
+ model = LanguageModel.new
95
+ model.setKey key
96
+ @@defineKeyDic[key] = model
97
+ else
98
+ # puts lang,value
99
+ model = @@defineKeyDic[key]
100
+ model.setLanguageValue(lang,value)
101
+ end
102
+ block = ""
103
+ end
104
+ }
105
+ end
106
+
107
+ def self.scan
108
+
109
+ Find.find ("./") do |fileName|
110
+ # puts fileName
111
+ if fileName.end_with?".m"
112
+ self.scanKeyInOcCode(fileName)
113
+ elsif fileName.end_with?".swift"
114
+ self.scanKeyInSwiftCode(fileName)
115
+ end
116
+ end
117
+ end
118
+
119
+ def self.scanKeyInOcCode(path)
120
+
121
+ file = File.open(path,"r:utf-8") do |file|
122
+ block = ""
123
+ file.each_line do |line|
124
+ block += line
125
+ if line.end_with?";\n"
126
+ #处理block
127
+ self.filterKeyInOcBLock(block,path)
128
+ block = ""
129
+ end
130
+ end
131
+ end
132
+ file.close
133
+
134
+ end
135
+
136
+ def self.scanKeyInSwiftCode(path)
137
+
138
+ file = File.open(path,"r:utf-8") do |file|
139
+ block = ""
140
+ file.each_line do |line|
141
+ block += line
142
+ if line.end_with?"\n"
143
+ #处理block
144
+ self.filterKeyInSwiftBLock(block,path)
145
+ block = ""
146
+ end
147
+ end
148
+ end
149
+ file.close
150
+
151
+ end
152
+
153
+ def self.filterKeyInSwiftBLock(block,filePath)
154
+ keywords = ['LMBundleNSLocalizedString(','LHLocalizedTool.localizedString(forKey:']
155
+ keywords.each do |keyword|
156
+ tempBlock = block
157
+ while tempBlock.index(keyword) != nil do
158
+ #左引号
159
+ left = tempBlock.index(keyword)
160
+ # puts left
161
+ # puts tempBlock[left]
162
+ left = tempBlock.index('"',left+1)
163
+ right = tempBlock.index('"',left+1)
164
+ # puts right
165
+ # puts tempBlock[right]
166
+ key = tempBlock[left+1...right]
167
+ if @@defineKeyDic[key] == nil
168
+ print 'swift未定义的key:',key,"\n"
169
+ item = UnDefineKeyItem.new(key,filePath)
170
+ @@undefineKeyDic[key] = item
171
+ end
172
+ tempBlock = tempBlock[right+1..tempBlock.length-1]
173
+ end
174
+ end
175
+ end
176
+
177
+ def self.filterKeyInOcBLock(block,filePath)
178
+ keywords = ['localizedStringForKey:@"',
179
+ 'LMCALanuage(@"',
180
+ 'LMCTLanuage(@"',
181
+ 'LMIrcodeLocalizedString(@"',
182
+ 'LMLTLanuage(@"',
183
+ 'LMMDLocalizedString(@"',
184
+ 'kLMPositionFrameworkNSLocalized(@"']
185
+ keywords.each do |keyword|
186
+ tempBlock = block
187
+ while tempBlock.index(keyword) != nil do
188
+ #左引号
189
+ left = tempBlock.index(keyword) + keyword.length-1
190
+ # puts left
191
+ # puts tempBlock[left]
192
+ right = tempBlock.index('"',left+1)
193
+ # puts right
194
+ # puts tempBlock[right]
195
+ key = tempBlock[left+1...right]
196
+ #
197
+ if @@defineKeyDic[key] == nil
198
+ # print '未定义的key:',key,"\n"
199
+ item = UnDefineKeyItem.new(key,filePath)
200
+ @@undefineKeyDic[key] = item
201
+ end
202
+ tempBlock = tempBlock[right+1..tempBlock.length-1]
203
+ end
204
+ end
205
+ end
206
+
207
+ def self.pipLine
208
+ self.loadBundleKey
209
+ self.scan
210
+ # @@defineKeyDic.each_value do |model|
211
+ # puts model
212
+ # end
213
+
214
+ num = 0
215
+ @@undefineKeyDic.each_value do |item|
216
+ num += 1
217
+ puts "#{num}:#{item.printKey} filepath:#{item.printFilePath}"
218
+ end
219
+ end
220
+
221
+ end
222
+
223
+
224
+ # str = 'localizedStringForKey:@"key"'
225
+ # LocalizedScan.filterKeyInBLock(str)
226
+
@@ -0,0 +1 @@
1
+ require 'cocoapods-scancode/gem_version'
@@ -0,0 +1 @@
1
+ require 'cocoapods-scancode/command'
metadata ADDED
@@ -0,0 +1,77 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: cocoapods-scancode
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - jeremylu
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2022-12-28 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.3'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.3'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ description: A short description of cocoapods-scancode.
42
+ email:
43
+ - 1509028992@qq.com
44
+ executables: []
45
+ extensions: []
46
+ extra_rdoc_files: []
47
+ files:
48
+ - lib/cocoapods-scancode.rb
49
+ - lib/cocoapods-scancode/command.rb
50
+ - lib/cocoapods-scancode/command/scancode.rb
51
+ - lib/cocoapods-scancode/gem_version.rb
52
+ - lib/cocoapods-scancode/trig.rb
53
+ - lib/cocoapods_plugin.rb
54
+ homepage: https://github.com/EXAMPLE/cocoapods-scancode
55
+ licenses:
56
+ - MIT
57
+ metadata: {}
58
+ post_install_message:
59
+ rdoc_options: []
60
+ require_paths:
61
+ - lib
62
+ required_ruby_version: !ruby/object:Gem::Requirement
63
+ requirements:
64
+ - - ">="
65
+ - !ruby/object:Gem::Version
66
+ version: '0'
67
+ required_rubygems_version: !ruby/object:Gem::Requirement
68
+ requirements:
69
+ - - ">="
70
+ - !ruby/object:Gem::Version
71
+ version: '0'
72
+ requirements: []
73
+ rubygems_version: 3.3.26
74
+ signing_key:
75
+ specification_version: 4
76
+ summary: A longer description of cocoapods-scancode.
77
+ test_files: []