gilenson 1.0.5

Sign up to get free protection for your applications and to get access to all the features.
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