Git Product home page Git Product logo

dashing's Introduction

Dashing: Generate Dash documentation from HTML

Stability: Maintenance

Dashing is a general purpose tool for starting with some HTML documentation and generating Dash documentation.

Dashing uses CSS3 selectors to tag an HTML document for import into Dash. It generates a complete docset for you.

This supports the following Dash features:

  • Index pages
  • Custom icon
  • Table of Contents auto-generation

See: https://kapeli.com/docsets

INSTALL

There are several ways to install this program.

For most people, the easiest way is through Homebrew:

brew install dashing

Or MacPorts:

sudo port install dashing

Prebuilt OSX 64-bit binaries are also available here: https://github.com/technosophos/dashing/releases

If you have Go 1.4 or later installed, simply run:

go get -u github.com/technosophos/dashing

Dashing will now be located at $GOPATH/bin/dashing.

A prebuilt binary is also available as a GitHub release.

USAGE

To get started, cd to the directory that you want to generate documentation inside.

$ cd mydocs
$ dashing create
# Now you can edit dashing.json. See below.
$ dashing build mydocs

You will now have a directory called mydocs.docset that contains all the documentation you need for Dash.

For more, run dashing help.

dashing.json Format

The basic Dashing format looks like this:

{
    "name": "Dashing",
    "package": "dashing",
    "index":"index.html",
    "icon32x32": "icon.png",
    "externalURL": "https://github.com/technosophos/dashing",
    "selectors": {
        "dt a": "Command",
        "title": "Package"
    },
    "ignore": [
        "ABOUT"
    ]
}
  • name: Human-oriented name of the package
  • package: Computer-oriented name of the package (one word recommended)
  • index: Default index file in the existing docs
  • icon32x32: a 32x32 pixel PNG icon
  • externalURL: the base URL of the docs
  • selectors: a map of selectors. There is a simple format and a more advanced format (see below for details).
  • ignore: a list of matches to be ignored (see below)

Dashing uses CSS 3 selectors to map patterns in a document to Dash sections. You tell Dashing which patterns in HTML map to which Dash data type. The list of Dash data types can be found here: https://kapeli.com/docsets#supportedentrytypes.

{
  "selectors": {
    "h1 a": "Package",
    "h2.classdef a": "Class",
  }
}

The above will look for h1 a combinations, and treat those as package definitions, and h2 class="classdef" a combinations and treat those as Class definitions.

Ignoring Sections You Don't Care About

On occasion, you'll have to manually ignore some matched text bits. To do that, you can use the ignores directive in the JSON file:

{
  "selectors": {
    "h1 a": "Package",
    "h2.classdef a": "Class",
  },
  "ignore": ["DESCRIPTION", "MORE"]
}

The above will ignore anything whose text matches the exact text "DESCRIPTION" or "MORE", even if the selectors match.

Other Mappers/Filters on Selectors

Instead of using a simple mapping of selector to type, you have the option to map/filter the selected results.

The format for this extended type of selectors looks like this:

{
    "name": "BusyBox",
    "package":"busybox",
    "index":"BusyBox.html",
    "icon32x32":"busybox1.png",
    "selectors": {
        "dt a": "Command",
        "title": {
          "type":"Package",
          "regexp": " - The Swiss Army Knife of Embedded Linux",
          "replacement": "",
          "matchpath": "doc/.*\\.html"
        }
    },
    "ignore": [
        "ABOUT"
    ]
}

The format of the selector value is:

"css selector": {
      "requiretext": "require that the text matches a regexp. If not, this node is not considered as selected",
      "type": "Dash data type",
      "attr": "Use the value of the specified attribute instead of html node text as the basis for transformation",
      "regexp": "PCRE regular expression (no need to enclose in //)",
      "replacement": "Replacement text for each match of 'regexp'",
      "matchpath": "Only files matching this regular expression will be parsed. Will match all files if not set."
}

And you can have multiple transformations specified for the same css selector:

"css selector": [
    {
        "requiretext": "...",
        "type": "..."
    },
    {
        "requiretext": "...",
        "type": "..."
    }
]

The above allows you to fine tweak nodes selected via css selectors using their text contents.

Full documentation on the regular expression format can be found here: http://golang.org/pkg/regexp/syntax/

Documentation on the format for replacement can be found here: http://golang.org/pkg/regexp/#Regexp.ReplaceAllString

dashing's People

Contributors

acburdine avatar akronix avatar amake avatar antiagainst avatar cvogt avatar ecerulm avatar eostrom avatar fred-o avatar j3lamp avatar jimmylv avatar max13 avatar ppwwyyxx avatar technosophos avatar tvolkert avatar ylluminarious 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

dashing's Issues

No support for regex \Q \E

I'm trying to remove a item in an html docset marked ' ^TOP^' the PCRE expression \Q ^TOP^\E is seen as invalid

"selectors": {
        "h3.hbH3": {
                "requiretext": ".* Function",
                "type": "Function",
                "regexp": "\Q ^TOP^\E",
                "replacement": ""
        },

The terminal output produced is
Failed to parse JSON: invalid character 'Q' in string escape code%

Also attempting to escape with just \ does not work (i.e., \^TOP\^

Add a way to register template dashing.json files

My particular use case is generating Dash documentation for Rust crates. Since rust doc uses a standard structure, I have a common set of selectors and options that I want to use whenever generating these docs. It would be nice to have a way to register dashing.json files that could be used as optional defaults when running dashing create. For example:

dashing create --template rustdoc

Thanks for building a really useful tool!

Add support for several regex replacements to the config

It would be nice to offer a way in the json config of the dashing tool to configure the preprocessing of the input data with several regex replacements instead of just one, and/or some shorthands for commons things like remove line feeds.

Members of top-level classes in Flutter's documentation don't get indexed correctly

We received the following issue (flutter/flutter#47553):

Flutter's Dash docset does not properly index members of top-level elements (classes, enums).

To demonstrate, we can look at how Dash indexes dart:core through its native Dartdoc support.

I bring up Dash, type RegExp., and see that the class and its members are enumerated:

Screen Shot 2019-12-20 at 2 06 54 PM

Now, the same with the Flutter docset (which also indexes RegExp):

Screen Shot 2019-12-20 at 2 08 12 PM

No members found.

But the type is indexed, here's what we see when we remove the trailing .:

Screen Shot 2019-12-20 at 2 09 52 PM

Class and constructor descriptions.

We aren't seeing the members because Flutter's SQLite index is malformed. Instead of including a fully-qualified name of each member, it includes a simple identifier.

Compare:

Screen Shot 2019-12-20 at 2 14 45 PM

with Dash's native dartdoc support:

Screen Shot 2019-12-20 at 2 12 37 PM

We're not sure whether we're holding dashing incorrectly or if it's something dashing doesn't support. Any ideas?

Argument for building docset results in different directory

Currently a docset is constructed in the current working directory. You can specify the source directory with a -s (or --source) flag, but not the destination.

Proposed: -d

(or --dest ) directory. Recursively create directory path to location if it does not exist.

Should be relatively straight-forward to add the switch to the 'build' command and then concatenating it with the docset dirname when calling the os.MkdirAll

spaces as %20

I don't know why, but in the lower left corner view, where the sections of the currently opened page show up, all spaces are replaced by %20, same in the breadcrumb navigation on top. In other places like the normal tree on the left, the spaces are correct. The SQLite database looks fine as well. I can't tell a difference to the docsets that comes with dash. It's weird

index

I noticed other docsets have indices on their sqlite databases. I am not sure if that makes a performance difference, but it might be worth investigating

How to set the DashDocSetFallbackURL key in the docset's Info.plist?

How can I set the DashDocSetFallbackURL key in the docset's Info.plist? I don't see documentation on this.

The following is from Dash documentation:

https://kapeli.com/docsets#onlineRedirection

Support Documentation Online Redirection

Starting with version 3.0, Dash users can open the online version of pages inside docsets. To do that, Dash needs to know where to find the online pages for your docset.

You have 2 options to support online redirection:

Set the DashDocSetFallbackURL key in your docset's Info.plist. The value should be the base URL of the docs. Example: https://docs.python.org/3/library/
Alternatively, add a HTML comment inside each and every HTML file of your docset. The comment needs to be added next to the tag of the pages and should look like this:

<html><!-- Online page at https://docs.python.org/3/library/intro.html -->

dashing generating an empty docset

I'm playing with dashing to generate a docset automatically for this URL: https://www.lusternia.com/local/webolc/manual.html#idm154

Here's my dashing.json:

{
    "name": "Lusternia Prog",
    "package": "lusterniaprog",
    "index": "index.html",
    "selectors": {
        "title": "Package",
        "h2": "Section",
        "h3": "Class",
        "span.glossterm": "Command"
    },
    "ignore": [
        "Introduction"
    ],
    "icon32x32": "lusternia_favicon.jpeg",
    "allowJS": false,
    "ExternalURL": "https://www.lusternia.com/local/webolc/manual.html"
}

When I run dashing build lusterniaprog, it creates a lusterniaprog.docset file in the directory, but it appears to be empty when loaded into Dash. Am I misunderstanding something about how this works?

JSON Comments

Is there a Golang module that permissively parses JSON, allowing comments and trailing spaces?

If so, could such a thing be used to load dashing.json? Our configuration is getting large and unwieldy, and it'd be nice to annotate it.

can't handle section names with slashes `/` inside

I configured dashing to convert h1 into sections. If they contain / in the text, no sections are generated, but broken "Unknown" entries instead. They can only be seen in the sections pane on the lower left of dash, when on the corresponding page.

Fix homebrew formula

Hi,

building dashing from source is currently broken in homebrew:

brew install --build-from-source dashing
==> Installing dependencies for dashing: glide
==> Installing dashing dependency: glide
==> Downloading https://homebrew.bintray.com/bottles/glide-0.13.3.mojave.bottle.tar.gz
==> Downloading from https://akamai.bintray.com/79/795f7f533f050b5356846b3ed2a9db88a51ef74b929e28ea0473c83f630b03c3?__gd
######################################################################## 100.0%
==> Pouring glide-0.13.3.mojave.bottle.tar.gz
🍺  /usr/local/Cellar/glide/0.13.3: 6 files, 12.1MB
==> Installing dashing
==> Downloading https://github.com/technosophos/dashing/archive/0.3.0.tar.gz
==> Downloading from https://codeload.github.com/technosophos/dashing/tar.gz/0.3.0
######################################################################## 100.0%
==> glide install
Last 15 lines from /Users/iwittkau/Library/Logs/Homebrew/dashing/01.glide:
glide
install

[INFO]	Lock file (glide.lock) does not exist. Performing update.
[INFO]	Downloading dependencies. Please wait...
[INFO]	--> Fetching gopkg.in/yaml.v2
[INFO]	--> Fetching github.com/codegangsta/cli
[INFO]	--> Fetching github.com/mattn/go-sqlite3
[INFO]	--> Fetching golang.org/x/net
[INFO]	--> Fetching github.com/andybalholm/cascadia
[INFO]	Resolving imports
[INFO]	--> Fetching github.com/cpuguy83/go-md2man
[ERROR]	Error scanning github.com/cpuguy83/go-md2man/v2/md2man: cannot find package "." in:
	/Users/iwittkau/Library/Caches/Homebrew/glide_home/dashing/cache/src/https-github.com-cpuguy83-go-md2man/v2/md2man
[ERROR]	Failed to retrieve a list of dependencies: Error resolving imports

Looks like github.com/cpuguy83/go-md2man/v2/md2man isn't available anymore.

Can you please fix your glide dependencies? Without a fix of the dashing formula we won't be able to merge Homebrew/homebrew-core#47510 and update the go formula to 1.13.5.

I already tried to fix another error here: Homebrew/homebrew-core#47842 but that didn't fix the broken glide build process of course.

selector: pasing qoutes in json string

Hi

I am trying to create a docset using dashing. My source html files have many class patterns. So i would like to change the "selectors" in json. But json has a string value format and the pattern that I want to match contains quotes, see code below. The entry I would like to see in dash.docset is getDescription and getExtraInfo from the html below

<tr class="memitem:aca99d01db1cef4b261dccc86da5523d7"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="classGKTSDescription.html">GKTSDescription</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classGKTimeSerie.html#aca99d01db1cef4b261dccc86da5523d7">getDescription</a> () const</td></tr>
--
  | <tr class="separator:aca99d01db1cef4b261dccc86da5523d7"><td class="memSeparator" colspan="2">&#160;</td></tr>
  | <tr class="memitem:a7387ac98f82fae5ed21990eabfa9a074"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classGKTimeSerie.html#a80221b55251c17773951ff42bb3835c5">ExtraInfo</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classGKTimeSerie.html#a7387ac98f82fae5ed21990eabfa9a074">getExtraInfo</a> () const</td></tr>

I tried selectors with escape character \ before " , see code below

{
    "name": "Dashing",
    "package": "dashing",
    "index": "index.html",
    "selectors": {
        "h2 class=\"memtitle": "Command",
        "tr class=\"memitem": "Function"
    },
    "ignore": [
        "ABOUT"
    ],
    "icon32x32": "",
    "allowJS": false,
    "ExternalURL": ""
}

I get the following error when building docset

panic: parsing "h2 class=\"memtitle": 10 bytes left over

How do I resolve this issue?

Thank you.

Messy titles

I am mirroring websites and turning them into dash docs using dashing. I also had problems with websites ending headings with (e.g. http://slick.typesafe.com/doc/3.0.3/) or starting them with § (e.g. https://www.playframework.com/documentation/2.4.x/Highlights24) or putting the name of the site into the <title> tag first (e.g. http://spray.io/documentation/1.2.3/). Is there any way to clean them up? Maybe an option to detect and strip a common prefix from all elements of a certain selector would be nice.

I also had problems with websites using the same heading in their menu on every page. Sometimes tags alone aren't enough to filter them out. I can't use css selectors, right? Ignoring them each works for is very fragile against changes.

Regex negative lookahead not supported

TL;DR

I need to improve the results of a specific css selector that returns items I don't want based on a word in the captured text. In this case "release". I don't want anything with that word in the source documentation to be added as a selector.

A bit wordier

In the source documentation, my selector not only returns a nice list of "Sections", but it also returns about 200 "release notes" sections, with the same css query selector.

Essentially I have a bunch of these I want to get rid of:

2020 Release Notes
2019 Winter Release Notes
Upgrade release-notes for xyz

I don't want those to be included in the resulting docset, so I tried my hand at the regex field to return everything not including the word release:

I essentially need the opposite of this:

^.*release.*$

So, don't return anything that has the word "release" in it.

I tried the (?!) negative lookahead in regex, but I get the message:

error parsing regexp: invalid or unsupported Perl syntax: `(?!`

Is there a field in the selector object for rejecting if the title contains a word? I didn't see anything for this purpose in the README:

"css selector": {
      "requiretext": "require that the text matches a regexp. If not, this node is not considered as selected",
      "type": "Dash data type",
      "attr": "Use the value of the specified attribute instead of html node text as the basis for transformation",
      "regexp": "PCRE regular expression (no need to enclose in //)",
      "replacement": "Replacement text for each match of 'regexp'",
      "matchpath": "Only files matching this regular expression will be parsed. Will match all files if not set."
}

YUIDoc Support -- No CSS?

I'm giving this a shot, trying to put some docs that I created with YUIDoc into Dash. However, Dashing doesn't seem to copy CSS files over so things look all wrong. Does it not do that on purpose?

Matchpath doesn't work?

Hello. Thanks for the project. It's saved me a lot of work getting a docset together.

I'm trying to use the matchpath option for one of my selectors but it seems to be completely ignored. I tried passing what I thought would be an invalid regex, just to make sure the option was getting parsed but nothing happened (i.e. it didn't break).

{
    "name": "RxJS",
    "package": "rxjs",
    "index": "./rxjs/tmp/docs/index.html",
    "selectors": {
        ".self-detail.detail h1": "Class",
        ".detail h3 [data-ice='name']": "Method",
        "[data-ice='content'] > h1": {
          "type": "Guide",
          "matchpath": "docs/(test-file[|food)/.*\\.html"
        }
    },
    "ignore": [
        "ABOUT"
    ],
    "icon32x32": "./icon32x32.png",
    "allowJS": true
}

Am I missing something?

Version in usage

Version 0.0.0 looks weird :)

NAME:
   dashing - Generate Dash documentation from HTML files

USAGE:
   dashing [global options] command [command options] [arguments...]

VERSION:
   0.0.0

COMMANDS:
   build    build a doc set
   init, create create a new template for building documentation
   version  Print version and exit.
   help, h  Shows a list of commands or help for one command

GLOBAL OPTIONS:
   --help, -h       show help
   --version, -v    print the version

Adding anchors inside the matched node

While probably not the most appropriate action for all situations, the current behavior of prepending the anchors does not work for td tags, where inserting tags before that end up inside a tr, where they aren't interpreted properly by browsers (for good reason).

Currently, we post-process the html generated by dashing to fix this.

Go install not working

I'm probably doing something wrong...

What I did:

  1. Install Go from https://golang.org/dl/
  2. Run "go install gitub.com/technosophos/dashing" in Terminal
  3. Got this error:
can't load package: package http:/gitub.com/technosophos/dashing: cannot find package "http:/gitub.com/technosophos/dashing" in any of:
    /usr/local/go/src/http:/gitub.com/technosophos/dashing (from $GOROOT)
    /Users/bogdan/Desktop/go/src/http:/gitub.com/technosophos/dashing (from $GOPATH)

Is this supposed to work this way? If I need to do something extra, can you provide install instructions for someone that has never used Go before?

Relative path for css/js file

It looks like if the document uses css with absolute path, such as

 <link rel="stylesheet" href="/style.css"/>

then zeal would fail to load the css file. Change it to a relative path fix the problem.

I'm not sure if same thing happens for dash. But could there be a option in dashing to parse the html and automatically replace absolute path by relative path?
Thanks

Install instruction

I know this is dumb, but i am stuck on installation. Anyway to get a step by step instructions?

I couldn't get pre-build binary of dashing to work. So I installed Go 1.6 when I type go get -u github.com/technosophos/dashing. I get the following

package github.com/technosophos/dashing: cannot download, $GOPATH not set.

Sorry and thank you

Advanced Selector Problem on matchpath selection

Hello,
I have a small problem that drives me crazy.
I'm making a docset that contains several html files in different subfolders.
I want to use the selector to catch the H2 tags contained in sepecific html files (service-summary.html) in order to create the Services part in the docset..
According to the documentation this should work :

"H2": {
"type":"Service",
"regexp": "Service ",
"replacement": "",
"matchpath": ".*/service-summary\.html"
}
Dashing parse correctly the service-summary.html files but also all the others html files.
Is it the standard behaviour, or did I miss something in the matchpath regexp.

Go errors trying to build dashing

$ go get -u github.com/technosophos/dashing
# github.com/technosophos/dashing
../go/src/github.com/technosophos/dashing/dashing.go:92:15: cannot use commands() (type []cli.Command) as type []*cli.Command in assignment
../go/src/github.com/technosophos/dashing/dashing.go:102:4: cannot use build (type func(*cli.Context)) as type cli.ActionFunc in field value
../go/src/github.com/technosophos/dashing/dashing.go:104:19: cannot use cli.StringFlag literal (type cli.StringFlag) as type cli.Flag in array or slice literal:
	cli.StringFlag does not implement cli.Flag (Apply method has pointer receiver)
../go/src/github.com/technosophos/dashing/dashing.go:108:19: cannot use cli.StringFlag literal (type cli.StringFlag) as type cli.Flag in array or slice literal:
	cli.StringFlag does not implement cli.Flag (Apply method has pointer receiver)
../go/src/github.com/technosophos/dashing/dashing.go:117:4: cannot use update (type func(*cli.Context)) as type cli.ActionFunc in field value
../go/src/github.com/technosophos/dashing/dashing.go:119:19: cannot use cli.StringFlag literal (type cli.StringFlag) as type cli.Flag in array or slice literal:
	cli.StringFlag does not implement cli.Flag (Apply method has pointer receiver)
../go/src/github.com/technosophos/dashing/dashing.go:123:19: cannot use cli.StringFlag literal (type cli.StringFlag) as type cli.Flag in array or slice literal:
	cli.StringFlag does not implement cli.Flag (Apply method has pointer receiver)
../go/src/github.com/technosophos/dashing/dashing.go:131:4: unknown field 'ShortName' in struct literal of type cli.Command
../go/src/github.com/technosophos/dashing/dashing.go:133:4: cannot use create (type func(*cli.Context)) as type cli.ActionFunc in field value
../go/src/github.com/technosophos/dashing/dashing.go:135:19: cannot use cli.StringFlag literal (type cli.StringFlag) as type cli.Flag in array or slice literal:
	cli.StringFlag does not implement cli.Flag (Apply method has pointer receiver)
../go/src/github.com/technosophos/dashing/dashing.go:135:19: too many errors
$ go version
go version go1.13.4 darwin/amd64

(also tried against Go version 1.12.7)

dashing no longer builds

It's not possible to build dashing at the moment.I'm not a go user so I don't know what the issue could be. Perhaps a broken dependency?

root@2f9a633263bc:/go# go get -u github.com/technosophos/dashing
package github.com/urfave/cli/v2: cannot find package "github.com/urfave/cli/v2" in any of:
        /usr/local/go/src/github.com/urfave/cli/v2 (from $GOROOT)
        /go/src/github.com/urfave/cli/v2 (from $GOPATH)

Issue using pre-built OSX binary or using dashing from terminal after built with Go

I've been unable to figure out how to run dashing from one of the pre-built OSX binaries that you offer with each release. I guess maybe I'm newbie with this stuff, but the binary doesn't have any sort of extension(.pkg, .dmg?), so I'm confused as to how I'd install it?

With the Go method of building the binary, I've installed Go and ran go get -u github.com/technosophos/dashing from my terminal. While it is located in the correct place in terms of where I set my $GOPATH to, trying to run dashing in a new terminal session after the new installation via dashing create results in my shell(I use zsh) saying command not found: dashing.

What am I doing wrong??

Allow selecting link destinations in an existing table of contents

I want to make a docset from some HTML that I've scraped (naturally). All the main doc pages, no matter what Dash data type they represented, are top-level members of the same folder. So I can't distinguish data types by path.

Fortunately, these docs have a very well-formatted table of contents already. What I'd like to do is just point Dashing at those links, and have it use their href attribute as the doc page, instead of just marking that element of the ToC itself. But it doesn't seem like Dashing allows that.

(If this is already possible, please let me know. Otherwise, I'm going to poke around and see if there's any hope at me being able to contribute this change.)

Trim parsed contents

Often content in selector has spaces that not needed.
For example, in Oracle documentation error codes declared as:

<span class="msg">
<a id="sthref1939"></a> ORA-04930: open sequence number failed or initial state is valid
</span>

So in Dash I have error codes with leading space: " ORA-04930: ...".

2015-09-11 15 47 06

Docs root relative to index

Would it be possible to make the root of the docs be the location of the index file instead of the dashing.json file? I would really like to check my Dashing config into version control, but don't want to check the docs in. Also, the way that the docs are generated, the entire /docs directory is destroyed and re-generated, taking the Dashing config with it. It makes more sense IMO to allow the config file to determine where to start looking for files, and it probably makes the most sense to just default that location to the directory of the index.

add "Enable JavaScript" support.

Please just add the enable js support to dashing.json

  1. Enable JavaScript#
    By default, Dash does not allow external .js scripts. You can enable them by adding this entry to the docset's Info.plist:

isJavaScriptEnabled
After adding this entry, remove and re-add the docset in Dash's Preferences.

Homebrew formula?

This project looks really useful and it'd be nice to have convenient installation through a homebrew formula. I guess you thought about doing this in the past and I think it's a really great idea.

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.