From c9a1159a2ef57ef5adb12c70ee3c9e157e4111a9 Mon Sep 17 00:00:00 2001 From: Chris Zwicker Date: Sat, 7 Mar 2015 08:51:16 +0000 Subject: [PATCH 1/3] Add .plsql as extension for PL/SQL --- lib/linguist/languages.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/linguist/languages.yml b/lib/linguist/languages.yml index 691c62c8..2a766fd6 100644 --- a/lib/linguist/languages.yml +++ b/lib/linguist/languages.yml @@ -2212,6 +2212,7 @@ PLSQL: - .pks - .plb - .sql + - .plsql #Postgres PLpgSQL: From fb709e2e1090534f2d5e5020e61f12a7786141dd Mon Sep 17 00:00:00 2001 From: Chris Zwicker Date: Sat, 14 Mar 2015 19:59:25 +0000 Subject: [PATCH 2/3] Add sample file for .plsql extension --- samples/PLSQL/prime#.plsql | 93 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 93 insertions(+) create mode 100644 samples/PLSQL/prime#.plsql diff --git a/samples/PLSQL/prime#.plsql b/samples/PLSQL/prime#.plsql new file mode 100644 index 00000000..1a4785a1 --- /dev/null +++ b/samples/PLSQL/prime#.plsql @@ -0,0 +1,93 @@ +create or replace package prime# +is + invalid_argument_error exception; + + function nth ( + i_num pls_integer + ) return number; +end prime#; +/ + +create or replace package body prime# +is + type t_primes is table of number index by pls_integer; + b_primes t_primes; + + function is_prime( + i_candidate number + ) return boolean + is + l_num number := 1; + l_prime number; + l_result number; + begin + if i_candidate < 2 then + return false; + end if; + + loop + l_prime := nth(l_num); + if l_prime = i_candidate then + return true; + end if; + + l_result := i_candidate / l_prime; + if l_result = ceil(l_result) then + return false; + end if; + + l_num := l_num + 1; + exit when l_result <= l_prime; + end loop; + + return true; + end is_prime; + + function next ( + i_prime pls_integer + ) return number + is + l_next number; + begin + l_next := i_prime + case mod(i_prime, 2) when 0 then 1 else 2 end; + + while not is_prime(l_next) loop + l_next := l_next + 2; + end loop; + return l_next; + end next; + + function nth ( + i_num pls_integer + ) return number + is + l_index number := 2; + l_prime number := 3; + begin + if i_num < 1 + or ceil(i_num) != i_num + then + raise invalid_argument_error; + end if; + + case i_num + when 1 then return 2; + else + if b_primes.exists(i_num) then + return b_primes(i_num); + end if; + while l_index < i_num loop + l_index := l_index + 1; + if b_primes.exists(l_index) then + l_prime := b_primes(l_index); + else + l_prime := next(l_prime); + b_primes(l_index) := l_prime; + end if; + end loop; + return l_prime; + end case; + end nth; + +end prime#; +/ \ No newline at end of file From 03b43a85c8c1ed4f7a3418f38a27657c2409c414 Mon Sep 17 00:00:00 2001 From: Chris Zwicker Date: Sat, 14 Mar 2015 20:16:31 +0000 Subject: [PATCH 3/3] Change sorting of extensions to fix failing test --- lib/linguist/languages.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/linguist/languages.yml b/lib/linguist/languages.yml index b7da258f..4d6404f7 100644 --- a/lib/linguist/languages.yml +++ b/lib/linguist/languages.yml @@ -2213,8 +2213,8 @@ PLSQL: - .pkb - .pks - .plb - - .sql - .plsql + - .sql #Postgres PLpgSQL: