# Κρυμμένα διαμάντια του CLI::UI 💎

Το [CLI::UI](https://github.com/Shopify/cli-ui "CLI::UI ") είναι ένα Ruby gem που σχεδιάστηκε για να βελτιώνει τα command-line interfaces (CLIs), προσφέροντας ένα framework για τη μορφοποίηση και το styling του κειμένου εξόδου. Ενσωματώνεται άψογα με άλλα Ruby gems όπως το [Thor](https://github.com/rails/thor "Thor"), επεκτείνοντας ακόμα περισσότερο τις δυνατότητές του.

Υπάρχουν μερικά ωραία χαρακτηριστικά που δεν τεκμηριώνονται πουθενά. Ορίστε κάποια από αυτά 👇

### Προσθήκη συνδέσμων 🔗

<figure class="figure"><img class="figure__media" src="/logs/2024/cli-ui-hidden-gems/cli-ui-link.gif" alt="CLI::UI.link" width="640" height="78"></figure>

```ruby
puts CLI::UI.link('https://logs.panos.codes', 'My blog')
```

### Εκτύπωση πινάκων

![Thor CLI print_table](./thor-cli-print-table.png)

Η μορφοποίηση του `CLI::UI` μπορεί να συνδυαστεί με το gem Thor, που μας δίνει πρόσβαση στη μέθοδο `print_table`

```ruby
   row_1 = [
    CLI::UI.fmt("{{red:Header}}"),
    CLI::UI.fmt("{{red:Value}}"),
  ]

  row_2 = [
    CLI::UI.fmt('{{info:Accept-Encoding:}} '),  
    CLI::UI.fmt('{{white:gzip, deflate, br, zstd}}')
  ]

  row_3 = [
    CLI::UI.fmt('{{info:Accept:}} '),  
    CLI::UI.fmt('{{white:text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8}}')
  ]

  row_4 = [
    CLI::UI.fmt('{{info:Cache-Control:}} '),  
    CLI::UI.fmt('{{white:no-cache}}')
  ]

  Thor::Shell::Basic.new.print_table([ row_1, row_2, row_3, row_4]) 
```

### Διαχωρισμός frames

![CLI::UI Frame seperation](./cli-ui-frame-seperation.png)

Το `CLI::UI.Frame` μας δίνει την πρακτική μέθοδο `.divider`

```ruby
CLI::UI::Frame.open(CLI::UI.link('https://logs.panos.codes', 'My blog'), timing: false) do
  CLI::UI::Frame.divider('Headers', frame_style: :bracket)
  Thor::Shell::Basic.new.print_table([ row_1, row_2, row_3, row_4]) 

  CLI::UI::Frame.divider('Response')
  puts "<html>...</html>"
end
```