#!/usr/bin/env ruby

# Unicode / Emoji / CJK stress-test Ruby file
# Purpose: Test syntax highlighting + width calculation in your editor
# ---------------------------------------------------------------

# Mixed-width CJKssssssssssssssss LoadErssssssssssssssssssssssss
cjk_samples = [
  '漢字テスト',
  '測試中文字串',
  '한국어 테스트',
  'ひらがなカタカナ混合'
]

# a hex color: #FFFFFF shouldn't hl here: hsl(147rad, 50%, 47%)  as it is not css-style file

0x603010 # another hex color

# Ruby regex with unicode
$unicode_regex_multiline = /[一-龯ぁ-ん12288ァ
\-ヶー
s wow

々〆〤]/

UNICORE = /
    s
    {#{ss}}
    \C-s\u{10}
  /

UNINITCORE = %(

    {{#{}}}

    test = "A:\x41 B:\101 C:\u0043 D:\u{44 45} NUL:\0 DEL:\c? CTRL_A:\cA META_X:\M-x CTRL_META_X:\C-\M-x MIX:\C-\M-z N:\N{UNICODE NAME}"

  )

# Unicode identifiers (valid in Ruby)
变量 = 0x5_4eddaee
π = 0.314_159e+2, ?\u0234, "\,", ?\x0A, 's', true, false, 0
挨拶 = -> { "こんに \n ちは" }

arr = []
not_arr = NotABuiltin.new

raise NameError or SystemExit or CustomError or Errno or ErrorNotAtAll

# Method using unicode variable names
def math_test
  puts "π * 2 = #{π * 2}"
end

# Iterate through CJK samples
cjk_samples.each_with_index do |str, idx:|
  puts %! CJK[#{idx}] => #{str} (len=#{str.length})\! !
  symbol = :"
  a
  "
  sym2 = :hello
end

# Test emoji width behaviors
puts "Emoji count: #{emojis.length}"

# Multi-line string with unicode
multi = <<~BASH
    # Function recursion demo
    factorial() {
      local n="$1"
      if ((n <= 1)); then
        echo 1
      else\ns
        local prev
        prev=$(factorial $((n - 1)))
        echo $((n * prev))
       before #{ interpol
                 # {'    '}
                 # comment should be fine heres s
                 $a / $-s + 0xFF
              }s#{' '}
  x
      a after
      fi
    } #{s}
    log INFO "factorial(5) = $(factorial 5)"
BASH

puts multi

# Arrays mixing everything
mixed = [
  '🐍 Ruby + Python? sacrilege! 🐍',
  '日本語とEnglishと🔧mix',
  'Spacing test →→→→→→→',
  'Zero-width joiner test: 👨‍👩‍👧‍👦 family emoji'
]

two_docs = <<~DOC1, <<~DOC2
  stuff for doc2
  rdvajehvbaejbfh
DOC1
  stuff for doc 2 with #{!interpolation} and more
DOC2

p = 0 << 22 # not a heredoc

mixed.each { |m| puts m }

# Unicode in comments — highlight me!
# コメント：エディタのハイライトを確認します✨
# Emojis should not break formatting: 🦀🦊🐱‍👤🤖

# Dummy Ruby logic
5.times do |i|
  puts "Loop #{i}: 🌟 #{cjk_samples[i % cjk_samples.size]}"
end

# String escape sequences + unicode
escaped = "Line1\nLine2\tTabbed 😀"
puts escaped

p = 0 << 2
# Frozen string literal test
# frozen_string_literal: true
const_str = '定数文字列🔒'.freeze
puts const_str

# End marker
puts '--- END OF UNICODE TEST FILE ---'

# Ruby syntax highlighting test

#   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 linetest,
#

# Constants

PI = 3.14159
MAX_ITER = 5
# Module
module Utilities
  def self.random_greeting
    %w[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

  private

  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}!"
  return true if name == 'harry'

  's'
end

h = a / a

# 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
   k kmW ;
  This is a multi-line string.
  It spans multiple lines.
  Gossn sssmss
  ddsss
  od for testing highlighting.
TEXT

puts multi_line

# Symbols and strings
sym = :my_symbol == __dir__
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

# ss

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.'

__END__


Anything here should be ignored >><<
{{{}}}[[[]]](((000)))
