vamchale/polyglot
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
# Features
- [ ] `.poly.toml` project file?
- [ ] per-file output like `tokei`
- [ ] parse directories on the command line starting with a `-` by using escapes
- [ ] detect documentation comments
- [ ] feature to use data from quasi-quotes (e.g. haskell)
- [ ] block comments
- [ ] Allow generation of HTML tables from output.
- [ ] JSON output? Or alternately some other form of output?
- [ ] HTML pretty-printer would be nice.
- [ ] Detailed help on how to use a type?
- [ ] Allow/disallow symlinks
- [ ] Library for semantic analysis?
- [ ] Avoid overlaps when subdirectories passed as arguments?
# Performance
- [x] parallelism
  - [ ] better parallelism
- [ ] make sure everything is tail recursive
- [ ] linear types everywhere!!
- [ ] get rid of GC
  - [ ] Currently would require fixing standard library
# Distribution
- [ ] Make a debianization?
  - [ ] Add to debian
  - [ ] Package `compleat`
- [ ] Compress via travis
- [ ] `pkg-config` stuff for library
# Portability
- [ ] Figure out Windows
- [ ] Figure out cross compilation
# Bugs
- [ ] `.bf` could be befunge
- [ ] Handle dhall files w/ no extension?
- [ ] doesn't disambiguate objective C/C headers
- [ ] `poly -t README.md` adds spurious line of output
- [ ] handle `\-dir` for directories
- [ ] `./target/poly --hlp` yields wrong error.
# Code Maintenance
- [ ] Library for this
  - [ ] `.sats` files
  - [ ] Library stanza & Haskell bindings
  - [ ] Executable that depends on the library
- [ ] Test suite
- [ ] builds for other systems
- [ ] linear types to ensure each field gets printed at the end?
  - [ ] or alternately a macro
# Libraries
- [ ] TOML parser for ATS (or sufficient bindings)
- [ ] Library for `.gitignore` files etc.
- [ ] Parallel directory traversal (templates?)
## Heuristics
### Heuristics for determining file type:
- [ ] parent directory (`.cargo/config`)
- [ ] modeline
- [ ] `.gitattributes`
- [ ] `.poly.toml` project file
### Heuristics for determining file relevance:
- [ ] `.gitignore`/darcs boringfile/`.ignore` file
- [ ] `.gitattributes`
- [ ] `.poly.toml` project file
### Language Support
- [ ] `.sed` files
- [ ] ShaderLab (`.shader`)
- [ ] HLSL (`.cginc`)
- [ ] hsc2hs (`.hsc`), greencard (`.gc`), c2hs (`.chs`), cpphs (`.cpphs`)
- [ ] Ada
- [ ] literate Haskell
  - [ ] literate happy?
- [ ] literate Idris
- [ ] crystal (`.cr`)
- [ ] D (`.d`)
- [ ] DDoc
- [ ] Dockerfile
- [ ] LilyPond (`.ly`)
- [ ] Jenkinsfile (groovy?)
- [ ] mustache
- [ ] jinja
- [ ] Agda library
- [ ] RED
- [ ] groovy
- [ ] F\* (`.fst`)
- [ ] Isabelle (`.thy`)
- [ ] REBOL
- [ ] Intel hex (`.ihex`)
- [ ] occam
- [ ] Pascal
- [ ] Prolog
- [ ] modula
- [ ] racket (`.rkt`)
- [ ] LSL http://xahsl.org/sl/ls.html
- [ ] TypeScript
- [ ] CoffeeScript (`.coffee`)
- [ ] clean
- [ ] lean
- [ ] dash
- [ ] fish
- [ ] dyon
- [ ] ketos
- [ ] harlan (`.kfc`)
- [ ] Ragel (`.rl`)
- [ ] puppet (`.pp`)
- [ ] forth
- [ ] Objective C++
- [ ] J
- [ ] Bison (`.yy` among others)
- [ ] Flex
- [ ] Felix
- [ ] `.jats` (enriched JSON)
- [ ] Sass
- [ ] gemfile
- [ ] gemspec
- [ ] rdoc
- [ ] Scons
- [ ] Vala
- [ ] Cmake
- [ ] shen
- [ ] gradle
- [ ] tulip (`.tlp`)
- [ ] kitten (`.ktn`)
- [ ] siren (`.siren`)
- [ ] emily (`.em`)
- [ ] ceylon
- [ ] Dart
- [ ] Korn shell
- [ ] jsx
- [ ] ColdFusion
- [ ] Balsa
- [ ] Teak
- [ ] SQL
- [ ] Dale
- [ ] awk
- [ ] microsoft module definition
- [ ] XSLT
- [ ] `.rst`
- [ ] QML
- [ ] `.ini`
- [ ] roff/troff/groff
- [ ] Terra
- [ ] logos (also `.x`)
- [ ] PureBasic
- [ ] visual basic
- [ ] MSBuild
- [ ] Ur
- [ ] SRecoder template
- [ ] Cogent
- [ ] emacs dev env
- [ ] Zig
- [ ] Xtend
- [ ] less (fancy CSS)
- [ ] haxe
- [ ] HLSL
- [ ] GNU plot (`.plt`)
- [ ] dtrace
- [ ] `pyf` - F2PY signature
- [ ] quack (`.qk`)
- [ ] saltstack
- [ ] plasma
- [ ] SISAL
- [ ] G-code (`.mpt`, `.mpf`, `.nc`)
- [ ] ALGOL
- [ ] flow-matic
- [ ] B
- [ ] delphi
- [ ] Gherkin
- [ ] Pyret
- [ ] Stylus
- [ ] haddock interface
- [ ] Vagrantfile
- [ ] NAnt script
- [ ] RobotFramework
- [ ] QML
- [ ] xBase