diff --git a/ru/news/_posts/2019-05-30-ruby-2-7-0-preview1-released.md b/ru/news/_posts/2019-05-30-ruby-2-7-0-preview1-released.md
index dfe6f4a5ea..c13e86f6a9 100644
--- a/ru/news/_posts/2019-05-30-ruby-2-7-0-preview1-released.md
+++ b/ru/news/_posts/2019-05-30-ruby-2-7-0-preview1-released.md
@@ -28,13 +28,13 @@ lang: ru
Сопоставление с образцом, широко используемое в функциональных языках программирования, представлено в качестве экспериментального нововведения. [#14912](https://bugs.ruby-lang.org/issues/14912)
Оно позволяет пересекать с указанным объектом и присваивать ему значение, если оно соответствует шаблону.
-{% highlight ruby %}
+```ruby
case JSON.parse('{...}', symbolize_names: true)
in {name: "Alice", children: [{name: "Bob", age: age}]}
p age
...
end
-{% endhighlight %}
+```
Подробнее, смотрите [Сопоставление с образцом - новая особенность Ruby 2.7](https://speakerdeck.com/k_tsj/pattern-matching-new-feature-in-ruby-2-dot-7).
diff --git a/ru/news/_posts/2019-10-22-ruby-2-7-0-preview2-released.md b/ru/news/_posts/2019-10-22-ruby-2-7-0-preview2-released.md
index 479aa7178d..c81df7679e 100644
--- a/ru/news/_posts/2019-10-22-ruby-2-7-0-preview2-released.md
+++ b/ru/news/_posts/2019-10-22-ruby-2-7-0-preview2-released.md
@@ -29,13 +29,13 @@ lang: ru
Сопоставление с образцом, широко используемое в функциональных языках программирования, представлено в качестве экспериментального нововведения. [[Feature #14912]](https://bugs.ruby-lang.org/issues/14912)
Оно позволяет пересекать с указанным объектом и присваивать ему значение, если оно соответствует шаблону.
-{% highlight ruby %}
+```ruby
case JSON.parse('{...}', symbolize_names: true)
in {name: "Alice", children: [{name: "Bob", age: age}]}
p age
...
end
-{% endhighlight %}
+```
Подробнее, смотрите [Сопоставление с образцом - новая особенность Ruby 2.7](https://speakerdeck.com/k_tsj/pattern-matching-new-feature-in-ruby-2-dot-7).
@@ -60,12 +60,12 @@ end
ключевых слов, добавьте оператор двойную звёздочку для избежания
предупреждения и обеспечения правильного поведения в Ruby 3.
- {% highlight ruby %}
+ ```ruby
def foo(key: 42); end; foo({key: 42}) # warned
def foo(**kw); end; foo({key: 42}) # warned
def foo(key: 42); end; foo(**{key: 42}) # OK
def foo(**kw); end; foo(**{key: 42}) # OK
- {% endhighlight %}
+ ```
* Когда вызов метода передает ключевые слова методу, который принимает
ключевые слова, но он не передает достаточно необходимых позиционных
@@ -74,12 +74,12 @@ end
в качестве хэша вместо ключевого слова чтобы избежать предупреждения
и обеспечить правильное поведение в Ruby 3.
- {% highlight ruby %}
+ ```ruby
def foo(h, **kw); end; foo(key: 42) # warned
def foo(h, key: 42); end; foo(key: 42) # warned
def foo(h, **kw); end; foo({key: 42}) # OK
def foo(h, key: 42); end; foo({key: 42}) # OK
- {% endhighlight %}
+ ```
* Когда метод принимает определенные ключевые слова, но не ключевое
слово звёздочку, и хэш или ключевые слова звёздочки передаются в
@@ -88,38 +88,38 @@ end
обновить вызывающий код чтобы передать отдельные хэши, для
обеспечения правильного поведения в Ruby 3.
- {% highlight ruby %}
+ ```ruby
def foo(h={}, key: 42); end; foo("key" => 43, key: 42) # warned
def foo(h={}, key: 42); end; foo({"key" => 43, key: 42}) # warned
def foo(h={}, key: 42); end; foo({"key" => 43}, key: 42) # OK
- {% endhighlight %}
+ ```
* Если метод не принимает ключевые слова и вызывается с ключевыми
словами, ключевые слова по-прежнему обрабатываются как позиционный
хэш, без предупреждений. Такое поведение сохранится в Ruby 3.
- {% highlight ruby %}
+ ```ruby
def foo(opt={}); end; foo( key: 42 ) # OK
- {% endhighlight %}
+ ```
* НеСимволы допускаются в качестве ключевых слов аргументов ключей,
если метод принимает произвольные ключевые слова. [[Feature #14183]](https://bugs.ruby-lang.org/issues/14183)
- {% highlight ruby %}
+ ```ruby
def foo(**kw); p kw; end; foo("str" => 1) #=> {"str"=>1}
- {% endhighlight %}
+ ```
* **nil
допускается в определениях методов явно отмечать
что метод не принимает никаких ключевых слов. Вызов такого метода
с ключевыми словами приведет к возникновнию ArgumentError. [[Feature #14183]](https://bugs.ruby-lang.org/issues/14183)
- {% highlight ruby %}
+ ```ruby
def foo(h, **nil); end; foo(key: 1) # ArgumentError
def foo(h, **nil); end; foo(**{key: 1}) # ArgumentError
def foo(h, **nil); end; foo("str" => 1) # ArgumentError
def foo(h, **nil); end; foo({key: 1}) # OK
def foo(h, **nil); end; foo({"str" => 1}) # OK
- {% endhighlight %}
+ ```
* Передача пустого ключевого слова звёздочки методу, который больше
не принимает ключевые слова не передает пустой хэш, если пустой хэш не
@@ -127,12 +127,12 @@ end
выдано предупреждение. Удалите двойную звёздочку для продолжения передачи
позиционного хэша. [[Feature #14183]](https://bugs.ruby-lang.org/issues/14183)
- {% highlight ruby %}
+ ```ruby
h = {}; def foo(*a) a end; foo(**h) # []
h = {}; def foo(a) a end; foo(**h) # {} and warning
h = {}; def foo(*a) a end; foo(h) # [{}]
h = {}; def foo(a) a end; foo(h) # {}
- {% endhighlight %}
+ ```
## Другие Значимые Новые Функции
@@ -143,36 +143,36 @@ end
* Вводится экспериментальный безначальный диапазон. Это может не так полезно,
как бесконечный диапазон, но может пригодиться для DSL. [[Feature #14799]](https://bugs.ruby-lang.org/issues/14799)
- {% highlight ruby %}
+ ```ruby
ary[..3] # identical to ary[0..3]
rel.where(sales: ..100)
- {% endhighlight %}
+ ```
* `Enumerable#tally` добавлен. Подсчитывает вхождение каждого элемента.
- {% highlight ruby %}
+ ```ruby
["a", "b", "c", "b"].tally
#=> {"a"=>1, "b"=>2, "c"=>1}
- {% endhighlight %}
+ ```
* Вызов приватного метода по `self` теперь возможен. [[Feature #11297]](https://bugs.ruby-lang.org/issues/11297) [[Feature #16123]](https://bugs.ruby-lang.org/issues/16123)
- {% highlight ruby %}
+ ```ruby
def foo
end
private :foo
self.foo
- {% endhighlight %}
+ ```
* `Enumerator::Lazy#eager` добавлен. Генерирует не ленивый перечислитель
из ленивого перечислителя. [[Feature #15901]](https://bugs.ruby-lang.org/issues/15901)
- {% highlight ruby %}
+ ```ruby
a = %w(foo bar baz)
e = a.lazy.map {|x| x.upcase }.map {|x| x + "!" }.eager
p e.class #=> Enumerator
p e.map {|x| x + "?" } #=> ["FOO!?", "BAR!?", "BAZ!?"]
- {% endhighlight %}
+ ```
## Улучшения производительности
diff --git a/ru/news/_posts/2019-11-23-ruby-2-7-0-preview3-released.md b/ru/news/_posts/2019-11-23-ruby-2-7-0-preview3-released.md
index da6f63ea2b..e09f0acd36 100644
--- a/ru/news/_posts/2019-11-23-ruby-2-7-0-preview3-released.md
+++ b/ru/news/_posts/2019-11-23-ruby-2-7-0-preview3-released.md
@@ -44,7 +44,7 @@ lang: ru
Оно позволяет пересекать с указанным объектом и присваивать ему значение,
если оно соответствует шаблону.
-{% highlight ruby %}
+```ruby
require "json"
json = < 2
end
-{% endhighlight %}
+```
Подробнее, смотрите
[Сопоставление с образцом - новая особенность Ruby 2.7](https://speakerdeck.com/k_tsj/pattern-matching-new-feature-in-ruby-2-dot-7).
@@ -94,12 +94,12 @@ end
ключевых слов, добавьте оператор двойную звёздочку для избежания
предупреждения и обеспечения правильного поведения в Ruby 3.
- {% highlight ruby %}
+ ```ruby
def foo(key: 42); end; foo({key: 42}) # warned
def foo(**kw); end; foo({key: 42}) # warned
def foo(key: 42); end; foo(**{key: 42}) # OK
def foo(**kw); end; foo(**{key: 42}) # OK
- {% endhighlight %}
+ ```
* Когда вызов метода передает ключевые слова методу, который принимает
ключевые слова, но он не передает достаточно необходимых позиционных
@@ -108,12 +108,12 @@ end
в качестве хэша вместо ключевого слова чтобы избежать предупреждения
и обеспечить правильное поведение в Ruby 3.
- {% highlight ruby %}
+ ```ruby
def foo(h, **kw); end; foo(key: 42) # warned
def foo(h, key: 42); end; foo(key: 42) # warned
def foo(h, **kw); end; foo({key: 42}) # OK
def foo(h, key: 42); end; foo({key: 42}) # OK
- {% endhighlight %}
+ ```
* Когда метод принимает определенные ключевые слова, но не ключевое
слово звёздочку, и хэш или ключевые слова звёздочки передаются в
@@ -122,40 +122,40 @@ end
обновить вызывающий код чтобы передать отдельные хэши, для
обеспечения правильного поведения в Ruby 3.
- {% highlight ruby %}
+ ```ruby
def foo(h={}, key: 42); end; foo("key" => 43, key: 42) # warned
def foo(h={}, key: 42); end; foo({"key" => 43, key: 42}) # warned
def foo(h={}, key: 42); end; foo({"key" => 43}, key: 42) # OK
- {% endhighlight %}
+ ```
* Если метод не принимает ключевые слова и вызывается с ключевыми
словами, ключевые слова по-прежнему обрабатываются как позиционный
хэш, без предупреждений. Такое поведение сохранится в Ruby 3.
- {% highlight ruby %}
+ ```ruby
def foo(opt={}); end; foo( key: 42 ) # OK
- {% endhighlight %}
+ ```
* НеСимволы допускаются в качестве ключевых слов аргументов ключей,
если метод принимает произвольные ключевые слова.
[[Feature #14183]](https://bugs.ruby-lang.org/issues/14183)
- {% highlight ruby %}
+ ```ruby
def foo(**kw); p kw; end; foo("str" => 1) #=> {"str"=>1}
- {% endhighlight %}
+ ```
* `**nil` допускается в определениях методов явно отмечать
что метод не принимает никаких ключевых слов. Вызов такого метода
с ключевыми словами приведет к возникновнию ArgumentError.
[[Feature #14183]](https://bugs.ruby-lang.org/issues/14183)
- {% highlight ruby %}
+ ```ruby
def foo(h, **nil); end; foo(key: 1) # ArgumentError
def foo(h, **nil); end; foo(**{key: 1}) # ArgumentError
def foo(h, **nil); end; foo("str" => 1) # ArgumentError
def foo(h, **nil); end; foo({key: 1}) # OK
def foo(h, **nil); end; foo({"str" => 1}) # OK
- {% endhighlight %}
+ ```
* Передача пустого ключевого слова звёздочки методу, который больше
не принимает ключевые слова не передает пустой хэш, если пустой хэш не
@@ -164,12 +164,12 @@ end
позиционного хэша.
[[Feature #14183]](https://bugs.ruby-lang.org/issues/14183)
- {% highlight ruby %}
+ ```ruby
h = {}; def foo(*a) a end; foo(**h) # []
h = {}; def foo(a) a end; foo(**h) # {} and warning
h = {}; def foo(*a) a end; foo(h) # [{}]
h = {}; def foo(a) a end; foo(h) # {}
- {% endhighlight %}
+ ```
ПРИМЕЧАНИЕ: Выводилось слишком много устаревших предупреждений
о несовместимости аргументов ключевых слов, слишком многословны.
@@ -198,39 +198,39 @@ end
для DSL.
[[Feature #14799]](https://bugs.ruby-lang.org/issues/14799)
- {% highlight ruby %}
+ ```ruby
ary[..3] # identical to ary[0..3]
rel.where(sales: ..100)
- {% endhighlight %}
+ ```
* `Enumerable#tally` добавлен. Подсчитывает вхождение каждого элемента.
- {% highlight ruby %}
+ ```ruby
["a", "b", "c", "b"].tally
#=> {"a"=>1, "b"=>2, "c"=>1}
- {% endhighlight %}
+ ```
* Вызов приватного метода по `self` теперь возможен.
[[Feature #11297]](https://bugs.ruby-lang.org/issues/11297),
[[Feature #16123]](https://bugs.ruby-lang.org/issues/16123)
- {% highlight ruby %}
+ ```ruby
def foo
end
private :foo
self.foo
- {% endhighlight %}
+ ```
* `Enumerator::Lazy#eager` добавлен.
Генерирует не ленивый перечислитель из ленивого перечислителя.
[[Feature #15901]](https://bugs.ruby-lang.org/issues/15901)
- {% highlight ruby %}
+ ```ruby
a = %w(foo bar baz)
e = a.lazy.map {|x| x.upcase }.map {|x| x + "!" }.eager
p e.class #=> Enumerator
p e.map {|x| x + "?" } #=> ["FOO!?", "BAR!?", "BAZ!?"]
- {% endhighlight %}
+ ```
## Улучшения производительности