Blob Blame History Raw
From d56eb7ea0b9c2a4edec17032a92fe66aebb1aa3a Mon Sep 17 00:00:00 2001
From: Christos Zoulas <christos@zoulas.com>
Date: Mon, 14 Aug 2017 13:39:18 +0000
Subject: [PATCH] improvements (Marek Cermak)

Fixed Ruby script recognition and classification

https://bugzilla.redhat.com/show_bug.cgi?id=1050897

Upstream commit: https://github.com/file/file/commit/d56eb7ea0b9c2a4edec17032a92fe66aebb1aa3a

Signed-off-by: Marek Cermak <macermak@redhat.com>
---
 magic/Magdir/ruby | 35 +++++++++++++++++++++++++++--------
 1 file changed, 27 insertions(+), 8 deletions(-)

diff --git a/magic/Magdir/ruby b/magic/Magdir/ruby
index cc3abd0..a6b73d9 100644
--- a/magic/Magdir/ruby
+++ b/magic/Magdir/ruby
@@ -6,27 +6,46 @@
 # From: Reuben Thomas <rrt@sc3d.org>
 
 # Ruby scripts
-0	search/1/w	#!\ /usr/bin/ruby	Ruby script text executable
+0	search/1/w	#!\ /usr/bin/ruby				Ruby script text executable
 !:strength + 15
 !:mime text/x-ruby
 0	search/1/w	#!\ /usr/local/bin/ruby	Ruby script text executable
 !:strength + 15
 !:mime text/x-ruby
-0	search/1	#!/usr/bin/env\ ruby	Ruby script text executable
+0	search/1	#!/usr/bin/env\ ruby				Ruby script text executable
 !:strength + 15
 !:mime text/x-ruby
-0	search/1	#!\ /usr/bin/env\ ruby	Ruby script text executable
+0	search/1	#!\ /usr/bin/env\ ruby			Ruby script text executable
 !:strength + 15
 !:mime text/x-ruby
 
 # What looks like ruby, but does not have a shebang
 # (modules and such)
 # From: Lubomir Rintel <lkundrak@v3.sk>
-0	regex		\^[\ \t]*require[\ \t]'[A-Za-z_/]+'
->0	regex		include\ [A-Z]|def\ [a-z]|\ do$
->>0	regex		\^[\ \t]*end([\ \t]*[;#].*)?$		Ruby script text
+0	regex		\^[[:space:]]*require[[:space:]]'[A-Za-z_/]+'
+>0	regex		def\ [a-z]|\ do$
+>>&0	regex		\^[[:space:]]*end([[:space:]]+[;#].*)?$		Ruby script text
+!:strength + 30
 !:mime	text/x-ruby
-0	regex		\^[\ \t]*(class|module)[\ \t][A-Z]
+0	regex		\^[[:space:]]*(class|module)[[:space:]][A-Z]
 >0	regex		(modul|includ)e\ [A-Z]|def\ [a-z]
->>0	regex		\^[\ \t]*end([\ \t]*[;#].*)?$		Ruby module source text
+>>&0	regex		\^[[:space:]]*end([[:space:]]+[;#].*)?$		Ruby script text
+!:strength + 30
+!:mime	text/x-ruby
+# Classes with no modules or defs, beats simple ASCII
+0	regex		\^[[:space:]]*(class|module)[[:space:]][A-Z]
+>&0	regex	\^[[:space:]]*end([[:space:]]+[;#if].*)?$		Ruby script text
+!:strength + 10
+!:mime	text/x-ruby
+# Looks for function definiton to balance python magic
+# def name (args)
+# end
+0	regex		\^[[:space:]]*def\ [a-z]|def\ [[:alpha:]]+::[a-z]
+>&0	regex		\^[[:space:]]*end([[:space:]]+[;#].*)?$		Ruby script text
+!:strength + 10
+!:mime	text/x-ruby
+
+0	regex		\^[[:space:]]*require[[:space:]]'[A-Za-z_/]+'	Ruby script text
+!:mime	text/x-ruby
+0 regex 	\^[[:space:]]*include\ ([A-Z]+[a-z]*(::))+	Ruby script text
 !:mime	text/x-ruby
-- 
2.13.3