Coder Social home page Coder Social logo

elzr / vim-json Goto Github PK

View Code? Open in Web Editor NEW

This project forked from leshill/vim-json

1.2K 1.2K 112.0 68 KB

A better JSON for Vim: distinct highlighting of keywords vs values, JSON-specific (non-JS) warnings, quote concealing. Pathogen-friendly.

License: Other

Vim Script 100.00%

vim-json's People

Contributors

akinsho avatar amadeus avatar biinari avatar elzr avatar fungusakafungus avatar inkarkat avatar jkufner avatar knowledgejunkie avatar kristijanhusak avatar leshill avatar mstrzele avatar pgilad avatar promisedlandt avatar rhysd avatar staticshock avatar strubbl 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

vim-json's Issues

Please submit for inclusion in the official runtime.

I really like your syntax plugin and all the improvements you've made; I think this should ship with Vim, as JSON now is fairly common. For Bram to accept this, the request (and commitment to maintain) must come from the plugin's author. Please consider doing so!

The inadequacy of using JavaScript syntax has recently been raised here.

conceallevel is still borky

i had to do this to get what the readme claimed was the default:

a:~/.vim/bundle/vim-json $ git diff
diff --git a/ftplugin/json.vim b/ftplugin/json.vim
index 9860127..22af6b0 100644
--- a/ftplugin/json.vim
+++ b/ftplugin/json.vim
@@ -36,3 +36,4 @@ if has('conceal')
        "maybe g:vim_json_syntax_conceal could be settable to 0,1,2 to map
        "directly to vim's conceallevels? unsure if anyone cares
 endif
+               setlocal conceallevel=0

Indent for json not valid.

Indent for json not valid.
please fixed it.

while call gg=G, the indent not valid.

{
    "2013-05-01": "worker",
    "2013-05-02": "origin",
    "2013-05-12": "mother",
    "2013-05-13": "origin"
}

Feature suggestion: Shortcuts for changing keys and values

Just stumbled over this plugin, thanks for maintaining it! Immediately after starting to use it I had the following seemingly brilliant idea:

" change the JSON key on the current line
nnoremap ck ^ci"

" change the JSON value on the current line
nnoremap cv $F"ci"

I think adding maps like this (maybe using <Leader> instead) would make a great addition to the plugin, and you could expand the idea further to maybe create text objects for JSON keys and values, and add shortcuts for other common operations (add new keys, change value type between string/array/object, etc.)

Is there a verbose option?

I'm loving your work here. :) I'd like to be able to get more feedback from Vim when I have a red higlighted area. As an example, puppet-lint vim plugin actually shows the error generated by the errant line. I'd like to have some hint from vim-json on what it expects to see. Is that already a feature I just need to activate somehow?

Thanks again for this. I'm finding I'm editing more and more JSON files, and the "wall-of-text" was making me tear out my eyes after a day of starting at them. ;)

No coherent installation instructions

The "install" links to a closed issue page full of people asking questions, and is completely lacking in the basic explanation of what we should actually do.

Please put a working and simple "how to install" instruction someplace, preferably without linking us to unknown or other tools we do not have.

there are no help docs

i'm looking for help docs to tell me how to turn off the show/hide quotations functionality.

Doesn't appear to work with Vundle

Hi, I'm a new vim user so sorry if this is a silly mistake. With Vundle installed I added

Plugin 'https://github.com/elzr/vim-json'

to my .vimrc file, wrote the file, reloaded .vimrc with :source, ran :PluginInstall and opened a json file. But I can't see any of the highlighting, warnings or concealing.

Is this something that you could help me fix? Thanks!

Add option to deactivate conceal

Hi,

I don't want the "conceal" feature in the syntax highlighting, but there seems to be no way to deactivate it other than patching the ftplugin file itself. For a plugin claiming to be pathogen-friendly, this is not a very nice behavior :)

Could you please make this behavior optional? E.g.: g:vim_json_syntax_conceal would be set to 1 if unset (so that conceal is still activated by default). And I could add "let g:vim_json_syntax_conceal = 0" in my .vimrc to avoid the default behavior.

Thanks in advance!

Plugin not load because setfiletype is ignored

Doesn't work for me. But it works when I added this to my .vimrc:

autocmd BufNewFile,BufRead *.json setlocal filetype=json

I am using gvim 7.4 on Windows 8.1.
It seems that ftdetect/json.vim is using setfiletype which is, as the document says, short for:

:if !did_filetype()
:  setlocal filetype={filetype}
:endif

And I found a filetype.vim in my $VIMRUNTIME folder, which will setf javascript to a .json file. As a result, setfiletype json in ftdetect/json.vim is ignored.
I am not very familiar with vim files, so I'm wondering if there is any reason to use setfiletype instead of setlocal filetype=?

BTW, hope this could help with #54 .

Undefined variable error for g:vim_json_warnings

I think the json.vim syntax file should be usable all by itself, and not require the other files in this repo. Currently it isn't usable like that, because on line 49 (and later on 114) there is this: if (g:vim_json_warnings == 1).

If the user hasn't predefined g:vim_json_warnings, then this causes an error message to appear. That variable is predefined in the ftplugin, but not in the syntax file itself.

I think what's needed is if exists("g:vim_json_warnings") && g:vim_json_warnings==1

missing comma syntax error

A very common mistake when editing json files, is to forget to add a comma, or to add an extra one.

vim-json already detets extra commas, but it does not detect missing ones.

Here is a minimal example of an invalid json file which is not highlighted for errors by vim-json:

{
  "object1": "value1"
  "object2": "value2"
}

Color strings differently than other value types

I would like the ability to color values of type string differently than values of other types. This would make obvious which values are strings with concealment enabled.

For example, this is GitHub's JSON highlighting:

{
    "key1":"1.0",
    "key2":1.0
}

Indent on Save?

This is more of a question than an issue, but is it possible to indent on save without losing your position in the file? I'm currently have this in my vimrc:

:autocmd BufWritePre *.json :normal gg=G

While it indents well, even if my JSON is invalid, it jumps me to the top of the buffer every time. Can this be avoided?

Thanks,
Ross

getting rid of the extra quotes at the line in focus

Hi there

I noticed that after I added this json.vim extension/syntax coloring files, now my vim is highlighting adding extra quotes "" around the element of the line in focus (the line where the cursor is).

Is there a way to stop this behaviour?

I'm running in windows 10, both gvim and vim in cygwin

Syntax colouring not working for me

I have an issue where the syntax colouring isn't working for me using vim-json. If i :setf javascript it colours, albeit unhelpfully, but when I switch back to json it gives me the white wall of text.
screenshot 2015-04-13 08 56 06

I install the plugin using NeoBundle and you can see my bundle specific vimrc here, and my more general vimrc here.

Any help would be appreciated!

Highlight escape sequences in object keys

Sample file:

{
    "a\nb\nc": "foo"
}

In the sample above, :setf javascript renders the \n using a color that differs from the surrounding string, indicating that it is an escape sequence, and not a literal '' followed by a literal 'n'. With :setf json, however, keys are always rendered using one color, hiding the fact that an escape sequence is being used.

Easy override for colors

I would like to override the colors. I'm using solarized dark and the curly braces are red, the same color as errors.

I can use something like:
hi link jsonBraces Function

but it might be nice to have an easier (and documented) way of doing this

How to install

This looks like exactly what I want--if only I didn't have to scrape the web to figure out how to install it.

Add command to convert JSON to YAML (and back again)

I often find myself with one or the other of these two formats, but it's currently requires copying and pasting the content into (typically) and online conversion thing.

My ideal scenario would be to highlight some JSON (in any type of file...ideally), type a command, and have it update the selection with the YAML (or the other way around).

Insane? Maybe. 😜

Awesome? Most definitely! 😄

Disable conceal by default

It's the only reason why I don't use this plugin in vim-polyglot.

