gilenson 1.0.5 → 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/History.txt +4 -0
- data/Manifest.txt +9 -0
- data/README.txt +15 -0
- data/lib/extras/bluecloth_extra.rb +7 -0
- data/lib/extras/maruku_extra.rb +19 -0
- data/lib/extras/rdiscount_extra.rb +7 -0
- data/lib/extras/redcloth_extra.rb +42 -0
- data/lib/gilenson.rb +6 -1
- data/test/test_integration_bluecloth.rb +17 -0
- data/test/test_integration_maruku.rb +18 -0
- data/test/test_integration_rdiscount.rb +18 -0
- data/test/test_integration_redcloth3.rb +22 -0
- data/test/test_integration_redcloth4.rb +23 -0
- metadata +23 -8
data/History.txt
CHANGED
data/Manifest.txt
CHANGED
@@ -4,5 +4,14 @@ Manifest.txt
|
|
4
4
|
README.txt
|
5
5
|
Rakefile
|
6
6
|
bin/gilensize
|
7
|
+
lib/extras/bluecloth_extra.rb
|
8
|
+
lib/extras/maruku_extra.rb
|
9
|
+
lib/extras/rdiscount_extra.rb
|
10
|
+
lib/extras/redcloth_extra.rb
|
7
11
|
lib/gilenson.rb
|
8
12
|
test/test_gilenson.rb
|
13
|
+
test/test_integration_bluecloth.rb
|
14
|
+
test/test_integration_maruku.rb
|
15
|
+
test/test_integration_rdiscount.rb
|
16
|
+
test/test_integration_redcloth3.rb
|
17
|
+
test/test_integration_redcloth4.rb
|
data/README.txt
CHANGED
@@ -8,6 +8,8 @@
|
|
8
8
|
Посвящается П.Г.Гиленсону[http://www.rudtp.ru/lib.php?book=172], благодаря которому русские правила тех.
|
9
9
|
редактуры еще как минимум 20 лет останутся бессмысленно старомодными.
|
10
10
|
|
11
|
+
Разработчики gilenson - {Julik}[http://julik.nl], {Mash}[http://imfo.ru], {Yaroslav Markin}[http://markin.net/]
|
12
|
+
|
11
13
|
== ФУНКЦИИ
|
12
14
|
|
13
15
|
Gilenson расставит в тексте "умные" правильные кавычки (русские - для кириллицы, английские - для латиницы),
|
@@ -88,6 +90,19 @@ Gilenson базируется на коде Typografica[http://pixel-apes.com/ty
|
|
88
90
|
|
89
91
|
* sudo gem install gilenson
|
90
92
|
|
93
|
+
== ИНТЕГРАЦИЯ С ДРУГИМИ ФОРМАТТЕРАМИ
|
94
|
+
|
95
|
+
Если вы используете RuTils в одном приложении со стандартными форматтерами (RedCloth, BlueCloth...) воспользуйтесь
|
96
|
+
дополнительными модулями которые выводят отформатированный Гиленсоном результат работы форматтеров, но при этом следят
|
97
|
+
чтобы эти форматтеры не портили текст неподобающим образом (не расставляли неправильные кавычки и так далее).
|
98
|
+
|
99
|
+
Gilenson определяет следующие дополнительные форматтеры (они работают так же как и их базовые классы)
|
100
|
+
|
101
|
+
* Gilenson::RedClothExtra
|
102
|
+
* Gilenson::BlueClothExtra
|
103
|
+
* Gilenson::RDiscountExtra
|
104
|
+
* Gilenson::MarukuExtra
|
105
|
+
|
91
106
|
== ЛИЦЕНЗИЯ:
|
92
107
|
|
93
108
|
(The MIT License)
|
@@ -0,0 +1,19 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
# Maruku с поддержкой Gilenson
|
3
|
+
class Gilenson::MarukuExtra < Maruku
|
4
|
+
def to_html(*anything)
|
5
|
+
suspended = super
|
6
|
+
|
7
|
+
# Return quotes to original state
|
8
|
+
[187, 171, 8220, 8221].map do |e|
|
9
|
+
suspended.gsub!( /&\##{e};/, '"')
|
10
|
+
end
|
11
|
+
|
12
|
+
# Return spaces to original state
|
13
|
+
[160].map do |e|
|
14
|
+
suspended.gsub!( /&\##{e};/, ' ')
|
15
|
+
end
|
16
|
+
|
17
|
+
suspended.gilensize
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
if RedCloth.class == Module
|
3
|
+
# RedCloth 4 - частичная поддержка
|
4
|
+
class Gilenson::RedClothExtra < RedCloth::TextileDoc
|
5
|
+
def to_html(*anything)
|
6
|
+
suspended = super(*anything)
|
7
|
+
|
8
|
+
# Return quotes to original state
|
9
|
+
[187, 171, 8220, 8221].map do |e|
|
10
|
+
suspended.gsub!(/&\##{e};/, '"')
|
11
|
+
end
|
12
|
+
|
13
|
+
# Return spaces to original state
|
14
|
+
[160].map do |e|
|
15
|
+
suspended.gsub!(/&\##{e};/, ' ')
|
16
|
+
end
|
17
|
+
|
18
|
+
suspended.gilensize
|
19
|
+
end
|
20
|
+
end
|
21
|
+
else
|
22
|
+
# RedCloth 3 - RuTils выполняет перегрузку Textile Glyphs в RedCloth, перенося форматирование спецсимволов на Gilenson.
|
23
|
+
# Применять как стандартный RedCloth
|
24
|
+
# RuTils::Gilenson::RedClothExtra.new(some_text).to_html
|
25
|
+
class Gilenson::RedClothExtra < RedCloth
|
26
|
+
# Этот метод в RedCloth при наличии Гиленсона становится заглушкой
|
27
|
+
def htmlesc(text, mode=0)
|
28
|
+
text
|
29
|
+
end
|
30
|
+
|
31
|
+
# А этот метод обрабатывает Textile Glyphs - ту самую типографицу.
|
32
|
+
# Вместо того чтобы влезать в чужие таблицы мы просто заменим Textile Glyphs на Gilenson - и все будут рады.
|
33
|
+
def pgl(text) #:nodoc:
|
34
|
+
# Подвешиваем пробелы в начале и в конце каждого блока. Тряпка требует чтобы эти пробелы приехали
|
35
|
+
# назад нетронутыми.
|
36
|
+
spaces = Array.new(2,'')
|
37
|
+
text.gsub!(/\A([\s]+)/) { spaces[0] = $1; '' }
|
38
|
+
text.gsub!(/(\s+)\Z/) { spaces[1] = $1; '' }
|
39
|
+
text.replace(spaces[0].to_s + ::Gilenson.new(text).to_html + spaces[1].to_s)
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
data/lib/gilenson.rb
CHANGED
@@ -1,5 +1,10 @@
|
|
1
1
|
class Gilenson
|
2
|
-
VERSION = '1.0
|
2
|
+
VERSION = '1.1.0'
|
3
|
+
autoload :BlueClothExtra, File.dirname(__FILE__) + '/extras/bluecloth_extra'
|
4
|
+
autoload :RedClothExtra, File.dirname(__FILE__) + '/extras/redcloth_extra'
|
5
|
+
autoload :RDiscountExtra, File.dirname(__FILE__) + '/extras/rdiscount_extra'
|
6
|
+
autoload :MarukuExtra, File.dirname(__FILE__) + '/extras/maruku_extra'
|
7
|
+
|
3
8
|
attr_accessor :glyph
|
4
9
|
attr_accessor :settings
|
5
10
|
|
@@ -0,0 +1,17 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
begin
|
3
|
+
require 'bluecloth'
|
4
|
+
|
5
|
+
# Интеграция с BlueCloth - Markdown
|
6
|
+
# Сам Markdown никакой обработки типографики не производит (это делает RubyPants, но вряд ли его кто-то юзает на практике)
|
7
|
+
class BlueclothIntegrationTest < Test::Unit::TestCase
|
8
|
+
C = Gilenson::BlueClothExtra
|
9
|
+
|
10
|
+
def test_integration_markdown
|
11
|
+
assert_equal "<p>И вот «они пошли туда», и шли шли шли</p>",
|
12
|
+
C.new('И вот "они пошли туда", и шли шли шли').to_html
|
13
|
+
end
|
14
|
+
end
|
15
|
+
rescue LoadError => boom
|
16
|
+
STDERR.puts(boom.message)
|
17
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
begin
|
3
|
+
require 'maruku'
|
4
|
+
|
5
|
+
# Интеграция с Maruku - Markdown
|
6
|
+
class MarukuIntegrationTest < Test::Unit::TestCase
|
7
|
+
C = Gilenson::MarukuExtra
|
8
|
+
|
9
|
+
def test_integration_maruku
|
10
|
+
|
11
|
+
assert_equal "<p>И вот «они пошли туда», и шли шли шли</p>",
|
12
|
+
C.new('И вот "они пошли туда", и шли шли шли').to_html
|
13
|
+
|
14
|
+
end
|
15
|
+
end
|
16
|
+
rescue LoadError => boom
|
17
|
+
STDERR.puts(boom.message)
|
18
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
begin
|
3
|
+
require 'rdiscount'
|
4
|
+
|
5
|
+
# Интеграция с Rdiscount - Markdown
|
6
|
+
# Сам Markdown никакой обработки типографики не производит (это делает RubyPants, но вряд ли его кто-то юзает на практике)
|
7
|
+
class RdiscountIntegrationTest < Test::Unit::TestCase
|
8
|
+
C = Gilenson::RDiscountExtra
|
9
|
+
|
10
|
+
def test_integration_markdown
|
11
|
+
|
12
|
+
assert_equal "<p>И вот «они пошли туда», и шли шли шли</p>",
|
13
|
+
C.new('И вот "они пошли туда", и шли шли шли').to_html
|
14
|
+
end
|
15
|
+
end
|
16
|
+
rescue LoadError => boom
|
17
|
+
STDERR.puts(boom.message)
|
18
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
begin
|
3
|
+
require 'redcloth'
|
4
|
+
raise LoadError, "need RedCloth 3.x" unless RedCloth::VERSION.to_s =~ /^3/
|
5
|
+
|
6
|
+
# Интеграция с RedCloth - Textile.
|
7
|
+
# Нужно иметь в виду что Textile осуществляет свою обработку типографики, которую мы подменяем!
|
8
|
+
class Redcloth3IntegrationTest < Test::Unit::TestCase
|
9
|
+
C = Gilenson::RedClothExtra
|
10
|
+
def test_integration_with_redcloth_3
|
11
|
+
|
12
|
+
assert_equal "<p>И вот «они пошли туда», и шли шли шли</p>",
|
13
|
+
C.new('И вот "они пошли туда", и шли шли шли').to_html
|
14
|
+
|
15
|
+
assert_equal '<p><strong>strong text</strong> and <em>emphasized text</em></p>',
|
16
|
+
C.new("*strong text* and _emphasized text_").to_html,
|
17
|
+
"Spaces should be preserved"
|
18
|
+
end
|
19
|
+
end
|
20
|
+
rescue LoadError => boom
|
21
|
+
STDERR.puts(boom.message)
|
22
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
begin
|
3
|
+
require 'redcloth'
|
4
|
+
raise LoadError, "need RedCloth 4.x" unless RedCloth::VERSION.to_s =~ /^4/
|
5
|
+
|
6
|
+
# Интеграция с RedCloth 4 - Textile.
|
7
|
+
class Redcloth4IntegrationTest < Test::Unit::TestCase
|
8
|
+
C = Gilenson::RedClothExtra
|
9
|
+
|
10
|
+
def test_integration_with_redcloth_4
|
11
|
+
|
12
|
+
assert_equal "<p>И вот «они пошли туда», и шли шли шли</p>",
|
13
|
+
C.new('И вот "они пошли туда", и шли шли шли').to_html
|
14
|
+
|
15
|
+
assert_equal '<p><strong>strong text</strong> and <em>emphasized text</em></p>',
|
16
|
+
C.new("*strong text* and _emphasized text_").to_html,
|
17
|
+
"Spaces should be preserved"
|
18
|
+
|
19
|
+
end
|
20
|
+
end
|
21
|
+
rescue LoadError => boom
|
22
|
+
STDERR.puts(boom.message)
|
23
|
+
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gilenson
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 19
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 1
|
8
|
+
- 1
|
8
9
|
- 0
|
9
|
-
|
10
|
-
version: 1.0.5
|
10
|
+
version: 1.1.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Julik Tarkhanov
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2010-08-
|
18
|
+
date: 2010-08-16 00:00:00 +02:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
@@ -42,17 +42,18 @@ dependencies:
|
|
42
42
|
requirements:
|
43
43
|
- - ">="
|
44
44
|
- !ruby/object:Gem::Version
|
45
|
-
hash:
|
45
|
+
hash: 21
|
46
46
|
segments:
|
47
47
|
- 2
|
48
48
|
- 6
|
49
|
-
-
|
50
|
-
version: 2.6.
|
49
|
+
- 1
|
50
|
+
version: 2.6.1
|
51
51
|
type: :development
|
52
52
|
version_requirements: *id002
|
53
53
|
description: "\xD0\x9E\xD0\xB1\xD1\x80\xD0\xB0\xD0\xB1\xD0\xBE\xD1\x82\xD1\x87\xD0\xB8\xD0\xBA \xD1\x82\xD0\xB8\xD0\xBF\xD0\xBE\xD0\xB3\xD1\x80\xD0\xB0\xD1\x84\xD1\x81\xD0\xBA\xD0\xB8\xD1\x85 \xD1\x81\xD0\xB8\xD0\xBC\xD0\xB2\xD0\xBE\xD0\xBB\xD0\xBE\xD0\xB2 \xD0\xB2 HTML \xD1\x81\xD0\xBE\xD0\xB3\xD0\xBB\xD0\xB0\xD1\x81\xD0\xBD\xD0\xBE \xD0\xBE\xD0\xB1\xD1\x89\xD0\xB5\xD0\xBF\xD1\x80\xD0\xB8\xD0\xBD\xD1\x8F\xD1\x82\xD1\x8B\xD0\xBC \xD0\xBF\xD1\x80\xD0\xB0\xD0\xB2\xD0\xB8\xD0\xBB\xD0\xB0\xD0\xBC.\n\
|
54
54
|
\xD0\x9F\xD0\xBE\xD1\x81\xD0\xB2\xD1\x8F\xD1\x89\xD0\xB0\xD0\xB5\xD1\x82\xD1\x81\xD1\x8F \xD0\x9F.\xD0\x93.\xD0\x93\xD0\xB8\xD0\xBB\xD0\xB5\xD0\xBD\xD1\x81\xD0\xBE\xD0\xBD\xD1\x83[http://www.rudtp.ru/lib.php?book=172], \xD0\xB1\xD0\xBB\xD0\xB0\xD0\xB3\xD0\xBE\xD0\xB4\xD0\xB0\xD1\x80\xD1\x8F \xD0\xBA\xD0\xBE\xD1\x82\xD0\xBE\xD1\x80\xD0\xBE\xD0\xBC\xD1\x83 \xD1\x80\xD1\x83\xD1\x81\xD1\x81\xD0\xBA\xD0\xB8\xD0\xB5 \xD0\xBF\xD1\x80\xD0\xB0\xD0\xB2\xD0\xB8\xD0\xBB\xD0\xB0 \xD1\x82\xD0\xB5\xD1\x85.\n\
|
55
|
-
\xD1\x80\xD0\xB5\xD0\xB4\xD0\xB0\xD0\xBA\xD1\x82\xD1\x83\xD1\x80\xD1\x8B \xD0\xB5\xD1\x89\xD0\xB5 \xD0\xBA\xD0\xB0\xD0\xBA \xD0\xBC\xD0\xB8\xD0\xBD\xD0\xB8\xD0\xBC\xD1\x83\xD0\xBC 20 \xD0\xBB\xD0\xB5\xD1\x82 \xD0\xBE\xD1\x81\xD1\x82\xD0\xB0\xD0\xBD\xD1\x83\xD1\x82\xD1\x81\xD1\x8F \xD0\xB1\xD0\xB5\xD1\x81\xD1\x81\xD0\xBC\xD1\x8B\xD1\x81\xD0\xBB\xD0\xB5\xD0\xBD\xD0\xBD\xD0\xBE \xD1\x81\xD1\x82\xD0\xB0\xD1\x80\xD0\xBE\xD0\xBC\xD0\xBE\xD0\xB4\xD0\xBD\xD1\x8B\xD0\xBC\xD0\xB8
|
55
|
+
\xD1\x80\xD0\xB5\xD0\xB4\xD0\xB0\xD0\xBA\xD1\x82\xD1\x83\xD1\x80\xD1\x8B \xD0\xB5\xD1\x89\xD0\xB5 \xD0\xBA\xD0\xB0\xD0\xBA \xD0\xBC\xD0\xB8\xD0\xBD\xD0\xB8\xD0\xBC\xD1\x83\xD0\xBC 20 \xD0\xBB\xD0\xB5\xD1\x82 \xD0\xBE\xD1\x81\xD1\x82\xD0\xB0\xD0\xBD\xD1\x83\xD1\x82\xD1\x81\xD1\x8F \xD0\xB1\xD0\xB5\xD1\x81\xD1\x81\xD0\xBC\xD1\x8B\xD1\x81\xD0\xBB\xD0\xB5\xD0\xBD\xD0\xBD\xD0\xBE \xD1\x81\xD1\x82\xD0\xB0\xD1\x80\xD0\xBE\xD0\xBC\xD0\xBE\xD0\xB4\xD0\xBD\xD1\x8B\xD0\xBC\xD0\xB8.\n\n\
|
56
|
+
\xD0\xA0\xD0\xB0\xD0\xB7\xD1\x80\xD0\xB0\xD0\xB1\xD0\xBE\xD1\x82\xD1\x87\xD0\xB8\xD0\xBA\xD0\xB8 gilenson - {Julik}[http://julik.nl], {Mash}[http://imfo.ru], {Yaroslav Markin}[http://markin.net/]"
|
56
57
|
email:
|
57
58
|
- me@julik.nl
|
58
59
|
executables:
|
@@ -70,8 +71,17 @@ files:
|
|
70
71
|
- README.txt
|
71
72
|
- Rakefile
|
72
73
|
- bin/gilensize
|
74
|
+
- lib/extras/bluecloth_extra.rb
|
75
|
+
- lib/extras/maruku_extra.rb
|
76
|
+
- lib/extras/rdiscount_extra.rb
|
77
|
+
- lib/extras/redcloth_extra.rb
|
73
78
|
- lib/gilenson.rb
|
74
79
|
- test/test_gilenson.rb
|
80
|
+
- test/test_integration_bluecloth.rb
|
81
|
+
- test/test_integration_maruku.rb
|
82
|
+
- test/test_integration_rdiscount.rb
|
83
|
+
- test/test_integration_redcloth3.rb
|
84
|
+
- test/test_integration_redcloth4.rb
|
75
85
|
has_rdoc: true
|
76
86
|
homepage: http://github.com/julik/gilenson
|
77
87
|
licenses: []
|
@@ -112,3 +122,8 @@ specification_version: 3
|
|
112
122
|
summary: "\xD0\x9E\xD0\xB1\xD1\x80\xD0\xB0\xD0\xB1\xD0\xBE\xD1\x82\xD1\x87\xD0\xB8\xD0\xBA \xD1\x82\xD0\xB8\xD0\xBF\xD0\xBE\xD0\xB3\xD1\x80\xD0\xB0\xD1\x84\xD1\x81\xD0\xBA\xD0\xB8\xD1\x85 \xD1\x81\xD0\xB8\xD0\xBC\xD0\xB2\xD0\xBE\xD0\xBB\xD0\xBE\xD0\xB2 \xD0\xB2 HTML \xD1\x81\xD0\xBE\xD0\xB3\xD0\xBB\xD0\xB0\xD1\x81\xD0\xBD\xD0\xBE \xD0\xBE\xD0\xB1\xD1\x89\xD0\xB5\xD0\xBF\xD1\x80\xD0\xB8\xD0\xBD\xD1\x8F\xD1\x82\xD1\x8B\xD0\xBC \xD0\xBF\xD1\x80\xD0\xB0\xD0\xB2\xD0\xB8\xD0\xBB\xD0\xB0\xD0\xBC"
|
113
123
|
test_files:
|
114
124
|
- test/test_gilenson.rb
|
125
|
+
- test/test_integration_bluecloth.rb
|
126
|
+
- test/test_integration_maruku.rb
|
127
|
+
- test/test_integration_rdiscount.rb
|
128
|
+
- test/test_integration_redcloth3.rb
|
129
|
+
- test/test_integration_redcloth4.rb
|