| 
									
										
										
										
											2020-11-08 20:30:15 -07:00
										 |  |  | angular.module("myApp.services", []).factory("Desirae", [ | 
					
						
							|  |  |  |   "$q", | 
					
						
							|  |  |  |   "$http", | 
					
						
							|  |  |  |   function ($q, $http) { | 
					
						
							|  |  |  |     var Desi = window.Desirae || require("./deardesi").Desirae, | 
					
						
							|  |  |  |       desi = { | 
					
						
							|  |  |  |         /*TODO api_base: '/api'*/ | 
					
						
							|  |  |  |       }; | 
					
						
							| 
									
										
										
										
											2015-01-23 18:25:08 -07:00
										 |  |  |     //
 | 
					
						
							|  |  |  |     // 1. Transform (yml, slug, etc)
 | 
					
						
							|  |  |  |     //
 | 
					
						
							| 
									
										
										
										
											2020-11-08 20:30:15 -07:00
										 |  |  |     Desi.registerTransform("lint", window.DesiraeTransformCore.lint, { | 
					
						
							|  |  |  |       collections: true, | 
					
						
							|  |  |  |     }); | 
					
						
							|  |  |  |     Desi.registerTransform("root", window.DesiraeTransformCore.root, { | 
					
						
							|  |  |  |       root: true, | 
					
						
							|  |  |  |     }); | 
					
						
							|  |  |  |     Desi.registerTransform("normalize", window.DesiraeTransformCore.normalize, { | 
					
						
							|  |  |  |       root: true, | 
					
						
							|  |  |  |       collections: true, | 
					
						
							|  |  |  |     }); | 
					
						
							|  |  |  |     Desi.registerTransform("disqus", window.DesiraeTransformCore.disqus, { | 
					
						
							|  |  |  |       collections: true, | 
					
						
							|  |  |  |     }); | 
					
						
							| 
									
										
										
										
											2015-01-23 18:25:08 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  |     //
 | 
					
						
							|  |  |  |     // 2. Aggregate (rss, categories, tags, etc)
 | 
					
						
							|  |  |  |     //
 | 
					
						
							|  |  |  |     Desi.registerAggregator(window.DesiraeAggregateCore.collate); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     //
 | 
					
						
							|  |  |  |     // 3. Datamap (ruhoh, desirae, jade, mustache, liquid)
 | 
					
						
							|  |  |  |     //
 | 
					
						
							| 
									
										
										
										
											2020-11-08 20:30:15 -07:00
										 |  |  |     Desi.registerDataMapper("desirae", window.DesiraeDatamapCore); | 
					
						
							|  |  |  |     Desi.registerDataMapper("desirae@1.0", window.DesiraeDatamapCore); | 
					
						
							|  |  |  |     Desi.registerDataMapper("ruhoh", window.DesiraeDatamapRuhoh); | 
					
						
							|  |  |  |     Desi.registerDataMapper("ruhoh@1.0", window.DesiraeDatamapRuhoh); | 
					
						
							|  |  |  |     Desi.registerDataMapper("ruhoh@2.6", window.DesiraeDatamapRuhoh); | 
					
						
							| 
									
										
										
										
											2015-01-23 18:25:08 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  |     //
 | 
					
						
							|  |  |  |     // 4. Render (md -> html, less -> css, etc)
 | 
					
						
							|  |  |  |     //
 | 
					
						
							| 
									
										
										
										
											2020-11-08 20:30:15 -07:00
										 |  |  |     Desi.registerRenderer("js", window.DesiraeRenderCss, { | 
					
						
							|  |  |  |       themes: true, | 
					
						
							|  |  |  |       assets: true, | 
					
						
							|  |  |  |     }); | 
					
						
							|  |  |  |     Desi.registerRenderer("css", window.DesiraeRenderCss, { | 
					
						
							|  |  |  |       themes: true, | 
					
						
							|  |  |  |       assets: true, | 
					
						
							|  |  |  |     }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     ["html", "htm", "xhtm", "xhtml"].forEach(function (ext) { | 
					
						
							|  |  |  |       Desi.registerRenderer(ext, window.DesiraeRenderHtml, { | 
					
						
							|  |  |  |         root: true, | 
					
						
							|  |  |  |         collections: true, | 
					
						
							|  |  |  |         themes: true, | 
					
						
							|  |  |  |         assets: true, | 
					
						
							|  |  |  |       }); | 
					
						
							| 
									
										
										
										
											2015-01-23 18:25:08 -07:00
										 |  |  |     }); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-11-08 20:30:15 -07:00
										 |  |  |     [ | 
					
						
							|  |  |  |       "md", | 
					
						
							|  |  |  |       "markdown", | 
					
						
							|  |  |  |       "mdown", | 
					
						
							|  |  |  |       "mkdn", | 
					
						
							|  |  |  |       "mkd", | 
					
						
							|  |  |  |       "mdwn", | 
					
						
							|  |  |  |       "mdtxt", | 
					
						
							|  |  |  |       "mdtext", | 
					
						
							|  |  |  |     ].forEach(function (ext) { | 
					
						
							|  |  |  |       Desi.registerRenderer(ext, window.DesiraeRenderMarkdown, { | 
					
						
							|  |  |  |         root: true, | 
					
						
							|  |  |  |         collections: true, | 
					
						
							|  |  |  |       }); | 
					
						
							| 
									
										
										
										
											2015-01-23 18:25:08 -07:00
										 |  |  |     }); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-11-08 20:30:15 -07:00
										 |  |  |     Desi.registerRenderer("jade", window.DesiraeRenderJade, { | 
					
						
							|  |  |  |       root: true, | 
					
						
							|  |  |  |       collections: true, | 
					
						
							|  |  |  |       themes: true, | 
					
						
							|  |  |  |     }); | 
					
						
							| 
									
										
										
										
											2015-01-15 21:56:14 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-01-21 13:31:07 -07:00
										 |  |  |     function gdrive2host(str) { | 
					
						
							|  |  |  |       // https://drive.google.com/folderview?id=0ByLnfhJOd1-baUh1Wms0US16QkE&usp=sharing
 | 
					
						
							|  |  |  |       // https://googledrive.com/host/0ByLnfhJOd1-baUh1Wms0US16QkE
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-11-08 20:30:15 -07:00
										 |  |  |       var m; | 
					
						
							| 
									
										
										
										
											2015-01-21 13:31:07 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-11-08 20:30:15 -07:00
										 |  |  |       str = str || ""; | 
					
						
							| 
									
										
										
										
											2015-01-21 13:31:07 -07:00
										 |  |  |       m = str.match(/(?=drive.*google|google.*drive).*folderview.*id=([^&]+)/i); | 
					
						
							|  |  |  |       console.log(m); | 
					
						
							|  |  |  |       if (m && m[1]) { | 
					
						
							| 
									
										
										
										
											2020-11-08 20:30:15 -07:00
										 |  |  |         return "https://googledrive.com/host/" + m[1]; | 
					
						
							| 
									
										
										
										
											2015-01-21 13:31:07 -07:00
										 |  |  |       } | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     function dropbox2host(str) { | 
					
						
							|  |  |  |       if (!/dropbox/.test(str)) { | 
					
						
							|  |  |  |         return; | 
					
						
							|  |  |  |       } | 
					
						
							|  |  |  |       // https://dl.dropboxusercontent.com/u/146173/index.html
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       // https://www.dropbox.com/s/3n20djtrs2p0j9k
 | 
					
						
							|  |  |  |       // https://www.dropbox.com/s/3n20djtrs2p0j9k/index.html?dl=0
 | 
					
						
							|  |  |  |       // https://dl.dropboxusercontent.com/s/3n20djtrs2p0j9k/index.html
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-11-08 20:30:15 -07:00
										 |  |  |       str = str || ""; | 
					
						
							| 
									
										
										
										
											2015-01-21 13:31:07 -07:00
										 |  |  |       if (!str.match(/dropboxusercontent\.com\/u\/([^\/]+)\/index.html/)) { | 
					
						
							| 
									
										
										
										
											2020-11-08 20:30:15 -07:00
										 |  |  |         window.alert( | 
					
						
							|  |  |  |           "Sorry, Desi can't use that type of dropbox link." + | 
					
						
							|  |  |  |             "\n\n1. Open the Dropbox folder on your computer" + | 
					
						
							|  |  |  |             "\n   (The DropBox app must be installed)" + | 
					
						
							|  |  |  |             "\n\n2. Open the Public folder" + | 
					
						
							|  |  |  |             "\n   (if you don't have a Public folder, your account doesn't support hosting websites and you're simply out of luck)" + | 
					
						
							|  |  |  |             "\n\n2. Create a new file called index.html" + | 
					
						
							|  |  |  |             "\n\n3. Right-click on index.html" + | 
					
						
							|  |  |  |             "\n\n4. Select 'Copy Public Link'" + | 
					
						
							|  |  |  |             "\n\n5. Paste that link as the URL for Desi" | 
					
						
							|  |  |  |         ); | 
					
						
							| 
									
										
										
										
											2015-01-21 13:31:07 -07:00
										 |  |  |         return; | 
					
						
							|  |  |  |       } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-11-08 20:30:15 -07:00
										 |  |  |       return str.replace(/\/index\.html$/, ""); | 
					
						
							| 
									
										
										
										
											2015-01-21 13:31:07 -07:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     function splitUrl(str) { | 
					
						
							| 
									
										
										
										
											2020-11-08 20:30:15 -07:00
										 |  |  |       var m; | 
					
						
							| 
									
										
										
										
											2015-01-21 13:31:07 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-11-08 20:30:15 -07:00
										 |  |  |       str = str || ""; | 
					
						
							| 
									
										
										
										
											2015-01-21 13:31:07 -07:00
										 |  |  |       m = str.match(/(https?:\/\/)?([^\.\/?#]+\.[^\/?#]+)(\/[^#?]+)?/i); | 
					
						
							|  |  |  |       console.log(m); | 
					
						
							|  |  |  |       if (!m || !m[2]) { | 
					
						
							|  |  |  |         return; | 
					
						
							|  |  |  |       } | 
					
						
							|  |  |  |       return { | 
					
						
							| 
									
										
										
										
											2020-11-08 20:30:15 -07:00
										 |  |  |         baseUrl: (m[1] || "http://") + m[2], | 
					
						
							|  |  |  |         basePath: (m[3] && m[3].replace(/\/$/, "")) || "/", | 
					
						
							| 
									
										
										
										
											2015-01-21 13:31:07 -07:00
										 |  |  |       }; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-11-08 20:30:15 -07:00
										 |  |  |     function getBlogdir() { | 
					
						
							|  |  |  |       return $http.get("/api/fs/rootdir").then(function (resp) { | 
					
						
							| 
									
										
										
										
											2015-01-13 14:50:17 -07:00
										 |  |  |         desi.blogdir = resp.data; | 
					
						
							|  |  |  |         return resp.data; | 
					
						
							|  |  |  |       }); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     getBlogdir(); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-01-13 03:18:13 -07:00
										 |  |  |     return { | 
					
						
							| 
									
										
										
										
											2020-11-08 20:30:15 -07:00
										 |  |  |       splitUrl: splitUrl, | 
					
						
							|  |  |  |       gdrive2host: gdrive2host, | 
					
						
							|  |  |  |       dropbox2host: dropbox2host, | 
					
						
							|  |  |  |       reset: function () { | 
					
						
							| 
									
										
										
										
											2015-01-13 03:18:13 -07:00
										 |  |  |         desi = {}; | 
					
						
							| 
									
										
										
										
											2015-01-13 14:50:17 -07:00
										 |  |  |         return getBlogdir(); | 
					
						
							| 
									
										
										
										
											2020-11-08 20:30:15 -07:00
										 |  |  |       }, | 
					
						
							|  |  |  |       toDesiDate: Desi.toLocaleDate, | 
					
						
							|  |  |  |       meta: function () { | 
					
						
							|  |  |  |         var d = $q.defer(); | 
					
						
							| 
									
										
										
										
											2015-01-13 03:18:13 -07:00
										 |  |  |         if (desi.meta) { | 
					
						
							|  |  |  |           d.resolve(desi); | 
					
						
							|  |  |  |           return d.promise; | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         Desi.init(desi).then(function () { | 
					
						
							|  |  |  |           d.resolve(desi); | 
					
						
							|  |  |  |         }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         return d.promise; | 
					
						
							| 
									
										
										
										
											2020-11-08 20:30:15 -07:00
										 |  |  |       }, | 
					
						
							|  |  |  |       build: function (env) { | 
					
						
							|  |  |  |         var d = $q.defer(); | 
					
						
							| 
									
										
										
										
											2015-01-13 03:18:13 -07:00
										 |  |  |         if (desi.built) { | 
					
						
							|  |  |  |           d.resolve(desi); | 
					
						
							|  |  |  |           return d.promise; | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         Desi.buildAll(desi, env).then(function () { | 
					
						
							|  |  |  |           d.resolve(desi); | 
					
						
							|  |  |  |         }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         return d.promise; | 
					
						
							| 
									
										
										
										
											2020-11-08 20:30:15 -07:00
										 |  |  |       }, | 
					
						
							|  |  |  |       write: function (env) { | 
					
						
							|  |  |  |         var d = $q.defer(); | 
					
						
							| 
									
										
										
										
											2015-01-13 03:18:13 -07:00
										 |  |  |         if (desi.written) { | 
					
						
							|  |  |  |           d.resolve(desi); | 
					
						
							|  |  |  |           return d.promise; | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         Desi.write(desi, env).then(function () { | 
					
						
							|  |  |  |           d.resolve(desi); | 
					
						
							|  |  |  |         }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         return d.promise; | 
					
						
							| 
									
										
										
										
											2020-11-08 20:30:15 -07:00
										 |  |  |       }, | 
					
						
							|  |  |  |       putFiles: function (files) { | 
					
						
							| 
									
										
										
										
											2015-01-15 01:41:52 -05:00
										 |  |  |         return $q.when(Desi.fsapi.putFiles(files)); | 
					
						
							| 
									
										
										
										
											2020-11-08 20:30:15 -07:00
										 |  |  |       }, | 
					
						
							| 
									
										
										
										
											2015-01-13 03:18:13 -07:00
										 |  |  |     }; | 
					
						
							| 
									
										
										
										
											2020-11-08 20:30:15 -07:00
										 |  |  |   }, | 
					
						
							|  |  |  | ]); |