Skip to content

Commit

Permalink
Fixed issues #289, #235 for Xcode 4.4 and above
Browse files Browse the repository at this point in the history
1. Xcode will crash on ALT-DoubleClick every time when trying to look up selected text in Xcode Organiser
2. ALT-Click shows QuickHelp bubble OK, but if the method is not from one of the standard framework classes, the 'Reference' link at the bottom of the pop-up is not shown.
   Thus you can't jump to Organiser help on  your own classes and methods from the Quick Help bubble.
3. Added sample Xcode integration script to generate dockets automatically as target

Fix Notes:
    1. modify template file "tokens-template.xml" to add node reference for methods
    2. modify "GBDocSetOutputGenerator.m" to add this node reference to the generated xml file
  • Loading branch information
andreiaf committed Feb 12, 2013
1 parent 3377667 commit 8b6e20f
Show file tree
Hide file tree
Showing 4 changed files with 50 additions and 0 deletions.
1 change: 1 addition & 0 deletions Generating/GBDocSetOutputGenerator.m
Original file line number Diff line number Diff line change
Expand Up @@ -237,6 +237,7 @@ - (BOOL)processTokensXmlForObjects:(NSArray *)objects type:(NSString *)type temp
for (GBMethodData *method in methodsProvider.methods) {
NSMutableDictionary *data = [NSMutableDictionary dictionaryWithCapacity:4];
[data setObject:[self.settings htmlReferenceNameForObject:method] forKey:@"anchor"];
[data setObject:[simplifiedObjectData objectForKey:@"id"] forKey:@"refid"];
[self addTokensXmlModelObjectDataForObject:method toData:data];
[self addTokensXmlModelObjectDataForPropertySetterAndGetter:method withData:data toArray:membersData];
[membersData addObject:data];
Expand Down
1 change: 1 addition & 0 deletions Templates/docset/Contents/Resources/tokens-template.xml
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
</Parameters>{{/hasParameters}}
{{#returnValue}}<ReturnValue>{{>Abstract}}</ReturnValue>{{/returnValue}}
{{#anchor}}<Anchor>{{anchor}}</Anchor>{{/anchor}}
{{#refid}}<NodeRef refid="{{refid}}"/>{{/refid}}
</Token>
{{/members}}
</File>
Expand Down
46 changes: 46 additions & 0 deletions XcodeIntegrationScript.markdown
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
Sample script to Enamble Xcode integration
==========================================

appledoc can be integrated with Xcode in many ways. Below is one of those to get you up and running quickly on Xcode 4.6

1. Select top of your project in Project Navigator
2. Click Add Target
3. Depending on your project type (IOS or OS X) choose Aggregate Template
4. Create new target. I suggest to call it Documentation
5. Click on Build Phases and add new Build Phase based on Script
6. Paste the script below into the script window
7. Adjust variables in section "Start Constants" as required
8. Uncomment correct 'target' for your project and comment out another one depending on your project type.
9. Adjust path to appledoc binary and appledoc's command-line switches if required
10. When you ready to generate a docset from your project, build Documentation target.
11. Docset will be installed into new loction and will become available to Xcode immediately.
12. To refresh Quick Help (ALT+Click) and (ALT+double-click) you may need to restart Xcode to refresh its index cache.



#appledoc Xcode script
# Start constants
company="ACME";
companyID="com.ACME";
companyURL="http://ACME.com";
target="iphoneos";
#target="macosx";
outputPath="~/help";
# End constants
/usr/local/bin/appledoc \
--project-name "${PROJECT_NAME}" \
--project-company "${company}" \
--company-id "${companyID}" \
--docset-atom-filename "${company}.atom" \
--docset-feed-url "${companyURL}/${company}/%DOCSETATOMFILENAME" \
--docset-package-url "${companyURL}/${company}/%DOCSETPACKAGEFILENAME" \
--docset-fallback-url "${companyURL}/${company}" \
--output "${outputPath}" \
--publish-docset \
--docset-platform-family "${target}" \
--logformat xcode \
--keep-intermediate-files \
--no-repeat-first-par \
--no-warn-invalid-crossref \
--exit-threshold 2 \
"${PROJECT_DIR}"
2 changes: 2 additions & 0 deletions appledoc.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -527,6 +527,7 @@
73FC742B11FE274300AAD0B9 /* GBMethodArgument.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GBMethodArgument.h; sourceTree = "<group>"; };
73FC742C11FE274300AAD0B9 /* GBMethodArgument.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GBMethodArgument.m; sourceTree = "<group>"; };
73FC743511FE2CEB00AAD0B9 /* GBMethodDataTesting.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GBMethodDataTesting.m; sourceTree = "<group>"; };
75C6C0D416CAA8D900E254F7 /* XcodeIntegrationScript.markdown */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = XcodeIntegrationScript.markdown; sourceTree = "<group>"; };
8DD76FA10486AA7600D96B5E /* appledoc */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = appledoc; sourceTree = BUILT_PRODUCTS_DIR; };
B4D1FFC015FF5F05009736E2 /* crypt.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = crypt.h; sourceTree = "<group>"; };
B4D1FFC115FF5F05009736E2 /* ioapi.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ioapi.c; sourceTree = "<group>"; };
Expand Down Expand Up @@ -594,6 +595,7 @@
B4D1FFF615FF643D009736E2 /* install-appledoc.sh */,
73EA656912B7944E00398BD1 /* Readme.markdown */,
73EEB7A812CA2BE700E546DB /* Developer Notes.markdown */,
75C6C0D416CAA8D900E254F7 /* XcodeIntegrationScript.markdown */,
739038301319926400B9CA74 /* AppledocSettings.plist */,
73D54C9011F8D18300CCDDB0 /* Classes */,
739AD36F1254449D00B642C3 /* Templates */,
Expand Down

0 comments on commit 8b6e20f

Please sign in to comment.