Concealing by default is too invasive, as vim-polyglot aims to be syntax-only plugin.

Don't you think concealing disabled by default can be a better default?

Errors when loading .json file after recent commit change

Hi, after recent commit: 7d02a56 I'm getting the following errors when opening a json file:

Error detected while processing /Users/pgilad/vimfiles/bundle/vim-json/syntax/json.vim:
line   22:
E121: Undefined variable: g:vim_json_syntax_conceal
E15: Invalid expression: has('conceal') && g:vim_json_syntax_conceal == 1
line   34:
E121: Undefined variable: g:vim_json_syntax_conceal
E15: Invalid expression: has('conceal') && g:vim_json_syntax_conceal == 1

This is obviously caused by the fact that those variables have not been loaded yet (as happens in the ftplugin). Should be fixed and somehow guarded against the lack of initialization of those vars.

Trailing commas not highlighted as errors

So, my biggest mistakes when writing JSON files are forgetting closing quotes (which this library catches) and forgetting about trailing commas at the end of a list of array values or key-value pairs, which this lib unfortunately doesn't catch.

I've never written a vim syntax highlighting file before, so I'm making this an issue for now, but if I figure out how to add this feature, I'll fork and PR it. :)

autoindent issue

vim 7.2, CentOS 6. Highlighting works fine (verifying with json-test.json), but indenting just removes all indentation ... Unsure what to try or provide as info ...

tried disabling all other plugins (from Vundle) but no change.

Missing warnings for certain missing comma errors

I noticed that not all missing commas within a .json file are recognised. The following MWE contains an error (missing comma) in the value of each keyword (except for keyword '0').

{
  "0": "c",

  "a": [ 
         ["1", "2"]
         ["3", "4"]
       ],

  "b": ["1", "2" "3"],

  "c": [1,2 3]

}

For me, only the value of keyword "b" is highlighted as an error. The other errors in "a" and "c" are not highlighted. I tested this with and without colorschemes. Unfortunately I'm not experienced that much with vim so can't really fix this myself.

Some meta:

Terminal: Termite (termite v10-5-g1ac9d1d)
Vim: VIM - Vi IMproved 7.4 (2013 Aug 10, compiled Jan 2 2014 19:39:32) Included patches: 1-52

Cheers

Edit:
Installed using pathogen.
Tests done:

  • with and withouth other plugins,
  • clean vimrc, and
  • using xterm
    all the same issue

Add Info, that "conceal" is needed

I wondered, why conceal didn't work for me.
After looking through the code of this plugin, I found out, that you have to have vim compiled with the conceal feature enabled.
I didn't know of the conceal plugin before and just have been using the default MacOS vim.
To prevent others to stumble into this problem, it would be nice to present this information in some form.
Best Regards

Objects, arrays and keys are not detected

Hello,
it would be very nice to highlight object keys in different way than string values.

Example:

{
    "key": "string value"
}

The "key" and "string value" have both the same color.

To implement this it is necessary to detect array and objects correcty -- for now syntax highlight works like simple tokenizer.

This will also allow to highlight missing commas -- see bug #18.

Syntax Errors in syntax/json.vim

Here is the error that I receive when trying to get this to work.

Error detected while processing /home/jbossdev/.vim/syntax/json.vim:
line 19:
E475: Invalid argument: jsonString oneline matchgroup=Quote start=/"/ skip=/
|"/ end=/"/ concealends contains=jsonEscape
line 27:
E475: Invalid argument: jsonKeywordRegion matchgroup=Quote start=/"/ end=/"\ze
:/ concealends contained


I have attempted to manually create the files in the appropriate location ~/.vim/ as well as use the pathogen location, yet I still receive these errors.

Any thoughts?

Thanks

another missing comma error syntax

There are some error syntax which the syntax file does not warn us.
First case:

[
  { "object1": 1 }
  { "object2": 2 }
]

should be

[
  { "object1": 1 },
  { "object2": 2 }
]

Second case:

{
  "object1": []
  "object2": []
}

