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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c360b06375bb80a241828abefb4b4bdf143c966f
4
- data.tar.gz: 7f4d59b11cb389a8ecb34adf38dbfe2378ccdc10
3
+ metadata.gz: 2e7b1e383972b57cb6425a0e411c4f6509db38e2
4
+ data.tar.gz: 31a779d12dcca8287ca66d75f5281f98d473fbdb
5
5
  SHA512:
6
- metadata.gz: 5fa0eec2c0e455f68f3ac9b9ac451ceed6e8223afdd5452ae9f7fe6c4c6577cdaada035c74d9aeb716cd8c6b5a7337335142bb52ed855cd026d10a09018f2d76
7
- data.tar.gz: 90085eb1fe95d8e2d4878b58ef1197239f62c4472467da6a78023df60936a1c6ff513f5ae5e12952cf47049d9d42416e942ac37ad63a7887700986e08c7b39ac
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="237">
21
- <caret line="19" column="63" lean-forward="true" selection-start-line="19" selection-start-column="63" selection-end-line="19" selection-end-column="63" />
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="Rakefile" pinned="false" current-in-tab="true">
28
- <entry file="file://$PROJECT_DIR$/Rakefile">
29
- <provider selected="true" editor-type-id="text-editor">
30
- <state relative-caret-position="240">
31
- <caret line="16" column="0" lean-forward="true" selection-start-line="16" selection-start-column="0" selection-end-line="16" selection-end-column="0" />
32
- <folding />
33
- </state>
34
- </provider>
35
- </entry>
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="rainbow.rb" pinned="false" current-in-tab="false">
48
- <entry file="file://$USER_HOME$/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/rainbow-2.2.2/lib/rainbow.rb">
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="0">
51
- <caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
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="pathname.rb" pinned="false" current-in-tab="false">
58
- <entry file="file://$USER_HOME$/.rbenv/versions/2.4.0/lib/ruby/2.4.0/pathname.rb">
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="416">
61
- <caret line="568" column="6" lean-forward="false" selection-start-line="568" selection-start-column="6" selection-end-line="568" selection-end-column="6" />
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$/exe/objcthin">
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="75">
71
- <caret line="5" column="21" lean-forward="false" selection-start-line="5" selection-start-column="21" selection-end-line="5" selection-end-column="21" />
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="13089000" />
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="13089000" />
359
+ <option name="totallyTimeSpent" value="14689000" />
355
360
  </component>
356
361
  <component name="ToolWindowManager">
357
- <frame x="-1" y="23" width="1280" height="745" extended-state="6" />
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="-1" side_tool="true" content_ui="tabs" />
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="-1" side_tool="false" content_ui="tabs" />
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="-1" side_tool="false" content_ui="tabs" />
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="-1" side_tool="false" content_ui="tabs" />
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="-1" side_tool="true" content_ui="tabs" />
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$/exe/objcthin">
395
+ <entry file="file://$PROJECT_DIR$/objcthin.gemspec">
391
396
  <provider selected="true" editor-type-id="text-editor">
392
- <state relative-caret-position="75">
393
- <caret line="5" column="21" lean-forward="false" selection-start-line="5" selection-start-column="21" selection-end-line="5" selection-end-column="21" />
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="369">
457
- <caret line="99" column="24" lean-forward="true" selection-start-line="99" selection-start-column="24" selection-end-line="99" selection-end-column="24" />
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="237">
465
- <caret line="19" column="63" lean-forward="true" selection-start-line="19" selection-start-column="63" selection-end-line="19" selection-end-column="63" />
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="240">
473
- <caret line="16" column="0" lean-forward="true" selection-start-line="16" selection-start-column="0" selection-end-line="16" selection-end-column="0" />
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
- Welcome to your new gem! In this directory, you'll find the files you need to be able to package up your Ruby library into a gem. Put your Ruby code in the file `lib/objcthin`. To experiment with that code, run `bin/console` for an interactive prompt.
3
+ this script can find unused selector and class for you project.app or LinkMap file.
4
4
 
5
- TODO: Delete this and the text above, and describe your gem
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
- TODO: Write usage instructions here
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
@@ -18,5 +18,8 @@ end
18
18
  task :publish do |t, args|
19
19
  system 'gem build objcthin.gemspec'
20
20
  path = Dir.glob('*.gem').last
21
- system 'gem push #{path}'
22
- end
21
+ command = "gem push #{path}"
22
+ system command
23
+ FileUtils.rm Dir.glob('*.gem')
24
+ puts 'completed'
25
+ end
@@ -1,3 +1,3 @@
1
1
  module Objcthin
2
- VERSION = "0.1.0"
2
+ VERSION = "0.2.0"
3
3
  end
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::Objc.find_unused_sel(path)
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::Objc.find_unused_class(path)
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 Objc
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.1.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-18 00:00:00.000000000 Z
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.8
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.