@@ -51,4 +51,4 @@ target | |||||
# Ctags | # Ctags | ||||
*/tags | */tags | ||||
log | |||||
logs |
@@ -27,7 +27,7 @@ class Codelet(object): | |||||
""" | """ | ||||
def __init__(self, name, code, filename, language, authors, code_url, | def __init__(self, name, code, filename, language, authors, code_url, | ||||
date_created, date_modified, rank, symbols=None, origin=None): | |||||
date_created, date_modified, rank, symbols=None, origin=None): | |||||
""" | """ | ||||
Create a Codelet instance. | Create a Codelet instance. | ||||
@@ -1,4 +1,283 @@ | |||||
{ | { | ||||
"_comment" : "A list of programming languages supported by `bitshift`.", | "_comment" : "A list of programming languages supported by `bitshift`.", | ||||
"languages" : ["Debian Sourcelist", "Delphi", "JavaScript+Mako", "Brainfuck", "Ceylon", "JavaScript+Django/Jinja", "HTML+Evoque", "NumPy", "Modula-2", "LiveScript", "Nimrod", "Bash", "HTML+Django/Jinja", "CSS+PHP", "XML+Lasso", "VimL", "CSS+Genshi Text", "Fancy", "Coldfusion HTML", "cfstatement", "Scalate Server Page", "Smarty", "XML+Evoque", "haXe", "PowerShell", "Tea", "HTML+Cheetah", "Mason", "Django/Jinja", "JAGS", "ApacheConf", "DTD", "Lighttpd configuration file", "Java", "JavaScript+Genshi Text", "Scheme", "Nemerle", "RHTML", "Ragel in Java Host", "Darcs Patch", "Puppet", "Octave", "CoffeeScript", "Ragel in D Host", "Scilab", "Monkey", "HTML+Myghty", "CSS", "JavaScript+Smarty", "Io", "COBOLFree", "Asymptote", "vhdl", "Python 3", "CSS+Ruby", "Fortran", "d-objdump", "MySQL", "REBOL", "C++", "ERB", "CBM BASIC V2", "Befunge", "Julia", "MoonScript", "Ruby", "XML+Smarty", "Dylan", "Groovy", "MoinMoin/Trac Wiki markup", "autohotkey", "C", "HTML", "Felix", "CMake", "NSIS", "SourcePawn", "Mako", "VGL", "Velocity", "Koka", "CUDA", "Gnuplot", "IRC logs", "Prolog", "Python", "CSS+Django/Jinja", "verilog", "Smalltalk", "JavaScript+Myghty", "YAML", "Julia console", "ANTLR With ActionScript Target", "XML+Mako", "XSLT", "UrbiScript", "Scaml", "S", "DylanLID", "MAQL", "sqlite3con", "Boo", "OCaml", "eC", "ActionScript", "VB.net", "SquidConf", "XQuery", "D", "Fantom", "Gettext Catalog", "Logos", "Lasso", "SCSS", "BBCode", "Haml", "FoxPro", "Python 3.0 Traceback", "MuPAD", "XML+Ruby", "Dart", "IDL", "dg", "Evoque", "Jade", "c-objdump", "Kconfig", "Java Server Page", "reg", "ABAP", "XML+Velocity", "JavaScript+Cheetah", "HTML+Mako", "Ragel in Ruby Host", "RobotFramework", "Protocol Buffer", "CFEngine3", "Ragel", "GLSL", "COBOL", "TypeScript", "Ada", "PostgreSQL SQL dialect", "Xtend", "Logtalk", "objdump", "CSS+Mako", "ca65", "Objective-C++", "Gherkin", "HTML+PHP", "Makefile", "PostScript", "Hxml", "Kotlin", "PL/pgSQL", "Vala", "Haskell", "Bro", "Lua", "POVRay", "Sass", "ANTLR With Java Target", "Tcl", "ANTLR With ObjectiveC Target", "JavaScript+Ruby", "Racket", "AspectJ", "Base Makefile", "ANTLR With Python Target", "cpp-objdump", "Genshi Text", "Ioke", "PyPy Log", "Croc", "Objective-J", "GAS", "Batchfile", "Snobol", "XML", "ANTLR", "Opa", "XML+Cheetah", "Go", "Diff", "MiniD", "Cython", "Ragel in C Host", "Erlang", "Debian Control file", "aspx-vb", "BUGS", "Ragel in CPP Host", "aspx-cs", "Properties", "Groff", "Clojure", "Modelica", "QML", "JavaScript+Lasso", "ANTLR With Perl Target", "Genshi", "BlitzMax", "Treetop", "Matlab", "Myghty", "HTML+Genshi", "Duel", "Perl", "FSharp", "reStructuredText", "NewLisp", "Scala", "CSS+Lasso", "XML+PHP", "Stan", "INI", "MOOCode", "Shell Session", "RPMSpec", "Newspeak", "Bash Session", "Coq", "Raw token data", "Tcsh", "HTML+Lasso", "C#", "Gosu Template", "RConsole", "MXML", "TeX", "CSS+Smarty", "Text only", "ANTLR With C# Target", "OpenEdge ABL", "Cheetah", "Smali", "CSS+Myghty", "Rd", "LLVM", "Standard ML", "Elixir", "Nginx configuration file", "GoodData-CL", "AppleScript", "HTML+Smarty", "Objective-C", "JavaScript", "Rust", "Common Lisp", "Embedded Ragel", "ActionScript 3", "systemverilog", "Literate Haskell", "Python Traceback", "PHP", "ANTLR With CPP Target", "Gosu", "Hybris", "JavaScript+PHP", "Factor", "HTML+Velocity", "Mscgen", "Ooc", "SQL", "HTTP", "ECL", "Redcode", "Ragel in Objective C Host", "XML+Django/Jinja", "Awk", "JSON", "NASM", "ANTLR With Ruby Target", "XML+Myghty", "AutoIt", "Mako", "CSS+Mako", "HTML+Mako", "XML+Mako", "JavaScript+Mako"] | |||||
"languages" : [ | |||||
"Debian Sourcelist", | |||||
"Delphi", | |||||
"JavaScript+Mako", | |||||
"Brainfuck", | |||||
"Ceylon", | |||||
"JavaScript+Django/Jinja", | |||||
"HTML+Evoque", | |||||
"NumPy", | |||||
"Modula-2", | |||||
"LiveScript", | |||||
"Nimrod", | |||||
"Bash", | |||||
"HTML+Django/Jinja", | |||||
"CSS+PHP", | |||||
"XML+Lasso", | |||||
"VimL", | |||||
"CSS+Genshi Text", | |||||
"Fancy", | |||||
"Coldfusion HTML", | |||||
"cfstatement", | |||||
"Scalate Server Page", | |||||
"Smarty", | |||||
"XML+Evoque", | |||||
"haXe", | |||||
"PowerShell", | |||||
"Tea", | |||||
"HTML+Cheetah", | |||||
"Mason", | |||||
"Django/Jinja", | |||||
"JAGS", | |||||
"ApacheConf", | |||||
"DTD", | |||||
"Lighttpd configuration file", | |||||
"Java", | |||||
"JavaScript+Genshi Text", | |||||
"Scheme", | |||||
"Nemerle", | |||||
"RHTML", | |||||
"Ragel in Java Host", | |||||
"Darcs Patch", | |||||
"Puppet", | |||||
"Octave", | |||||
"CoffeeScript", | |||||
"Ragel in D Host", | |||||
"Scilab", | |||||
"Monkey", | |||||
"HTML+Myghty", | |||||
"CSS", | |||||
"JavaScript+Smarty", | |||||
"Io", | |||||
"COBOLFree", | |||||
"Asymptote", | |||||
"vhdl", | |||||
"CSS+Ruby", | |||||
"Fortran", | |||||
"d-objdump", | |||||
"MySQL", | |||||
"REBOL", | |||||
"C++", | |||||
"ERB", | |||||
"CBM BASIC V2", | |||||
"Befunge", | |||||
"Julia", | |||||
"MoonScript", | |||||
"Ruby", | |||||
"XML+Smarty", | |||||
"Dylan", | |||||
"Groovy", | |||||
"MoinMoin/Trac Wiki markup", | |||||
"autohotkey", | |||||
"C", | |||||
"HTML", | |||||
"Felix", | |||||
"CMake", | |||||
"NSIS", | |||||
"SourcePawn", | |||||
"Mako", | |||||
"VGL", | |||||
"Velocity", | |||||
"Koka", | |||||
"CUDA", | |||||
"Gnuplot", | |||||
"IRC logs", | |||||
"Prolog", | |||||
"Python", | |||||
"CSS+Django/Jinja", | |||||
"verilog", | |||||
"Smalltalk", | |||||
"JavaScript+Myghty", | |||||
"YAML", | |||||
"Julia console", | |||||
"ANTLR With ActionScript Target", | |||||
"XML+Mako", | |||||
"XSLT", | |||||
"UrbiScript", | |||||
"Scaml", | |||||
"S", | |||||
"DylanLID", | |||||
"MAQL", | |||||
"sqlite3con", | |||||
"Boo", | |||||
"OCaml", | |||||
"eC", | |||||
"ActionScript", | |||||
"VB.net", | |||||
"SquidConf", | |||||
"XQuery", | |||||
"D", | |||||
"Fantom", | |||||
"Gettext Catalog", | |||||
"Logos", | |||||
"Lasso", | |||||
"SCSS", | |||||
"BBCode", | |||||
"Haml", | |||||
"FoxPro", | |||||
"MuPAD", | |||||
"XML+Ruby", | |||||
"Dart", | |||||
"IDL", | |||||
"dg", | |||||
"Evoque", | |||||
"Jade", | |||||
"c-objdump", | |||||
"Kconfig", | |||||
"Java Server Page", | |||||
"reg", | |||||
"ABAP", | |||||
"XML+Velocity", | |||||
"JavaScript+Cheetah", | |||||
"HTML+Mako", | |||||
"Ragel in Ruby Host", | |||||
"RobotFramework", | |||||
"Protocol Buffer", | |||||
"CFEngine3", | |||||
"Ragel", | |||||
"GLSL", | |||||
"COBOL", | |||||
"TypeScript", | |||||
"Ada", | |||||
"PostgreSQL SQL dialect", | |||||
"Xtend", | |||||
"Logtalk", | |||||
"objdump", | |||||
"CSS+Mako", | |||||
"ca65", | |||||
"Objective-C++", | |||||
"Gherkin", | |||||
"HTML+PHP", | |||||
"Makefile", | |||||
"PostScript", | |||||
"Hxml", | |||||
"Kotlin", | |||||
"PL/pgSQL", | |||||
"Vala", | |||||
"Haskell", | |||||
"Bro", | |||||
"Lua", | |||||
"POVRay", | |||||
"Sass", | |||||
"ANTLR With Java Target", | |||||
"Tcl", | |||||
"ANTLR With ObjectiveC Target", | |||||
"JavaScript+Ruby", | |||||
"Racket", | |||||
"AspectJ", | |||||
"Base Makefile", | |||||
"ANTLR With Python Target", | |||||
"cpp-objdump", | |||||
"Genshi Text", | |||||
"Ioke", | |||||
"PyPy Log", | |||||
"Croc", | |||||
"Objective-J", | |||||
"GAS", | |||||
"Batchfile", | |||||
"Snobol", | |||||
"XML", | |||||
"ANTLR", | |||||
"Opa", | |||||
"XML+Cheetah", | |||||
"Go", | |||||
"Diff", | |||||
"MiniD", | |||||
"Cython", | |||||
"Ragel in C Host", | |||||
"Erlang", | |||||
"Debian Control file", | |||||
"aspx-vb", | |||||
"BUGS", | |||||
"Ragel in CPP Host", | |||||
"aspx-cs", | |||||
"Properties", | |||||
"Groff", | |||||
"Clojure", | |||||
"Modelica", | |||||
"QML", | |||||
"JavaScript+Lasso", | |||||
"ANTLR With Perl Target", | |||||
"Genshi", | |||||
"BlitzMax", | |||||
"Treetop", | |||||
"Matlab", | |||||
"Myghty", | |||||
"HTML+Genshi", | |||||
"Duel", | |||||
"Perl", | |||||
"FSharp", | |||||
"reStructuredText", | |||||
"NewLisp", | |||||
"Scala", | |||||
"CSS+Lasso", | |||||
"XML+PHP", | |||||
"Stan", | |||||
"INI", | |||||
"MOOCode", | |||||
"Shell Session", | |||||
"RPMSpec", | |||||
"Newspeak", | |||||
"Bash Session", | |||||
"Coq", | |||||
"Raw token data", | |||||
"Tcsh", | |||||
"HTML+Lasso", | |||||
"C#", | |||||
"Gosu Template", | |||||
"RConsole", | |||||
"MXML", | |||||
"TeX", | |||||
"CSS+Smarty", | |||||
"Text only", | |||||
"ANTLR With C# Target", | |||||
"OpenEdge ABL", | |||||
"Cheetah", | |||||
"Smali", | |||||
"CSS+Myghty", | |||||
"Rd", | |||||
"LLVM", | |||||
"Standard ML", | |||||
"Elixir", | |||||
"Nginx configuration file", | |||||
"GoodData-CL", | |||||
"AppleScript", | |||||
"HTML+Smarty", | |||||
"Objective-C", | |||||
"JavaScript", | |||||
"Rust", | |||||
"Common Lisp", | |||||
"Embedded Ragel", | |||||
"ActionScript 3", | |||||
"systemverilog", | |||||
"Literate Haskell", | |||||
"PHP", | |||||
"ANTLR With CPP Target", | |||||
"Gosu", | |||||
"Hybris", | |||||
"JavaScript+PHP", | |||||
"Factor", | |||||
"HTML+Velocity", | |||||
"Mscgen", | |||||
"Ooc", | |||||
"SQL", | |||||
"HTTP", | |||||
"ECL", | |||||
"Redcode", | |||||
"Ragel in Objective C Host", | |||||
"XML+Django/Jinja", | |||||
"Awk", | |||||
"JSON", | |||||
"NASM", | |||||
"ANTLR With Ruby Target", | |||||
"XML+Myghty", | |||||
"AutoIt", | |||||
"Mako", | |||||
"CSS+Mako", | |||||
"HTML+Mako", | |||||
"XML+Mako", | |||||
"JavaScript+Mako" | |||||
] | |||||
} | } |
@@ -1,4 +1,10 @@ | |||||
import json, pygments.lexers as pgl, sys, socket, struct | |||||
import json | |||||
import sys | |||||
import socket | |||||
import struct | |||||
from pygments import lexers as pgl, util | |||||
from ..languages import LANGS | from ..languages import LANGS | ||||
from .python import parse_py | from .python import parse_py | ||||
@@ -19,13 +25,14 @@ def _lang(codelet): | |||||
Modify function to incorporate tags from stackoverflow. | Modify function to incorporate tags from stackoverflow. | ||||
""" | """ | ||||
if codelet.filename is not None: | |||||
try: | |||||
return pgl.guess_lexer_for_filename(codelet.filename, codelet.code).name | |||||
except: | |||||
raise UnsupportedFileError('Could not find a lexer for the codelet\'s filename') | |||||
return LANGS.index(pgl.guess_lexer(codelet.code)) | |||||
try: | |||||
if codelet.filename: | |||||
lex = pgl.guess_lexer_for_filename(codelet.filename, codelet.code) | |||||
else: | |||||
lex = pgl.guess_lexer(codelet.code) | |||||
except util.ClassNotFound: | |||||
raise UnsupportedFileError(codelet.filename) | |||||
return LANGS.index(lex.name) | |||||
def _recv_data(server_socket): | def _recv_data(server_socket): | ||||
""" | """ | ||||
@@ -39,8 +46,9 @@ def _recv_data(server_socket): | |||||
""" | """ | ||||
recv_size = 8192 | recv_size = 8192 | ||||
total_data = []; size_data = cur_data = '' | |||||
total_size = 0; size = sys.maxint | |||||
total_data = [] | |||||
size_data = cur_data = '' | |||||
total_size, size = 0, sys.maxint | |||||
while total_size < size: | while total_size < size: | ||||
cur_data = server_socket.recv(recv_size) | cur_data = server_socket.recv(recv_size) | ||||
@@ -61,8 +69,7 @@ def _recv_data(server_socket): | |||||
total_size = sum([len(s) for s in total_data]) | total_size = sum([len(s) for s in total_data]) | ||||
server_socket.close() | server_socket.close() | ||||
return ''.join(total_data); | |||||
return ''.join(total_data) | |||||
def parse(codelet): | def parse(codelet): | ||||
""" | """ | ||||
@@ -76,7 +83,8 @@ def parse(codelet): | |||||
:type code: Codelet | :type code: Codelet | ||||
""" | """ | ||||
lang = _lang(codelet); source = codelet.code | |||||
lang = _lang(codelet) | |||||
source = codelet.code | |||||
codelet.language = lang | codelet.language = lang | ||||
server_socket_number = 5000 + lang | server_socket_number = 5000 + lang | ||||
@@ -86,8 +94,7 @@ def parse(codelet): | |||||
else: | else: | ||||
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) | server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) | ||||
server_socket.connect(("localhost", server_socket_number)) | server_socket.connect(("localhost", server_socket_number)) | ||||
server_socket.send("%d\n%s" % (len(source), source)); | |||||
server_socket.send("%d\n%s" % (len(source), source)) | |||||
symbols = json.loads(_recv_data(server_socket)) | symbols = json.loads(_recv_data(server_socket)) | ||||
codelet.symbols = symbols | codelet.symbols = symbols | ||||
@@ -195,7 +195,7 @@ class Symbol(_Node): | |||||
CLASS = 1 | CLASS = 1 | ||||
VARIABLE = 2 | VARIABLE = 2 | ||||
TYPES = {FUNCTION: "FUNCTION", CLASS: "CLASS", VARIABLE: "VARIABLE"} | TYPES = {FUNCTION: "FUNCTION", CLASS: "CLASS", VARIABLE: "VARIABLE"} | ||||
TYPES_INV = ["functions", "classes", "variables"] | |||||
TYPES_INV = ["functions", "classes", "vars"] | |||||
def __init__(self, type_, name): | def __init__(self, type_, name): | ||||
""" | """ | ||||