Changeset 333
- Timestamp:
- 09/27/08 18:36:08 (3 months ago)
- Files:
-
- trunk/cocoa/MarkdownLive/DDTemporaryDirectory.h (deleted)
- trunk/cocoa/MarkdownLive/DDTemporaryDirectory.m (deleted)
- trunk/cocoa/MarkdownLive/DDTemporaryFile.h (deleted)
- trunk/cocoa/MarkdownLive/DDTemporaryFile.m (deleted)
- trunk/cocoa/MarkdownLive/Info.plist (modified) (1 diff)
- trunk/cocoa/MarkdownLive/JRLog.h (deleted)
- trunk/cocoa/MarkdownLive/JRLog.m (deleted)
- trunk/cocoa/MarkdownLive/Japanese.lproj (deleted)
- trunk/cocoa/MarkdownLive/MarkdownLive Release Notes.markdown (modified) (1 diff)
- trunk/cocoa/MarkdownLive/MarkdownLive.xcodeproj/project.pbxproj (modified) (7 diffs)
- trunk/cocoa/MarkdownLive/MyDocument.h (modified) (2 diffs)
- trunk/cocoa/MarkdownLive/MyDocument.m (modified) (5 diffs)
- trunk/cocoa/MarkdownLive/discountInclude.c (deleted)
- trunk/cocoa/MarkdownLive/discountInclude.h (deleted)
- trunk/cocoa/MarkdownLive/discountWrapper.h (added)
- trunk/cocoa/MarkdownLive/discountWrapper.m (added)
- trunk/cocoa/MarkdownLive/markdownWrapper.c (added)
- trunk/cocoa/MarkdownLive/markdownWrapper.h (added)
- trunk/cocoa/MarkdownLive/mkdioWrapper.c (added)
- trunk/cocoa/MarkdownLive/mkdioWrapper.h (added)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/cocoa/MarkdownLive/Info.plist
r316 r333 41 41 <string>????</string> 42 42 <key>CFBundleVersion</key> 43 <string>1. 3</string>43 <string>1.4</string> 44 44 <key>CFBundleShortVersionString</key> 45 <string>1. 3</string>45 <string>1.4</string> 46 46 <key>NSMainNibFile</key> 47 47 <string>MainMenu</string> 48 48 <key>NSPrincipalClass</key> 49 49 <string>NSApplication</string> 50 <key>JRLogLevel.DDTemporaryDirectory</key> 51 <string>INFO</string> 50 52 </dict> 51 53 </plist> trunk/cocoa/MarkdownLive/MarkdownLive Release Notes.markdown
r108 r333 1 # MarkdownLive-0 Sun May 21 2006 1 # MarkdownLive 1.4 Sun May 21 2008 2 3 * Switch to discount for markdown engine. Saves having to spawn a Perl/ruby instance all the time. maruku also had rendering quirks, including not rendering things like `C4[2]` correctly, forcing me to write `C4\[2\]`. 4 5 But discount has a really strange source layout, to the point where I need to separate write wrappers for a couple of functions because you can't #include multiple header files since their typedefs conflict (`Document`). discount also defines `Line`, in conflict with QuickDraw, so I do preprocessor hackery to work-around that as well (<http://lists.apple.com/archives/Xcode-users/2008/Sep/msg00537.html>). 6 7 * MarkdownLive now autosaves. 8 9 --- 10 11 # MarkdownLive 1.3 Jul 31 2008 12 13 * Now uses [maruku](http://maruku.rubyforge.org) for its engine to get things like "Markdown inside HTML elements" and definition lists. 14 15 --- 16 17 # MarkdownLive-0 May 21 2006 2 18 3 19 * Supplies a category on `NSTask` (`+runScriptNamed:extension:input:error:`) that handles running external scripts. Marshals `NSString` parameters into `STDIN`/`STDOUT` pipe read/writes. trunk/cocoa/MarkdownLive/MarkdownLive.xcodeproj/project.pbxproj
r330 r333 8 8 9 9 /* Begin PBXBuildFile section */ 10 79252F250E8DF46200DFAD98 /* discountInclude.c in Sources */ = {isa = PBXBuildFile; fileRef = 79252F240E8DF46200DFAD98 /* discountInclude.c */; };11 79252F560E8DFAF200DFAD98 /* DDTemporaryFile.m in Sources */ = {isa = PBXBuildFile; fileRef = 79252F520E8DFAF200DFAD98 /* DDTemporaryFile.m */; };12 79252F570E8DFAF200DFAD98 /* DDTemporaryDirectory.m in Sources */ = {isa = PBXBuildFile; fileRef = 79252F540E8DFAF200DFAD98 /* DDTemporaryDirectory.m */; };13 79252F5F0E8E017E00DFAD98 /* JRLog.m in Sources */ = {isa = PBXBuildFile; fileRef = 79252F5D0E8E017E00DFAD98 /* JRLog.m */; };14 10 79252FF20E8E080100DFAD98 /* generate.c in Sources */ = {isa = PBXBuildFile; fileRef = 79252FF10E8E080100DFAD98 /* generate.c */; }; 11 792530F00E8F40F200DFAD98 /* discountWrapper.m in Sources */ = {isa = PBXBuildFile; fileRef = 792530EF0E8F40F200DFAD98 /* discountWrapper.m */; }; 12 792530FB0E8F49CE00DFAD98 /* mkdio.c in Sources */ = {isa = PBXBuildFile; fileRef = 792530FA0E8F49CE00DFAD98 /* mkdio.c */; }; 13 792530FF0E8F49E800DFAD98 /* markdown.c in Sources */ = {isa = PBXBuildFile; fileRef = 792530FE0E8F49E800DFAD98 /* markdown.c */; }; 14 792531010E8F4A0900DFAD98 /* resource.c in Sources */ = {isa = PBXBuildFile; fileRef = 792531000E8F4A0900DFAD98 /* resource.c */; }; 15 792531470E8F4CD800DFAD98 /* mkdioWrapper.c in Sources */ = {isa = PBXBuildFile; fileRef = 792531460E8F4CD800DFAD98 /* mkdioWrapper.c */; }; 16 7925314B0E8F4E4D00DFAD98 /* markdownWrapper.c in Sources */ = {isa = PBXBuildFile; fileRef = 7925314A0E8F4E4D00DFAD98 /* markdownWrapper.c */; }; 15 17 796A2AD80A20DCEE00440275 /* WebKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 796A2AD70A20DCEE00440275 /* WebKit.framework */; }; 16 18 79F7EF740AC39638003DAB4E /* MarkdownLiveApp.icns in Resources */ = {isa = PBXBuildFile; fileRef = 79F7EF730AC39638003DAB4E /* MarkdownLiveApp.icns */; }; … … 37 39 2A37F4C5FDCFA73011CA2CEA /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = "<absolute>"; }; 38 40 32DBCF750370BD2300C91783 /* MarkdownLive_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MarkdownLive_Prefix.pch; sourceTree = "<group>"; }; 39 79252F230E8DF46200DFAD98 /* discountInclude.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = discountInclude.h; sourceTree = "<group>"; };40 79252F240E8DF46200DFAD98 /* discountInclude.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = discountInclude.c; sourceTree = "<group>"; };41 79252F520E8DFAF200DFAD98 /* DDTemporaryFile.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DDTemporaryFile.m; sourceTree = "<group>"; };42 79252F530E8DFAF200DFAD98 /* DDTemporaryFile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DDTemporaryFile.h; sourceTree = "<group>"; };43 79252F540E8DFAF200DFAD98 /* DDTemporaryDirectory.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DDTemporaryDirectory.m; sourceTree = "<group>"; };44 79252F550E8DFAF200DFAD98 /* DDTemporaryDirectory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DDTemporaryDirectory.h; sourceTree = "<group>"; };45 79252F5D0E8E017E00DFAD98 /* JRLog.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JRLog.m; sourceTree = "<group>"; };46 79252F5E0E8E017E00DFAD98 /* JRLog.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JRLog.h; sourceTree = "<group>"; };47 41 79252FF10E8E080100DFAD98 /* generate.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = generate.c; path = "discount-1.2.10/generate.c"; sourceTree = "<group>"; }; 42 792530EE0E8F40F200DFAD98 /* discountWrapper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = discountWrapper.h; sourceTree = "<group>"; }; 43 792530EF0E8F40F200DFAD98 /* discountWrapper.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = discountWrapper.m; sourceTree = "<group>"; }; 44 792530FA0E8F49CE00DFAD98 /* mkdio.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = mkdio.c; path = "discount-1.2.10/mkdio.c"; sourceTree = "<group>"; }; 45 792530FE0E8F49E800DFAD98 /* markdown.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = markdown.c; path = "discount-1.2.10/markdown.c"; sourceTree = "<group>"; }; 46 792531000E8F4A0900DFAD98 /* resource.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = resource.c; path = "discount-1.2.10/resource.c"; sourceTree = "<group>"; }; 47 792531450E8F4CD800DFAD98 /* mkdioWrapper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mkdioWrapper.h; sourceTree = "<group>"; }; 48 792531460E8F4CD800DFAD98 /* mkdioWrapper.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = mkdioWrapper.c; sourceTree = "<group>"; }; 49 792531490E8F4E4D00DFAD98 /* markdownWrapper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = markdownWrapper.h; sourceTree = "<group>"; }; 50 7925314A0E8F4E4D00DFAD98 /* markdownWrapper.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = markdownWrapper.c; sourceTree = "<group>"; }; 48 51 796A2AD70A20DCEE00440275 /* WebKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = WebKit.framework; path = /System/Library/Frameworks/WebKit.framework; sourceTree = "<absolute>"; }; 49 52 79F7EF730AC39638003DAB4E /* MarkdownLiveApp.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; path = MarkdownLiveApp.icns; sourceTree = "<group>"; }; … … 96 99 children = ( 97 100 2A37F4ABFDCFA73011CA2CEA /* Classes */, 101 792530F90E8F49C600DFAD98 /* discount */, 98 102 2A37F4AFFDCFA73011CA2CEA /* Other Sources */, 99 103 2A37F4B8FDCFA73011CA2CEA /* Resources */, … … 109 113 2A37F4AEFDCFA73011CA2CEA /* MyDocument.h */, 110 114 2A37F4ACFDCFA73011CA2CEA /* MyDocument.m */, 111 79252F230E8DF46200DFAD98 /* discountInclude.h */,112 79252F240E8DF46200DFAD98 /* discountInclude.c */,113 79252F520E8DFAF200DFAD98 /* DDTemporaryFile.m */,114 79252F530E8DFAF200DFAD98 /* DDTemporaryFile.h */,115 79252F540E8DFAF200DFAD98 /* DDTemporaryDirectory.m */,116 79252F550E8DFAF200DFAD98 /* DDTemporaryDirectory.h */,117 79252F5D0E8E017E00DFAD98 /* JRLog.m */,118 79252F5E0E8E017E00DFAD98 /* JRLog.h */,119 79252FF10E8E080100DFAD98 /* generate.c */,120 115 ); 121 116 name = Classes; … … 125 120 isa = PBXGroup; 126 121 children = ( 122 2A37F4B0FDCFA73011CA2CEA /* main.m */, 127 123 32DBCF750370BD2300C91783 /* MarkdownLive_Prefix.pch */, 128 2A37F4B0FDCFA73011CA2CEA /* main.m */,129 124 ); 130 125 name = "Other Sources"; … … 151 146 ); 152 147 name = Frameworks; 148 sourceTree = "<group>"; 149 }; 150 792530F90E8F49C600DFAD98 /* discount */ = { 151 isa = PBXGroup; 152 children = ( 153 792530EE0E8F40F200DFAD98 /* discountWrapper.h */, 154 792530EF0E8F40F200DFAD98 /* discountWrapper.m */, 155 792531450E8F4CD800DFAD98 /* mkdioWrapper.h */, 156 792531460E8F4CD800DFAD98 /* mkdioWrapper.c */, 157 792531490E8F4E4D00DFAD98 /* markdownWrapper.h */, 158 7925314A0E8F4E4D00DFAD98 /* markdownWrapper.c */, 159 792530FA0E8F49CE00DFAD98 /* mkdio.c */, 160 792530FE0E8F49E800DFAD98 /* markdown.c */, 161 79252FF10E8E080100DFAD98 /* generate.c */, 162 792531000E8F4A0900DFAD98 /* resource.c */, 163 ); 164 name = discount; 153 165 sourceTree = "<group>"; 154 166 }; … … 213 225 8D15AC310486D014006FF6A4 /* MyDocument.m in Sources */, 214 226 8D15AC320486D014006FF6A4 /* main.m in Sources */, 215 79252F250E8DF46200DFAD98 /* discountInclude.c in Sources */,216 79252F560E8DFAF200DFAD98 /* DDTemporaryFile.m in Sources */,217 79252F570E8DFAF200DFAD98 /* DDTemporaryDirectory.m in Sources */,218 79252F5F0E8E017E00DFAD98 /* JRLog.m in Sources */,219 227 79252FF20E8E080100DFAD98 /* generate.c in Sources */, 228 792530F00E8F40F200DFAD98 /* discountWrapper.m in Sources */, 229 792530FB0E8F49CE00DFAD98 /* mkdio.c in Sources */, 230 792530FF0E8F49E800DFAD98 /* markdown.c in Sources */, 231 792531010E8F4A0900DFAD98 /* resource.c in Sources */, 232 792531470E8F4CD800DFAD98 /* mkdioWrapper.c in Sources */, 233 7925314B0E8F4E4D00DFAD98 /* markdownWrapper.c in Sources */, 220 234 ); 221 235 runOnlyForDeploymentPostprocessing = 0; trunk/cocoa/MarkdownLive/MyDocument.h
r330 r333 1 1 #import <Cocoa/Cocoa.h> 2 2 #import <WebKit/WebKit.h> 3 #import "DDTemporaryFile.h"4 3 5 4 @interface MyDocument : NSDocument { … … 15 14 NSPoint savedOrigin; 16 15 BOOL savedAtBottom; 17 DDTemporaryFile *markdownSourceTempFile;18 DDTemporaryFile *htmlOutputTempFile;19 16 } 20 17 trunk/cocoa/MarkdownLive/MyDocument.m
r331 r333 1 1 #import "MyDocument.h" 2 #include "discountInclude.h" 3 #import "JRLog.h" 2 #include "discountWrapper.h" 4 3 5 4 NSString *kMarkdownDocumentType = @"MarkdownDocumentType"; … … 15 14 return @""; 16 15 17 NSError *error = nil; 18 19 [markdown_ writeToFile:[markdownSourceTempFile fullPath] 20 atomically:NO 21 encoding:NSUTF8StringEncoding 22 error:&error]; 23 NSString *html = @"an error occured"; 24 if (!error) { 25 FILE *markdownSourceTempFILE = fopen([[markdownSourceTempFile fullPath] fileSystemRepresentation], "r"); 26 assert(markdownSourceTempFILE); 27 28 Document *discountContext = mkd_in(markdownSourceTempFILE, 0); 29 assert(discountContext); 30 31 FILE *htmlOutputTempFILE = fopen([[htmlOutputTempFile fullPath] fileSystemRepresentation], "w+"); 32 assert(htmlOutputTempFILE); 33 34 int markdown_result = markdown(discountContext, htmlOutputTempFILE, 0); 35 assert(markdown_result == 0); 36 37 fclose(markdownSourceTempFILE); 38 fclose(htmlOutputTempFILE); 39 40 html = [NSString stringWithContentsOfFile:[htmlOutputTempFile fullPath] 41 encoding:NSUTF8StringEncoding 42 error:&error]; 43 } 44 45 if (error) { 46 [NSApp presentError:error]; 47 } 48 return html; 16 return discountToHTML(markdown_); 49 17 } 50 18 … … 61 29 userInfo:nil 62 30 repeats:YES]; 63 markdownSourceTempFile = [[DDTemporaryFile alloc] initWithName:@"tmp.markdown"];64 JRLogDebug(@"markdownSourceTempFile: %@", [markdownSourceTempFile fullPath]);65 htmlOutputTempFile = [[DDTemporaryFile alloc] initWithName:@"tmp.html"];66 JRLogDebug(@"htmlOutputTempFile: %@", [htmlOutputTempFile fullPath]);67 31 } 68 32 return self; … … 72 36 [htmlPreviewTimer invalidate]; htmlPreviewTimer = nil; 73 37 [markdownSource release]; markdownSource = nil; 74 75 [markdownSourceTempFile release];76 [htmlOutputTempFile release];77 78 38 [super dealloc]; 79 39 } … … 84 44 85 45 - (void)windowControllerDidLoadNib:(NSWindowController*)controller_ { 46 static BOOL engagedAutosave = NO; 47 if (!engagedAutosave) { 48 engagedAutosave = YES; 49 [[NSDocumentController sharedDocumentController] setAutosavingDelay:30.0]; 50 } 86 51 [super windowControllerDidLoadNib:controller_]; 87 52 }
