GBApplicationSettingsProvider Class Reference
Inherits from | NSObject |
Declared in | GBApplicationSettingsProvider.h GBApplicationSettingsProvider.m |
Overview
Main application settings provider.
This object implements GBApplicationStringsProviding
interface and is used by GBAppledocApplication
to prepare application-wide settings including factory defaults, global and session values. The main purpose of the class is to simplify GBAppledocApplication
class by decoupling it from the actual settings providing implementation.
To create a new setting use the following check list to update GBApplicationSettingsProvider
:
- Create the property here (don't forget about
@synthetize
!). - Set default value in initializer.
If the setting should be mapped to command line switch also do the following in GBAppledocApplication
:
- Create a new global string as
static NSString
containing the command line switch name. - Register the switch to
DDCli
(add negated switch if it's a boolean). - Add unit test in
GBAppledocApplicationTesting.m
that validates the switch is properly mapped to setting property (note that boolean switches require testing normal and negated variants!). - Add KVC setter and map to corresponding property to make the test pass (again booleans require two setters).
- If the switch value uses template placeholders, add unit test in
GBApplicationSettingsProviderTesting.m
that validates the switch is handled. - If previous point was used, add the code to
replaceAllOccurencesOfPlaceholderStringsInSettingsValues
to make the test pass. - Add the switch value printout to
printSettingsAndArguments:
. - Add the switch help printout to
printHelp
.
Tasks
Initialization & disposal
-
+ provider
Returns autoreleased instance of the class.
Project values handling
-
projectName
Human readable name of the project. property -
projectCompany
Human readable name of the project company. property -
projectVersion
Human readable version of the project. property -
companyIdentifier
Company unique identifier, ussualy in the form of reverse domain like com.company. property -
projectIdentifier
Project identifier which is derived by normalizingprojectName
. property -
versionIdentifier
Version identifier which is derived by normalizingprojectVersion
. property
Documentation set handling
-
docsetBundleIdentifier
Documentation set bundle identifier. property -
docsetBundleName
Documentation set bundle name. property -
docsetCertificateIssuer
Documentation set certificate issuer. property -
docsetCertificateSigner
Documentation set certificate signer. property -
docsetDescription
Documentation set description. property -
docsetFallbackURL
Documentation set fallback URL. property -
docsetFeedName
Documentation set feed name. property -
docsetFeedURL
Documentation set feed URL. property -
docsetPackageURL
Documentation set package URL. property -
docsetMinimumXcodeVersion
Documentation set minimum Xcode version. property -
docsetPlatformFamily
Documentation set platform family. property -
docsetPublisherIdentifier
Documentation set publisher identifier. property -
docsetPublisherName
Documentation set publisher name. property -
docsetCopyrightMessage
Documentation set human readble copyright message. property -
docsetBundleFilename
The name of the documentation set installed bundle. The folder is generated indocsetInstallPath
. property -
docsetAtomFilename
The name of the documentation set atom file when generating publishing files. The file is generated inoutputPath
. property -
docsetPackageFilename
The name of the documentation set compressed package file when generating publishing files. The file is generated inoutputPath
. property
Paths handling
-
templatesPath
The base path to template files used for generating various output files. property -
outputPath
The base path of the generated files. property -
docsetInstallPath
The path to which documentation set is to be installed. property -
docsetUtilPath
The path todocsetutil
tool, including tool filename. property -
ignoredPaths
The list of all full or partial paths to be ignored. property -
createHTML
@name Behavior handling property -
createDocSet
Specifies whether documentation set should be created from the HTML files. property -
installDocSet
Specifies whether the documentation set should be installed or not. property -
publishDocSet
Specifies whether the documentation set should be prepared for publishing or not. property -
keepIntermediateFiles
Specifies whether intermediate files should be kept inoutputPath
or not. property -
repeatFirstParagraphForMemberDescription
Indicates whether the first paragraph needs to be repeated within method and property description or not. property -
findUndocumentedMembersDocumentation
Specifies whether undocumented inherited methods or properties should be searched for in known places. property -
mergeCategoriesToClasses
Indicates whether categories should be merges to classes they extend or not. property -
keepMergedCategoriesSections
Indicates whether category or extension sections should be preserved when merging into extended class. property -
prefixMergedCategoriesSectionsWithCategoryName
Indicates whether merged section names from categories should be prefixed with category name. property
Warnings handling
-
warnOnMissingOutputPathArgument
Indicates whether appledoc will warn if--output
argument is not given. property -
warnOnMissingCompanyIdentifier
Indicates whether appledoc will warn if--company-id
argument is not given. property -
warnOnUndocumentedObject
Indicates whether appledoc will warn if it encounters an undocumented class, category or protocol. property -
warnOnUndocumentedMember
Indicates whether appledoc will warn if it encounters an undocumented method or property. property -
warnOnEmptyDescription
Indicates whether appledoc will warn if it encounters an empty description (@bug, @warning, example section etc.). property -
warnOnUnknownDirective
Indicates whether appledoc will warn if it encounters unknown directive or styling element. property -
warnOnInvalidCrossReference
Indicates whether invalid cross reference should result in warning or not. property -
warnOnMissingMethodArgument
Indicates whether missing method argument descriptions in comments should result in warnings or not. property
Application-wide HTML helpers
-
– stringByEscapingHTML:
Returns a new string by escaping the given HTML. -
– htmlReferenceNameForObject:
Returns HTML reference name for the given object. -
– htmlReferenceForObject:fromSource:
Returns relative HTML reference to the given object from the context of the given source object. -
– htmlReferenceForObjectFromIndex:
Returns relative HTML reference to the given object from the context of index file. -
htmlExtension
The file extension for html files. property
Helper methods
-
– replaceAllOccurencesOfPlaceholderStringsInSettingsValues
Replaces all occurences of placeholder strings in all related values of the receiver. -
– stringByReplacingOccurencesOfPlaceholdersInString:
Replaces all placeholders occurences in the given string.
Helper classes
-
commentComponents
Returns theGBCommentComponentsProvider
object that identifies comment components. property -
stringTemplates
Returns theGBApplicationStringsProvider
object that specifies all string templates used for output generation. property
Properties
commentComponents
Returns the GBCommentComponentsProvider
object that identifies comment components.
@property (retain) GBCommentComponentsProvider *commentComponents
Declared In
GBApplicationSettingsProvider.h
companyIdentifier
Company unique identifier, ussualy in the form of reverse domain like com.company.
@property (copy) NSString *companyIdentifier
Declared In
GBApplicationSettingsProvider.h
createDocSet
Specifies whether documentation set should be created from the HTML files.
@property (assign) BOOL createDocSet
Discussion
If YES
, HTML files from html subdirectory in outputPath
are moved to proper subdirectory within docset output files, then helper files are generated from parsed data. Documentation set files are also indexed. If NO
, HTML files are left in the output path.
Declared In
GBApplicationSettingsProvider.h
createHTML
@name Behavior handling
@property (assign) BOOL createHTML
Declared In
GBApplicationSettingsProvider.h
docsetAtomFilename
The name of the documentation set atom file when generating publishing files. The file is generated in outputPath
.
@property (copy) NSString *docsetAtomFilename
Declared In
GBApplicationSettingsProvider.h
docsetBundleFilename
The name of the documentation set installed bundle. The folder is generated in docsetInstallPath
.
@property (copy) NSString *docsetBundleFilename
Declared In
GBApplicationSettingsProvider.h
docsetBundleIdentifier
Documentation set bundle identifier.
@property (copy) NSString *docsetBundleIdentifier
Declared In
GBApplicationSettingsProvider.h
docsetBundleName
Documentation set bundle name.
@property (copy) NSString *docsetBundleName
Declared In
GBApplicationSettingsProvider.h
docsetCertificateIssuer
Documentation set certificate issuer.
@property (copy) NSString *docsetCertificateIssuer
Declared In
GBApplicationSettingsProvider.h
docsetCertificateSigner
Documentation set certificate signer.
@property (copy) NSString *docsetCertificateSigner
Declared In
GBApplicationSettingsProvider.h
docsetCopyrightMessage
Documentation set human readble copyright message.
@property (copy) NSString *docsetCopyrightMessage
Declared In
GBApplicationSettingsProvider.h
docsetDescription
Documentation set description.
@property (copy) NSString *docsetDescription
Declared In
GBApplicationSettingsProvider.h
docsetFallbackURL
Documentation set fallback URL.
@property (copy) NSString *docsetFallbackURL
Declared In
GBApplicationSettingsProvider.h
docsetFeedName
Documentation set feed name.
@property (copy) NSString *docsetFeedName
Declared In
GBApplicationSettingsProvider.h
docsetFeedURL
Documentation set feed URL.
@property (copy) NSString *docsetFeedURL
Declared In
GBApplicationSettingsProvider.h
docsetInstallPath
The path to which documentation set is to be installed.
@property (copy) NSString *docsetInstallPath
Declared In
GBApplicationSettingsProvider.h
docsetMinimumXcodeVersion
Documentation set minimum Xcode version.
@property (copy) NSString *docsetMinimumXcodeVersion
Declared In
GBApplicationSettingsProvider.h
docsetPackageFilename
The name of the documentation set compressed package file when generating publishing files. The file is generated in outputPath
.
@property (copy) NSString *docsetPackageFilename
Declared In
GBApplicationSettingsProvider.h
docsetPackageURL
Documentation set package URL.
@property (copy) NSString *docsetPackageURL
Declared In
GBApplicationSettingsProvider.h
docsetPlatformFamily
Documentation set platform family.
@property (copy) NSString *docsetPlatformFamily
Declared In
GBApplicationSettingsProvider.h
docsetPublisherIdentifier
Documentation set publisher identifier.
@property (copy) NSString *docsetPublisherIdentifier
Declared In
GBApplicationSettingsProvider.h
docsetPublisherName
Documentation set publisher name.
@property (copy) NSString *docsetPublisherName
Declared In
GBApplicationSettingsProvider.h
docsetUtilPath
The path to docsetutil
tool, including tool filename.
@property (copy) NSString *docsetUtilPath
Declared In
GBApplicationSettingsProvider.h
findUndocumentedMembersDocumentation
Specifies whether undocumented inherited methods or properties should be searched for in known places.
@property (assign) BOOL findUndocumentedMembersDocumentation
Discussion
If YES
, any undocumented overriden method or property is searched for in known super classes and adopted protocols and if documentation is found there, it is copied over. This works great for objects which would otherwise only show class documentation and no member. It's also how Apple documentation uses. Defaults to YES
.
Note: This property works together with keepUndocumentedObjects
and keepUndocumentedMembers
. To understand how they are used, read documentation for keepUndocumentedObjects
.
Declared In
GBApplicationSettingsProvider.h
htmlExtension
The file extension for html files.
@property (readonly) NSString *htmlExtension
Declared In
GBApplicationSettingsProvider.h
ignoredPaths
The list of all full or partial paths to be ignored.
@property (retain) NSMutableArray *ignoredPaths
Discussion
It's recommended to check if a path string ends with any of the given paths before processing it. This should catch directory and file names properly as directories are processed first.
Declared In
GBApplicationSettingsProvider.h
installDocSet
Specifies whether the documentation set should be installed or not.
@property (assign) BOOL installDocSet
Discussion
If YES
, temporary files used for indexing and removed, then documentation set bundle is created from the files from docset output path and is moved to docsetInstallPath
. If NO
, all documentation set files are left in output path.
Declared In
GBApplicationSettingsProvider.h
keepIntermediateFiles
Specifies whether intermediate files should be kept in outputPath
or not.
@property (assign) BOOL keepIntermediateFiles
Discussion
If YES
, all intermediate files (i.e. HTML files and documentation set files) are kept in output path. If NO
, only final results are kept. This setting not only affects how the files are being handled, it also affects performance. If intermediate files are not kept, appledoc moves files between various generation phases, otherwise it copies them. So it's prefferable to leave this option to NO
. This option only affects output files, input source files are always left intact!
Declared In
GBApplicationSettingsProvider.h
keepMergedCategoriesSections
Indicates whether category or extension sections should be preserved when merging into extended class.
@property (assign) BOOL keepMergedCategoriesSections
Discussion
If YES
, all the sections from category or extension documentation are preserved. In such case, prefixMergedCategoriesSectionsWithCategoryName
may optionally be used to prefix section name with category name or not. If NO
, category or extension sections are ignored and a single section with category name is created in the class.
Default value is NO
. If you use many sections within the categories, you should probably leave this option unchanged as preserving all category sections might yield fragmented class documentation. Experiment a bit to see what works best for you.
Note: This option is ignored unless mergeCategoriesToClasses
is used.
See Also
Declared In
GBApplicationSettingsProvider.h
mergeCategoriesToClasses
Indicates whether categories should be merges to classes they extend or not.
@property (assign) BOOL mergeCategoriesToClasses
Discussion
If YES
, all methods from categories and extensions are merged to their classes. If NO
, categories are left as independent objects in generated output. This is the main categories merging on/off switch, it merely enables or disables merging, other category merging settings define how exactly the methods from categories and extensions are merged into their classes.
Default value is YES
and should be left so as this seems to be the way Apple has it's documentation generated.
Important: Only categories for known project classes are merged. Categories to other framework classes, such as Foundation, AppKit or UIKit are not merged. In other words: only if the class source code is available on any of the given input paths, and is properly documented, it gets it's categories and extension methods merged! Also note that this option affects your documentation links - if any link is pointing to category that's going to be merged, it will be considered invalid link, so it's best to decide whther to merge categories of nor in advance and then consistently use properly formatted links.
See Also
Declared In
GBApplicationSettingsProvider.h
outputPath
The base path of the generated files.
@property (copy) NSString *outputPath
Declared In
GBApplicationSettingsProvider.h
prefixMergedCategoriesSectionsWithCategoryName
Indicates whether merged section names from categories should be prefixed with category name.
@property (assign) BOOL prefixMergedCategoriesSectionsWithCategoryName
Discussion
If YES
, all merged section names from categories are prefixed with category name to make them more easily identifiable. If NO
, section names are not changed. The first option is useful in case end users of your code are aware of different categories (if you're writting a framework for example). On the other hand, if you're using categories mostly as a way to split class definition to multiple files, you might want to keep this option off.
Note: This option is ignored unless mergeCategoriesToClasses
and keepMergedCategoriesSections
is used. The option is also ignored for extensions; only section names are used for extensions!
Declared In
GBApplicationSettingsProvider.h
projectCompany
Human readable name of the project company.
@property (copy) NSString *projectCompany
Declared In
GBApplicationSettingsProvider.h
projectIdentifier
Project identifier which is derived by normalizing projectName
.
@property (readonly) NSString *projectIdentifier
Declared In
GBApplicationSettingsProvider.h
projectName
Human readable name of the project.
@property (copy) NSString *projectName
Declared In
GBApplicationSettingsProvider.h
projectVersion
Human readable version of the project.
@property (copy) NSString *projectVersion
Declared In
GBApplicationSettingsProvider.h
publishDocSet
Specifies whether the documentation set should be prepared for publishing or not.
@property (assign) BOOL publishDocSet
Discussion
If YES
, installed documentation set is packaged for publishing - an atom feed is created and documentation set is archived. If the atom feed file is alreay found, it is updated with new information. Both, the feed and archived docset files are located within outputPath
. If NO
, documentation set is not prepared for publishing.
Declared In
GBApplicationSettingsProvider.h
repeatFirstParagraphForMemberDescription
Indicates whether the first paragraph needs to be repeated within method and property description or not.
@property (assign) BOOL repeatFirstParagraphForMemberDescription
Discussion
If YES
, first paragraph is repeated in members description, otherwise not.
Declared In
GBApplicationSettingsProvider.h
stringTemplates
Returns the GBApplicationStringsProvider
object that specifies all string templates used for output generation.
@property (retain) GBApplicationStringsProvider *stringTemplates
Declared In
GBApplicationSettingsProvider.h
templatesPath
The base path to template files used for generating various output files.
@property (copy) NSString *templatesPath
Declared In
GBApplicationSettingsProvider.h
versionIdentifier
Version identifier which is derived by normalizing projectVersion
.
@property (readonly) NSString *versionIdentifier
Declared In
GBApplicationSettingsProvider.h
warnOnEmptyDescription
Indicates whether appledoc will warn if it encounters an empty description (@bug, @warning, example section etc.).
@property (assign) BOOL warnOnEmptyDescription
Declared In
GBApplicationSettingsProvider.h
warnOnInvalidCrossReference
Indicates whether invalid cross reference should result in warning or not.
@property (assign) BOOL warnOnInvalidCrossReference
Declared In
GBApplicationSettingsProvider.h
warnOnMissingCompanyIdentifier
Indicates whether appledoc will warn if --company-id
argument is not given.
@property (assign) BOOL warnOnMissingCompanyIdentifier
Discussion
Although appledoc deducts this information from other values, it's better to warn the user as deducted information doesn't necessarily produce correct results.
Note that the warning is only issued if documentation set creation is requested.
Declared In
GBApplicationSettingsProvider.h
warnOnMissingMethodArgument
Indicates whether missing method argument descriptions in comments should result in warnings or not.
@property (assign) BOOL warnOnMissingMethodArgument
Declared In
GBApplicationSettingsProvider.h
warnOnMissingOutputPathArgument
Indicates whether appledoc will warn if --output
argument is not given.
@property (assign) BOOL warnOnMissingOutputPathArgument
Discussion
Although appledoc still generates output in current directory, it's better to warn the user as in most cases this is not what she wants (for example if appledoc is invoked from Xcode build script, current working directory might point to some unpredicted location). appledoc also writes the exact path that will be used for generating output.
Note that in case documentation set is installed to Xcode, setting output path is irrelevant as all files from output are moved to locations Xcode uses for finding documentation sets.
Declared In
GBApplicationSettingsProvider.h
warnOnUndocumentedMember
Indicates whether appledoc will warn if it encounters an undocumented method or property.
@property (assign) BOOL warnOnUndocumentedMember
See Also
Declared In
GBApplicationSettingsProvider.h
Instance Methods
htmlReferenceForObject:fromSource:
Returns relative HTML reference to the given object from the context of the given source object.
- (NSString *)htmlReferenceForObject:(GBModelBase *)object fromSource:(GBModelBase *)source
Parameters
- object
- The object for which to generate the reference to.
- source
- The source object from which to generate the reference from or
nil
for index to object reference.
Return Value
Returns the reference string.
Discussion
This is useful for generating hrefs from one object HTML file to another. This is the swiss army knife king of a method for all hrefs generation. It works for any kind of links:
- Index to top-level object (if source is
nil
). - Index to a member of a top-level object (if source is
nil
). - Top-level object to same top-level object.
- Top-level object to a different top-level object.
- Top-level object to one of it's members.
- Member object to it's top-level object.
- Member object to another top-level object.
- Member object to another member of the same top-level object.
- Member object to a member of another top-level object.
Exceptions
- NSException
- Thrown if object is
nil
.
Declared In
GBApplicationSettingsProvider.h
htmlReferenceForObjectFromIndex:
Returns relative HTML reference to the given object from the context of index file.
- (NSString *)htmlReferenceForObjectFromIndex:(GBModelBase *)object
Parameters
- object
- The object for which to generate the reference to.
Return Value
Returns the reference string.
Discussion
This is simply a helper method for htmlReferenceForObject:fromSource:
, passing the given object as object parameter and nil
as source.
Exceptions
- NSException
- Thrown if object is
nil
.
Declared In
GBApplicationSettingsProvider.h
htmlReferenceNameForObject:
Returns HTML reference name for the given object.
- (NSString *)htmlReferenceNameForObject:(GBModelBase *)object
Parameters
- object
- The object for which to return reference name.
Return Value
Returns the reference name of the object.
Discussion
This should only be used for creating anchors that need to be referenced from other parts of the same HTML file. The method works for top-level objects as well as their members.
Exceptions
- NSException
- Thrown if the given object is
nil
.
Declared In
GBApplicationSettingsProvider.h
replaceAllOccurencesOfPlaceholderStringsInSettingsValues
Replaces all occurences of placeholder strings in all related values of the receiver.
- (void)replaceAllOccurencesOfPlaceholderStringsInSettingsValues
Discussion
This message should be sent once all the values have been set. It is a convenience method that prepares all values that can use placeholder strings. From this point on, the rest of the application can simply use properties to get final values instead of sending stringByReplacingOccurencesOfPlaceholdersInString:
all the time.
Note that stringByReplacingOccurencesOfPlaceholdersInString:
is still available for cases where placeholder strings may be used elsewhere (template files for example).
Declared In
GBApplicationSettingsProvider.h
stringByEscapingHTML:
Returns a new string by escaping the given HTML.
- (NSString *)stringByEscapingHTML:(NSString *)string
Parameters
- string
- HTML string to escape.
Return Value
Returns escaped HTML string.
Declared In
GBApplicationSettingsProvider.h
stringByReplacingOccurencesOfPlaceholdersInString:
Replaces all placeholders occurences in the given string.
- (NSString *)stringByReplacingOccurencesOfPlaceholdersInString:(NSString *)string
Parameters
- string
- The string to replace placeholder occurences in.
Return Value
Returns new string with all placeholder occurences replaced.
Discussion
This method provides application-wide string placeholders replacement functionality. It replaces all known placeholders with actual values from the receiver. Placeholders are identified by a dollar mark, followed by placeholder name. The following placeholders are supported (note that case is important!):
%PROJECT
: Replaced byprojectName
value.%PROJECTID
: Replaced byprojectIdentifier
value.%COMPANY
: Replaced byprojectCompany
value.%COMPANYID
: Replaced bycompanyIdentifier
value.%VERSION
: Replaced byprojectVersion
value.%VERSIONID
: Replaced byversionIdentifier
value.%DOCSETBUNDLEFILENAME
: Replaced bydocsetBundleFilename
value.%DOCSETATOMFILENAME
: Replaced bydocsetAtomFilename
value.%DOCSETPACKAGEFILENAME
: Replaced bydocsetPackageFilename
value.%YEAR
: Replaced by current year as four digit string.%UPDATEDATE
: Replaced by current date in the form of year, month and day with formatYYYY-MM-DD
. For example2010-11-30
.
Declared In
GBApplicationSettingsProvider.h