GithubHelp home page GithubHelp logo

joemccann / dillinger Goto Github PK

View Code? Open in Web Editor NEW
7.9K 162.0 1.1K 15.22 MB

The last Markdown editor, ever.

Home Page: https://dillinger.io

License: MIT License

JavaScript 38.47% HTML 38.92% Shell 0.17% Dockerfile 0.25% SCSS 16.81% EJS 5.38% Procfile 0.01%
markdown editor ide blog blogging writing nodejs node javascript md

dillinger's Introduction

Dillinger

The Last Markdown Editor, Ever

N|Solid

Build Status

Dillinger is a cloud-enabled, mobile-ready, offline-storage compatible, AngularJS-powered HTML5 Markdown editor.

  • Type some Markdown on the left
  • See HTML in the right
  • ✨Magic ✨

Features

  • Import a HTML file and watch it magically convert to Markdown
  • Drag and drop images (requires your Dropbox account be linked)
  • Import and save files from GitHub, Dropbox, Google Drive and One Drive
  • Drag and drop markdown and HTML files into Dillinger
  • Export documents as Markdown, HTML and PDF

Markdown is a lightweight markup language based on the formatting conventions that people naturally use in email. As John Gruber writes on the Markdown site

The overriding design goal for Markdown's formatting syntax is to make it as readable as possible. The idea is that a Markdown-formatted document should be publishable as-is, as plain text, without looking like it's been marked up with tags or formatting instructions.

This text you see here is actually written in Markdown! To get a feel for Markdown's syntax, type some text into the left window and watch the results in the right.

Tech

Dillinger uses a number of open source projects to work properly:

And of course Dillinger itself is open source with a public repository on GitHub.

Installation

Dillinger requires Node.js v10+ to run.

Install the dependencies and devDependencies and start the server.

cd dillinger
npm i
node app

For production environments...

npm install --production
NODE_ENV=production node app

Plugins

Dillinger is currently extended with the following plugins. Instructions on how to use them in your own application are linked below.

Plugin README
Dropbox plugins/dropbox/README.md
GitHub plugins/github/README.md
Google Drive plugins/googledrive/README.md
OneDrive plugins/onedrive/README.md
Medium plugins/medium/README.md
Google Analytics plugins/googleanalytics/README.md

Development

Want to contribute? Great!

Dillinger uses Gulp + Webpack for fast developing. Make a change in your file and instantaneously see your updates!

Open your favorite Terminal and run these commands.

First Tab:

node app

Second Tab:

gulp watch

(optional) Third:

karma test

Building for source

For production release:

gulp build --prod

Generating pre-built zip archives for distribution:

gulp build dist --prod

Docker

Dillinger is very easy to install and deploy in a Docker container.

By default, the Docker will expose port 8080, so change this within the Dockerfile if necessary. When ready, simply use the Dockerfile to build the image.

cd dillinger
docker build -t <youruser>/dillinger:${package.json.version} .

This will create the dillinger image and pull in the necessary dependencies. Be sure to swap out ${package.json.version} with the actual version of Dillinger.

Once done, run the Docker image and map the port to whatever you wish on your host. In this example, we simply map port 8000 of the host to port 8080 of the Docker (or whatever port was exposed in the Dockerfile):

docker run -d -p 8000:8080 --restart=always --cap-add=SYS_ADMIN --name=dillinger <youruser>/dillinger:${package.json.version}

Note: --cap-add=SYS_ADMIN is required for PDF rendering.

Verify the deployment by navigating to your server address in your preferred browser.

127.0.0.1:8000

License

MIT

Free Software, Hell Yeah!

dillinger's People

Contributors