should be

{
  "object1": [],
  "object2": []
}

Also missing comma after literals like true/false, {}.

{
  "object1": true
  "object2": 2
}

Syntax folding not working for large JSON files.

When a file gets sufficiently large (I'm not sure of the threshold, but around 90,000 lines seems to do it (I deal with json files up to almost 800,000 lines regularly), the lowest fold seems to "eat" all folds beneath it. So once you open up the top-level fold, you'll only have, say, three folds. But the third one (at the bottom) will be 60,000 lines. In reality, there should be say 10 top level folds, but the last 6 are being eaten up by the third one. On expanding the third top-level fold, the last fold within that is the remainder of the file folded as well. This continues. It makes the syntax folding pretty unusable for 80% of the file. I've temporarily switched my vimrc to set foldmethod to indent instead, which works fine (if a bit more verbose than I wish).

Plugin Not Loading

The plugin doesn't seem to load at all. See screenshot:

screenshot from 2015-05-11 14 34 23

I've installed it using both vimogen and manually with pathogen. Here's my current .vimrc:

set nocompatible " Make vi into vim, and thus more useful
filetype indent plugin on " use the file type plugins
filetype plugin on
call pathogen#infect('~/.vim/bundle/{}') " Autoinfect with plugins!

" Set tab stops to 2 columns, rather than the default linux 8
set tabstop=2 softtabstop=2 shiftwidth=2 expandtab

" Set autoindent
set cindent
set smartindent
set expandtab
set cinkeys=0{,0},:,0#,!^F
set autoindent

" Configuration file for vim
set modelines=0     " CVE-2007-2438
"set foldmethod=syntax
set nowrap
set scrolloff=5
set sidescrolloff=5
set sidescroll=1
set backspace=indent,eol,start
set whichwrap=h,l,b,<,>,~,[,]
set iskeyword-=_
set showmode
set cursorline cursorcolumn

" Normally we use vim-extensions. If you want true vi-compatibility
" remove change the following statements
set backspace=2 " more powerful backspacing
set history=100 " keep 100 lines of history
syntax on " syntax highlighting
syntax enable
let g:solarized_termcolors=256
set t_Co=256
set background=dark
colorscheme solarized " Set the color to something decent.
highlight Normal ctermbg=NONE
highlight Comment ctermfg=30
highlight ColorColumn ctermbg=256
highlight CursorColumn ctermbg=256
highlight CursorLine ctermbg=256
set number
set relativenumber  " Set relative line numbers
set nohls   " Disable highliting of search terms.
set incsearch " Highlight as we type.
set ignorecase
set smartcase " Only ignore case if we didn't enter a capital.
set showmatch
set ruler " Add a ruler status bar.
" Set the statusline with all the things.
set statusline=%F%m%r%h%w\ [FORMAT=%{&ff}]\ [TYPE=%Y]\ [ASCII=\%03.3b]\ [HEX=\%02.2B]\ [POS=%04l,%04v][%p%%]\ [LEN=%L]\ 
set statusline+=%{exists('g:loaded_fugitive')?fugitive#statusline():''}
set laststatus=2
set nopaste " Disallow normal pasting by default
set colorcolumn=80,100 " Adding a ruler for the last usable line before 80.
set list
set title
set listchars=eol:↵,tab:»·,trail:·
"set timeout timeoutlen=1 ttimeoutlen=1
set ttyfast
set linebreak
set mouse=a
set ttymouse=xterm2
set nowrap
set clipboard=unnamed

" Airline
let g:airline_powerline_fonts = 1

" Don't insert a new comment line when I use enter or o/O.
autocmd FileType * setlocal formatoptions-=r formatoptions-=o

" Duh.  Should be default.
command! Q q
command! W w

let g:html_intdent_tags='li\|p'

" Resize splits if the window is resized
au VimResized * exe "normal! \<c-w>="

" Make paren matching clearer
hi MatchParen cterm=none ctermbg=black ctermfg=yellow

" When editing a file, always jump to the last cursor position
autocmd BufReadPost *
\ if ! exists("g:leave_my_cursor_position_alone") |
\ if line("'\"") > 0 && line ("'\"") <= line("$") |
\ exe "normal g'\"" |
\ endif |
\ endif

" Don't write backup file if vim is being called by "crontab -e"
au BufWrite /private/tmp/crontab.* set nowritebackup
" Don't write backup file if vim is being called by "chpass"
au BufWrite /private/etc/pw.* set nowritebackup

" Mappings
map \] :tabn<Return>
map \[ :tabp<Return>
nnoremap <C-l> <C-w>l
nnoremap <C-h> <C-w>h
nnoremap <C-j> <C-w>j
nnoremap <C-k> <C-w>k
nnoremap K :grep "\b<C-R><C-W>\b"<CR>:cw<CR>

" https://github.com/wesQ3/vim-windowswap
"let g:windowswap_map_keys = 0 "prevent default bindings
"nnoremap <silent> <leader>yw :call WindowSwap#MarkWindowSwap()<CR>
"nnoremap <silent> <leader>pw :call WindowSwap#DoWindowSwap()<CR>
"nnoremap <silent> <leader>ww :call WindowSwap#EasyWindowSwap()<CR>
nnoremap <C-w>y :call WindowSwap#MarkWindowSwap()<CR>
nnoremap <C-w>p :call WindowSwap#DoWindowSwap()<CR>
nnoremap <C-w>e :call WindowSwap#EasyWindowSwap()<CR>

" CtrlP Mappings: http://kien.github.io/ctrlp.vim/
let g:ctrlp_map = '<c-p>'
let g:ctrlp_cmd = 'CtrlP'
let g:ctrlp_working_path_mode = 'ra'
set wildignore+=*/tmp/*,*.so,*.swp,*.zip
let g:ctrlp_custom_ignore = '\v[\/]\.(git|hg|svn)$'

" CtrlPFunky
let g:ctrlp_extensions = ['funky']
nnoremap <Leader>f :CtrlPFunky<Cr>
" narrow the list down with a word under cursor
nnoremap <Leader>f :execute 'CtrlPFunky ' .expand('<cword')<Cr>
let g:ctrlp_funky_syntax_highlight = 1

" backup to ~/.tmp 
set backup 
set backupdir=~/.vim-tmp,~/.tmp,~/tmp,/var/tmp,/tmp 
set backupskip=/tmp/*,/private/tmp/* 
set directory=~/.vim-tmp,~/.tmp,~/tmp,/var/tmp,/tmp 
set writebackup

" https://github.com/svermeulen/vim-easyclip
let g:EaseClipUsePasteToggleDefaults = 0
nmap <C-b> <plug>EasyClipSwapPasteForward
nmap <C-f> <plug>EasyClipSwapPasteBackwards

" Unite.vim and the_platinum_searcher, if we have it
nnoremap <silent> <Leader>g :<C-u>Unite grep:. -buffer-name=search-buffer<CR>
nnoremap <silent> <Leader>u :Unite file_rec/async<CR>
if executable('pt')
  let g:unite_source_grep_command = 'pt'
  let g:unite_source_grep_default_opts = '--nogroup --nocolor'
  let g:unite_source_grep_recursive_opt = ''
  let g:unite_source_grep_encoding = 'utf-8'

  set grepprg=pt\ --nogroup\ --nocolor
  let g:ctrlp_user_command = 'ag %s -l --nocolor -g ""'
  let g:ctrlp_use_caching = 0
else
  " Use the_silver_searcher for searching if we don't have pt
  if executable('ag')
    let g:unite_source_grep_command = 'ag'
    let g:unite_source_grep_default_opts = '--nogroup --nocolor'
    let g:unite_source_grep_recursive_opt = ''
    let g:unite_source_grep_encoding = 'utf-8'

    " Use ag over grep
    set grepprg=ag\ --nogroup\ --nocolor

    " Use ag in CtrlP for listing files. Lightning fast and respects .gitignore
    let g:ctrlp_user_command = 'ag %s -l --nocolor -g ""'

    " ag is fast enough that CtrlP doesn't need to cache
    let g:ctrlp_use_caching = 0
  endif
endif

" NERDTree configurations: https://github.com/scrooloose/nerdtree
autocmd StdinReadPre * let s:std_in=1
autocmd VimEnter * if argc() == 0 && !exists("s:std_in") | NERDTree | endif
map <C-n> :NERDTreeToggle<CR>
autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTreeType") && b:NERDTreeType == "primary") | q | endif

" Converting between Tabs and Spaces with these nice functions:

" Return indent (all whitespace at start of a line), converted from
" tabs to spaces if what = 1, or from spaces to tabs otherwise.
" When converting to tabs, result has no redundant spaces.
function! Indenting(indent, what, cols)
  let spccol = repeat(' ', a:cols)
  let result = substitute(a:indent, spccol, '\t', 'g')
  let result = substitute(result, ' \+\ze\t', '', 'g')
  if a:what == 1
    let result = substitute(result, '\t', spccol, 'g')
  endif
  return result
endfunction

" Convert whitespace used for indenting (before first non-whitespace).
" what = 0 (convert spaces to tabs), or 1 (convert tabs to spaces).
" cols = string with number of columns per tab, or empty to use 'tabstop'.
" The cursor position is restored, but the cursor will be in a different
" column when the number of characters in the indent of the line is changed.
function! IndentConvert(line1, line2, what, cols)
  let savepos = getpos('.')
  let cols = empty(a:cols) ? &tabstop : a:cols
  execute a:line1 . ',' . a:line2 . 's/^\s\+/\=Indenting(submatch(0), a:what, cols)/e'
  call histdel('search', -1)
  call setpos('.', savepos)
endfunction
command! -nargs=? -range=% Space2Tab call IndentConvert(<line1>,<line2>,0,<q-args>)
command! -nargs=? -range=% Tab2Space call IndentConvert(<line1>,<line2>,1,<q-args>)
command! -nargs=? -range=% RetabIndent call IndentConvert(<line1>,<line2>,&et,<q-args>)

" https://github.com/plasticboy/vim-markdown/
let g:vim_markdown_initial_foldlevel=1

let g:indentLine_noConcealCursor=""

vim-json install

Hi, maybe sounds silly but could we have an install md? vim-json didn't work for me, maybe I'm not doing it right, or maybe I have wrong vim version or maybe.... who knows.

Wrong syntax mark stays 'alive'

I'm working with a single file (a list of json objects), and something that is really distracting is the fact that the red mark for a wrong syntax (in my case, an extra comma at the end), stays alive, even if I corrected the thing.

Sample input:
[
{
"content_id": "123", -> it keeps a red mark for around 5-10 seconds, based on my activity
"action_value": "played", -> correctly wrong
}
]

Take a look at the screenshot: http://gyazo.com/4b2f0034c34b91ee19a7c60c242087a1

This is REALLY distracting. Is there a chance to alleviate this? Thanks!

Highlight comma at end of object/array as error

An extraneous comma at the end of an array/object is a VERY VERY common mistake, especially when you ident entries one per line. This should be highlighted as an error.

Example (two errors):

[
  { "a": true, },
]

confused about highlighting

hi there i'm trying to get highlighting to work correctly like in the image below:
687474703a2f2f6661726d382e737461746963666c69636b722e636f6d2f373233342f373138353536303238335f313032663662373533642e6a7067

however, i get this:
screen shot 2014-05-17 at 3 22 07 pm

i don't want the highlighting to happen when i have unquoted json fields. for example if i am making a json config file that doesn't use any quotes at all (like in the first image attached).

am i doing something wrong? help would be greatly appreciated!

Number is not correctly highlighted.

I found jsonNumber is linked to Delimiter by default. This does not look good under my colorscheme because my delimiter has similar color as the background. I think jsonNumber should be linked to Number by default.

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.