Add sample files

This commit is contained in:
2025-12-10 22:12:27 +00:00
parent 646c6e9026
commit 3a87278fc3
4 changed files with 337 additions and 2 deletions

3
.gitignore vendored
View File

@@ -7,8 +7,7 @@
.vscode .vscode
tests/* samples/t_*
!tests/.keep
build build
bin bin

141
samples/bash.sh Normal file
View File

@@ -0,0 +1,141 @@
#!/usr/bin/env bash
# ---------------------------------------------
# Bash Syntax Highlighter Test Specification
# ---------------------------------------------
VERSION="1.0.0"
declare -a ITEMS=("alpha" "beta" "gamma" "delta")
declare -A MAP=([one]=1 [two]=2 [three]=3)
log() {
local level="$1"
shift
echo "[$level] $*"
}
# Simulated colored output (no real colors, just placeholders)
colorize() {
local color="$1"
shift
echo "<$color>$*</$color>"
}
# Example of error handling
handle_error() {
log ERROR "An error occurred on line $1"
}
trap 'handle_error $LINENO' ERR
# Multiline string test
read -r -d '' MULTI <<'EOF'
This is a multi-line
string used to test
syntax highlighting for
here-documents.
EOF
log INFO "Multi-line string loaded"
# Arithmetic test
counter=0
while ((counter < 5)); do
log DEBUG "Counter = $counter"
((counter++))
done
# Subshelled loops and alternating quoting
for item in "${ITEMS[@]}"; do
(
msg="Processing $item"
echo "$(colorize blue "$msg")"
)
done
# Case statement test
name="beta"
case "$name" in
alpha)
log INFO "Name is alpha"
;;
beta)
log INFO "Name is beta"
;;
*)
log WARN "Unknown name"
;;
esac
# Testing associative array
for key in "${!MAP[@]}"; do
value="${MAP[$key]}"
log INFO "MAP[$key] = $value"
done
# Function recursion demo
factorial() {
local n="$1"
if ((n <= 1)); then
echo 1
else
local prev
prev=$(factorial $((n - 1)))
echo $((n * prev))
fi
}
log INFO "factorial(5) = $(factorial 5)"
# Test of parameter expansion variety
FOO="hello world"
BAR="${FOO/w/r}"
BAZ=${FOO^^}
QUX=${FOO,,}
log DEBUG "BAR=$BAR"
log DEBUG "BAZ=$BAZ"
log DEBUG "QUX=$QUX"
# Simulated config parsing
CONFIG="
key1=value1
key2=value two
key3=42
"
while IFS='=' read -r key val; do
[[ -z "$key" ]] && continue
log INFO "Config: $key = $val"
done <<<"$CONFIG"
# Nested loops + array ops
numbers=(1 2 3 4 5)
letters=(a b c)
for n in "${numbers[@]}"; do
for l in "${letters[@]}"; do
echo "Pair: $n:$l"
done
done
# Here-string test
grep "world" <<<"$FOO" >/dev/null && log INFO "FOO contains world"
# Process substitution test
diff <(echo foo) <(echo foo) >/dev/null && log INFO "diff matched"
# Command substitution with pipeline
timestamp=$(date | sed 's/ /_/g')
log INFO "Timestamp: $timestamp"
# Testing array slicing
slice=("${numbers[@]:1:3}")
log INFO "Slice: ${slice[*]}"
# Simple I/O test (safe)
echo "Enter something (test for reading):"
read -r user_input
log INFO "You typed: $user_input"
# End marker
log INFO "Script finished (version $VERSION)"

195
samples/ruby.rb Normal file
View File

@@ -0,0 +1,195 @@
#!/usr/bin/env ruby
# Ruby syntax highlighting test
=begin
This is a multi-line comment.
It spans multiple lines.
Good for testing highlighting.
This is a wrapped line test, This is a wrapped line test, This is a wrapped line test, This is a wrapped line test, This is a wrapped line test, This is a wrapped line test, This is a wrapped line test, This is a wrapped line test, This is a wrapped line test, This is a wrapped line test, This is a wrapped line test, This is a wrapped line test, This is a wrapped line test, This is a wrapped line test, This is a wrapped line test, This is a wrapped line test, This is a wrapped line test, This is a wrapped line test, This is a wrapped line test, This is a wrapped line test, This is a wrapped line test, This is a wrapped line test, This is a wrapped line test, This is a wrapped line test, This is a wrapped line test, This is a wrapped line test, This is a wrapped line test, This is a wrapped line test, This is a wrapped line test, This is a wrapped line test, This is a wrapped line test, This is a wrapped line test, This is a wrapped line test, This is a wrapped line test, This is a wrapped line test, This is a wrapped line test, This is a wrapped line test, This is a wrapped line test, This is a wrapped line test, This is a wrapped line test, This is a wrapped line test, This is a wrapped line test, This is a wrapped line test, This is a wrapped line test, This is a wrapped line test, This is a wrapped line test, This is a wrapped line test, This is a wrapped line test, This is a wrapped line test, This is a wrapped line test, This is a wrapped line test, This is a wrapped line test, This is a wrapped line test, This is a wrapped line test,
=end
# Constants
PI = 3.14159
MAX_ITER = 5
# Module
module Utilities
def self.random_greeting
["Hello", "Hi", "Hey", "Hola", "Bonjour", "Merhaba"].sample
end
def self.factorial(n)
return 1 if n <= 1
n * factorial(n - 1)
end
end
# Class
class TestObject
attr_accessor :name, :value
def initialize(name, value)
@name = name
@value = value
end
def display
puts "#{@name}: #{@value}"
end
def double_value
@value * 2
end
end
# Inheritance
class SpecialObject < TestObject
def triple_value
@value * 3
end
end
# Lambda
adder = ->(x, y) { x + y }
# Array and hash
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
hash = { a: 1, b: 2, c: 3 }
# Iteration
numbers.each do |n|
puts "Number: #{n}"
end
# Hash iteration
hash.each do |key, value|
puts "#{key} => #{value}"
end
# Conditional
numbers.each do |n|
if n.even?
puts "#{n} is even"
else
puts "#{n} is odd"
end
end
# Method definition
def greet_person(name)
puts "#{Utilities.random_greeting}, #{name}!"
end
# Calling methods
greet_person("Alice")
greet_person("Bob")
# Loops
i = 0
while i < 5
puts "Loop iteration #{i}"
i += 1
end
for j in 1..3
puts "For loop #{j}"
end
# Begin-rescue-ensure
begin
risky = 10 / 2
puts "Risky operation succeeded: #{risky}"
rescue ZeroDivisionError => e
puts "Caught an error: #{e}"
ensure
puts "This runs no matter what"
end
# Arrays of objects
objs = []
5.times do |k|
objs << TestObject.new("Obj#{k}", k)
end
objs.each(&:display)
# Nested arrays
nested = [[1, 2], [3, 4], [5, 6]]
nested.each do |arr|
arr.each { |x| print "#{x} " }
puts
end
# Case statement
numbers.each do |n|
case n
when 1..3
puts "#{n} is small"
when 4..7
puts "#{n} is medium"
else
puts "#{n} is large"
end
end
# Using factorial
(0..5).each do |n|
puts "Factorial of #{n} is #{Utilities.factorial(n)}"
end
# Special objects
so = SpecialObject.new("Special", 10)
puts "Double: #{so.double_value}, Triple: #{so.triple_value}"
# String interpolation and formatting
puts "PI is approximately #{PI.round(2)}"
# Multi-line strings
multi_line = <<~TEXT
This is a multi-line string.
It spans multiple lines.
Good for testing highlighting.
TEXT
puts multi_line
# Symbols and strings
sym = :my_symbol
str = "my string"
puts "Symbol: #{sym}, String: #{str}"
# Random numbers
rand_nums = Array.new(5) { rand(100) }
puts "Random numbers: #{rand_nums.join(', ')}"
# More loops
rand_nums.each_with_index do |num, idx|
puts "Index #{idx} has number #{num}"
end
# Ternary operator
rand_nums.each do |num|
puts num.even? ? "#{num} is even" : "#{num} is odd"
end
# Block with yield
def wrapper
puts "Before block"
yield if block_given?
puts "After block"
end
wrapper { puts "Inside block" }
# Sorting
sorted = rand_nums.sort
puts "Sorted: #{sorted.join(', ')}"
# Regex
sample_text = "The quick brown fox jumps over the lazy dog"
puts "Match 'fox'?" if sample_text =~ /fox/
# End of test script
puts "Ruby syntax highlighting test complete."

View File