avranju avatar benjamin-albert avatar chrismissal avatar circuitbomb avatar come-maiz avatar dasj avatar dependabot[bot] avatar dscape avatar dwaq avatar greenkeeperio-bot avatar httpete-ire avatar jbemmel avatar joemccann avatar jonbrouse avatar js-kyle avatar june07 avatar koddsson avatar misterbisson avatar mrtnbroder avatar nchammas avatar nicholasmurray avatar nmharmon8 avatar paulogdm avatar steinwaywhw avatar submitteddenied avatar swader avatar swang avatar tlongren avatar trevorah avatar uptownnickbrown avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

dillinger's Issues

parentheses in doc title breaks Dropbox saving

If you put a parentheses "()" in the title of the document, saving to Dropbox fails with "Invalid Signature". Other special chars like "{" seem to work okay. I didn't do any exhaustive testing.

Make top container auto-height

Hi,

Using a browser window of about 400px in height, you get a vertical scrollbar. Maybe you can make auto-resize and only have scrollbars on the 2 panels.

Question: Live preview performance

Hey I couldn't find your email address on github so I thought it would be most appropriate to ask my question here.

I'm trying to do a similar thing in my application, that is using editor for md and live preview on the right side. With codemirror 3 I get a little bit lag while processing the preview and displaying . I wanted to ask for a few pointers trusting in your experience with this:

  • Did you try codemirror before for dillinger and switch to ace because of CodeMirror performance issues or did you just choose ace because you were more comfortable with it or any other reason?
  • Do you handle the parsing/rendering through client side or does it request server for a rendered html then return it to the client side (I have been wondering which one would be faster for node project- to render on server, or on browser js)
  • Lastly, do you process all the text at once (like on each change on the editor rendering the whole document and putting it into the preview pane) or did you write a sweet-ass algorithm to render only changed portion of the text?

Semicolons in the codebase

Is it cool if I introduce semicolons to the codebase? I feel a bit nervous when changing things at the moment...

Shared request token across all users

The Dropbox API proxy you're using is instantiated once, so it is a de facto singleton.

Or when the GET request /oauth/dropbox is accessed, it stores the access token in this singleton.
It means that every connection to the Dropbox API will use this access token.

As a consequence, all the connected users who have already linked their Dropbox accounts (and thus passed through /oauth/dropbox and populated their req.session.dropbox container) and perform API requests will do with the access token of the latest user for which /oauth/dropbox has been run.

It is not finally not a matter of express nor Chrome only ;)
The fix is to store the access_token alongside the request_token, that is, in the session object.

The bug should be easy to reproduce with 2 dropbox accounts (A & B) and 2 browsers running dillinger running each a separate dropbox account. 1 browser <=> 1 dropbox account per dillinger.io session.
If I am right, when the user B will connect to Dillinger.io, user A will have access to B's files.

HTH,
Xavier

Fetch repos doesn't respect organization membership

First: fantastic work. And even more fantastic for making it open source.

I'm a member of a bunch of organizations (nodejitsu, flatiron, etc) and after I sign-in with Github and select "Import from Repo" it only shows a list of repositories associated with my personal Github account.

Problems installing

I followed the instructions in the README.

Start App

mwolf@mwolf-lenovo2 ~/Desktop/XportSites/newsites/dillinger $ node app

Result

fs.js:338 return binding.open(pathModule._makeLong(path), stringToFlags(flags), mode); ^ Error: ENOENT, no such file or directory '/home/mwolf/Desktop/XportSites/newsites/dillinger/plugins/dropbox/dropbox-config.json' at Object.fs.openSync (fs.js:338:18) at Object.fs.readFileSync (fs.js:182:15) at Object.<anonymous> (/home/mwolf/Desktop/XportSites/newsites/dillinger/plugins/dropbox/dropbox.js:7:37) at Module._compile (module.js:449:26) at Object.Module._extensions..js (module.js:467:10) at Module.load (module.js:356:32) at Function.Module._load (module.js:312:12) at Module.require (module.js:362:17) at require (module.js:378:17) at Object.<anonymous> (/home/mwolf/Desktop/XportSites/newsites/dillinger/routes/index.js:5:15)

