From 8420e4b04467a3e85139bbcb07721c593ea4a3f8 Mon Sep 17 00:00:00 2001 From: Garen Torikian Date: Sun, 22 Feb 2015 10:23:48 -0800 Subject: [PATCH 1/6] Test that languages have a type --- test/test_language.rb | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/test/test_language.rb b/test/test_language.rb index 1a39744e..e12b16b8 100644 --- a/test/test_language.rb +++ b/test/test_language.rb @@ -358,6 +358,15 @@ class TestLanguage < Minitest::Test assert missing.empty?, message end + def test_all_languages_have_type + missing = Language.all.select { |language| language.type.nil? } + message = "The following languages' types are not listed in grammars.yml. Please add types for all new languages.\n" + + width = missing.map { |language| language.name.length }.max + message << missing.map { |language| sprintf("%-#{width}s %s", language.name, language.tm_scope) }.sort.join("\n") + assert missing.empty?, message + end + def test_all_languages_have_a_valid_ace_mode ace_fixture_path = File.join('test', 'fixtures', 'ace_modes.json') skip("No ace_modes.json file") unless File.exist?(ace_fixture_path) From 507d191d7d2b8d3ae65d2e135d715e627db1537f Mon Sep 17 00:00:00 2001 From: Garen Torikian Date: Sun, 22 Feb 2015 10:27:24 -0800 Subject: [PATCH 2/6] Add missing types --- lib/linguist/languages.yml | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/lib/linguist/languages.yml b/lib/linguist/languages.yml index 0ac757f6..0c09026a 100644 --- a/lib/linguist/languages.yml +++ b/lib/linguist/languages.yml @@ -271,6 +271,7 @@ Batchfile: ace_mode: batchfile Befunge: + type: programming extensions: - .befunge ace_mode: text @@ -326,6 +327,7 @@ Boo: ace_mode: text Brainfuck: + type: programming extensions: - .b - .bf @@ -419,6 +421,7 @@ CLIPS: ace_mode: text CMake: + type: programming extensions: - .cmake - .cmake.in @@ -478,6 +481,7 @@ Chapel: ace_mode: text ChucK: + type: programming extensions: - .ck tm_scope: source.java @@ -639,6 +643,7 @@ Crystal: - crystal Cucumber: + type: programming extensions: - .feature tm_scope: text.gherkin.feature @@ -698,6 +703,7 @@ DM: ace_mode: c_cpp Darcs Patch: + type: programming search_term: dpatch aliases: - dpatch @@ -715,6 +721,7 @@ Dart: ace_mode: dart Diff: + type: programming extensions: - .diff - .patch @@ -1012,6 +1019,7 @@ Game Maker Language: ace_mode: c_cpp Genshi: + type: programming extensions: - .kid tm_scope: text.xml.genshi @@ -1021,6 +1029,7 @@ Genshi: ace_mode: xml Gentoo Ebuild: + type: programming group: Shell extensions: - .ebuild @@ -1028,6 +1037,7 @@ Gentoo Ebuild: ace_mode: sh Gentoo Eclass: + type: programming group: Shell extensions: - .eclass @@ -1035,6 +1045,7 @@ Gentoo Eclass: ace_mode: sh Gettext Catalog: + type: programming search_term: pot searchable: false aliases: @@ -1135,6 +1146,7 @@ Graphviz (DOT): ace_mode: text Groff: + type: programming extensions: - .man - '.1' @@ -1162,6 +1174,7 @@ Groovy: - groovy Groovy Server Pages: + type: programming group: Groovy aliases: - gsp @@ -1318,6 +1331,7 @@ INI: ace_mode: ini IRC log: + type: data search_term: irc aliases: - irc @@ -1348,6 +1362,7 @@ Inform 7: ace_mode: text Inno Setup: + type: programming extensions: - .iss tm_scope: source.inno @@ -1442,6 +1457,7 @@ Java: - .java Java Server Pages: + type: programming group: Java search_term: jsp aliases: @@ -1537,6 +1553,7 @@ LFE: ace_mode: lisp LLVM: + type: programming extensions: - .ll ace_mode: text @@ -1597,6 +1614,7 @@ Less: ace_mode: less LilyPond: + type: programming extensions: - .ly - .ily @@ -1735,6 +1753,7 @@ Makefile: ace_mode: makefile Mako: + type: programming extensions: - .mako - .mao @@ -1827,6 +1846,7 @@ Mercury: ace_mode: prolog MiniD: # Legacy + type: programming searchable: false extensions: - .minid # Dummy extension @@ -1874,12 +1894,14 @@ MoonScript: ace_mode: text Myghty: + type: programming extensions: - .myt tm_scope: none ace_mode: text NSIS: + type: programming extensions: - .nsi - .nsh @@ -1971,6 +1993,7 @@ Nu: - nush NumPy: + type: programming group: Python extensions: - .numpy @@ -2430,6 +2453,7 @@ QML: ace_mode: text QMake: + type: programming extensions: - .pro - .pri @@ -2526,6 +2550,7 @@ Ragel in Ruby Host: ace_mode: text Raw token data: + type: data search_term: raw aliases: - raw @@ -2557,6 +2582,7 @@ Red: ace_mode: text Redcode: + type: programming extensions: - .cw tm_scope: none @@ -2843,6 +2869,7 @@ Smalltalk: ace_mode: text Smarty: + type: programming extensions: - .tpl ace_mode: smarty @@ -3266,6 +3293,7 @@ XQuery: ace_mode: xquery XS: + type: programming extensions: - .xs tm_scope: source.c @@ -3362,6 +3390,7 @@ fish: ace_mode: text mupad: + type: programming extensions: - .mu ace_mode: text From fecf0cc137c1e180d4318749cf1c267f84179792 Mon Sep 17 00:00:00 2001 From: Garen Torikian Date: Sun, 22 Feb 2015 10:32:01 -0800 Subject: [PATCH 3/6] There is no "other" --- test/test_language.rb | 4 ---- 1 file changed, 4 deletions(-) diff --git a/test/test_language.rb b/test/test_language.rb index e12b16b8..d347bb69 100644 --- a/test/test_language.rb +++ b/test/test_language.rb @@ -155,10 +155,6 @@ class TestLanguage < Minitest::Test assert_equal :prose, Language['Org'].type end - def test_other - assert_nil Language['Brainfuck'].type - end - def test_searchable assert Language['Ruby'].searchable? assert !Language['Gettext Catalog'].searchable? From 05f73df064080a20630a33576766329c4f5999c3 Mon Sep 17 00:00:00 2001 From: CodingAnarchy Date: Fri, 20 Feb 2015 21:19:07 -0700 Subject: [PATCH 4/6] Brainfuck samples --- samples/Brainfuck/fib100.bf | 11 +++++++++++ samples/Brainfuck/hello.bf | 4 ++++ samples/Brainfuck/helloworld.bf | 3 +++ samples/Brainfuck/rot13.bf | 30 ++++++++++++++++++++++++++++++ 4 files changed, 48 insertions(+) create mode 100644 samples/Brainfuck/fib100.bf create mode 100644 samples/Brainfuck/hello.bf create mode 100644 samples/Brainfuck/helloworld.bf create mode 100644 samples/Brainfuck/rot13.bf diff --git a/samples/Brainfuck/fib100.bf b/samples/Brainfuck/fib100.bf new file mode 100644 index 00000000..fe3f3ce5 --- /dev/null +++ b/samples/Brainfuck/fib100.bf @@ -0,0 +1,11 @@ ++++++++++++ +>+>>>>++++++++++++++++++++++++++++++++++++++++++++ +>++++++++++++++++++++++++++++++++<<<<<<[>[>>>>>>+> ++<<<<<<<-]>>>>>>>[<<<<<<<+>>>>>>>-]<[>++++++++++[- +<-[>>+>+<<<-]>>>[<<<+>>>-]+<[>[-]<[-]]>[<<[>>>+<<< +-]>>[-]]<<]>>>[>>+>+<<<-]>>>[<<<+>>>-]+<[>[-]<[-]] +>[<<+>>[-]]<<<<<<<]>>>>>[+++++++++++++++++++++++++ ++++++++++++++++++++++++.[-]]++++++++++<[->-<]>++++ +++++++++++++++++++++++++++++++++++++++++++++.[-]<< +<<<<<<<<<<[>>>+>+<<<<-]>>>>[<<<<+>>>>-]<-[>>.>.<<< +[-]]<<[>>+>+<<<-]>>>[<<<+>>>-]<<[<+>-]>[<+>-]<<<-] \ No newline at end of file diff --git a/samples/Brainfuck/hello.bf b/samples/Brainfuck/hello.bf new file mode 100644 index 00000000..6a93a155 --- /dev/null +++ b/samples/Brainfuck/hello.bf @@ -0,0 +1,4 @@ +// More complex version of hello world + +>++++++++[<+++++++++>-]<.>>+>+>++>[-]+<[>[->+<<++++>]<<]>.+++++++..+++.> +>+++++++.<<<[[-]<[-]>]<+++++++++++++++.>>.+++.------.--------.>>+.>++++. \ No newline at end of file diff --git a/samples/Brainfuck/helloworld.bf b/samples/Brainfuck/helloworld.bf new file mode 100644 index 00000000..c7bde23a --- /dev/null +++ b/samples/Brainfuck/helloworld.bf @@ -0,0 +1,3 @@ +// Hello World + +++++++++[>++++[>++>+++>+++>+<<<<-]>+>+>->>+[<]<-]>>.>---.+++++++..+++.>>.<-.<.+++.------.--------.>>+.>++. \ No newline at end of file diff --git a/samples/Brainfuck/rot13.bf b/samples/Brainfuck/rot13.bf new file mode 100644 index 00000000..3b9d8e7f --- /dev/null +++ b/samples/Brainfuck/rot13.bf @@ -0,0 +1,30 @@ +# ROT13 cipher + +-,+[ Read first character and start outer character reading loop + -[ Skip forward if character is 0 + >>++++[>++++++++<-] Set up divisor (32) for division loop + (MEMORY LAYOUT: dividend copy remainder divisor quotient zero zero) + <+<-[ Set up dividend (x minus 1) and enter division loop + >+>+>-[>>>] Increase copy and remainder / reduce divisor / Normal case: skip forward + <[[>+<-]>>+>] Special case: move remainder back to divisor and increase quotient + <<<<<- Decrement dividend + ] End division loop + ]>>>[-]+ End skip loop; zero former divisor and reuse space for a flag + >--[-[<->+++[-]]]<[ Zero that flag unless quotient was 2 or 3; zero quotient; check flag + ++++++++++++<[ If flag then set up divisor (13) for second division loop + (MEMORY LAYOUT: zero copy dividend divisor remainder quotient zero zero) + >-[>+>>] Reduce divisor; Normal case: increase remainder + >[+[<+>-]>+>>] Special case: increase remainder / move it back to divisor / increase quotient + <<<<<- Decrease dividend + ] End division loop + >>[<+>-] Add remainder back to divisor to get a useful 13 + >[ Skip forward if quotient was 0 + -[ Decrement quotient and skip forward if quotient was 1 + -<<[-]>> Zero quotient and divisor if quotient was 2 + ]<<[<<->>-]>> Zero divisor and subtract 13 from copy if quotient was 1 + ]<<[<<+>>-] Zero divisor and add 13 to copy if quotient was 0 + ] End outer skip loop (jump to here if ((character minus 1)/32) was not 2 or 3) + <[-] Clear remainder from first division if second division was skipped + <.[-] Output ROT13ed character from copy and clear it + <-,+ Read next character +] End character reading loop \ No newline at end of file From 525e886d79674bf58e21d8cf37219d95434ffa9e Mon Sep 17 00:00:00 2001 From: CodingAnarchy Date: Fri, 20 Feb 2015 21:19:54 -0700 Subject: [PATCH 5/6] Comments added to one sample --- samples/Brainfuck/fib100.bf | 2 ++ 1 file changed, 2 insertions(+) diff --git a/samples/Brainfuck/fib100.bf b/samples/Brainfuck/fib100.bf index fe3f3ce5..3359588a 100644 --- a/samples/Brainfuck/fib100.bf +++ b/samples/Brainfuck/fib100.bf @@ -1,3 +1,5 @@ +# Calculate and output all fibonacci numbers under 100 + +++++++++++ >+>>>>++++++++++++++++++++++++++++++++++++++++++++ >++++++++++++++++++++++++++++++++<<<<<<[>[>>>>>>+> From 6b26386a817cd758acf9d50373f49456266e799c Mon Sep 17 00:00:00 2001 From: Garen Torikian Date: Sun, 22 Feb 2015 20:21:02 -0800 Subject: [PATCH 6/6] Improve "no type found" error message --- test/test_language.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/test_language.rb b/test/test_language.rb index d347bb69..31be9a82 100644 --- a/test/test_language.rb +++ b/test/test_language.rb @@ -356,10 +356,10 @@ class TestLanguage < Minitest::Test def test_all_languages_have_type missing = Language.all.select { |language| language.type.nil? } - message = "The following languages' types are not listed in grammars.yml. Please add types for all new languages.\n" + message = "The following languages do not have a type listed in grammars.yml. Please add types for all new languages.\n" width = missing.map { |language| language.name.length }.max - message << missing.map { |language| sprintf("%-#{width}s %s", language.name, language.tm_scope) }.sort.join("\n") + message << missing.map { |language| sprintf("%-#{width}s", language.name) }.sort.join("\n") assert missing.empty?, message end