Add sample files
This commit is contained in:
3
.gitignore
vendored
3
.gitignore
vendored
@@ -7,8 +7,7 @@
|
|||||||
|
|
||||||
.vscode
|
.vscode
|
||||||
|
|
||||||
tests/*
|
samples/t_*
|
||||||
!tests/.keep
|
|
||||||
|
|
||||||
build
|
build
|
||||||
bin
|
bin
|
||||||
|
|||||||
141
samples/bash.sh
Normal file
141
samples/bash.sh
Normal 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
195
samples/ruby.rb
Normal 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."
|
||||||
Reference in New Issue
Block a user