Eshu

 view release on metacpan or  search on metacpan

t/0179-hl-ruby.t  view on Meta::CPAN


{
    my $out = hl('$global = 1');
    like($out, qr/<span class="esh-v">\$global<\/span>/, '$global');
}

{
    my $out = hl('@ivar = 2');
    like($out, qr/<span class="esh-v">\@ivar<\/span>/, '@ivar');
}

{
    my $out = hl('@@cvar = 3');
    like($out, qr/<span class="esh-v">\@\@cvar<\/span>/, '@@cvar');
}

# ── numbers ──────────────────────────────────────────────────────

{
    my $out = hl('42');
    like($out, qr/<span class="esh-n">42<\/span>/, 'integer');
}

{
    my $out = hl('3.14');
    like($out, qr/<span class="esh-n">3\.14<\/span>/, 'float');
}

{
    my $out = hl('0xFF');
    like($out, qr/<span class="esh-n">0xFF<\/span>/, 'hex');
}

{
    my $out = hl('0b1010');
    like($out, qr/<span class="esh-n">0b1010<\/span>/, 'binary');
}

# ── comments ─────────────────────────────────────────────────────

{
    my $out = hl('# a comment');
    like($out, qr/<span class="esh-c"># a comment<\/span>/, '# comment');
}

# ── HTML safety ──────────────────────────────────────────────────

{
    my $out = hl('x < y');
    like($out, qr/&lt;/, 'less-than HTML-escaped');
}

{
    my $out = hl('puts "<b>bold</b>"');
    like($out, qr/&lt;b&gt;bold&lt;\/b&gt;/, 'HTML tags in string escaped');
}

# ── partial keyword non-match ─────────────────────────────────────

{
    my $out = hl('endpoint = 1');
    unlike($out, qr/<span class="esh-k">end<\/span>/, 'end inside identifier not highlighted');
}

{
    my $out = hl('defined?(foo)');
    like($out, qr/<span class="esh-k">defined\?<\/span>/, 'defined? with ? suffix');
}


# ── more keywords ─────────────────────────────────────────────────

{
    my $out = hl('module Foo; end');
    like($out, qr/<span class="esh-k">module<\/span>/, 'module keyword');
}

{
    my $out = hl('while x do y end');
    like($out, qr/<span class="esh-k">while<\/span>/, 'while keyword');
    like($out, qr/<span class="esh-k">do<\/span>/,    'do keyword');
}

{
    my $out = hl('until x; end');
    like($out, qr/<span class="esh-k">until<\/span>/, 'until keyword');
}

{
    my $out = hl('for i in 1..10; end');
    like($out, qr/<span class="esh-k">for<\/span>/, 'for keyword');
    like($out, qr/<span class="esh-k">in<\/span>/,  'in keyword');
}

{
    my $out = hl('case x when 1 then :a when 2 then :b end');
    like($out, qr/<span class="esh-k">case<\/span>/,  'case keyword');
    like($out, qr/<span class="esh-k">when<\/span>/,  'when keyword');
}

{
    my $out = hl('def gen; yield; end');
    like($out, qr/<span class="esh-k">yield<\/span>/, 'yield keyword');
}

{
    my $out = hl('x = true and false or not nil');
    like($out, qr/<span class="esh-k">and<\/span>/,   'and keyword');
    like($out, qr/<span class="esh-k">or<\/span>/,    'or keyword');
    like($out, qr/<span class="esh-k">not<\/span>/,   'not keyword');
    like($out, qr/<span class="esh-k">false<\/span>/, 'false keyword');
}

{
    my $out = hl('while x; next; break; redo; end');
    like($out, qr/<span class="esh-k">next<\/span>/,  'next keyword');
    like($out, qr/<span class="esh-k">break<\/span>/, 'break keyword');
    like($out, qr/<span class="esh-k">redo<\/span>/,  'redo keyword');
}

{



( run in 3.232 seconds using v1.01-cache-2.11-cpan-9789f410c06 )