erbook 6.1.0 → 7.0.0
Sign up to get free protection for your applications and to get access to all the features.
- data/bin/erbook +29 -25
- data/doc/HelloWorld.spec +3 -1
- data/doc/api/classes/ERBook.html +86 -0
- data/doc/api/classes/ERBook/Document.html +399 -0
- data/doc/api/classes/ERBook/Document/Node.html +110 -0
- data/doc/api/classes/ERBook/Template.html +309 -0
- data/doc/api/classes/ERBook/Template/Sandbox.html +134 -0
- data/doc/api/classes/RDoc.html +69 -0
- data/doc/api/classes/RDoc/AnyMethod.html +249 -0
- data/doc/api/classes/RDoc/DummyMarkup.html +60 -0
- data/doc/api/classes/RDoc/DummyMixin.html +54 -0
- data/doc/api/classes/RDoc/DummyOptions.html +60 -0
- data/doc/api/classes/RDoc/TopLevel.html +344 -0
- data/doc/api/classes/String.html +212 -0
- data/doc/api/created.rid +1 -0
- data/doc/api/css/main.css +263 -0
- data/doc/api/css/panel.css +383 -0
- data/doc/api/css/reset.css +53 -0
- data/doc/api/files/ANN_eml.html +276 -0
- data/doc/api/files/ANN_html.html +407 -0
- data/doc/api/files/ANN_txt.html +271 -0
- data/doc/api/files/LICENSE.html +76 -0
- data/doc/api/files/lib/erbook/document_rb.html +74 -0
- data/doc/api/files/lib/erbook/rdoc_rb.html +77 -0
- data/doc/api/files/lib/erbook/template_rb.html +66 -0
- data/doc/api/files/lib/erbook/to_xhtml_rb.html +89 -0
- data/doc/api/files/lib/erbook_rb.html +70 -0
- data/doc/api/i/arrows.png +0 -0
- data/doc/api/i/results_bg.png +0 -0
- data/doc/api/i/tree_bg.png +0 -0
- data/doc/api/index.html +14 -18
- data/doc/api/js/jquery-1.3.2.min.js +19 -0
- data/doc/api/js/jquery-effect.js +593 -0
- data/doc/api/js/main.js +22 -0
- data/doc/api/js/searchdoc.js +605 -0
- data/doc/api/panel/index.html +63 -0
- data/doc/api/panel/search_index.js +1 -0
- data/doc/api/panel/tree.js +1 -0
- data/doc/formats.erb +63 -115
- data/doc/history.erb +125 -92
- data/doc/index.erb +12 -7
- data/doc/index.xhtml +1020 -1347
- data/doc/intro.erb +42 -40
- data/doc/setup.erb +18 -18
- data/doc/theory.erb +24 -31
- data/doc/usage.erb +14 -24
- data/fmt/xhtml.icons/index.yaml +16 -14
- data/fmt/xhtml.icons/rakefile +33 -0
- data/fmt/xhtml.icons/tango-icon-theme-0.8.90/16x16/places/start-here.png +0 -0
- data/fmt/xhtml.icons/tango-icon-theme-0.8.90/32x32/actions/go-down.png +0 -0
- data/fmt/xhtml.icons/tango-icon-theme-0.8.90/32x32/actions/go-up.png +0 -0
- data/fmt/xhtml.icons/tango-icon-theme-0.8.90/32x32/places/start-here.png +0 -0
- data/fmt/xhtml.icons/tango-icon-theme-0.8.90/32x32/status/software-update-available.png +0 -0
- data/fmt/xhtml.icons/{tango-icon-theme-0.8.1 → tango-icon-theme-0.8.90}/48x48/apps/accessories-text-editor.png +0 -0
- data/fmt/xhtml.icons/tango-icon-theme-0.8.90/48x48/apps/internet-group-chat.png +0 -0
- data/fmt/xhtml.icons/{tango-icon-theme-0.8.1 → tango-icon-theme-0.8.90}/48x48/emblems/emblem-important.png +0 -0
- data/fmt/xhtml.icons/{tango-icon-theme-0.8.1 → tango-icon-theme-0.8.90}/48x48/status/dialog-error.png +0 -0
- data/fmt/xhtml.icons/{tango-icon-theme-0.8.1 → tango-icon-theme-0.8.90}/48x48/status/dialog-information.png +0 -0
- data/fmt/xhtml.icons/{tango-icon-theme-0.8.1 → tango-icon-theme-0.8.90}/48x48/status/dialog-warning.png +0 -0
- data/fmt/xhtml.icons/tango-icon-theme-0.8.90/COPYING +1 -0
- data/fmt/xhtml.icons/{tango-icon-theme-0.8.1 → tango-icon-theme-0.8.90}/README +0 -0
- data/fmt/xhtml.icons/tango-icon-theme-0.8.90/scalable/actions/bookmark-new.svg +672 -0
- data/fmt/xhtml.icons/tango-icon-theme-0.8.90/scalable/actions/go-down.svg +200 -0
- data/fmt/xhtml.icons/tango-icon-theme-0.8.90/scalable/actions/go-home.svg +445 -0
- data/fmt/xhtml.icons/tango-icon-theme-0.8.90/scalable/actions/go-up.svg +196 -0
- data/fmt/xhtml.icons/tango-icon-theme-0.8.90/scalable/actions/view-refresh.svg +393 -0
- data/fmt/xhtml.icons/tango-icon-theme-0.8.90/scalable/apps/accessories-text-editor.svg +554 -0
- data/fmt/xhtml.icons/tango-icon-theme-0.8.90/scalable/apps/internet-group-chat.svg +312 -0
- data/fmt/xhtml.icons/tango-icon-theme-0.8.90/scalable/emblems/emblem-favorite.svg +242 -0
- data/fmt/xhtml.icons/tango-icon-theme-0.8.90/scalable/emblems/emblem-important.svg +164 -0
- data/fmt/xhtml.icons/tango-icon-theme-0.8.90/scalable/mimetypes/application-certificate.svg +443 -0
- data/fmt/xhtml.icons/tango-icon-theme-0.8.90/scalable/places/start-here.svg +492 -0
- data/fmt/xhtml.icons/tango-icon-theme-0.8.90/scalable/status/dialog-error.svg +330 -0
- data/fmt/xhtml.icons/tango-icon-theme-0.8.90/scalable/status/dialog-information.svg +1159 -0
- data/fmt/xhtml.icons/tango-icon-theme-0.8.90/scalable/status/dialog-warning.svg +373 -0
- data/fmt/xhtml.icons/tango-icon-theme-0.8.90/scalable/status/software-update-available.svg +209 -0
- data/fmt/xhtml.scripts/jquery-1.3.2.min.js +19 -0
- data/fmt/xhtml.scripts/jquery.localscroll-1.2.7-min.js +9 -0
- data/fmt/xhtml.scripts/jquery.scrollTo-1.4.1-min.js +11 -0
- data/fmt/xhtml.yaml +470 -454
- data/lang/de.yaml +5 -5
- data/lang/el.yaml +4 -4
- data/lang/es.yaml +5 -5
- data/lang/fr.yaml +5 -5
- data/lang/it.yaml +5 -5
- data/lang/ja.yaml +4 -4
- data/lang/ko.yaml +4 -4
- data/lang/nl.yaml +4 -4
- data/lang/phrases.yaml +4 -4
- data/lang/pt.yaml +5 -5
- data/lang/ru.yaml +5 -5
- data/lang/zh.yaml +5 -5
- data/lang/zt.yaml +5 -5
- data/lib/erbook.rb +12 -5
- data/lib/erbook/document.rb +127 -107
- data/lib/erbook/rdoc.rb +18 -11
- data/lib/erbook/template.rb +86 -176
- data/lib/erbook/to_xhtml.rb +98 -25
- data/{Rakefile → rakefile} +1 -0
- metadata +106 -53
- data/doc/api/ERBook.html +0 -35
- data/doc/api/ERBook/Document.html +0 -669
- data/doc/api/ERBook/Document/Node.html +0 -102
- data/doc/api/ERBook/Template.html +0 -670
- data/doc/api/RDoc.html +0 -23
- data/doc/api/RDoc/AnyMethod.html +0 -302
- data/doc/api/RDoc/DummyMarkup.html +0 -73
- data/doc/api/RDoc/DummyMixin.html +0 -23
- data/doc/api/RDoc/DummyOptions.html +0 -140
- data/doc/api/RDoc/TopLevel.html +0 -465
- data/doc/api/String.html +0 -372
- data/doc/api/all-methods.html +0 -253
- data/doc/api/all-namespaces.html +0 -42
- data/doc/api/app.js +0 -18
- data/doc/api/jquery.js +0 -11
- data/doc/api/readme.html +0 -38
- data/doc/api/style.css +0 -68
- data/doc/api/syntax_highlight.css +0 -21
- data/fmt/xhtml.icons/tango-icon-theme-0.8.1/48x48/README +0 -2
- data/fmt/xhtml.icons/tango-icon-theme-0.8.1/48x48/apps/internet-group-chat.png +0 -0
- data/fmt/xhtml.icons/tango-icon-theme-0.8.1/COPYING +0 -67
data/lang/de.yaml
CHANGED
@@ -9,20 +9,20 @@ Example: Beispiel
|
|
9
9
|
Examples: Beispiele
|
10
10
|
Figure: Abbildung
|
11
11
|
Figures: Abbildungen
|
12
|
+
Focus next segment: Folgendes Segment des Fokus
|
13
|
+
Focus previous segment: Vorhergehendes Segment des Fokus
|
14
|
+
Focus this segment: Fokussieren Sie dieses Segment
|
12
15
|
Generated by %s on %s.: Erzeugt durch %s auf %s.
|
13
16
|
Important: Wichtig
|
14
17
|
Importants: Importants
|
15
|
-
|
16
|
-
Jump to previous segment: Springen Sie zum vorhergehenden Segment
|
17
|
-
Jump to this segment: Springen Sie zu diesem Segment
|
18
|
-
Note: Merken Sie
|
18
|
+
Note: Anmerkung
|
19
19
|
Notes: Anmerkungen
|
20
20
|
Part: Teil
|
21
21
|
Procedure: Verfahren
|
22
22
|
Procedures: Verfahren
|
23
23
|
Reference: Hinweis
|
24
24
|
References: Hinweise
|
25
|
-
|
25
|
+
Return to listing: Gehen Sie zur Auflistung zurück
|
26
26
|
Section: Abschnitt
|
27
27
|
Table: Tabelle
|
28
28
|
Tables: Tabellen
|
data/lang/el.yaml
CHANGED
@@ -9,12 +9,12 @@ Example: Παράδειγμα
|
|
9
9
|
Examples: Παραδείγματα
|
10
10
|
Figure: Αριθμός
|
11
11
|
Figures: Αριθμοί
|
12
|
+
Focus next segment: Επόμενο τμήμα εστίασης
|
13
|
+
Focus previous segment: Προηγούμενο τμήμα εστίασης
|
14
|
+
Focus this segment: Στρέψτε αυτό το τμήμα
|
12
15
|
Generated by %s on %s.: Παραγμένος από %s %s.
|
13
16
|
Important: Σημαντικός
|
14
17
|
Importants: Importants
|
15
|
-
Jump to next segment: Άλμα στο επόμενο τμήμα
|
16
|
-
Jump to previous segment: Άλμα στο προηγούμενο τμήμα
|
17
|
-
Jump to this segment: Άλμα σε αυτό το τμήμα
|
18
18
|
Note: Σημείωση
|
19
19
|
Notes: Σημειώσεις
|
20
20
|
Part: Μέρος
|
@@ -22,7 +22,7 @@ Procedure: Διαδικασία
|
|
22
22
|
Procedures: Διαδικασίες
|
23
23
|
Reference: Αναφορά
|
24
24
|
References: Αναφορές
|
25
|
-
|
25
|
+
Return to listing: Επιστροφή στη λίστα
|
26
26
|
Section: Τμήμα
|
27
27
|
Table: Πίνακας
|
28
28
|
Tables: Πίνακες
|
data/lang/es.yaml
CHANGED
@@ -9,20 +9,20 @@ Example: Ejemplo
|
|
9
9
|
Examples: Ejemplos
|
10
10
|
Figure: Figura
|
11
11
|
Figures: Figuras
|
12
|
+
Focus next segment: Segmento siguiente del foco
|
13
|
+
Focus previous segment: Segmento anterior del foco
|
14
|
+
Focus this segment: Enfoque este segmento
|
12
15
|
Generated by %s on %s.: Generado por %s en %s.
|
13
16
|
Important: Importante
|
14
17
|
Importants: Importants
|
15
|
-
|
16
|
-
Jump to previous segment: Salte al segmento anterior
|
17
|
-
Jump to this segment: Salte a este segmento
|
18
|
-
Note: Observe
|
18
|
+
Note: Nota
|
19
19
|
Notes: Notas
|
20
20
|
Part: Parte
|
21
21
|
Procedure: Procedimiento
|
22
22
|
Procedures: Procedimientos
|
23
23
|
Reference: Referencia
|
24
24
|
References: Referencias
|
25
|
-
|
25
|
+
Return to listing: Vuelva al listado
|
26
26
|
Section: Sección
|
27
27
|
Table: Tabla
|
28
28
|
Tables: Tablas
|
data/lang/fr.yaml
CHANGED
@@ -9,20 +9,20 @@ Example: Exemple
|
|
9
9
|
Examples: Exemples
|
10
10
|
Figure: Figure
|
11
11
|
Figures: Figures
|
12
|
+
Focus next segment: Prochain segment de foyer
|
13
|
+
Focus previous segment: Segment précédent de foyer
|
14
|
+
Focus this segment: Focalisez ce segment
|
12
15
|
Generated by %s on %s.: Produit par %s sur %s.
|
13
16
|
Important: Important
|
14
17
|
Importants: Importants
|
15
|
-
|
16
|
-
Jump to previous segment: Sautez au segment précédent
|
17
|
-
Jump to this segment: Sautez à ce segment
|
18
|
-
Note: Notez
|
18
|
+
Note: Note
|
19
19
|
Notes: Notes
|
20
20
|
Part: Partie
|
21
21
|
Procedure: Procédé
|
22
22
|
Procedures: Procédures
|
23
23
|
Reference: Référence
|
24
24
|
References: Références
|
25
|
-
|
25
|
+
Return to listing: Revenez à la liste
|
26
26
|
Section: Section
|
27
27
|
Table: Tableau
|
28
28
|
Tables: Tableaux
|
data/lang/it.yaml
CHANGED
@@ -9,20 +9,20 @@ Example: Esempio
|
|
9
9
|
Examples: Esempi
|
10
10
|
Figure: Figura
|
11
11
|
Figures: Figure
|
12
|
+
Focus next segment: Segmento seguente del fuoco
|
13
|
+
Focus previous segment: Segmento precedente del fuoco
|
14
|
+
Focus this segment: Metta a fuoco questo segmento
|
12
15
|
Generated by %s on %s.: Generato da %s su %s.
|
13
16
|
Important: Importante
|
14
17
|
Importants: Importants
|
15
|
-
|
16
|
-
Jump to previous segment: Salti al segmento precedente
|
17
|
-
Jump to this segment: Salti a questo segmento
|
18
|
-
Note: Noti
|
18
|
+
Note: Nota
|
19
19
|
Notes: Note
|
20
20
|
Part: Parte
|
21
21
|
Procedure: Procedura
|
22
22
|
Procedures: Procedure
|
23
23
|
Reference: Riferimento
|
24
24
|
References: Riferimenti
|
25
|
-
|
25
|
+
Return to listing: Rinvii all'elenco
|
26
26
|
Section: Sezione
|
27
27
|
Table: Tabella
|
28
28
|
Tables: Tabelle
|
data/lang/ja.yaml
CHANGED
@@ -9,12 +9,12 @@ Example: 例
|
|
9
9
|
Examples: 例
|
10
10
|
Figure: 図
|
11
11
|
Figures: 図
|
12
|
+
Focus next segment: 焦点の次の区分
|
13
|
+
Focus previous segment: 焦点の前の区分
|
14
|
+
Focus this segment: この区分を集中しなさい
|
12
15
|
Generated by %s on %s.: %s.で%sによって発生させる。
|
13
16
|
Important: 重要
|
14
17
|
Importants: Importants
|
15
|
-
Jump to next segment: 次の区分へのジャンプ
|
16
|
-
Jump to previous segment: 前の区分へのジャンプ
|
17
|
-
Jump to this segment: この区分へのジャンプ
|
18
18
|
Note: ノート
|
19
19
|
Notes: ノート
|
20
20
|
Part: 部分
|
@@ -22,7 +22,7 @@ Procedure: プロシージャ
|
|
22
22
|
Procedures: プロシージャ
|
23
23
|
Reference: 参照
|
24
24
|
References: 参照
|
25
|
-
|
25
|
+
Return to listing: リストへのリターン
|
26
26
|
Section: セクション
|
27
27
|
Table: テーブル
|
28
28
|
Tables: テーブル
|
data/lang/ko.yaml
CHANGED
@@ -9,12 +9,12 @@ Example: 보기
|
|
9
9
|
Examples: 보기
|
10
10
|
Figure: 숫자
|
11
11
|
Figures: 숫자
|
12
|
+
Focus next segment: 초점 다음 세그먼트
|
13
|
+
Focus previous segment: 초점 이전 세그먼트
|
14
|
+
Focus this segment: 이 세그먼트를 집중시키십시오
|
12
15
|
Generated by %s on %s.: %s.에 %s에 의해 생성하는.
|
13
16
|
Important: 중요한
|
14
17
|
Importants: Importants
|
15
|
-
Jump to next segment: 다음 세그먼트에 점프
|
16
|
-
Jump to previous segment: 이전 세그먼트에 점프
|
17
|
-
Jump to this segment: 이 세그먼트에 점프
|
18
18
|
Note: 주
|
19
19
|
Notes: 주
|
20
20
|
Part: 부분
|
@@ -22,7 +22,7 @@ Procedure: 절차
|
|
22
22
|
Procedures: 절차
|
23
23
|
Reference: 참고
|
24
24
|
References: 참고
|
25
|
-
|
25
|
+
Return to listing: 명부작성에 반환
|
26
26
|
Section: 단면도
|
27
27
|
Table: 테이블
|
28
28
|
Tables: 테이블
|
data/lang/nl.yaml
CHANGED
@@ -9,12 +9,12 @@ Example: Voorbeeld
|
|
9
9
|
Examples: Voorbeelden
|
10
10
|
Figure: Cijfer
|
11
11
|
Figures: Cijfers
|
12
|
+
Focus next segment: Het volgende segment van de nadruk
|
13
|
+
Focus previous segment: Het vorige segment van de nadruk
|
14
|
+
Focus this segment: Concentreer dit segment
|
12
15
|
Generated by %s on %s.: Geproduceerd door %s op %s.
|
13
16
|
Important: Belangrijk
|
14
17
|
Importants: Importants
|
15
|
-
Jump to next segment: Sprong aan volgende segment
|
16
|
-
Jump to previous segment: Sprong aan vorig segment
|
17
|
-
Jump to this segment: Sprong aan dit segment
|
18
18
|
Note: Nota
|
19
19
|
Notes: Nota's
|
20
20
|
Part: Deel
|
@@ -22,7 +22,7 @@ Procedure: Procedure
|
|
22
22
|
Procedures: Procedures
|
23
23
|
Reference: Verwijzing
|
24
24
|
References: Verwijzingen
|
25
|
-
|
25
|
+
Return to listing: Terugkeer naar lijst
|
26
26
|
Section: Sectie
|
27
27
|
Table: Lijst
|
28
28
|
Tables: Lijsten
|
data/lang/phrases.yaml
CHANGED
@@ -11,9 +11,9 @@ Figures:
|
|
11
11
|
Generated by %s on %s.:
|
12
12
|
Important:
|
13
13
|
Importants:
|
14
|
-
|
15
|
-
|
16
|
-
|
14
|
+
Focus next segment:
|
15
|
+
Focus previous segment:
|
16
|
+
Focus this segment:
|
17
17
|
Note:
|
18
18
|
Notes:
|
19
19
|
Part:
|
@@ -21,7 +21,7 @@ Procedure:
|
|
21
21
|
Procedures:
|
22
22
|
Reference:
|
23
23
|
References:
|
24
|
-
|
24
|
+
Return to listing:
|
25
25
|
Section:
|
26
26
|
Table:
|
27
27
|
Tables:
|
data/lang/pt.yaml
CHANGED
@@ -9,20 +9,20 @@ Example: Exemplo
|
|
9
9
|
Examples: Exemplos
|
10
10
|
Figure: Figura
|
11
11
|
Figures: Figuras
|
12
|
+
Focus next segment: Segmento seguinte do foco
|
13
|
+
Focus previous segment: Segmento precedente do foco
|
14
|
+
Focus this segment: Focalize este segmento
|
12
15
|
Generated by %s on %s.: Gerado por %s em %s.
|
13
16
|
Important: Importante
|
14
17
|
Importants: Importants
|
15
|
-
|
16
|
-
Jump to previous segment: Salte ao segmento precedente
|
17
|
-
Jump to this segment: Salte a este segmento
|
18
|
-
Note: Anote
|
18
|
+
Note: Nota
|
19
19
|
Notes: Notas
|
20
20
|
Part: Parte
|
21
21
|
Procedure: Procedimento
|
22
22
|
Procedures: Procedimentos
|
23
23
|
Reference: Referência
|
24
24
|
References: Referências
|
25
|
-
|
25
|
+
Return to listing: Retorne à lista
|
26
26
|
Section: Seção
|
27
27
|
Table: Tabela
|
28
28
|
Tables: Tabelas
|
data/lang/ru.yaml
CHANGED
@@ -9,20 +9,20 @@ Example: Пример
|
|
9
9
|
Examples: Примеры
|
10
10
|
Figure: Диаграмма
|
11
11
|
Figures: Диаграммы
|
12
|
+
Focus next segment: Этап фокуса следующий
|
13
|
+
Focus previous segment: Этап фокуса предыдущий
|
14
|
+
Focus this segment: Сфокусируйте этот этап
|
12
15
|
Generated by %s on %s.: Произведено %s на %s.
|
13
16
|
Important: Важно
|
14
17
|
Importants: Importants
|
15
|
-
|
16
|
-
Jump to previous segment: Поскачите к предыдущему этапу
|
17
|
-
Jump to this segment: Поскачите к этому этапу
|
18
|
-
Note: Заметьте
|
18
|
+
Note: Примечание
|
19
19
|
Notes: Примечания
|
20
20
|
Part: Часть
|
21
21
|
Procedure: Процедура
|
22
22
|
Procedures: Процедуры
|
23
23
|
Reference: Справка
|
24
24
|
References: Справки
|
25
|
-
|
25
|
+
Return to listing: Возвратите к перечислению
|
26
26
|
Section: Раздел
|
27
27
|
Table: Таблица
|
28
28
|
Tables: Таблицы
|
data/lang/zh.yaml
CHANGED
@@ -9,20 +9,20 @@ Example: 例子
|
|
9
9
|
Examples: 例子
|
10
10
|
Figure: 图
|
11
11
|
Figures: 图
|
12
|
+
Focus next segment: 焦点下段
|
13
|
+
Focus previous segment: 焦点早先段
|
14
|
+
Focus this segment: 聚焦这段
|
12
15
|
Generated by %s on %s.: 引起由%s在%s。
|
13
16
|
Important: 重要
|
14
17
|
Importants: Importants
|
15
|
-
|
16
|
-
Jump to previous segment: 跳跃到早先段
|
17
|
-
Jump to this segment: 跳跃到这段
|
18
|
-
Note: 注意
|
18
|
+
Note: 笔记
|
19
19
|
Notes: 笔记
|
20
20
|
Part: 部分
|
21
21
|
Procedure: 做法
|
22
22
|
Procedures: 做法
|
23
23
|
Reference: 参考
|
24
24
|
References: 参考
|
25
|
-
|
25
|
+
Return to listing: 回到目录
|
26
26
|
Section: 部分
|
27
27
|
Table: 表
|
28
28
|
Tables: 表
|
data/lang/zt.yaml
CHANGED
@@ -9,20 +9,20 @@ Example: 例子
|
|
9
9
|
Examples: 例子
|
10
10
|
Figure: 图
|
11
11
|
Figures: 图
|
12
|
+
Focus next segment: 焦點下段
|
13
|
+
Focus previous segment: 焦點早先段
|
14
|
+
Focus this segment: 聚焦這段
|
12
15
|
Generated by %s on %s.: 引起由%s在%s。
|
13
16
|
Important: 重要
|
14
17
|
Importants: Importants
|
15
|
-
|
16
|
-
Jump to previous segment: 跳躍到早先段
|
17
|
-
Jump to this segment: 跳躍到這段
|
18
|
-
Note: 注意
|
18
|
+
Note: 筆記
|
19
19
|
Notes: 筆記
|
20
20
|
Part: 部分
|
21
21
|
Procedure: 做法
|
22
22
|
Procedures: 做法
|
23
23
|
Reference: 參考
|
24
24
|
References: 參考
|
25
|
-
|
25
|
+
Return to listing: 回到目錄
|
26
26
|
Section: 部分
|
27
27
|
Table: 表
|
28
28
|
Tables: 表
|
data/lib/erbook.rb
CHANGED
@@ -1,16 +1,23 @@
|
|
1
|
+
#--
|
2
|
+
# Copyright 2007 Suraj N. Kurapati
|
3
|
+
# See the LICENSE file for details.
|
4
|
+
#++
|
5
|
+
|
1
6
|
require 'rubygems'
|
7
|
+
gem 'inochi', '~> 1'
|
2
8
|
require 'inochi'
|
3
9
|
|
4
10
|
Inochi.init :ERBook,
|
5
11
|
:program => 'erbook',
|
6
|
-
:version => '
|
7
|
-
:release => '2009-
|
12
|
+
:version => '7.0.0',
|
13
|
+
:release => '2009-05-03',
|
8
14
|
:website => 'http://snk.tuxfamily.org/lib/erbook/',
|
9
15
|
:tagline => 'Extensible document processor based on eRuby',
|
10
16
|
:require => {
|
11
|
-
|
12
|
-
'maruku'
|
13
|
-
'coderay'
|
17
|
+
'ember' => '~> 0', # for eRuby template processing
|
18
|
+
'maruku' => '~> 0.5', # for Markdown to XHTML conversion
|
19
|
+
'coderay' => '>= 0.8', # for syntax coloring of source code
|
20
|
+
'rainpress' => '~> 1', # for minifying CSS
|
14
21
|
}
|
15
22
|
|
16
23
|
module ERBook
|
data/lib/erbook/document.rb
CHANGED
@@ -1,5 +1,11 @@
|
|
1
|
+
#--
|
2
|
+
# Copyright 2008 Suraj N. Kurapati
|
3
|
+
# See the LICENSE file for details.
|
4
|
+
#++
|
5
|
+
|
1
6
|
require 'yaml'
|
2
7
|
require 'erbook/template'
|
8
|
+
require 'digest/sha1'
|
3
9
|
|
4
10
|
module ERBook
|
5
11
|
class Document
|
@@ -16,25 +22,26 @@ module ERBook
|
|
16
22
|
attr_reader :nodes_by_type
|
17
23
|
|
18
24
|
##
|
19
|
-
#
|
25
|
+
# ==== Parameters
|
26
|
+
#
|
27
|
+
# [format_name]
|
20
28
|
# Either the short-hand name of a built-in format
|
21
29
|
# or the path to a format specification file.
|
22
30
|
#
|
23
|
-
#
|
31
|
+
# [input_text]
|
24
32
|
# The body of the input document.
|
25
33
|
#
|
26
|
-
#
|
34
|
+
# [input_file]
|
27
35
|
# Name of the file from which the input document originated.
|
28
36
|
#
|
29
|
-
#
|
30
|
-
# Additional method parameters:
|
37
|
+
# ==== Options
|
31
38
|
#
|
32
|
-
#
|
39
|
+
# [:unindent]
|
33
40
|
# If true, all node content is unindented hierarchically.
|
34
41
|
#
|
35
|
-
def initialize
|
42
|
+
def initialize format_name, input_text, input_file, options = {}
|
36
43
|
# process format specification
|
37
|
-
|
44
|
+
@format_file = format_name.to_s
|
38
45
|
|
39
46
|
File.file? @format_file or
|
40
47
|
@format_file = File.join(ERBook::FORMATS_DIR, @format_file + '.yaml')
|
@@ -58,6 +65,7 @@ module ERBook
|
|
58
65
|
begin
|
59
66
|
# create sandbox for input evaluation
|
60
67
|
template = Template.new(input_file, input_text, options[:unindent])
|
68
|
+
sandbox = template.sandbox
|
61
69
|
|
62
70
|
@template_vars = {
|
63
71
|
:@format => @format,
|
@@ -65,96 +73,86 @@ module ERBook
|
|
65
73
|
:@nodes => @nodes = [], # all nodes in the forest
|
66
74
|
:@nodes_by_type => @nodes_by_type = Hash.new {|h,k| h[k] = [] },
|
67
75
|
:@stack => [], # stack for all nodes
|
68
|
-
}.each_pair {|k,v|
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
@count ||= Hash.new {|h,k| h[k] = []}
|
93
|
-
node.number = (@count[node.type] << node).length
|
94
|
-
end
|
76
|
+
}.each_pair {|k,v| sandbox.instance_variable_set(k, v) }
|
77
|
+
|
78
|
+
# Handles the method call from a node
|
79
|
+
# placeholder in the input document.
|
80
|
+
def sandbox.__node_impl__ node_type, *node_args, &node_content
|
81
|
+
node = Node.new(
|
82
|
+
:type => node_type,
|
83
|
+
:defn => @format['nodes'][node_type],
|
84
|
+
:args => node_args,
|
85
|
+
:children => [],
|
86
|
+
|
87
|
+
# omit erbook internals from the stack trace
|
88
|
+
:trace => caller.reject {|t|
|
89
|
+
[$0, ERBook::INSTALL].any? {|f| t.index(f) == 0 }
|
90
|
+
}
|
91
|
+
)
|
92
|
+
@nodes << node
|
93
|
+
@nodes_by_type[node.type] << node
|
94
|
+
|
95
|
+
# calculate occurrence number for this node
|
96
|
+
if node.defn['number']
|
97
|
+
@count ||= Hash.new {|h,k| h[k] = []}
|
98
|
+
node.number = (@count[node.type] << node).length
|
99
|
+
end
|
95
100
|
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
101
|
+
# assign node family
|
102
|
+
if parent = @stack.last
|
103
|
+
parent.children << node
|
104
|
+
node.parent = parent
|
105
|
+
node.depth = parent.depth
|
106
|
+
node.depth += 1 if node.defn['depth']
|
102
107
|
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
108
|
+
# calculate latex-style index number for this node
|
109
|
+
if node.defn['index']
|
110
|
+
ancestry = @stack.reverse.find {|n| n.defn['index'] }.index
|
111
|
+
branches = node.parent.children.select {|n| n.index }
|
107
112
|
|
108
|
-
|
109
|
-
end
|
110
|
-
else
|
111
|
-
@roots << node
|
112
|
-
node.parent = nil
|
113
|
-
node.depth = 0
|
114
|
-
|
115
|
-
# calculate latex-style index number for this node
|
116
|
-
if node.defn['index']
|
117
|
-
branches = @roots.select {|n| n.index }
|
118
|
-
node.index = (branches.length + 1).to_s
|
119
|
-
end
|
113
|
+
node.index = [ancestry, branches.length + 1].join('.')
|
120
114
|
end
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
else
|
131
|
-
content = nil
|
132
|
-
digest = Document.digest(node.object_id)
|
115
|
+
else
|
116
|
+
@roots << node
|
117
|
+
node.parent = nil
|
118
|
+
node.depth = 0
|
119
|
+
|
120
|
+
# calculate latex-style index number for this node
|
121
|
+
if node.defn['index']
|
122
|
+
branches = @roots.select {|n| n.index }
|
123
|
+
node.index = (branches.length + 1).to_s
|
133
124
|
end
|
125
|
+
end
|
134
126
|
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
127
|
+
# assign node content
|
128
|
+
if block_given?
|
129
|
+
@stack.push node
|
130
|
+
node.content = __block_content__(node, &node_content)
|
131
|
+
@stack.pop
|
139
132
|
end
|
133
|
+
|
134
|
+
@buffer << node
|
135
|
+
|
136
|
+
nil
|
140
137
|
end
|
141
138
|
|
142
139
|
@node_defs.each_key do |type|
|
143
140
|
# XXX: using a string because define_method()
|
144
141
|
# does not accept a block until Ruby 1.9
|
145
|
-
file, line = __FILE__, __LINE__
|
146
|
-
|
147
|
-
|
148
|
-
__node__ #{type.inspect}, *node_args, &node_content
|
142
|
+
file, line = __FILE__, __LINE__; eval %{
|
143
|
+
def sandbox.#{type} *node_args, &node_content
|
144
|
+
__node_impl__ #{type.inspect}, *node_args, &node_content
|
149
145
|
end
|
150
|
-
}, file, line
|
146
|
+
}, binding, file, line
|
151
147
|
end
|
152
148
|
|
153
149
|
# evaluate the input & build the document tree
|
154
|
-
|
150
|
+
template.render
|
151
|
+
@processed_document = template.buffer
|
155
152
|
|
156
153
|
# chain block-level nodes together for local navigation
|
157
|
-
block_nodes = @nodes.reject {|n|
|
154
|
+
block_nodes = @nodes.reject {|n| n.defn['bypass'] ||
|
155
|
+
n.defn['inline'] }
|
158
156
|
|
159
157
|
require 'enumerator'
|
160
158
|
block_nodes.each_cons(2) do |a, b|
|
@@ -162,25 +160,60 @@ module ERBook
|
|
162
160
|
b.prev_node = a
|
163
161
|
end
|
164
162
|
|
165
|
-
#
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
163
|
+
# calculate output for all nodes
|
164
|
+
actual_output_by_node = {}
|
165
|
+
|
166
|
+
visitor = lambda do |n|
|
167
|
+
#
|
168
|
+
# allow child nodes to calculate their actual
|
169
|
+
# output and to set their identifier as Node#output
|
170
|
+
#
|
171
|
+
# we do this nodes first because this node's
|
172
|
+
# content contains the child nodes' output
|
173
|
+
#
|
174
|
+
n.children.each {|c| visitor.call c }
|
175
|
+
|
176
|
+
# calculate the output for this node
|
177
|
+
actual_output = Template.new(
|
178
|
+
"#{@format_file}:nodes:#{n.type}:output",
|
179
|
+
n.defn['output'].to_s.chomp
|
171
180
|
).render_with(@template_vars.merge(:@node => n))
|
172
181
|
|
173
|
-
#
|
174
|
-
n.children.each
|
182
|
+
# reveal child nodes' actual output in this node's actual output
|
183
|
+
n.children.each do |c|
|
184
|
+
if c.defn['inline'] && !c.defn['bypass']
|
185
|
+
actual_output[c.output] = actual_output_by_node[c]
|
186
|
+
|
187
|
+
else
|
188
|
+
# pull block-level node out of paragraph tag added by Maruku
|
189
|
+
actual_output.sub! %r/(<p>\s*)?#{Regexp.quote c.output}/ do
|
190
|
+
actual_output_by_node[c] + $1.to_s
|
191
|
+
end
|
192
|
+
end
|
193
|
+
end
|
175
194
|
|
176
|
-
|
177
|
-
|
195
|
+
actual_output_by_node[n] = actual_output
|
196
|
+
|
197
|
+
#
|
198
|
+
# allow the parent node to calculate its actual
|
199
|
+
# output without interference from the output of
|
200
|
+
# this node (Node#to_s is aliased to Node#output)
|
201
|
+
#
|
202
|
+
# this assumes that having this node's string
|
203
|
+
# representation be a consecutive sequence of digits
|
204
|
+
# will not interfere with the text-to-whatever
|
205
|
+
# transformation defined by the format specification
|
206
|
+
#
|
207
|
+
n.output = Digest::SHA1.digest(n.object_id.to_s).unpack('I*').join
|
178
208
|
end
|
179
209
|
|
180
|
-
@roots.each {|n|
|
210
|
+
@roots.each {|n| visitor.call n }
|
211
|
+
|
212
|
+
# replace the temporary identifier with each node's actual output
|
213
|
+
@nodes.each {|n| n.output = actual_output_by_node[n] }
|
181
214
|
|
182
215
|
rescue Exception
|
183
|
-
puts input_text # so the user can debug line numbers in
|
216
|
+
puts input_text # so the user can debug line numbers in stack trace
|
184
217
|
error "Could not process input document #{input_file.inspect}"
|
185
218
|
end
|
186
219
|
end
|
@@ -190,7 +223,7 @@ module ERBook
|
|
190
223
|
#
|
191
224
|
def to_s
|
192
225
|
Template.new("#{@format_file}:output", @format['output'].to_s).
|
193
|
-
render_with(@template_vars.merge(:@content => @processed_document))
|
226
|
+
render_with(@template_vars.merge(:@content => @processed_document.join))
|
194
227
|
end
|
195
228
|
|
196
229
|
require 'ostruct'
|
@@ -201,23 +234,10 @@ module ERBook
|
|
201
234
|
|
202
235
|
# Returns the output of this node.
|
203
236
|
def to_s
|
204
|
-
output
|
237
|
+
defn['silent'] ? '' : output
|
205
238
|
end
|
206
239
|
end
|
207
240
|
|
208
|
-
require 'digest/sha1'
|
209
|
-
##
|
210
|
-
# Returns a digest of the given string that
|
211
|
-
# will not be altered by String#to_xhtml.
|
212
|
-
#
|
213
|
-
def Document.digest input
|
214
|
-
Digest::SHA1.hexdigest(input.to_s).
|
215
|
-
|
216
|
-
# XXX: surround all digits with alphabets so
|
217
|
-
# Maruku doesn't change them into HTML
|
218
|
-
gsub(/\d/, 'z\&z')
|
219
|
-
end
|
220
|
-
|
221
241
|
private
|
222
242
|
|
223
243
|
##
|