Created empty config file and restarted:

`
mwolf@mwolf-lenovo2 ~/Desktop/XportSites/newsites/dillinger $ echo {}
>plugins/dropbox/dropbox-config.json

mwolf@mwolf-lenovo2 ~/Desktop/XportSites/newsites/dillinger $ node app
fs.js:338

`

Result

return binding.open(pathModule._makeLong(path), stringToFlags(flags), mode); ^ Error: ENOENT, no such file or directory '/home/mwolf/Desktop/XportSites/newsites/dillinger/plugins/github/github-config.json' at Object.fs.openSync (fs.js:338:18) at Object.fs.readFileSync (fs.js:182:15) at Object.<anonymous> (/home/mwolf/Desktop/XportSites/newsites/dillinger/plugins/github/github.js:5:36) at Module._compile (module.js:449:26) at Object.Module._extensions..js (module.js:467:10) at Module.load (module.js:356:32) at Function.Module._load (module.js:312:12) at Module.require (module.js:362:17) at require (module.js:378:17) at Object.<anonymous> (/home/mwolf/Desktop/XportSites/newsites/dillinger/routes/index.js:6:14)

Created empty config and restarted:

`
mwolf@mwolf-lenovo2 ~/Desktop/XportSites/newsites/dillinger $ echo {} >plugins/github/github-config.json

mwolf@mwolf-lenovo2 ~/Desktop/XportSites/newsites/dillinger $ node app
`

Result

events.js:71
throw arguments[1]; // Unhandled 'error' event
^
Error: listen EACCES
at errnoException (net.js:770:11)
at Server._listen2 (net.js:893:19)
at listen (net.js:937:10)
at Server.listen (net.js:986:5)
at Object. (/home/mwolf/Desktop/XportSites/newsites/dillinger/app.js:137:24)
at Module._compile (module.js:449:26)
at Object.Module._extensions..js (module.js:467:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Module.runMain (module.js:492:10)
`

Set port in environment and restarted

'
mwolf@mwolf-lenovo2 ~/Desktop/XportSites/newsites/dillinger $ export PORT=2222
mwolf@mwolf-lenovo2 ~/Desktop/XportSites/newsites/dillinger $ node appExpress server

Result

listening on port 2222

Navigate to localhost:2222

In browser

Express 500 Error: Failed to lookup view "error" at Function.app.render (/home/mwolf/Desktop/XportSites/newsites/dillinger/node_modules/express/lib/application.js:493:17) at ServerResponse.res.render (/home/mwolf/Desktop/XportSites/newsites/dillinger/node_modules/express/lib/response.js:753:7) at exports.index.isReadyAsync (/home/mwolf/Desktop/XportSites/newsites/dillinger/routes/index.js:33:20) at Request.exports.Dropbox.getNewRequestToken [as _callback] (/home/mwolf/Desktop/XportSites/newsites/dillinger/plugins/dropbox/dropbox.js:35:22) at Request.init.self.callback (/home/mwolf/Desktop/XportSites/newsites/dillinger/node_modules/request/main.js:122:22) at Request.EventEmitter.emit (events.js:96:17) at Request.init (/home/mwolf/Desktop/XportSites/newsites/dillinger/node_modules/request/main.js:137:17) at new Request (/home/mwolf/Desktop/XportSites/newsites/dillinger/node_modules/request/main.js:105:8) at request (/home/mwolf/Desktop/XportSites/newsites/dillinger/node_modules/request/main.js:995:11) at Function.request.post (/home/mwolf/Desktop/XportSites/newsites/dillinger/node_modules/request/main.js:1048:10)

In terminal:

mwolf@mwolf-lenovo2 ~/Desktop/XportSites/newsites/dillinger $ node app Express server listening on port 2222 Error: Failed to lookup view "error" at Function.app.render (/home/mwolf/Desktop/XportSites/newsites/dillinger/node_modules/express/lib/application.js:493:17) at ServerResponse.res.render (/home/mwolf/Desktop/XportSites/newsites/dillinger/node_modules/express/lib/response.js:753:7) at exports.index.isReadyAsync (/home/mwolf/Desktop/XportSites/newsites/dillinger/routes/index.js:33:20) at Request.exports.Dropbox.getNewRequestToken [as _callback] (/home/mwolf/Desktop/XportSites/newsites/dillinger/plugins/dropbox/dropbox.js:35:22) at Request.init.self.callback (/home/mwolf/Desktop/XportSites/newsites/dillinger/node_modules/request/main.js:122:22) at Request.EventEmitter.emit (events.js:96:17) at Request.init (/home/mwolf/Desktop/XportSites/newsites/dillinger/node_modules/request/main.js:137:17) at new Request (/home/mwolf/Desktop/XportSites/newsites/dillinger/node_modules/request/main.js:105:8) at request (/home/mwolf/Desktop/XportSites/newsites/dillinger/node_modules/request/main.js:995:11) at Function.request.post (/home/mwolf/Desktop/XportSites/newsites/dillinger/node_modules/request/main.js:1048:10) Evernote not implemented yet. Google Drive not implemented yet. GET / 500 75ms

That's where I've run out of creativity.

What do I do next??

Bug

The following does not produce correct output (something is weird with the link being produced after the 'Z':

 ---
 layout: post
 title: Learning Javascript
 date: 2012-06-23 16:31
 tags: javascript, node.js, coffeescript

 ---

 [node.js]: http://bit.ly/MLZgnQ (http://nodejs.org/)


bla [node.js]

It produces this:

layout: post
title: Learning Javascript
date: 2012-06-23 16:31
tags: javascript, node.js, coffeescript

gnQ (http://nodejs.org/)

bla node.js

It should produce something like this:

layout: post
title: Learning Javascript
date: 2012-06-23 16:31
tags: javascript, node.js, coffeescript

bla node.js

&lt;

by writing &lt; i get the < right there instead. I mean on the left side, not the markdown output.

Might be a bug if not feature.

Show current theme in Theme Selector

Small feature request:

Show the currently active theme in the Theme Selector dropdown. I found the theme I like by randomly clicking for a while, so now I have no idea which one it is. How will I tell everybody I know?!

(kudos on this great tool, btw)

etherpad-like collaborative editing

Well... it would create pretty much the greatest thing since sliced bread if one could use dillinger to collaborative edit markdown-documents.

..BUT: the current Backend that etherpad, etherpad lite and the likes use is slow and buggy as hell.
If you don't want to restart the server every day then this approach is probably not what you want to implement.

Preview Design

Why are there only themes for the editor? There should be themes for the live preview as well. The default design is really fugly! ^^

…but otherwise great website! ;-)

npm install didn't work with Node 0.6.1

npm ERR! error installing [email protected] Error: [email protected] preinstall: `make || gmake`
npm ERR! error installing [email protected] `sh "-c" "make || gmake"` failed with 2
npm ERR! error installing [email protected]     at ChildProcess.<anonymous> (/usr/local/lib/node_modules/npm/lib/utils/exec.js:49:20)
npm ERR! error installing [email protected]     at ChildProcess.emit (events.js:70:17)
npm ERR! error installing [email protected]     at maybeExit (child_process.js:359:16)
npm ERR! error installing [email protected]     at Process.onexit (child_process.js:395:5)
[...]
npm ERR! [email protected] preinstall: `make || gmake`
npm ERR! `sh "-c" "make || gmake"` failed with 2
npm ERR! 
npm ERR! Failed at the [email protected] preinstall script.
npm ERR! This is most likely a problem with the hiredis package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     make || gmake
npm ERR! You can get their info via:
npm ERR!     npm owner ls hiredis
npm ERR! There is likely additional logging output above.
npm ERR! 
npm ERR! System Darwin 10.8.0
npm ERR! command "node" "/usr/local/bin/npm" "install" "-d"
npm ERR! cwd /Users/FG/Dropbox/dillinger
npm ERR! node -v v0.6.1
npm ERR! npm -v 1.0.104
npm ERR! code ELIFECYCLE

What version of node did you used ?

Support for kramdown

Hi,

Could it be possible that we use an alternate markdown parser like kramdown or that we provide an option to switch from markdown to kramdown, ... ?

Regards,

Charles

markdown source formatting

Editing using Mou.app I get some pretty badass formatting of my markup...

omg

I know we're using Ace editor here but I'm curious if anything similarly can be done.

Also again, not your fault, but the markdown syntax highlighting in ace could use some improvement so headlines are a diff color than body text, etc.

❤️

Support DropBox Save via the Keyboard

@joemccann I love your app/tech stack, great job! One thing I found to make it even better for developers is to support saving to dropbox via the keyboard (CMD + S on MAC). Let me know your thoughts. I would also be willing to send you PR for this feature if you have too much on your plate. Thanks!

node app.js generates error

Hi,

When startting node app.js, the following error is generated within the console on my MacOS

Progresss-MacBook-Pro:dillinger chmoulli$ node app.js
The "sys" module is now called "util". It should have a similar interface.
Exception in cluster master process: listen EACCES
Error: listen EACCES
at errnoException (net.js:616:11)
at Array.2 (net.js:702:28)
at EventEmitter._tickCallback (node.js:192:40)

Regards,

Charles

Dropbox error "This session has expired"

I'm geting this error when Linking up Dropbox.

Link with Dropbox Error

Slightly confused and I've checked under Account > My Apps and Dillinger does not show up.

EDIT (12/26/11): Inserted image into issue

Main interface fails to display in Firefox 18.0a1/Linux

After initial page load, the #loading element is not removed from the DOM and the .bye class is not removed from the #main element, leaving a blank screen. Deleting these two things by hand makes the interface usable. I suspect the transitionend event isn't firing.

Dillinger is dying on startup

JavaScript error:

Uncaught TypeError: Cannot read property 'webkit' of undefined
at
dependencies-0.3.1-6.min.js:19

Cheat sheet

I love to have a cheat sheet in the official release/ on dilliger.io. Another floating window that spells out markdown syntax, especially for markdown newbies.

Make Github, Dropbox and Future Networks Modular

Right now, in order to get up and running with dillinger one needs to create apps on Github and Dropbox. This is unacceptable and is an architectural design flaw in the application.

At the beginning, I only needed Github support to fetch markdown files from my repo so I just threw it in. But as I want to now scale up the number of networks and make it easier to spin up one's own instance of dillinger without those external dependencies, moving to modularized code is necessary.

Loosely coupled services is the way to go. Top priority at the moment.

Dropbox plugin broken?

Hey,

nice work on dillinger! Sadly I've run into a few issues.

I've spend quite some time investigating dillinger and it's inner workings and wanted to use it's Dropbox save functionality.
The online version dillinger.io does not seem to work with Dropbox, although it tells me that it saves files, but nothing shows up in my Dropbox.

I debugged a local installation using node 0.8.17 running perfectly fine on a Raspberry Pi and it seems that the getRemoteAccessToken method in plugins/dropbox/dropbox.js is not working as it should.

If I log the data when dillinger tries to get the account information I apparently have no valid access token.

Got account info!
{ error: 'Access token not found.' }
User undefined is now authenticated.

I looked deeper into the issue and changed the method a tiny bit to get the entire response of the getRemoteAccessToken method like this:

   getRemoteAccessToken: function(access_token, request_token_secret, cb){
      console.log("Get remote Access Token");
      var url = dropbox_config.access_token_url
        , oauth = { 
                    consumer_key: dropbox_config.app_key
                  , consumer_secret: dropbox_config.app_secret
                  , token: access_token
                  , token_secret: request_token_secret
                  }
        console.log("Access Token:" + access_token);
        console.log("token_secret:" + request_token_secret);
        console.log("url:" + url);
      // Create your auth_url for the view   
      request.get({url:url, oauth:oauth}, function (e, r, d) {

        if(e) return cb(e,null)
        console.log(r);
        return cb(null,qs.parse(d))

      }) // end request.get()

    }, // end getRemoteAccessToken()

The log in the console reveals this interesting bit:

authorizationError: 'Hostname/IP doesn\'t match certificate\'s altnames' },
     parser:
      { _headers: [],
        _url: '',
        onHeaders: [Function: parserOnHeaders],
        onHeadersComplete: [Function: parserOnHeadersComplete],
        onBody: [Function: parserOnBody],
        onMessageComplete: [Function: parserOnMessageComplete],
        socket: [Object],
        incoming: [Circular],
        maxHeaderPairs: 2000,
        onIncoming: [Function: parserOnIncomingClient] },
     res: [Circular] },
  body: '{"error": "OAuthError in API v1+. Request mis-signed: Invalid or missing signature"}' }

I googled around and found this issue with node 4592 which might be related. Most curiously I got the dropbox sync working two times and everything went smoothly but I was not able to reproduce it consistently.

I'll test node 0.10 soon, if anybody has any further clues I would be glad to get help - I'm quite new to node.js. Also it might be a good idea to fix dillinger if it turns out to be a version related issue it should be quick.

install eror

I use ubuntu 12.04

I follow the steps, and results in:
huangkun@sbLenovo:/celtics/dillinger$ npm i
npm http GET https://registry.npmjs.org/smoosh
npm http 200 https://registry.npmjs.org/smoosh
npm http GET https://registry.npmjs.org/smoosh/-/smoosh-0.4.0.tgz
npm http 200 https://registry.npmjs.org/smoosh/-/smoosh-0.4.0.tgz
npm http GET https://registry.npmjs.org/jshint
npm http GET https://registry.npmjs.org/rimraf
npm http GET https://registry.npmjs.org/uglify-js
npm http GET https://registry.npmjs.org/sqwish
npm http 200 https://registry.npmjs.org/sqwish
npm http GET https://registry.npmjs.org/sqwish/-/sqwish-0.2.1.tgz
npm http 200 https://registry.npmjs.org/rimraf
npm http GET https://registry.npmjs.org/rimraf/-/rimraf-2.1.4.tgz
npm http 200 https://registry.npmjs.org/jshint
npm http GET https://registry.npmjs.org/jshint/-/jshint-1.0.0.tgz
npm http 200 https://registry.npmjs.org/uglify-js
npm http GET https://registry.npmjs.org/uglify-js/-/uglify-js-1.3.4.tgz
npm http 200 https://registry.npmjs.org/sqwish/-/sqwish-0.2.1.tgz
npm http 200 https://registry.npmjs.org/rimraf/-/rimraf-2.1.4.tgz
npm http 200 https://registry.npmjs.org/jshint/-/jshint-1.0.0.tgz
npm http 200 https://registry.npmjs.org/uglify-js/-/uglify-js-1.3.4.tgz
npm http GET https://registry.npmjs.org/graceful-fs
npm http GET https://registry.npmjs.org/shelljs
npm http GET https://github.com/ariya/esprima/tarball/master
npm http GET https://registry.npmjs.org/underscore
npm http GET https://registry.npmjs.org/peakle
npm http GET https://registry.npmjs.org/cli/0.4.3
npm http GET https://registry.npmjs.org/minimatch
npm http 200 https://registry.npmjs.org/graceful-fs
npm http GET https://registry.npmjs.org/graceful-fs/-/graceful-fs-1.2.0.tgz
npm http 200 https://registry.npmjs.org/peakle
npm http GET https://registry.npmjs.org/peakle/-/peakle-0.0.1.tgz
npm http 200 https://registry.npmjs.org/graceful-fs/-/graceful-fs-1.2.0.tgz
npm http 200 https://registry.npmjs.org/cli/0.4.3
npm http GET https://registry.npmjs.org/cli/-/cli-0.4.3.tgz
npm http 200 https://registry.npmjs.org/underscore
npm http GET https://registry.npmjs.org/underscore/-/underscore-1.4.4.tgz
npm http 200 https://registry.npmjs.org/peakle/-/peakle-0.0.1.tgz
npm http 200 https://registry.npmjs.org/minimatch
npm http 200 https://registry.npmjs.org/cli/-/cli-0.4.3.tgz
npm http GET https://registry.npmjs.org/minimatch/-/minimatch-0.2.11.tgz
npm http 200 https://registry.npmjs.org/shelljs
npm http GET https://registry.npmjs.org/shelljs/-/shelljs-0.1.2.tgz
npm http 200 https://registry.npmjs.org/underscore/-/underscore-1.4.4.tgz
npm http 200 https://github.com/ariya/esprima/tarball/master
npm http 200 https://registry.npmjs.org/minimatch/-/minimatch-0.2.11.tgz
npm http 200 https://registry.npmjs.org/shelljs/-/shelljs-0.1.2.tgz
npm http GET https://registry.npmjs.org/lru-cache
npm http GET https://registry.npmjs.org/sigmund
npm http GET https://registry.npmjs.org/glob
npm http 200 https://registry.npmjs.org/sigmund
npm http GET https://registry.npmjs.org/sigmund/-/sigmund-1.0.0.tgz
npm http 200 https://registry.npmjs.org/lru-cache
npm http GET https://registry.npmjs.org/lru-cache/-/lru-cache-2.2.2.tgz
npm http 200 https://registry.npmjs.org/glob
npm http GET https://registry.npmjs.org/glob/-/glob-3.1.21.tgz
npm http 200 https://registry.npmjs.org/sigmund/-/sigmund-1.0.0.tgz
npm http 200 https://registry.npmjs.org/lru-cache/-/lru-cache-2.2.2.tgz
npm http 200 https://registry.npmjs.org/glob/-/glob-3.1.21.tgz
npm http GET https://registry.npmjs.org/inherits
npm http GET https://registry.npmjs.org/graceful-fs
npm http 304 https://registry.npmjs.org/graceful-fs
npm http 200 https://registry.npmjs.org/inherits
npm http GET https://registry.npmjs.org/inherits/-/inherits-1.0.0.tgz
npm http 200 https://registry.npmjs.org/inherits/-/inherits-1.0.0.tgz
npm WARN prefer global [email protected] should be installed with -g
[email protected] ./node_modules/smoosh
├── [email protected]
├── [email protected]
├── [email protected] ([email protected])
└── [email protected]
huangkun@sbLenovo:
/celtics/dillinger$
huangkun@sbLenovo:/celtics/dillinger$ mkdir -p public/files/md
huangkun@sbLenovo:
/celtics/dillinger$ mkdir -p public/files/html
huangkun@sbLenovo:~/celtics/dillinger$ node app

node.js:201
throw e; // process.nextTick error, or 'error' event on first tick
^
TypeError: Object # has no method 'existsSync'
at Object. (/home/huangkun/celtics/dillinger/plugins/dropbox/dropbox.js:12:7)
at Module._compile (module.js:441:26)
at Object..js (module.js:459:10)
at Module.load (module.js:348:32)
at Function._load (module.js:308:12)
at Module.require (module.js:354:17)
at require (module.js:370:17)
at Object. (/home/huangkun/celtics/dillinger/routes/index.js:5:15)
at Module._compile (module.js:441:26)
at Object..js (module.js:459:10)

what's the anonymous? Should I link to dropbox first? or something else?

Feature Request: Wiki page editing

Would it be possible for you to add wiki page repo option when importing from github? I would love to make this my full github editor 😄

node build.js fails

Hi,

When I try to build dillinger code on my Mac, I get this error :

$ node build.js
/public/css/variables.styl file image prefix written successfully for production environment.

/Users/chmoulli/repositories/GitHub/dillinger/build.js:46
if (err) throw err
^
ParseError: /Users/chmoulli/repositories/GitHub/dillinger/public/css/variables.styl:4
1| // ============== NOTE: MOST OF THIS SHIT FROM TWITTER'S BOOTSTRAP ISN'T USED,
2| // ============== BUT I'M LEAVING IT HERE IN CASE YOU WANT TO USE IT LATER
3|

4| // sent pull request to be added to core, but in the meantime it is here
5| // these methods aren't in stylus yet so I wrote them here:
6| spin(color, amount)
7| h = hue(color)

unexpected "indent"

at Parser.error (/Users/chmoulli/local/node/lib/node_modules/stylus/lib/parser.js:166:11)
at Parser.stmt (/Users/chmoulli/local/node/lib/node_modules/stylus/lib/parser.js:573:32)
at Parser.statement (/Users/chmoulli/local/node/lib/node_modules/stylus/lib/parser.js:457:21)
at Parser.parse (/Users/chmoulli/local/node/lib/node_modules/stylus/lib/parser.js:145:23)
at Evaluator.visitImport (/Users/chmoulli/local/node/lib/node_modules/stylus/lib/visitor/evaluator.js:659:20)
at Evaluator.<anonymous> (/Users/chmoulli/local/node/lib/node_modules/stylus/lib/visitor/index.js:28:39)
at Evaluator.visit (/Users/chmoulli/local/node/lib/node_modules/stylus/lib/visitor/evaluator.js:75:18)
at Evaluator.visitRoot (/Users/chmoulli/local/node/lib/node_modules/stylus/lib/visitor/evaluator.js:508:27)
at Evaluator.<anonymous> (/Users/chmoulli/local/node/lib/node_modules/stylus/lib/visitor/index.js:28:39)
at Evaluator.visit (/Users/chmoulli/local/node/lib/node_modules/stylus/lib/visitor/evaluator.js:75:18)

Regards,

Charles

No Escaping of HTML

I paste in the snippet:

3 backticks "html"
some html source with script tags
3 backticks

Instead of escaping the html, it puts it in the editor unescaped and gets parsed as HTML and the script loads and it just so happens that it breaks the loading sequence of dillinger, so its all saved instantly in a local cache (i presume), so upon refresh dillinger.io is irreversibly completely broken.

Escaping all HTML would solve this 😄

Improper parsing of extension?

I have a file in my github repo named foo-0.2.md, and it's not showing up when I try to open a file from the repo. The rest show up fine -- I'm guessing the issue is that there's more than one . in the filename?

No 'clear' button on dillinger.io

dillinger.io states 'Get started by clearing the text with the button 'Clear' in the top navigation.' but there is no 'Clear' button. Otherwise great product, thanks a lot and KUTGW!

Feature Request: Remark Support

Remark is "a simple, in-browser, markdown-driven slideshow tool." There is already a project somewhat similar to Dillinger which supports it, called Markdowner, but I like Dillinger and would like to see if it could support Remark as well.

Connection to password-protected redis instance doesn't work

If i delete the password protection in my redis instance everything works fine, but as i use it for other software, i really need it to be password protected.

I tried a

redisClient.on("connect", function (err){ redisClient.auth("PASSWORD", function (err) { }); });

in initRedis() but it's my first node-approach and i couldn't make it work :)

Any element is not clickeable in opera browser, css bugs.

When the loading transition ends, any element cannot be clickeable, the transition element stills present over all the other elements.

Also there is a CSS bug, the navbar is over the title document box, height looks bigger than other browsers.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.