mirror of
https://github.com/sharkdp/bat
synced 2024-11-16 08:57:59 +00:00
Add a ruby source code syntax test with source and output
This commit is contained in:
parent
0ac211140a
commit
0c3344d0c4
2 changed files with 112 additions and 0 deletions
56
tests/syntax-tests/highlighted/Ruby/output.rb
Normal file
56
tests/syntax-tests/highlighted/Ruby/output.rb
Normal file
|
@ -0,0 +1,56 @@
|
||||||
|
[3;38;2;249;38;114mclass[0m[38;2;166;226;46m [0m[4;38;2;102;217;239mRepeatedSubstring[0m
|
||||||
|
[38;2;166;226;46m [0m[3;38;2;249;38;114mdef[0m[38;2;248;248;242m [0m[38;2;246;170;17mfind_repeated_substring[0m[38;2;255;255;255m([0m[3;38;2;253;151;31ms[0m[38;2;255;255;255m)[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;117;113;94m#[0m[38;2;117;113;94m catch the edge cases[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;249;38;114mreturn[0m[38;2;248;248;242m [0m[38;2;249;38;114m'[0m[38;2;230;219;116mNONE[0m[38;2;249;38;114m'[0m[38;2;248;248;242m [0m[38;2;249;38;114mif[0m[38;2;248;248;242m s [0m[38;2;249;38;114m==[0m[38;2;248;248;242m [0m[38;2;249;38;114m'[0m[38;2;249;38;114m'[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;117;113;94m#[0m[38;2;117;113;94m check if the string consists of only one character => "aaaaaa" => "a"[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;249;38;114mreturn[0m[38;2;248;248;242m s[0m[38;2;248;248;242m.[0m[38;2;248;248;242msplit[0m[38;2;255;255;255m([0m[38;2;249;38;114m'[0m[38;2;249;38;114m'[0m[38;2;255;255;255m)[0m[38;2;248;248;242m.[0m[38;2;248;248;242muniq[0m[38;2;248;248;242m[[0m[38;2;190;132;255m0[0m[38;2;248;248;242m][0m[38;2;248;248;242m [0m[38;2;249;38;114mif[0m[38;2;248;248;242m s[0m[38;2;248;248;242m.[0m[38;2;248;248;242msplit[0m[38;2;255;255;255m([0m[38;2;249;38;114m'[0m[38;2;249;38;114m'[0m[38;2;255;255;255m)[0m[38;2;248;248;242m.[0m[38;2;248;248;242muniq[0m[38;2;248;248;242m.[0m[38;2;248;248;242mlength [0m[38;2;249;38;114m==[0m[38;2;248;248;242m [0m[38;2;190;132;255m1[0m
|
||||||
|
|
||||||
|
[38;2;248;248;242m searched [0m[38;2;249;38;114m=[0m[38;2;248;248;242m [0m[38;2;248;248;242m[[0m[38;2;248;248;242m][0m
|
||||||
|
[38;2;248;248;242m longest_prefix [0m[38;2;249;38;114m=[0m[38;2;248;248;242m [0m[38;2;190;132;255m0[0m
|
||||||
|
[38;2;248;248;242m long_prefix [0m[38;2;249;38;114m=[0m[38;2;248;248;242m [0m[38;2;249;38;114m'[0m[38;2;249;38;114m'[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;255;255;255m([0m[38;2;190;132;255m0[0m[38;2;249;38;114m..[0m[38;2;248;248;242ms[0m[38;2;248;248;242m.[0m[38;2;248;248;242mlength [0m[38;2;249;38;114m-[0m[38;2;248;248;242m [0m[38;2;190;132;255m1[0m[38;2;255;255;255m)[0m[38;2;248;248;242m.[0m[38;2;248;248;242meach [0m[38;2;249;38;114mdo[0m[38;2;248;248;242m [0m[38;2;248;248;242m|[0m[3;38;2;253;151;31mi[0m[38;2;248;248;242m|[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;249;38;114mnext[0m[38;2;248;248;242m [0m[38;2;249;38;114mif[0m[38;2;248;248;242m searched[0m[38;2;248;248;242m.[0m[38;2;102;217;239minclude?[0m[38;2;248;248;242m s[0m[38;2;248;248;242m[[0m[38;2;248;248;242mi[0m[38;2;248;248;242m][0m
|
||||||
|
|
||||||
|
[38;2;248;248;242m searched[0m[38;2;248;248;242m.[0m[38;2;248;248;242mpush[0m[38;2;255;255;255m([0m[38;2;248;248;242ms[0m[38;2;248;248;242m[[0m[38;2;248;248;242mi[0m[38;2;248;248;242m][0m[38;2;255;255;255m)[0m
|
||||||
|
[38;2;248;248;242m next_occurrences [0m[38;2;249;38;114m=[0m[38;2;248;248;242m next_index[0m[38;2;255;255;255m([0m[38;2;248;248;242ms[0m[38;2;248;248;242m,[0m[38;2;248;248;242m i [0m[38;2;249;38;114m+[0m[38;2;248;248;242m [0m[38;2;190;132;255m1[0m[38;2;248;248;242m,[0m[38;2;248;248;242m s[0m[38;2;248;248;242m[[0m[38;2;248;248;242mi[0m[38;2;248;248;242m][0m[38;2;255;255;255m)[0m
|
||||||
|
[38;2;248;248;242m next_occurrences[0m[38;2;248;248;242m.[0m[38;2;248;248;242meach [0m[38;2;249;38;114mdo[0m[38;2;248;248;242m [0m[38;2;248;248;242m|[0m[3;38;2;253;151;31mnext_occurrence[0m[38;2;248;248;242m|[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;249;38;114mnext[0m[38;2;248;248;242m [0m[38;2;249;38;114mif[0m[38;2;248;248;242m next_occurrence [0m[38;2;249;38;114m==[0m[38;2;248;248;242m [0m[38;2;249;38;114m-[0m[38;2;190;132;255m1[0m
|
||||||
|
|
||||||
|
[38;2;248;248;242m prefix [0m[38;2;249;38;114m=[0m[38;2;248;248;242m ge_prefix[0m[38;2;255;255;255m([0m[38;2;248;248;242ms[0m[38;2;248;248;242m[[0m[38;2;248;248;242mi[0m[38;2;249;38;114m..[0m[38;2;248;248;242mnext_occurrence [0m[38;2;249;38;114m-[0m[38;2;248;248;242m [0m[38;2;190;132;255m1[0m[38;2;248;248;242m][0m[38;2;248;248;242m,[0m[38;2;248;248;242m s[0m[38;2;248;248;242m[[0m[38;2;248;248;242mnext_occurrence[0m[38;2;249;38;114m..[0m[38;2;248;248;242ms[0m[38;2;248;248;242m.[0m[38;2;248;248;242mlength[0m[38;2;248;248;242m][0m[38;2;255;255;255m)[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;249;38;114mif[0m[38;2;248;248;242m prefix[0m[38;2;248;248;242m.[0m[38;2;248;248;242mlength [0m[38;2;249;38;114m>[0m[38;2;248;248;242m longest_prefix[0m
|
||||||
|
[38;2;248;248;242m longest_prefix [0m[38;2;249;38;114m=[0m[38;2;248;248;242m prefix[0m[38;2;248;248;242m.[0m[38;2;248;248;242mlength[0m
|
||||||
|
[38;2;248;248;242m long_prefix [0m[38;2;249;38;114m=[0m[38;2;248;248;242m prefix[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;249;38;114mend[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;249;38;114mend[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;249;38;114mend[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;117;113;94m#[0m[38;2;117;113;94m if prefix == " " it is a invalid sequence[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;249;38;114mreturn[0m[38;2;248;248;242m [0m[38;2;249;38;114m'[0m[38;2;230;219;116mNONE[0m[38;2;249;38;114m'[0m[38;2;248;248;242m [0m[38;2;249;38;114mif[0m[38;2;248;248;242m long_prefix[0m[38;2;248;248;242m.[0m[38;2;248;248;242mstrip[0m[38;2;248;248;242m.[0m[38;2;248;248;242mempty?[0m
|
||||||
|
|
||||||
|
[38;2;248;248;242m long_prefix[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;249;38;114mend[0m
|
||||||
|
|
||||||
|
[38;2;248;248;242m [0m[3;38;2;249;38;114mdef[0m[38;2;248;248;242m [0m[38;2;246;170;17mget_prefix[0m[38;2;255;255;255m([0m[3;38;2;253;151;31ms1[0m[38;2;248;248;242m,[0m[38;2;248;248;242m [0m[3;38;2;253;151;31ms2[0m[38;2;255;255;255m)[0m
|
||||||
|
[38;2;248;248;242m prefix [0m[38;2;249;38;114m=[0m[38;2;248;248;242m [0m[38;2;249;38;114m'[0m[38;2;249;38;114m'[0m
|
||||||
|
[38;2;248;248;242m min_length [0m[38;2;249;38;114m=[0m[38;2;248;248;242m [0m[38;2;248;248;242m[[0m[38;2;248;248;242ms1[0m[38;2;248;248;242m.[0m[38;2;248;248;242mlength[0m[38;2;248;248;242m,[0m[38;2;248;248;242m s2[0m[38;2;248;248;242m.[0m[38;2;248;248;242mlength[0m[38;2;248;248;242m][0m[38;2;248;248;242m.[0m[38;2;248;248;242mmin[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;249;38;114mreturn[0m[38;2;248;248;242m [0m[38;2;249;38;114m'[0m[38;2;249;38;114m'[0m[38;2;248;248;242m [0m[38;2;249;38;114mif[0m[38;2;248;248;242m s1[0m[38;2;248;248;242m.[0m[38;2;102;217;239mnil?[0m[38;2;248;248;242m [0m[38;2;249;38;114m||[0m[38;2;248;248;242m s2[0m[38;2;248;248;242m.[0m[38;2;102;217;239mnil?[0m
|
||||||
|
|
||||||
|
[38;2;248;248;242m [0m[38;2;255;255;255m([0m[38;2;190;132;255m0[0m[38;2;249;38;114m..[0m[38;2;248;248;242mmin_length [0m[38;2;249;38;114m-[0m[38;2;248;248;242m [0m[38;2;190;132;255m1[0m[38;2;255;255;255m)[0m[38;2;248;248;242m.[0m[38;2;248;248;242meach [0m[38;2;249;38;114mdo[0m[38;2;248;248;242m [0m[38;2;248;248;242m|[0m[3;38;2;253;151;31mi[0m[38;2;248;248;242m|[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;249;38;114mreturn[0m[38;2;248;248;242m prefix [0m[38;2;249;38;114mif[0m[38;2;248;248;242m s1[0m[38;2;248;248;242m[[0m[38;2;248;248;242mi[0m[38;2;248;248;242m][0m[38;2;248;248;242m [0m[38;2;249;38;114m!=[0m[38;2;248;248;242m s2[0m[38;2;248;248;242m[[0m[38;2;248;248;242mi[0m[38;2;248;248;242m][0m
|
||||||
|
|
||||||
|
[38;2;248;248;242m prefix [0m[38;2;249;38;114m+=[0m[38;2;248;248;242m s1[0m[38;2;248;248;242m[[0m[38;2;248;248;242mi[0m[38;2;248;248;242m][0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;249;38;114mend[0m
|
||||||
|
[38;2;248;248;242m prefix[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;249;38;114mend[0m
|
||||||
|
|
||||||
|
[38;2;248;248;242m [0m[3;38;2;249;38;114mdef[0m[38;2;248;248;242m [0m[38;2;246;170;17mnext_index[0m[38;2;255;255;255m([0m[3;38;2;253;151;31mseq[0m[38;2;248;248;242m,[0m[38;2;248;248;242m [0m[3;38;2;253;151;31mindex[0m[38;2;248;248;242m,[0m[38;2;248;248;242m [0m[3;38;2;253;151;31mvalue[0m[38;2;255;255;255m)[0m
|
||||||
|
[38;2;248;248;242m indexes [0m[38;2;249;38;114m=[0m[38;2;248;248;242m [0m[38;2;248;248;242m[[0m[38;2;248;248;242m][0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;255;255;255m([0m[38;2;102;217;239mindex[0m[38;2;249;38;114m..[0m[38;2;248;248;242mseq[0m[38;2;248;248;242m.[0m[38;2;248;248;242mlength[0m[38;2;255;255;255m)[0m[38;2;248;248;242m.[0m[38;2;248;248;242meach [0m[38;2;249;38;114mdo[0m[38;2;248;248;242m [0m[38;2;248;248;242m|[0m[3;38;2;253;151;31mi[0m[38;2;248;248;242m|[0m
|
||||||
|
[38;2;248;248;242m indexes[0m[38;2;248;248;242m.[0m[38;2;248;248;242mpush[0m[38;2;255;255;255m([0m[38;2;248;248;242mi[0m[38;2;255;255;255m)[0m[38;2;248;248;242m [0m[38;2;249;38;114mif[0m[38;2;248;248;242m seq[0m[38;2;248;248;242m[[0m[38;2;248;248;242mi[0m[38;2;248;248;242m][0m[38;2;248;248;242m [0m[38;2;249;38;114m==[0m[38;2;248;248;242m value[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;249;38;114mend[0m
|
||||||
|
[38;2;248;248;242m indexes[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;249;38;114mend[0m
|
||||||
|
|
||||||
|
[38;2;248;248;242m [0m[3;38;2;249;38;114mdef[0m[38;2;248;248;242m [0m[38;2;246;170;17mfind_repeated_substring_file[0m[38;2;255;255;255m([0m[3;38;2;253;151;31mfile_path[0m[38;2;255;255;255m)[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;102;217;239mFile[0m[38;2;248;248;242m.[0m[38;2;102;217;239mopen[0m[38;2;255;255;255m([0m[38;2;248;248;242mfile_path[0m[38;2;255;255;255m)[0m[38;2;248;248;242m.[0m[38;2;248;248;242mread[0m[38;2;248;248;242m.[0m[38;2;248;248;242meach_line[0m[38;2;248;248;242m.[0m[38;2;248;248;242mmap [0m[38;2;248;248;242m{[0m[38;2;248;248;242m [0m[38;2;248;248;242m|[0m[3;38;2;253;151;31mline[0m[38;2;248;248;242m|[0m[38;2;248;248;242m find_repeated_substring[0m[38;2;255;255;255m([0m[38;2;248;248;242mline[0m[38;2;255;255;255m)[0m[38;2;248;248;242m [0m[38;2;248;248;242m}[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;249;38;114mend[0m
|
||||||
|
[38;2;249;38;114mend[0m
|
56
tests/syntax-tests/source/Ruby/output.rb
Normal file
56
tests/syntax-tests/source/Ruby/output.rb
Normal file
|
@ -0,0 +1,56 @@
|
||||||
|
class RepeatedSubstring
|
||||||
|
def find_repeated_substring(s)
|
||||||
|
# catch the edge cases
|
||||||
|
return 'NONE' if s == ''
|
||||||
|
# check if the string consists of only one character => "aaaaaa" => "a"
|
||||||
|
return s.split('').uniq[0] if s.split('').uniq.length == 1
|
||||||
|
|
||||||
|
searched = []
|
||||||
|
longest_prefix = 0
|
||||||
|
long_prefix = ''
|
||||||
|
(0..s.length - 1).each do |i|
|
||||||
|
next if searched.include? s[i]
|
||||||
|
|
||||||
|
searched.push(s[i])
|
||||||
|
next_occurrences = next_index(s, i + 1, s[i])
|
||||||
|
next_occurrences.each do |next_occurrence|
|
||||||
|
next if next_occurrence == -1
|
||||||
|
|
||||||
|
prefix = ge_prefix(s[i..next_occurrence - 1], s[next_occurrence..s.length])
|
||||||
|
if prefix.length > longest_prefix
|
||||||
|
longest_prefix = prefix.length
|
||||||
|
long_prefix = prefix
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
# if prefix == " " it is a invalid sequence
|
||||||
|
return 'NONE' if long_prefix.strip.empty?
|
||||||
|
|
||||||
|
long_prefix
|
||||||
|
end
|
||||||
|
|
||||||
|
def get_prefix(s1, s2)
|
||||||
|
prefix = ''
|
||||||
|
min_length = [s1.length, s2.length].min
|
||||||
|
return '' if s1.nil? || s2.nil?
|
||||||
|
|
||||||
|
(0..min_length - 1).each do |i|
|
||||||
|
return prefix if s1[i] != s2[i]
|
||||||
|
|
||||||
|
prefix += s1[i]
|
||||||
|
end
|
||||||
|
prefix
|
||||||
|
end
|
||||||
|
|
||||||
|
def next_index(seq, index, value)
|
||||||
|
indexes = []
|
||||||
|
(index..seq.length).each do |i|
|
||||||
|
indexes.push(i) if seq[i] == value
|
||||||
|
end
|
||||||
|
indexes
|
||||||
|
end
|
||||||
|
|
||||||
|
def find_repeated_substring_file(file_path)
|
||||||
|
File.open(file_path).read.each_line.map { |line| find_repeated_substring(line) }
|
||||||
|
end
|
||||||
|
end
|
Loading…
Reference in a new issue