Skip to content
Commits on Jan 24, 2011
  1. Fixed HTML and XML handling within example blocks. Closes #54.

    The problem was two fold: template engine is specifically instructed to prevent any HTML escaping (otherwise using custom HTML tags within comment code wouldn't be possible), but this renders example blocks containing XML or HTML useless. To overcome this, example blocks are manually escaped by appledoc. Note that this required updating example blocks unit tests - changing to real settings provider as mock didn't do escaping...
    Second: GBTokenizer marked HTML/XML opening comment marker `<!--` as a delimiter and removed it from the string, leaving only the remaining text. This interfered with example blocks processing later on. This was actually a bug as delimiter should only be considered a line containing ONLY delimiter chars (at present the regex used was matching only from start of line)!
    Also added few more unit tests for validating example blocks prefixed with spaces are detected.
    Increased build number to 525.
Commits on Jan 17, 2011
  1. Refactored lists processing to match the code used for directives.

    Not only this makes both codes similar, it also results in cleaner code.
  2. Fixed bold-italics decorators handling.

    The problem was with the fact that we needed to register text to inner decorator, but register the outer one to the paragraph. To reuse registration code, we correctly assigned inner decorator for text registration, but then only registered the inner decorator to paragraph, effectively discarding outer one completely. This is properly handled now.
    In fact, this fixes the remaining 7 unit tests and closes code refactoring!
  3. Fixed multiple @see directives processing.

    The problem was that we always popped last paragraph inside processing loop, but @see directives don't push one! This is properly handled now, fixing another batch of 2 unit tests.
    11 more unit tests to go.
  4. Fixed comment directives processing and normal paragraphs handling.

    The problem was when popping directive paragraph which resulted in registering the paragraph to the comment as well if there was no other paragraph on the stack. To properly handle such situations, pushing paragraphs requires sender to specify whether the paragraph is auto-registerable or not. This information is then used when popping and the paragraph is only registered if the flag was set.
    This closes another 25 unit tests, with 18 to go.
  5. Fixed link items processing.

    The problem was we only handled links that started with a word, which effectively ignored any links embedded within punctuation.
  6. Fixed warning block processing.

    The problem was in copying the code from bug block and forgetting to change regex.
  7. Updated comment text processing validation methods to keep whitespace.

    This fixes another 39 unit tests with 43 to go.
Commits on Jan 16, 2011
  1. Implemented comment directives processing.

    This handles @param, @return and the rest. 6 more unit tests pass, 82 to go.
  2. Implemented paragraph text processing.

    This makes 67 more unit tests pass, 88 to go...
Commits on Jan 14, 2011
  1. Fixed paragraphs registration to comment.

    As unit tests were not being cleared with code I checked what was the going on. It turned out comments were empty regardless of the number of items processed. The reason was simple: I forgot to register last paragraph after processing all blocks.
  2. Implemented @warning blocks processing.

  3. Refactored text and links processing to make it more streamlined.

    The algorithm is more straightforward now - the links are only searched at the beginning of the string. If found, link item is created and all text is skipped. If not found the text is marked as text item and the item is generated afterwards. All whitespace is also marked as text item and is added to any skipped text.
Commits on Jan 13, 2011
  1. Implemented basic text processing.

  2. Updated comments related classes debugDescription to show full inform…

    …ation and added arrayOfLines method to NSString category.
Commits on Jan 7, 2011
  1. Fixed cross reference to members and objects when embedded or followe…

    …d by punctuation. Closes #33.
    appledoc failed to detect cross references if object or member names were surrounded with parenthesis or followed by punctuation. The problem was twofold: to properly handle such cases, matching regex expressions had to be modified a bit plus detection method has to return proper range of detected cross ref so that the remaining text can be properly handled.
    Note that similar to #35, the result is all text is properly generated but there are extra spaces. This is going to be covered with #34.
Commits on Jan 5, 2011
  1. Fixed potential duplication of text after cross reference. Closes #44.

    The problem was that certain circumstances the text after a cross reference might duplicate the whole paragraph text instead of just getting the remainder. Also added unit test to catch and guard against the bug in the future!
    It's strange noone noticed this one as the bug isn't new; in fact the code was there at least since commit 7d6a323 from 2010-11-13... Again thanks to "PrimaryFeather" for reporting it!
  2. Fixed URLs detection when embedded within parenthesis or punctuation.…

    … Closes #35.
    If URL was embedded within parenthesis, closing parenthesis was considered as part of URL address. If optional <> was used for marking URL, parenthesis was ignored alltoghether. There were actually two issues here: 1. regex that matched URL also considered closing parenthesis as part of the address and 2. the whole "word" (i.e. including parenthesis) was considered as URL address so any static text wasn't created. Both are properly handled now.
    Note that at this point there are still extra spaces between parenthesis and URL, but at least we get to parse it properly. Extra spaces will be handled by #34).
Commits on Jan 3, 2011
  1. Implemented optional disabling of first paragraph repeat for members.…

    … Closes #29.
    By default appledoc repeats first paragraph in members documentation. This can be optionally disabled with command line switch now.
  2. Fixed output generation in cases where empty method sections are regi…

    …stered. Closes #26.
    Although the section contained no methods and properties, resulting HTML contained the list of all methods registered to the class. The reason was in the way GRMustache handles unknown variables: it descends down the partials stack and tries to use the first object that responds to the given selector (i.e. a variable name). In our case it descends from GBMethodSectionData down to GBMethodsProvider and emmits all it's methods. This situation is properly detected now and all empty sections are removed during processing phase.
    Thanks to Derek Clarkson for pointing it out!
Commits on Dec 28, 2010
Commits on Dec 23, 2010
  1. Fixed overview output generation in cases where comment has no text.

    As template only checks whether the comment is present, empty comments resulted in overview title being added to HTML without any accompanying text. These situations are properly handled now by removing such comments while processing.
Commits on Dec 16, 2010
  1. Fixed possible runtime exception while rendering output.

    Exception was raised within GRMustache rendering - specifically when it invoked GBParagraphItem partial, it first checked {{#isTextItem}} condition which returned YES, then went on to invoke {{stringValue}}. The value returned was nil so runtime exception was reported. After investigating I realized it was due to GBParagraphTextItem having nil stringValue. After playing with different inputs, it became clear the problem was in cases where empty (or new line only) GBParagraphTextItem was added at the end of the paragraph. Changing the way paragraph text was trimmed - i.e. including optional trimming of new lines - this works without problems.
Commits on Dec 13, 2010
  1. Refactored settings handling by removing GBStoreProviding protocol.

    Reasoning is similar to previous commit.
  2. Refactored settings handling by removing GBApplicationSettingsProvidi…

    …ng protocol.
    Instead, the GBApplicationSettingsProvider class is used. Objective-C can solve "program to interface" rule quite easily through anonymous type and we can as easily mock classes as we can protocols, so having a protocol only complicated development...
Commits on Dec 7, 2010
  1. Implemented documentation copying for overriden methods and fixed rem…

    …oval of undocumented objects.
    Due to the fact that we may copy documentation from superclasses, we must remove undocumented members and objects only after processing members, otherwise we would delete overriden methods before getting the chance to copy the documentation.
Something went wrong with that request. Please try again.