gilenson 1.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/.autotest ADDED
@@ -0,0 +1,23 @@
1
+ # -*- ruby -*-
2
+
3
+ require 'autotest/restart'
4
+
5
+ # Autotest.add_hook :initialize do |at|
6
+ # at.extra_files << "../some/external/dependency.rb"
7
+ #
8
+ # at.libs << ":../some/external"
9
+ #
10
+ # at.add_exception 'vendor'
11
+ #
12
+ # at.add_mapping(/dependency.rb/) do |f, _|
13
+ # at.files_matching(/test_.*rb$/)
14
+ # end
15
+ #
16
+ # %w(TestA TestB).each do |klass|
17
+ # at.extra_class_map[klass] = "test/test_misc.rb"
18
+ # end
19
+ # end
20
+
21
+ # Autotest.add_hook :run_command do |at|
22
+ # system "rake build"
23
+ # end
data/History.txt ADDED
@@ -0,0 +1,80 @@
1
+ === 1.0.5 / 2010-08-15
2
+
3
+ * Гиленсон теперь сервируется отдельным блюдом. История изменений ниже по тексту взята из rutils.
4
+
5
+ === 1.0.1 - 08.02.2009
6
+
7
+ * Протестировано на JRuby 1.1.6 (julik)
8
+ * Основные шестеренки совместимы с Ruby 1.9.1 (julik)
9
+
10
+ === 0.2.4 - 10.07.2008
11
+
12
+ * В Gilenson закрывающая латинская кавычка не принимается за знак дюйма
13
+ * В Gilenson корректно обрабатываются неразрывные пробелы если в сегменте присутствуют пунктуация из глифов
14
+ * В Gilenson добавлены настройки force_en_quotes и force_ru_quotes (если нужно свести все кавычки к одной форме)
15
+ * До свидания, Gilenson::Obsolete (julik)
16
+ * До свидания, <nobr>. Указывайте .nobr { text-wrap: nowrap } в своих стилевых таблицах.
17
+
18
+ === 0.2.2 - 24.09.2007
19
+
20
+ * Gilenson - обрабатываем акронимы по принципу Textile (zajats, julik)
21
+ * Gilenson - отформатирован под 2 пробела (julik)
22
+
23
+ === 0.2.1 - 02.04.2007
24
+
25
+ * Восстановлен в gemspec gilenson.rb (Сергей Барабаш)
26
+
27
+ === 0.1.9 - 17.02.2007
28
+
29
+ * Gilenson integration - не съедаем пробелы между тегами при прогоне текста через Textile
30
+
31
+ === 0.1.8 - 05.02.2007
32
+
33
+ * Gilenson - расстановка инициалов не должна цеплять аббревиатуры (julik)
34
+
35
+ === 0.1.4 - 02.12.2005
36
+
37
+ * Gilenson - на Oniguruma сбоит skip_code, но это надо побарывать нормальным токенизатором, пока откладывается (julik)
38
+ * Gilenson - в тестах произведена замена <cOdE> на <code> и <TT> на <tt> (mash)
39
+ * Gilenson - в двух регулярных выражениях (в "def process_quotes") изменен #{@mark_tag} на
40
+ \#{@mark_tag} чтобы предотвратить segfault ruby 1.8.2 (2004-12-25) на [i386-mswin32] (mash)
41
+ * Gilenson - починен дикий баг с маркером в одинарных кавычках - теперь таки последовательность байтов вместо символов (julik)
42
+
43
+ === 0.1.3 - 14.11.2005
44
+
45
+ * Gilenson - замена троеточий на ellipsis (julik)
46
+ * Gilenson - теперь пробел, идущий перед одной или двумя буквами на конце слова
47
+ меняется на glyph[:nbsp]. (mash)
48
+ * Gilenson - починен баг из-за которого не типографилась закрывающая кавычка после вопросительного
49
+ и восклицательного знака (julik)
50
+ * По умолчанию используется новый Gilenson (Gilenson::Formatter). Старый доступен как Gilenson::Obsolete и через
51
+ String#o_gilensize и грузится только в случае необходимости. Если у вас были тесты провеяющие gilensize
52
+ скорее всего они "полетели" (julik)
53
+ * Gilenson - дополнительная фича, не связанная с типографикой: замена амперсанда в следующих атрибутах
54
+ тагов: href, src, data. Пример: <a href="?x=1&y=2&#38;z=3"> => <a href="?x=1&#38;y=2&#38;z=3"> (mash)
55
+ * Gilenson - изменён метод process_ampersands (стало process_escape_html), меняющий &,<,> на глифы :amp,:lt,:gt
56
+ при запрете HTML (@settings[:html]=>false). По-умолчанию Гиленсон разрешает использование HTML.
57
+ В иерархии метод выставлен первым для корректной обработки случаев вида
58
+ %{Используйте &#38; вместо &amp;}.gilensize(:html=>false) (mash)
59
+ * Gilenson - добавлены :skip_attr=>false и :skip_code=>true для управления обработкой типографики атрибутов тегов title, alt и содержимого <code/>, <tt/>, <![CDATA[...]]> (mash)
60
+ * Gilenson - добавлен :raw_output=>true для вывода обычных UTF-8 chars вместо entities (julik)
61
+ * Смена структуры модулей Gilenson (julik)
62
+ RuTils::Gilenson::Obsolete - старый класс форматтера
63
+ RuTils::Gilenson::Formatter - новый класс форматтера
64
+ При вызове RuTils::Gilenson.new возвращается новый Formatter
65
+ * Gilenson - документация (julik)
66
+ * Gilenson - основные группы настроек "по-умолчанию" выносятся в константы (julik)
67
+ * Gilenson - фильтры выносятся в методы типа process_фильтр и их можно применять по отдельности через Formatter#apply (julik)
68
+ * Gilenson - добавлены &para; и &numero; (последний - не стандарт, но нужен для преобразований символа "номер") (mash)
69
+ * Gilenson - добавлен хэш @glyph_copy_paste для подмены юникодных типографских символов на entities
70
+ (опционально, через @settings[:copypaste]=>true) (mash)
71
+ * Gilenson - добавлена "склейка" инициалов полукруглой шпацией (thin space)
72
+ * Gilenson - добавлен Formatter#process чтобы обрабатывать строки поточно, и сделан удобный доступ к настройкам
73
+ через "хвост" метода (julik)
74
+ * Во всех внутренних строковых подстановках Gilenson используются указатели на глифы с двоеточием в начале (julik)
75
+ * Gilenson - введен DOUBLE PRIME (&#8243;) для знаков дюйма (julik)
76
+ http://en.wikipedia.org/wiki/Prime_%28mark%29
77
+ Согласно изощренным правилам скошенный prime правильней чем "
78
+ * Новый Гиленсон lib/gilenson/gilenson.rb (mash)
79
+ RuTils::GilensonNew::Typografica.new('какой-то текст')
80
+ %q{"какой-то текст"}.n_gilensize
data/Manifest.txt ADDED
@@ -0,0 +1,8 @@
1
+ .autotest
2
+ History.txt
3
+ Manifest.txt
4
+ README.txt
5
+ Rakefile
6
+ bin/gilensize
7
+ lib/gilenson.rb
8
+ test/test_gilenson.rb
data/README.txt ADDED
@@ -0,0 +1,114 @@
1
+ = gilenson
2
+
3
+ * http://github.com/julik/gilenson
4
+
5
+ == DESCRIPTION:
6
+
7
+ Обработчик типографских символов в HTML согласно общепринятым правилам.
8
+ Посвящается П.Г.Гиленсону[http://www.rudtp.ru/lib.php?book=172], благодаря которому русские правила тех.
9
+ редактуры еще как минимум 20 лет останутся бессмысленно старомодными.
10
+
11
+ == ФУНКЦИИ
12
+
13
+ Gilenson расставит в тексте "умные" правильные кавычки (русские - для кириллицы, английские - для латиницы),
14
+ заменит "хитрые" пунктуационные символы на entities и отформатирует знаки типа (c), (tm), телефоны и адреса.
15
+
16
+ Gilenson базируется на коде Typografica[http://pixel-apes.com/typografica] от PixelApes,
17
+ который был приведен к положенному в Ruby стандарту. Основные отличия Gilenson от Typografica на PHP:
18
+
19
+ * работа только и полностью в UTF-8 (включая entities, применимые в XML)
20
+ * поддержка "raw"-вывода (символов вместо entities) - текст выводимый Gilenson можно верстать на бумаге
21
+
22
+ == ИСПОЛЬЗОВАНИЕ:
23
+
24
+ Программой gilensize поставляющейся в комплекте
25
+ cat файл_с_текстом_в_utf8.txt | gilensize > красивый_документ.txt
26
+
27
+ Из кода - как фильтр
28
+
29
+ formatter = Gilenson.new
30
+ formatter.configure(:dash=>true)
31
+ for string in strings
32
+ puts formatter.process(string)
33
+ end
34
+
35
+ или через метод ++gilensize++ для любой строковой переменной
36
+
37
+ %{ И вот они таки "приехали"}.gilensize => 'И&#160;вот они&#160;таки &#171;приехали&#187;'
38
+
39
+ Все дополнительные настройки в таком случае передаются форматтеру
40
+
41
+ %{ И вот они таки "приехали"}.gilensize(:laquo=>false) => 'И&#160;вот они&#160;таки "приехали"'
42
+
43
+ Настройки регулируются через методы
44
+ formatter.dashglue = true
45
+ или ассоциированным хешем
46
+ formatter.configure!(:dash=>true, :quotes=>false)
47
+
48
+ Хеш также можно передавать как последний аргумент методам process и to_html,
49
+ в таком случае настройки будут применены только при этом вызове
50
+
51
+ beautified = formatter.process(my_text, :dash=>true)
52
+
53
+ В параметры можно подставить также ключ :all чтобы временно включить или выключить все фильтры
54
+
55
+ beautified = formatter.process(my_text, :all=>true)
56
+
57
+ Помимо этого можно пользоваться каждым фильтром по отдельности используя метод +apply+
58
+
59
+ Можно менять глифы, которые форматтер использует для подстановок. К примеру,
60
+ formatter.glyph[:nbsp] = '&nbsp;'
61
+ заставит форматтер расставлять "традиционные" неразрывные пробелы.
62
+ Именно это - большая глупость, но другие глифы заменить может быть нужно.
63
+
64
+ === Настройки форматтера
65
+
66
+ * "inches" - преобразовывать дюймы в знак дюйма;
67
+ * "laquo" - кавычки-ёлочки
68
+ * "quotes" - кавычки-английские лапки
69
+ * "dash" - проставлять короткое тире (150)
70
+ * "emdash" - длинное тире двумя минусами (151)
71
+ * "initials" - проставлять тонкие шпации в инициалах
72
+ * "copypaste" - замена непечатных и "специальных" юникодных символов на entities
73
+ * "(c)" - обрабатывать знак копирайта
74
+ * "(r)", "(tm)", "(p)", "+-" - спецсимволы, какие - понятно
75
+ * "acronyms" - сворачивание пояснений к аббревиатурам (пояснение - в скобках после аббревиатуры без пробела). Пояснение будет "приклеено" к аббревиатуре полукруглой шпацией.
76
+ * "degrees" - знак градуса
77
+ * "dashglue", "wordglue" - приклеивание предлогов и дефисов
78
+ * "spacing" - запятые и пробелы, перестановка
79
+ * "phones" - обработка телефонов
80
+ * "html" - при false - запрет использования тагов html
81
+ * "de_nobr" - при true все <nobr/> заменяются на <span class="nobr"/>
82
+ * "raw_output" - (по умолчанию false) - при true вместо entities выводятся UTF-символы.
83
+ Это нужно чтобы обработанный текст верстать на бумаге.
84
+ * "skip_attr" - (по умолчанию false) - при true не отрабатывать типографику в атрибутах тегов (title, alt)
85
+ * "skip_code" - (по умолчанию true) - при true не отрабатывать типографику внутри <code/>, <tt/>, CDATA
86
+
87
+ == УСТАНОВКА:
88
+
89
+ * sudo gem install gilenson
90
+
91
+ == ЛИЦЕНЗИЯ:
92
+
93
+ (The MIT License)
94
+
95
+ Copyright (c) 2003-2004 Julik Tarkhanov, Danil Ivanov and contributors
96
+
97
+ Permission is hereby granted, free of charge, to any person obtaining
98
+ a copy of this software and associated documentation files (the
99
+ 'Software'), to deal in the Software without restriction, including
100
+ without limitation the rights to use, copy, modify, merge, publish,
101
+ distribute, sublicense, and/or sell copies of the Software, and to
102
+ permit persons to whom the Software is furnished to do so, subject to
103
+ the following conditions:
104
+
105
+ The above copyright notice and this permission notice shall be
106
+ included in all copies or substantial portions of the Software.
107
+
108
+ THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
109
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
110
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
111
+ IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
112
+ CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
113
+ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
114
+ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/Rakefile ADDED
@@ -0,0 +1,15 @@
1
+ # -*- ruby -*-
2
+
3
+ require 'rubygems'
4
+ require 'hoe'
5
+ require File.dirname(__FILE__) + "/lib/gilenson"
6
+
7
+ DOCOPTS = %w(--charset utf-8 --promiscuous)
8
+
9
+ r = Hoe.spec 'gilenson' do | p |
10
+ p.developer('Julik Tarkhanov', 'me@julik.nl')
11
+ p.version = Gilenson::VERSION
12
+ end
13
+ r.spec.rdoc_options += DOCOPTS
14
+
15
+ # vim: syntax=ruby
data/bin/gilensize ADDED
@@ -0,0 +1,22 @@
1
+ #!/usr/bin/env ruby
2
+ # == Synopsis
3
+ #
4
+ # Processes text on standard input with Gilenson. Please feed it UTF-8!
5
+ #
6
+ # == Usage
7
+ #
8
+ # cat myfile.txt | gilensize > output.txt
9
+ #
10
+ # == Author
11
+ # Julik <me@julik.nl>
12
+
13
+ $KCODE = 'u'
14
+ require File.dirname(__FILE__) + '/../lib/rutils'
15
+ require 'optparse'
16
+ OptionParser.new do | p |
17
+ p.on(" -h", "--help") { require 'rdoc/usage'; RDoc::usage }
18
+ end.parse!
19
+
20
+ while st = gets do
21
+ puts Gilenson.new(st).to_html
22
+ end