objcthin 0.1.0 → 0.2.0
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 +4 -4
- data/.idea/.rakeTasks +7 -0
- data/.idea/workspace.xml +197 -60
- data/README.md +9 -3
- data/Rakefile +5 -2
- data/lib/objcthin/version.rb +1 -1
- data/lib/objcthin.rb +106 -8
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2e7b1e383972b57cb6425a0e411c4f6509db38e2
|
4
|
+
data.tar.gz: 31a779d12dcca8287ca66d75f5281f98d473fbdb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7111a2f4ceae4ef3b2e0eccd676b4200fa2466ff25ebadd9d13b03977ef38bc7454b2f38a52f4ef0ecdbd1b61fd4241e25af3bc5e45a16f46f245f215e90cdb6
|
7
|
+
data.tar.gz: 6a3fbe036040ba31ed2b4c13ffe874fb66e0d41b1bb6a4d392755f8100d1c98e422e0f11f654ede58bd32ec05be1779bb91e87f8a9b6187ec04b618099dead1c
|
data/.idea/.rakeTasks
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<Settings><!--This file was automatically generated by Ruby plugin.
|
3
|
+
You are allowed to:
|
4
|
+
1. Remove rake task
|
5
|
+
2. Add existing rake tasks
|
6
|
+
To add existing rake tasks automatically delete this file and reload the project.
|
7
|
+
--><RakeGroup description="" fullCmd="" taksId="rake"><RakeTask description="Build objcthin-0.1.0.gem into the pkg directory" fullCmd="build" taksId="build" /><RakeTask description="Remove any temporary products" fullCmd="clean" taksId="clean" /><RakeTask description="Remove any generated files" fullCmd="clobber" taksId="clobber" /><RakeTask description="Build and install objcthin-0.1.0.gem into system gems" fullCmd="install" taksId="install" /><RakeGroup description="" fullCmd="" taksId="install"><RakeTask description="Build and install objcthin-0.1.0.gem into system gems without network access" fullCmd="install:local" taksId="local" /></RakeGroup><RakeTask description="Create tag v0.1.0 and build and push objcthin-0.1.0.gem to Rubygems" fullCmd="release[remote]" taksId="release[remote]" /><RakeTask description="Run tests" fullCmd="test" taksId="test" /><RakeTask description="" fullCmd="publish" taksId="publish" /><RakeTask description="" fullCmd="release" taksId="release" /><RakeGroup description="" fullCmd="" taksId="release"><RakeTask description="" fullCmd="release:guard_clean" taksId="guard_clean" /><RakeTask description="" fullCmd="release:rubygem_push" taksId="rubygem_push" /><RakeTask description="" fullCmd="release:source_control_push" taksId="source_control_push" /></RakeGroup></RakeGroup></Settings>
|
data/.idea/workspace.xml
CHANGED
@@ -3,7 +3,6 @@
|
|
3
3
|
<component name="ChangeListManager">
|
4
4
|
<list default="true" id="69d66805-a1ec-48e6-b641-a43f752f569e" name="Default" comment="">
|
5
5
|
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/Rakefile" afterPath="$PROJECT_DIR$/Rakefile" />
|
6
|
-
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/objcthin.gemspec" afterPath="$PROJECT_DIR$/objcthin.gemspec" />
|
7
6
|
</list>
|
8
7
|
<option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
|
9
8
|
<option name="TRACKING_ENABLED" value="true" />
|
@@ -13,62 +12,55 @@
|
|
13
12
|
<option name="LAST_RESOLUTION" value="IGNORE" />
|
14
13
|
</component>
|
15
14
|
<component name="FileEditorManager">
|
16
|
-
<leaf>
|
15
|
+
<leaf SIDE_TABS_SIZE_LIMIT_KEY="300">
|
17
16
|
<file leaf-file-name="objcthin.gemspec" pinned="false" current-in-tab="false">
|
18
17
|
<entry file="file://$PROJECT_DIR$/objcthin.gemspec">
|
19
18
|
<provider selected="true" editor-type-id="text-editor">
|
20
|
-
<state relative-caret-position="
|
21
|
-
<caret line="
|
19
|
+
<state relative-caret-position="345">
|
20
|
+
<caret line="23" column="5" lean-forward="false" selection-start-line="23" selection-start-column="5" selection-end-line="23" selection-end-column="5" />
|
22
21
|
<folding />
|
23
22
|
</state>
|
24
23
|
</provider>
|
25
24
|
</entry>
|
26
25
|
</file>
|
27
|
-
<file leaf-file-name="
|
28
|
-
<entry file="file://$PROJECT_DIR$/
|
29
|
-
<provider selected="true" editor-type-id="text-editor">
|
30
|
-
<state
|
31
|
-
<
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
</file>
|
37
|
-
<file leaf-file-name="objcthin.rb" pinned="false" current-in-tab="false">
|
38
|
-
<entry file="file://$PROJECT_DIR$/lib/objcthin.rb">
|
39
|
-
<provider selected="true" editor-type-id="text-editor">
|
40
|
-
<state relative-caret-position="369">
|
41
|
-
<caret line="99" column="24" lean-forward="true" selection-start-line="99" selection-start-column="24" selection-end-line="99" selection-end-column="24" />
|
42
|
-
<folding />
|
26
|
+
<file leaf-file-name="README.md" pinned="false" current-in-tab="false">
|
27
|
+
<entry file="file://$PROJECT_DIR$/README.md">
|
28
|
+
<provider selected="true" editor-type-id="split-provider[text-editor;markdown-preview-editor]">
|
29
|
+
<state split_layout="SPLIT">
|
30
|
+
<first_editor relative-caret-position="312">
|
31
|
+
<caret line="25" column="4" lean-forward="true" selection-start-line="25" selection-start-column="4" selection-end-line="25" selection-end-column="4" />
|
32
|
+
<folding />
|
33
|
+
</first_editor>
|
34
|
+
<second_editor />
|
43
35
|
</state>
|
44
36
|
</provider>
|
45
37
|
</entry>
|
46
38
|
</file>
|
47
|
-
<file leaf-file-name="
|
48
|
-
<entry file="file://$
|
39
|
+
<file leaf-file-name="version.rb" pinned="false" current-in-tab="false">
|
40
|
+
<entry file="file://$PROJECT_DIR$/lib/objcthin/version.rb">
|
49
41
|
<provider selected="true" editor-type-id="text-editor">
|
50
|
-
<state relative-caret-position="
|
51
|
-
<caret line="
|
42
|
+
<state relative-caret-position="45">
|
43
|
+
<caret line="3" column="0" lean-forward="true" selection-start-line="3" selection-start-column="0" selection-end-line="3" selection-end-column="0" />
|
52
44
|
<folding />
|
53
45
|
</state>
|
54
46
|
</provider>
|
55
47
|
</entry>
|
56
48
|
</file>
|
57
|
-
<file leaf-file-name="
|
58
|
-
<entry file="file://$
|
49
|
+
<file leaf-file-name="Rakefile" pinned="false" current-in-tab="true">
|
50
|
+
<entry file="file://$PROJECT_DIR$/Rakefile">
|
59
51
|
<provider selected="true" editor-type-id="text-editor">
|
60
|
-
<state relative-caret-position="
|
61
|
-
<caret line="
|
52
|
+
<state relative-caret-position="300">
|
53
|
+
<caret line="20" column="21" lean-forward="false" selection-start-line="20" selection-start-column="21" selection-end-line="20" selection-end-column="21" />
|
62
54
|
<folding />
|
63
55
|
</state>
|
64
56
|
</provider>
|
65
57
|
</entry>
|
66
58
|
</file>
|
67
|
-
<file leaf-file-name="objcthin" pinned="false" current-in-tab="false">
|
68
|
-
<entry file="file://$PROJECT_DIR$/
|
59
|
+
<file leaf-file-name="objcthin.rb" pinned="false" current-in-tab="false">
|
60
|
+
<entry file="file://$PROJECT_DIR$/lib/objcthin.rb">
|
69
61
|
<provider selected="true" editor-type-id="text-editor">
|
70
|
-
<state relative-caret-position="
|
71
|
-
<caret line="
|
62
|
+
<state relative-caret-position="347">
|
63
|
+
<caret line="242" column="28" lean-forward="true" selection-start-line="242" selection-start-column="28" selection-end-line="242" selection-end-column="28" />
|
72
64
|
<folding />
|
73
65
|
</state>
|
74
66
|
</provider>
|
@@ -76,6 +68,11 @@
|
|
76
68
|
</file>
|
77
69
|
</leaf>
|
78
70
|
</component>
|
71
|
+
<component name="FindInProjectRecents">
|
72
|
+
<findStrings>
|
73
|
+
<find>objcthin</find>
|
74
|
+
</findStrings>
|
75
|
+
</component>
|
79
76
|
<component name="Git.Settings">
|
80
77
|
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
|
81
78
|
</component>
|
@@ -83,9 +80,11 @@
|
|
83
80
|
<option name="CHANGED_PATHS">
|
84
81
|
<list>
|
85
82
|
<option value="$PROJECT_DIR$/exe/objcthin" />
|
83
|
+
<option value="$PROJECT_DIR$/objcthin.gemspec" />
|
86
84
|
<option value="$PROJECT_DIR$/lib/objcthin.rb" />
|
85
|
+
<option value="$PROJECT_DIR$/README.md" />
|
86
|
+
<option value="$PROJECT_DIR$/lib/objcthin/version.rb" />
|
87
87
|
<option value="$PROJECT_DIR$/Rakefile" />
|
88
|
-
<option value="$PROJECT_DIR$/objcthin.gemspec" />
|
89
88
|
</list>
|
90
89
|
</option>
|
91
90
|
</component>
|
@@ -96,7 +95,6 @@
|
|
96
95
|
<sorting>DEFINITION_ORDER</sorting>
|
97
96
|
</component>
|
98
97
|
<component name="ProjectFrameBounds">
|
99
|
-
<option name="x" value="-1" />
|
100
98
|
<option name="y" value="23" />
|
101
99
|
<option name="width" value="1280" />
|
102
100
|
<option name="height" value="745" />
|
@@ -117,6 +115,8 @@
|
|
117
115
|
<foldersAlwaysOnTop value="true" />
|
118
116
|
</navigator>
|
119
117
|
<panes>
|
118
|
+
<pane id="Scratches" />
|
119
|
+
<pane id="Scope" />
|
120
120
|
<pane id="ProjectPane">
|
121
121
|
<subPane>
|
122
122
|
<PATH>
|
@@ -177,8 +177,6 @@
|
|
177
177
|
</PATH>
|
178
178
|
</subPane>
|
179
179
|
</pane>
|
180
|
-
<pane id="Scope" />
|
181
|
-
<pane id="Scratches" />
|
182
180
|
</panes>
|
183
181
|
</component>
|
184
182
|
<component name="PropertiesComponent">
|
@@ -325,6 +323,12 @@
|
|
325
323
|
<method />
|
326
324
|
</configuration>
|
327
325
|
<configuration default="true" type="js.build_tools.gulp" factoryName="Gulp.js">
|
326
|
+
<node-interpreter>project</node-interpreter>
|
327
|
+
<node-options />
|
328
|
+
<gulpfile />
|
329
|
+
<tasks />
|
330
|
+
<arguments />
|
331
|
+
<envs />
|
328
332
|
<method />
|
329
333
|
</configuration>
|
330
334
|
<configuration default="true" type="js.build_tools.npm" factoryName="npm">
|
@@ -346,34 +350,35 @@
|
|
346
350
|
<option name="number" value="Default" />
|
347
351
|
<option name="presentableId" value="Default" />
|
348
352
|
<updated>1508233449256</updated>
|
349
|
-
<workItem from="1508233450613" duration="
|
353
|
+
<workItem from="1508233450613" duration="12864000" />
|
354
|
+
<workItem from="1508466982795" duration="1227000" />
|
350
355
|
</task>
|
351
356
|
<servers />
|
352
357
|
</component>
|
353
358
|
<component name="TimeTrackingManager">
|
354
|
-
<option name="totallyTimeSpent" value="
|
359
|
+
<option name="totallyTimeSpent" value="14689000" />
|
355
360
|
</component>
|
356
361
|
<component name="ToolWindowManager">
|
357
|
-
<frame x="
|
362
|
+
<frame x="0" y="23" width="1280" height="745" extended-state="6" />
|
358
363
|
<editor active="true" />
|
359
364
|
<layout>
|
360
365
|
<window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="0" side_tool="false" content_ui="combo" />
|
361
366
|
<window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />
|
362
|
-
<window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="
|
363
|
-
<window_info id="Database" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="
|
364
|
-
<window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="
|
365
|
-
<window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.32905984" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
|
367
|
+
<window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="true" content_ui="tabs" />
|
368
|
+
<window_info id="Database" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
|
369
|
+
<window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
|
366
370
|
<window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
|
367
|
-
<window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="
|
368
|
-
<window_info id="Favorites" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="
|
369
|
-
<window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
|
371
|
+
<window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
|
372
|
+
<window_info id="Favorites" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="true" content_ui="tabs" />
|
370
373
|
<window_info id="Cvs" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
|
371
|
-
<window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="2" side_tool="false" content_ui="combo" />
|
372
374
|
<window_info id="Message" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
|
373
375
|
<window_info id="Commander" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
|
374
|
-
<window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
|
375
376
|
<window_info id="Inspection" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" />
|
377
|
+
<window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32905984" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
|
378
|
+
<window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="2" side_tool="false" content_ui="combo" />
|
379
|
+
<window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
|
376
380
|
<window_info id="Ant Build" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
|
381
|
+
<window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
|
377
382
|
</layout>
|
378
383
|
</component>
|
379
384
|
<component name="TypeScriptGeneratedFilesManager">
|
@@ -387,10 +392,37 @@
|
|
387
392
|
<watches-manager />
|
388
393
|
</component>
|
389
394
|
<component name="editorHistoryManager">
|
390
|
-
<entry file="file://$PROJECT_DIR$/
|
395
|
+
<entry file="file://$PROJECT_DIR$/objcthin.gemspec">
|
391
396
|
<provider selected="true" editor-type-id="text-editor">
|
392
|
-
<state relative-caret-position="
|
393
|
-
<caret line="
|
397
|
+
<state relative-caret-position="345">
|
398
|
+
<caret line="23" column="5" lean-forward="false" selection-start-line="23" selection-start-column="5" selection-end-line="23" selection-end-column="5" />
|
399
|
+
<folding />
|
400
|
+
</state>
|
401
|
+
</provider>
|
402
|
+
</entry>
|
403
|
+
<entry file="file://$PROJECT_DIR$/README.md">
|
404
|
+
<provider selected="true" editor-type-id="split-provider[text-editor;markdown-preview-editor]">
|
405
|
+
<state split_layout="SPLIT">
|
406
|
+
<first_editor relative-caret-position="675">
|
407
|
+
<caret line="45" column="0" lean-forward="false" selection-start-line="45" selection-start-column="0" selection-end-line="45" selection-end-column="0" />
|
408
|
+
<folding />
|
409
|
+
</first_editor>
|
410
|
+
<second_editor />
|
411
|
+
</state>
|
412
|
+
</provider>
|
413
|
+
</entry>
|
414
|
+
<entry file="file://$PROJECT_DIR$/lib/objcthin.rb">
|
415
|
+
<provider selected="true" editor-type-id="text-editor">
|
416
|
+
<state relative-caret-position="1485">
|
417
|
+
<caret line="99" column="45" lean-forward="false" selection-start-line="99" selection-start-column="45" selection-end-line="99" selection-end-column="45" />
|
418
|
+
<folding />
|
419
|
+
</state>
|
420
|
+
</provider>
|
421
|
+
</entry>
|
422
|
+
<entry file="file://$PROJECT_DIR$/Rakefile">
|
423
|
+
<provider selected="true" editor-type-id="text-editor">
|
424
|
+
<state relative-caret-position="225">
|
425
|
+
<caret line="15" column="3" lean-forward="true" selection-start-line="15" selection-start-column="3" selection-end-line="15" selection-end-column="3" />
|
394
426
|
<folding />
|
395
427
|
</state>
|
396
428
|
</provider>
|
@@ -399,7 +431,6 @@
|
|
399
431
|
<provider selected="true" editor-type-id="text-editor">
|
400
432
|
<state relative-caret-position="215">
|
401
433
|
<caret line="335" column="7" lean-forward="true" selection-start-line="335" selection-start-column="7" selection-end-line="335" selection-end-column="7" />
|
402
|
-
<folding />
|
403
434
|
</state>
|
404
435
|
</provider>
|
405
436
|
</entry>
|
@@ -407,7 +438,6 @@
|
|
407
438
|
<provider selected="true" editor-type-id="text-editor">
|
408
439
|
<state relative-caret-position="416">
|
409
440
|
<caret line="568" column="6" lean-forward="false" selection-start-line="568" selection-start-column="6" selection-end-line="568" selection-end-column="6" />
|
410
|
-
<folding />
|
411
441
|
</state>
|
412
442
|
</provider>
|
413
443
|
</entry>
|
@@ -439,7 +469,6 @@
|
|
439
469
|
<provider selected="true" editor-type-id="text-editor">
|
440
470
|
<state relative-caret-position="371">
|
441
471
|
<caret line="971" column="8" lean-forward="false" selection-start-line="971" selection-start-column="8" selection-end-line="971" selection-end-column="8" />
|
442
|
-
<folding />
|
443
472
|
</state>
|
444
473
|
</provider>
|
445
474
|
</entry>
|
@@ -451,26 +480,134 @@
|
|
451
480
|
</state>
|
452
481
|
</provider>
|
453
482
|
</entry>
|
483
|
+
<entry file="file://$PROJECT_DIR$/Rakefile">
|
484
|
+
<provider selected="true" editor-type-id="text-editor">
|
485
|
+
<state relative-caret-position="180">
|
486
|
+
<caret line="12" column="37" lean-forward="false" selection-start-line="12" selection-start-column="37" selection-end-line="12" selection-end-column="37" />
|
487
|
+
<folding />
|
488
|
+
</state>
|
489
|
+
</provider>
|
490
|
+
</entry>
|
491
|
+
<entry file="file://$PROJECT_DIR$/exe/objcthin">
|
492
|
+
<provider selected="true" editor-type-id="text-editor">
|
493
|
+
<state relative-caret-position="75">
|
494
|
+
<caret line="5" column="16" lean-forward="true" selection-start-line="5" selection-start-column="16" selection-end-line="5" selection-end-column="16" />
|
495
|
+
</state>
|
496
|
+
</provider>
|
497
|
+
</entry>
|
454
498
|
<entry file="file://$PROJECT_DIR$/lib/objcthin.rb">
|
455
499
|
<provider selected="true" editor-type-id="text-editor">
|
456
|
-
<state relative-caret-position="
|
457
|
-
<caret line="99" column="
|
500
|
+
<state relative-caret-position="197">
|
501
|
+
<caret line="99" column="45" lean-forward="false" selection-start-line="99" selection-start-column="45" selection-end-line="99" selection-end-column="45" />
|
502
|
+
<folding />
|
503
|
+
</state>
|
504
|
+
</provider>
|
505
|
+
</entry>
|
506
|
+
<entry file="file://$PROJECT_DIR$/objcthin.gemspec">
|
507
|
+
<provider selected="true" editor-type-id="text-editor">
|
508
|
+
<state relative-caret-position="-55">
|
509
|
+
<caret line="13" column="60" lean-forward="false" selection-start-line="13" selection-start-column="52" selection-end-line="13" selection-end-column="60" />
|
510
|
+
<folding />
|
511
|
+
</state>
|
512
|
+
</provider>
|
513
|
+
</entry>
|
514
|
+
<entry file="file://$PROJECT_DIR$/exe/objcthin">
|
515
|
+
<provider selected="true" editor-type-id="text-editor">
|
516
|
+
<state relative-caret-position="75">
|
517
|
+
<caret line="5" column="21" lean-forward="false" selection-start-line="5" selection-start-column="21" selection-end-line="5" selection-end-column="21" />
|
518
|
+
</state>
|
519
|
+
</provider>
|
520
|
+
</entry>
|
521
|
+
<entry file="file://$USER_HOME$/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/thor-0.20.0/lib/thor.rb">
|
522
|
+
<provider selected="true" editor-type-id="text-editor">
|
523
|
+
<state relative-caret-position="215">
|
524
|
+
<caret line="335" column="7" lean-forward="true" selection-start-line="335" selection-start-column="7" selection-end-line="335" selection-end-column="7" />
|
525
|
+
</state>
|
526
|
+
</provider>
|
527
|
+
</entry>
|
528
|
+
<entry file="file://$USER_HOME$/.rbenv/versions/2.4.0/lib/ruby/2.4.0/pathname.rb">
|
529
|
+
<provider selected="true" editor-type-id="text-editor">
|
530
|
+
<state relative-caret-position="416">
|
531
|
+
<caret line="568" column="6" lean-forward="false" selection-start-line="568" selection-start-column="6" selection-end-line="568" selection-end-column="6" />
|
532
|
+
</state>
|
533
|
+
</provider>
|
534
|
+
</entry>
|
535
|
+
<entry file="file://$APPLICATION_HOME_DIR$/rubystubs24/pathname.rb">
|
536
|
+
<provider selected="true" editor-type-id="text-editor">
|
537
|
+
<state relative-caret-position="153">
|
538
|
+
<caret line="273" column="38" lean-forward="false" selection-start-line="273" selection-start-column="38" selection-end-line="273" selection-end-column="38" />
|
539
|
+
<folding />
|
540
|
+
</state>
|
541
|
+
</provider>
|
542
|
+
</entry>
|
543
|
+
<entry file="file://$USER_HOME$/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/rainbow-2.2.2/lib/rainbow.rb">
|
544
|
+
<provider selected="true" editor-type-id="text-editor">
|
545
|
+
<state relative-caret-position="0">
|
546
|
+
<caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
|
458
547
|
<folding />
|
459
548
|
</state>
|
460
549
|
</provider>
|
461
550
|
</entry>
|
551
|
+
<entry file="file://$APPLICATION_HOME_DIR$/rubystubs24/kernel.rb">
|
552
|
+
<provider selected="true" editor-type-id="text-editor">
|
553
|
+
<state relative-caret-position="372">
|
554
|
+
<caret line="595" column="17" lean-forward="true" selection-start-line="595" selection-start-column="17" selection-end-line="595" selection-end-column="17" />
|
555
|
+
</state>
|
556
|
+
</provider>
|
557
|
+
</entry>
|
558
|
+
<entry file="file://$APPLICATION_HOME_DIR$/rubystubs24/regexp.rb">
|
559
|
+
<provider selected="true" editor-type-id="text-editor">
|
560
|
+
<state relative-caret-position="371">
|
561
|
+
<caret line="971" column="8" lean-forward="false" selection-start-line="971" selection-start-column="8" selection-end-line="971" selection-end-column="8" />
|
562
|
+
</state>
|
563
|
+
</provider>
|
564
|
+
</entry>
|
565
|
+
<entry file="file://$APPLICATION_HOME_DIR$/rubystubs24/hash.rb">
|
566
|
+
<provider selected="true" editor-type-id="text-editor">
|
567
|
+
<state relative-caret-position="148">
|
568
|
+
<caret line="839" column="8" lean-forward="false" selection-start-line="839" selection-start-column="8" selection-end-line="839" selection-end-column="8" />
|
569
|
+
</state>
|
570
|
+
</provider>
|
571
|
+
</entry>
|
462
572
|
<entry file="file://$PROJECT_DIR$/objcthin.gemspec">
|
463
573
|
<provider selected="true" editor-type-id="text-editor">
|
464
|
-
<state relative-caret-position="
|
465
|
-
<caret line="
|
574
|
+
<state relative-caret-position="345">
|
575
|
+
<caret line="23" column="5" lean-forward="false" selection-start-line="23" selection-start-column="5" selection-end-line="23" selection-end-column="5" />
|
576
|
+
<folding />
|
577
|
+
</state>
|
578
|
+
</provider>
|
579
|
+
</entry>
|
580
|
+
<entry file="file://$PROJECT_DIR$/lib/objcthin.rb">
|
581
|
+
<provider selected="true" editor-type-id="text-editor">
|
582
|
+
<state relative-caret-position="347">
|
583
|
+
<caret line="242" column="28" lean-forward="true" selection-start-line="242" selection-start-column="28" selection-end-line="242" selection-end-column="28" />
|
584
|
+
<folding />
|
585
|
+
</state>
|
586
|
+
</provider>
|
587
|
+
</entry>
|
588
|
+
<entry file="file://$PROJECT_DIR$/README.md">
|
589
|
+
<provider selected="true" editor-type-id="split-provider[text-editor;markdown-preview-editor]">
|
590
|
+
<state split_layout="SPLIT">
|
591
|
+
<first_editor relative-caret-position="312">
|
592
|
+
<caret line="25" column="4" lean-forward="true" selection-start-line="25" selection-start-column="4" selection-end-line="25" selection-end-column="4" />
|
593
|
+
<folding />
|
594
|
+
</first_editor>
|
595
|
+
<second_editor />
|
596
|
+
</state>
|
597
|
+
</provider>
|
598
|
+
</entry>
|
599
|
+
<entry file="file://$PROJECT_DIR$/lib/objcthin/version.rb">
|
600
|
+
<provider selected="true" editor-type-id="text-editor">
|
601
|
+
<state relative-caret-position="45">
|
602
|
+
<caret line="3" column="0" lean-forward="true" selection-start-line="3" selection-start-column="0" selection-end-line="3" selection-end-column="0" />
|
466
603
|
<folding />
|
467
604
|
</state>
|
468
605
|
</provider>
|
469
606
|
</entry>
|
470
607
|
<entry file="file://$PROJECT_DIR$/Rakefile">
|
471
608
|
<provider selected="true" editor-type-id="text-editor">
|
472
|
-
<state relative-caret-position="
|
473
|
-
<caret line="
|
609
|
+
<state relative-caret-position="300">
|
610
|
+
<caret line="20" column="21" lean-forward="false" selection-start-line="20" selection-start-column="21" selection-end-line="20" selection-end-column="21" />
|
474
611
|
<folding />
|
475
612
|
</state>
|
476
613
|
</provider>
|
data/README.md
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
# Objcthin
|
2
2
|
|
3
|
-
|
3
|
+
this script can find unused selector and class for you project.app or LinkMap file.
|
4
4
|
|
5
|
-
|
5
|
+
这个脚本可以自动的帮你找出当前项目中不在使用的selector和class,支持debug版本的APP包和LinkMap文件。
|
6
6
|
|
7
7
|
## Installation
|
8
8
|
|
@@ -22,7 +22,13 @@ Or install it yourself as:
|
|
22
22
|
|
23
23
|
## Usage
|
24
24
|
|
25
|
-
|
25
|
+
find unused selector:
|
26
|
+
|
27
|
+
$ objcthin findsel apppath(the execuse app path)
|
28
|
+
|
29
|
+
find unused class:
|
30
|
+
|
31
|
+
$ objcthin findclass apppath(the execuse app path)
|
26
32
|
|
27
33
|
## Development
|
28
34
|
|
data/Rakefile
CHANGED
data/lib/objcthin/version.rb
CHANGED
data/lib/objcthin.rb
CHANGED
@@ -7,12 +7,12 @@ module Objcthin
|
|
7
7
|
class Command < Thor
|
8
8
|
desc 'findsel','find unused method sel'
|
9
9
|
def findsel(path)
|
10
|
-
Imp::
|
10
|
+
Imp::UnusedClass.find_unused_sel(path)
|
11
11
|
end
|
12
12
|
|
13
13
|
desc 'findclass', 'find unused class list'
|
14
14
|
def findclass(path)
|
15
|
-
Imp::
|
15
|
+
Imp::UnusedClass.find_unused_class(path)
|
16
16
|
end
|
17
17
|
|
18
18
|
desc'version','print version'
|
@@ -23,7 +23,7 @@ module Objcthin
|
|
23
23
|
end
|
24
24
|
|
25
25
|
module Imp
|
26
|
-
class
|
26
|
+
class UnusedClass
|
27
27
|
def self.find_unused_sel(path)
|
28
28
|
check_file_type(path)
|
29
29
|
all_sels = find_impl_methods(path)
|
@@ -42,10 +42,6 @@ module Imp
|
|
42
42
|
puts unused_sel
|
43
43
|
end
|
44
44
|
|
45
|
-
def self.find_unused_class(path)
|
46
|
-
check_file_type(path)
|
47
|
-
end
|
48
|
-
|
49
45
|
def self.check_file_type(path)
|
50
46
|
pathname = Pathname.new(path)
|
51
47
|
unless pathname.exist?
|
@@ -156,6 +152,108 @@ module Imp
|
|
156
152
|
|
157
153
|
sels
|
158
154
|
end
|
159
|
-
|
160
155
|
end
|
161
156
|
end
|
157
|
+
|
158
|
+
|
159
|
+
module Imp
|
160
|
+
class UnusedClass
|
161
|
+
|
162
|
+
def self.check_file_type(path)
|
163
|
+
pathname = Pathname.new(path)
|
164
|
+
unless pathname.exist?
|
165
|
+
raise "#{path} not exit!"
|
166
|
+
end
|
167
|
+
|
168
|
+
cmd = "/usr/bin/file -b #{path}"
|
169
|
+
output = `#{cmd}`
|
170
|
+
|
171
|
+
unless output.include?('Mach-O')
|
172
|
+
raise 'input file not mach-o file type'
|
173
|
+
end
|
174
|
+
puts Rainbow('will begin process...').green
|
175
|
+
pathname
|
176
|
+
end
|
177
|
+
|
178
|
+
def self.split_segment_and_find(path)
|
179
|
+
command = "/usr/bin/otool -arch arm64 -V -o #{path}"
|
180
|
+
output = `#{command}`
|
181
|
+
|
182
|
+
class_list_identifier = 'Contents of (__DATA,__objc_classlist) section'
|
183
|
+
class_refs_identifier = 'Contents of (__DATA,__objc_classrefs) section'
|
184
|
+
|
185
|
+
unless output.include? class_list_identifier
|
186
|
+
raise Rainbow('only support iphone target, please use iphone build...').red
|
187
|
+
end
|
188
|
+
|
189
|
+
patten = /Contents of \(.*\) section/
|
190
|
+
class_refs_patten = /^\d*\w*\s(0x\d*\w*).*/
|
191
|
+
|
192
|
+
class_list = []
|
193
|
+
class_refs = []
|
194
|
+
|
195
|
+
can_add_to_list = false
|
196
|
+
can_add_to_refs = false
|
197
|
+
|
198
|
+
output.each_line do |line|
|
199
|
+
if patten.match?(line)
|
200
|
+
if line.include? class_list_identifier
|
201
|
+
can_add_to_list = true
|
202
|
+
next
|
203
|
+
elsif line.include? class_refs_identifier
|
204
|
+
can_add_to_list = false
|
205
|
+
can_add_to_refs = true
|
206
|
+
else
|
207
|
+
break
|
208
|
+
end
|
209
|
+
end
|
210
|
+
|
211
|
+
if can_add_to_list
|
212
|
+
class_list << line
|
213
|
+
end
|
214
|
+
|
215
|
+
if can_add_to_refs && line
|
216
|
+
class_refs_patten.match(line) do |m|
|
217
|
+
class_refs << m[1]
|
218
|
+
end
|
219
|
+
end
|
220
|
+
end
|
221
|
+
|
222
|
+
|
223
|
+
class_list_address_patten = /^(\d*\w*)\s(0x\d*\w*)/
|
224
|
+
class_name_patten = /name\s0x\d*\w*\s(.*)/
|
225
|
+
|
226
|
+
current_key = nil
|
227
|
+
class_name_address_hash = {}
|
228
|
+
|
229
|
+
class_list.each do |line|
|
230
|
+
if class_list_address_patten.match?(line)
|
231
|
+
current_key = class_list_address_patten.match(line)[2]
|
232
|
+
end
|
233
|
+
|
234
|
+
if class_name_patten.match?(line) && current_key
|
235
|
+
value = class_name_patten.match(line)[1]
|
236
|
+
class_name_address_hash[current_key] = value
|
237
|
+
current_key = nil
|
238
|
+
end
|
239
|
+
end
|
240
|
+
|
241
|
+
result = class_name_address_hash
|
242
|
+
class_refs.each do |line|
|
243
|
+
if class_name_address_hash.keys.include?(line)
|
244
|
+
result.delete(line)
|
245
|
+
end
|
246
|
+
end
|
247
|
+
|
248
|
+
result
|
249
|
+
end
|
250
|
+
|
251
|
+
def self.find_unused_class(path)
|
252
|
+
check_file_type(path)
|
253
|
+
result = split_segment_and_find(path)
|
254
|
+
puts result.values
|
255
|
+
end
|
256
|
+
|
257
|
+
end
|
258
|
+
|
259
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: objcthin
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- jamy_gu
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-10-
|
11
|
+
date: 2017-10-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: thor
|
@@ -89,6 +89,7 @@ extensions: []
|
|
89
89
|
extra_rdoc_files: []
|
90
90
|
files:
|
91
91
|
- ".gitignore"
|
92
|
+
- ".idea/.rakeTasks"
|
92
93
|
- ".idea/misc.xml"
|
93
94
|
- ".idea/modules.xml"
|
94
95
|
- ".idea/objcthin.iml"
|
@@ -127,7 +128,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
127
128
|
version: '0'
|
128
129
|
requirements: []
|
129
130
|
rubyforge_project:
|
130
|
-
rubygems_version: 2.6.
|
131
|
+
rubygems_version: 2.6.14
|
131
132
|
signing_key:
|
132
133
|
specification_version: 4
|
133
134
|
summary: find unused method and class with mach-o file.
|