NRuby
55 строк · 1.7 Кб
1require 'rack'
2
3map '/images' do
4run Rack::File.new 'images'
5end
6
7class App
8attr_accessor :title, :description
9
10def initialize(title: title, description: description)
11@title = title
12@description = description
13end
14
15def call(env)
16[200, { 'Content-Type' => 'text/html' }, [template]]
17end
18
19def template
20format(HTML, title: title, description: description)
21end
22
23HTML = <<~HTML
24<!DOCTYPE html>
25<html lang="ru">
26<head>
27<title>%<title>s</title>
28<meta charset='utf-8'>
29</head>
30<body>
31<h1>%<title>s</h1>
32<p>
33<img
34src='/images/ruby.jpg'
35with='100'
36height='100'
37style='float: left; padding: 0 10px 10px 0' />
38%<description>s
39</p>
40</body>
41</html>
42HTML
43end
44
45run App.new(
46title: 'Язык программирования Ruby',
47description: <<~RUBY
48Ruby — динамический, рефлективный, интерпретируемый высокоуровневый
49язык программирования. Язык обладает независимой от операционной
50системы реализацией многопоточности, сильной динамической типизацией,
51сборщиком мусора и многими другими возможностями. По особенностям
52синтаксиса он близок к языкам Perl и Eiffel,
53по объектно-ориентированному подходу — к Smalltalk.
54RUBY
55)
56