middleman-ya_lorem_ja 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +9 -0
- data/Gemfile +20 -0
- data/README.md +101 -0
- data/Rakefile +14 -0
- data/features/helpers_ya_lorem_ja.feature +19 -0
- data/features/support/env.rb +6 -0
- data/fixtures/test-app/config.rb +1 -0
- data/fixtures/test-app/source/word.html.erb +9 -0
- data/lib/middleman-ya_lorem_ja.rb +20 -0
- data/lib/middleman-ya_lorem_ja/dictionary.rb +204 -0
- data/lib/middleman-ya_lorem_ja/extension.rb +55 -0
- data/lib/middleman-ya_lorem_ja/step_definitions.rb +21 -0
- data/lib/middleman-ya_lorem_ja/step_definitions/server_steps.rb +174 -0
- data/lib/middleman-ya_lorem_ja/version.rb +6 -0
- data/lib/middleman_extension.rb +1 -0
- data/middleman-ya_lorem_ja.gemspec +24 -0
- metadata +89 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: cd215f63eb865660c549565c3d067b4a48107892
|
4
|
+
data.tar.gz: 516ba19d25390f9e6be45dedbc171fa254b58d98
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: fc2cbea03212230f243aa91b85a9f06a665910aa09fb99a03a8e59c7fa16ebfa9b1106c34523b741001be52d96a487e6c9373a3821bab4c10c67b77926b5509c
|
7
|
+
data.tar.gz: 1d771a2d103c506a5996af31663f2b8de32a02c3d0f1f3a640cd18ef69f28a73d6cfb7c1a9bcc5a584953760615910b6900ef30ebfe03a1490e9d42d755f109e
|
data/.gitignore
ADDED
data/Gemfile
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
# If you do not have OpenSSL installed, update
|
2
|
+
# the following line to use "http://" instead
|
3
|
+
source 'https://rubygems.org'
|
4
|
+
|
5
|
+
# Specify your gem's dependencies in middleman-ya_lorem_ja.gemspec
|
6
|
+
gemspec
|
7
|
+
|
8
|
+
group :development do
|
9
|
+
gem 'rake'
|
10
|
+
gem 'rdoc'
|
11
|
+
gem 'yard'
|
12
|
+
end
|
13
|
+
|
14
|
+
group :test do
|
15
|
+
gem 'cucumber'
|
16
|
+
gem 'fivemat'
|
17
|
+
gem 'aruba'
|
18
|
+
gem 'rspec'
|
19
|
+
gem 'capybara'
|
20
|
+
end
|
data/README.md
ADDED
@@ -0,0 +1,101 @@
|
|
1
|
+
# middleman-ya_lorem_ja #
|
2
|
+
|
3
|
+
Middleman 用の日本語 lorem 拡張です。
|
4
|
+
|
5
|
+
## インストール方法 ##
|
6
|
+
|
7
|
+
Gemfile に以下を追加し、"bundle install"してください。
|
8
|
+
|
9
|
+
```
|
10
|
+
gem "middleman-ya_lorem_ja" , :git => 'git://github.com/tanalab2/middleman-ya_lorem_ja'
|
11
|
+
```
|
12
|
+
|
13
|
+
あとは、 middleman の config.rb に以下を追加し、 ya_lorem_ja を有効化してください。
|
14
|
+
|
15
|
+
``` ruby
|
16
|
+
activate :ya_lorem_ja
|
17
|
+
```
|
18
|
+
|
19
|
+
ya_lorem_ja が有効になり、 erb ファイルなどで、
|
20
|
+
lorem_ja オブジェクトが使用できるようになります。
|
21
|
+
|
22
|
+
erb に以下を記載した場合は、
|
23
|
+
|
24
|
+
``` ruby
|
25
|
+
<h1><%= lorem_ja.word %></h1>
|
26
|
+
<h2><%= lorem_ja.words(5) %></h2>
|
27
|
+
<p><%= lorem_ja.sentence %></p>
|
28
|
+
<p><%= lorem_ja.sentences(3) %></p>
|
29
|
+
<p>
|
30
|
+
<%= lorem_ja.paragraph %>
|
31
|
+
<%= lorem_ja.paragraphs(3) %>
|
32
|
+
</p>
|
33
|
+
```
|
34
|
+
|
35
|
+
以下のように出力されます。
|
36
|
+
|
37
|
+
``` html
|
38
|
+
<h1>風博士の遺書</h1>
|
39
|
+
<h2>諸氏よ、誰人かよく蛸を懲す勇士なきや</h2>
|
40
|
+
<p>余の妻は麗わしきこと高山植物の如く、実に単なる植物ではなかったのである!</p>
|
41
|
+
<p>かりに諸君、聡明なること世界地図の如き諸君よ、諸君は学識深遠なる蛸の存在を認容することが出来るであろうか?
|
42
|
+
高尚なること檞の木の如き諸君よ、諸君は何故彼如き陋劣漢を地上より埋没せしめんと願わざる乎。
|
43
|
+
しかるに諸君、ああ諸君、おお諸君、余は敗北したのである。
|
44
|
+
</p>
|
45
|
+
<p>
|
46
|
+
そのために、余は空気の如く彼の寝室に侵入することが出来たのである。
|
47
|
+
この珍奇なる部落は、人種、風俗、言語に於て西欧の全人種に隔絶し、実に地球の半廻転を試みてのち、極東じゃぽん国にいたって初めて著しき類似を見出すのである。
|
48
|
+
ああ三度冷静なること扇風機の如き諸君よ、かの憎むべき蛸博士は何等の愛なくして余の妻を奪ったのである。
|
49
|
+
偉大なる博士はシルクハットを被り直したのである。
|
50
|
+
僕は階段の途中に凝縮して、まだ響き残っているその慌しい跫音を耳にしながら、ただ一陣の突風が階段の下に舞い狂うのを見たのみであった。
|
51
|
+
</p>
|
52
|
+
<p>
|
53
|
+
諸君よ、翌日の夜明けを期して、かの憎むべき蛸はついに蛸自体の正体を遺憾なく暴露するに至るであろう!
|
54
|
+
諸氏よ、誰人かよく蛸を懲す勇士なきや。
|
55
|
+
余の力を以てして、彼の悪略に及ばざることすでに明白なり矣。
|
56
|
+
全てこれらの狼狽は極めて直線的な突風を描いて交錯する為に、部屋の中には何本もの飛ぶ矢に似た真空が閃光を散らして騒いでいる習慣であった。
|
57
|
+
そして、今、東北端の肱掛椅子から移転したばかりに相違ない証拠には、一陣の突風が東北から西南にかけて目に沁み渡る多くの矢を描きながら走っていたのである。
|
58
|
+
|
59
|
+
偉大なる博士が彼の女に目をつけたのは流石に偉大なる見識といわねばならない。
|
60
|
+
たとえば、時計はいそがしく十三時を打ち、礼節正しい来客がもじもじして腰を下そうとしない時に椅子は劇しい癇癪を鳴らし、物体の描く陰影は突如太陽に向って走り出すのである。
|
61
|
+
たとえば諸君、頃日余の戸口に Banana の皮を撒布し余の殺害を企てたのも彼の方寸に相違ない。
|
62
|
+
|
63
|
+
実に諸君、彼は秘かに別の鬘を貯蔵していたのである。
|
64
|
+
成吉思汗は欧州を侵略し、西班牙に至ってその消息を失うたのである。
|
65
|
+
そして其筋の計算に由れば、偉大なる風博士は僕と共謀のうえ遺書を捏造して自殺を装い、かくてかの憎むべき蛸博士の名誉毀損をたくらんだに相違あるまいと睨んだのである。
|
66
|
+
諸君はその時、実にあわただしい後悔と一緒に黄昏に似た沈黙がこの書斎に閉じ籠もるのを認められるに相違ない。
|
67
|
+
</p>
|
68
|
+
```
|
69
|
+
|
70
|
+
## Interface ##
|
71
|
+
|
72
|
+
実装するインターフェースは以下です。
|
73
|
+
|
74
|
+
- word
|
75
|
+
- words(num_of_words)
|
76
|
+
- sentence
|
77
|
+
- sentences(num_of_words)
|
78
|
+
- paragraph
|
79
|
+
- paragraphs(num_of_sentces)
|
80
|
+
- date(fmt='%Y年%m月%d日')
|
81
|
+
- image(size, options={})
|
82
|
+
|
83
|
+
|
84
|
+
## 参考 ##
|
85
|
+
|
86
|
+
* [ya_lorem_ja](https://github.com/tanalab2/ya_lorem_ja)
|
87
|
+
|
88
|
+
* [lorem.rb](https://github.com/middleman/middleman/middleman-core/lib/middleman-more/extensions/lorem.rb )
|
89
|
+
|
90
|
+
* [坂口安吾「風博士」](http://www.aozora.gr.jp/cards/001095/card42616.html)
|
91
|
+
|
92
|
+
文の配列は、青空文庫から拝借しました。
|
93
|
+
|
94
|
+
* [middleman-ya_lorem_ja を使用したサンプルページ](http://discountinnovations.com/articles/middleman/lorem_ja.html)
|
95
|
+
|
96
|
+
|
97
|
+
## License
|
98
|
+
* MIT
|
99
|
+
|
100
|
+
|
101
|
+
|
data/Rakefile
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
require 'bundler'
|
2
|
+
Bundler::GemHelper.install_tasks
|
3
|
+
|
4
|
+
require 'cucumber/rake/task'
|
5
|
+
|
6
|
+
Cucumber::Rake::Task.new(:cucumber, 'Run features that should pass') do |t|
|
7
|
+
t.cucumber_opts = "--color --tags ~@wip --strict --format #{ENV['CUCUMBER_FORMAT'] || 'Fivemat'}"
|
8
|
+
end
|
9
|
+
|
10
|
+
require 'rake/clean'
|
11
|
+
|
12
|
+
task test: ['cucumber']
|
13
|
+
|
14
|
+
task default: :test
|
@@ -0,0 +1,19 @@
|
|
1
|
+
Feature: Lorem generating helper
|
2
|
+
|
3
|
+
Scenario: Lorem Helper
|
4
|
+
Given the Server is running at "test-app"
|
5
|
+
Then going to "/word.html" should not raise an exception
|
6
|
+
Then I should see "#word" contents have over "2" chars
|
7
|
+
Then I should see "#words5" contents have over "10" chars
|
8
|
+
Then I should see "#sentence" contents have over "#{2*6}" chars
|
9
|
+
Then I should see "#sentence" contents have "1" sentences
|
10
|
+
Then I should see "#sentences3" contents have over "6" chars
|
11
|
+
Then I should see "#sentences3" contents have "3" sentences
|
12
|
+
Then I should see "#paragraph" contents have "1" paragraphs
|
13
|
+
Then I should see "#paragraphs3" contents have "3" paragraphs
|
14
|
+
Then I should see "#date" contents match "\d{4}年\d{2}月\d{2}日"
|
15
|
+
Then I should see "#image" contents match "^http://placehold.it/20x20"
|
16
|
+
|
17
|
+
|
18
|
+
|
19
|
+
|
@@ -0,0 +1 @@
|
|
1
|
+
activate :ya_lorem_ja
|
@@ -0,0 +1,9 @@
|
|
1
|
+
<div id="#word"><%= lorem_ja.word %></div>
|
2
|
+
<div id="#words5"><%= lorem_ja.words(5) %></div>
|
3
|
+
<div id="#sentence"><%= lorem_ja.sentence %></div>
|
4
|
+
<div id="#sentences3"><%= lorem_ja.sentences(3) %></div>
|
5
|
+
<div id="#paragraph"><%= lorem_ja.paragraph %></div>
|
6
|
+
<div id="#paragraphs3"><%= lorem_ja.paragraphs(3) %></div>
|
7
|
+
<div id="#date"><%= lorem_ja.date %></div>
|
8
|
+
<div id="#image"><%= lorem_ja.image("20x20") %></div>
|
9
|
+
|
@@ -0,0 +1,20 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
# Require core library
|
3
|
+
require 'middleman-core'
|
4
|
+
require "middleman-ya_lorem_ja/dictionary"
|
5
|
+
require "middleman-ya_lorem_ja/extension"
|
6
|
+
require "middleman-ya_lorem_ja/version"
|
7
|
+
|
8
|
+
module Middleman
|
9
|
+
module YaLoremJa
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
if __FILE__ == $PROGRAM_NAME
|
14
|
+
puts "word:", ::Middleman::YaLoremJa::Extension::YaLoremObjectJa.word
|
15
|
+
puts "words(5):", ::Middleman::YaLoremJa::Extension::YaLoremObjectJa.words(5)
|
16
|
+
puts "sentence:", ::Middleman::YaLoremJa::Extension::YaLoremObjectJa.sentence
|
17
|
+
puts "sentences(3):", ::Middleman::YaLoremJa::Extension::YaLoremObjectJa.sentences(3)
|
18
|
+
puts "paragraph:", ::Middleman::YaLoremJa::Extension::YaLoremObjectJa.paragraph
|
19
|
+
puts "paragraph(5):", ::Middleman::YaLoremJa::Extension::YaLoremObjectJa.paragraphs(5)
|
20
|
+
end
|
@@ -0,0 +1,204 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
#
|
3
|
+
# 坂口安吾「風博士」
|
4
|
+
# http://www.aozora.gr.jp/cards/001095/card42616.html
|
5
|
+
#
|
6
|
+
module Middleman
|
7
|
+
module YaLoremJa
|
8
|
+
module Dictionary
|
9
|
+
SENTENCE_END_CHARS = ["?", "。", "!"]
|
10
|
+
|
11
|
+
LINES=<<CONTENTS.split("\n")
|
12
|
+
諸君は、東京市某町某番地なる風博士の邸宅を御存じであろう乎?
|
13
|
+
御存じない。
|
14
|
+
それは大変残念である。
|
15
|
+
そして諸君は偉大なる風博士を御存知であろうか?
|
16
|
+
ない。
|
17
|
+
嗚呼。
|
18
|
+
では諸君は遺書だけが発見されて、偉大なる風博士自体は杳として紛失したことも御存知ないであろうか?
|
19
|
+
ない。
|
20
|
+
嗟乎。
|
21
|
+
では諸君は僕が其筋の嫌疑のために並々ならぬ困難を感じていることも御存じあるまい。
|
22
|
+
しかし警察は知っていたのである。
|
23
|
+
そして其筋の計算に由れば、偉大なる風博士は僕と共謀のうえ遺書を捏造して自殺を装い、かくてかの憎むべき蛸博士の名誉毀損をたくらんだに相違あるまいと睨んだのである。
|
24
|
+
諸君、これは明らかに誤解である。
|
25
|
+
何となれば偉大なる風博士は自殺したからである。
|
26
|
+
果して自殺した乎?
|
27
|
+
然り、偉大なる風博士は紛失したのである。
|
28
|
+
諸君は軽率に真理を疑っていいのであろうか?
|
29
|
+
なぜならば、それは諸君の生涯に様々な不運を齎らすに相違ないからである。
|
30
|
+
真理は信ぜらるべき性質のものであるから、諸君は偉大なる風博士の死を信じなければならない。
|
31
|
+
そして諸君は、かの憎むべき蛸博士の——あ、諸君はかの憎むべき蛸博士を御存知であろうか?
|
32
|
+
御存じない。
|
33
|
+
噫呼、それは大変残念である。
|
34
|
+
では諸君は、まず悲痛なる風博士の遺書を一読しなければなるまい。
|
35
|
+
風博士の遺書
|
36
|
+
諸君、彼は禿頭である。
|
37
|
+
然り、彼は禿頭である。
|
38
|
+
禿頭以外の何物でも、断じてこれある筈はない。
|
39
|
+
彼は鬘を以て之の隠蔽をなしおるのである。
|
40
|
+
ああこれ実に何たる滑稽!
|
41
|
+
然り何たる滑稽である。
|
42
|
+
ああ何たる滑稽である。
|
43
|
+
かりに諸君、一撃を加えて彼の毛髪を強奪せりと想像し給え。
|
44
|
+
突如諸君は気絶せんとするのである。
|
45
|
+
而して諸君は気絶以外の何物にも遭遇することは不可能である。
|
46
|
+
即ち諸君は、猥褻名状すべからざる無毛赤色の突起体に深く心魄を打たるるであろう。
|
47
|
+
異様なる臭気は諸氏の余生に消えざる歎きを与えるに相違ない。
|
48
|
+
忌憚なく言えば、彼こそ憎むべき蛸である。
|
49
|
+
人間の仮面を被り、門にあらゆる悪計を蔵すところの蛸は即ち彼に外ならぬのである。
|
50
|
+
諸君、余を指して誣告の誹を止め給え、何となれば、真理に誓って彼は禿頭である。
|
51
|
+
尚疑わんとせば諸君よ、巴里府モンマルトル三番地、Bis, Perruquier ショオブ氏に訊き給え。
|
52
|
+
今を距ること四十八年前のことなり、二人の日本人留学生によって鬘の購われたることを記憶せざるや。
|
53
|
+
一人は禿頭にして肥満すること豚児の如く愚昧の相を漂わし、その友人は黒髪|明眸の美少年なりき、と。
|
54
|
+
黒髪明眸なる友人こそ即ち余である。
|
55
|
+
見給え諸君、ここに至って彼は果然四十八年以前より禿げていたのである。
|
56
|
+
於戯実に慨嘆の至に堪えんではない乎!
|
57
|
+
高尚なること檞の木の如き諸君よ、諸君は何故彼如き陋劣漢を地上より埋没せしめんと願わざる乎。
|
58
|
+
彼は鬘を以てその禿頭を瞞着せんとするのである。
|
59
|
+
諸君、彼は余の憎むべき論敵である。
|
60
|
+
単なる論敵であるか?
|
61
|
+
否否否。
|
62
|
+
千辺否。
|
63
|
+
余の生活の全てに於て彼は又余の憎むべき仇敵である。
|
64
|
+
実に憎むべきであるか?
|
65
|
+
然り実に憎むべきである!
|
66
|
+
諸君、彼の教養たるや浅薄至極でありますぞ。
|
67
|
+
かりに諸君、聡明なること世界地図の如き諸君よ、諸君は学識深遠なる蛸の存在を認容することが出来るであろうか?
|
68
|
+
否否否、万辺否。
|
69
|
+
余はここに敢て彼の無学を公開せんとするものである。
|
70
|
+
諸君は南欧の小部落バスクを認識せらるるであろうか?
|
71
|
+
もしも諸君が仏蘭西、西班牙両国の国境をなすピレネエ山脈をさまようならば、諸君は山中に散在する小部落バスクに逢着するのである。
|
72
|
+
この珍奇なる部落は、人種、風俗、言語に於て西欧の全人種に隔絶し、実に地球の半廻転を試みてのち、極東じゃぽん国にいたって初めて著しき類似を見出すのである。
|
73
|
+
これ余の研究完成することなくしては、地球の怪談として深く諸氏の心胆を寒からしめたに相違ない。
|
74
|
+
而して諸君安んぜよ、余の研究は完成し、世界平和に偉大なる貢献を与えたのである。
|
75
|
+
見給え、源義経は成吉思汗となったのである。
|
76
|
+
成吉思汗は欧州を侵略し、西班牙に至ってその消息を失うたのである。
|
77
|
+
然り、義経及びその一党はピレネエ山中最も気候の温順なる所に老後の隠栖を卜したのである。
|
78
|
+
之即ちバスク開闢の歴史である。
|
79
|
+
しかるに嗚乎、かの無礼なる蛸博士は不遜千万にも余の偉大なる業績に異論を説えたのである。
|
80
|
+
彼は曰く、蒙古の欧州侵略は成吉思汗の後継者太宗の事蹟にかかり、成吉思汗の死後十年の後に当る、と。
|
81
|
+
実に何たる愚論浅識であろうか。
|
82
|
+
失われたる歴史に於て、単なる十年が何である乎!
|
83
|
+
実にこれ歴史の幽玄を冒涜するも甚だしいではないか。
|
84
|
+
さて諸君、彼の悪徳を列挙するは余の甚だ不本意とするところである。
|
85
|
+
なんとなれば、その犯行は奇想天外にして識者の常識を肯んぜしめず、むしろ余に対して誣告の誹を発せしむる憾みあるからである。
|
86
|
+
たとえば諸君、頃日余の戸口に Banana の皮を撒布し余の殺害を企てたのも彼の方寸に相違ない。
|
87
|
+
愉快にも余は臀部及び肩胛骨に軽微なる打撲傷を受けしのみにて脳震盪の被害を蒙るにはいたらなかったのであるが、余の告訴に対し世人は挙げて余を罵倒したのである。
|
88
|
+
諸君はよく余の悲しみを計りうるであろう乎。
|
89
|
+
賢明にして正大なること太平洋の如き諸君よ。
|
90
|
+
諸君はこの悲痛なる椿事をも黙殺するであろう乎。
|
91
|
+
即ち彼は余の妻を寝取ったのである!
|
92
|
+
而して諸君、再び明敏なること触鬚の如き諸君よ。
|
93
|
+
余の妻は麗わしきこと高山植物の如く、実に単なる植物ではなかったのである!
|
94
|
+
ああ三度冷静なること扇風機の如き諸君よ、かの憎むべき蛸博士は何等の愛なくして余の妻を奪ったのである。
|
95
|
+
何となれば諸君、ああ諸君永遠に蛸なる動物に戦慄せよ、即ち余の妻はバスク生れの女性であった。
|
96
|
+
彼の女は余の研究を助くること、疑いもなく地の塩であったのである。
|
97
|
+
蛸博士はこの点に深く目をつけたのである。
|
98
|
+
ああ、千慮の一失である。
|
99
|
+
然り、千慮の一失である。
|
100
|
+
余は不覚にも、蛸博士の禿頭なる事実を余の妻に教えておかなかったのである。
|
101
|
+
そしてそのために不幸なる彼の女はついに蛸博士に籠絡せられたのである。
|
102
|
+
ここに於てか諸君、余は奮然|蹴起したのである。
|
103
|
+
打倒蛸!
|
104
|
+
蛸博士を葬れ、然り、膺懲せよ、憎むべき悪徳漢!
|
105
|
+
然り然り。
|
106
|
+
故に余は日夜その方策を練ったのである。
|
107
|
+
諸君はすでに、正当なる攻撃は一つとして彼の詭計に敵し難い所以を了解せられたに違いない。
|
108
|
+
而して今や、唯一策を地上に見出すのみである。
|
109
|
+
然り、ただ一策である。
|
110
|
+
故に余は深く決意をかため、鳥打帽に面体を隠してのち夜陰に乗じて彼の邸宅に忍び入ったのである。
|
111
|
+
長夜にわたって余は、錠前に関する凡そあらゆる研究書を読破しておいたのである。
|
112
|
+
そのために、余は空気の如く彼の寝室に侵入することが出来たのである。
|
113
|
+
そして諸君、余は何のたわいもなくかの憎むべき鬘を余の掌中に収めたのである。
|
114
|
+
諸君、目前に露出する無毛赤色の怪物を認めた時に、余は実に万感胸にせまり、溢れ出る涙を禁じ難かったのである。
|
115
|
+
諸君よ、翌日の夜明けを期して、かの憎むべき蛸はついに蛸自体の正体を遺憾なく暴露するに至るであろう!
|
116
|
+
余は躍る胸に鬘をひそめて、再び影の如く忍び出たのである。
|
117
|
+
しかるに諸君、ああ諸君、おお諸君、余は敗北したのである。
|
118
|
+
悪略神の如しとは之か。
|
119
|
+
ああ蛸は曲者の中の曲者である。
|
120
|
+
誰かよく彼の深謀遠慮を予測しうるであろう乎。
|
121
|
+
翌日彼の禿頭は再び鬘に隠されていたのである。
|
122
|
+
実に諸君、彼は秘かに別の鬘を貯蔵していたのである。
|
123
|
+
余は負けたり矣。
|
124
|
+
刀折れ矢尽きたり矣。
|
125
|
+
余の力を以てして、彼の悪略に及ばざることすでに明白なり矣。
|
126
|
+
諸氏よ、誰人かよく蛸を懲す勇士なきや。
|
127
|
+
蛸博士を葬れ!
|
128
|
+
彼を平なる地上より抹殺せよ!
|
129
|
+
諸君は正義を愛さざる乎!
|
130
|
+
ああ止むを得ん次第である。
|
131
|
+
しからば余の方より消え去ることにきめた。
|
132
|
+
ああ悲しいかな。
|
133
|
+
諸君は偉大なる同博士の遺書を読んで、どんなに深い感動を催されたであろうか?
|
134
|
+
そしてどんなに劇しい怒りを覚えられたであろうか?
|
135
|
+
僕にはよくお察しすることが出来るのである。
|
136
|
+
偉大なる風博士はかくて自殺したのである。
|
137
|
+
然り、偉大なる風博士は果して死んだのである。
|
138
|
+
極めて不可解な方法によって、そして屍体を残さない方法によって、それが行われたために、一部の人々はこれを怪しいと睨んだのである。
|
139
|
+
ああ僕は大変残念である。
|
140
|
+
それ故僕は唯一の目撃者として、偉大なる風博士の臨終をつぶさに述べたいと思うのである。
|
141
|
+
偉大なる博士は甚だ周章て者であったのである。
|
142
|
+
たとえば今、部屋の西南端に当る長椅子に腰懸けて一冊の書に読み耽っていると仮定するのである。
|
143
|
+
次の瞬間に、偉大なる博士は東北端の肱掛椅子に埋もれて、実にあわただしく頁をくっているのである。
|
144
|
+
又偉大なる博士は水を呑む場合に、突如コップを呑み込んでいるのである。
|
145
|
+
諸君はその時、実にあわただしい後悔と一緒に黄昏に似た沈黙がこの書斎に閉じ籠もるのを認められるに相違ない。
|
146
|
+
順って、このあわただしい風潮は、この部屋にある全ての物質を感化せしめずにおかなかったのである。
|
147
|
+
たとえば、時計はいそがしく十三時を打ち、礼節正しい来客がもじもじして腰を下そうとしない時に椅子は劇しい癇癪を鳴らし、物体の描く陰影は突如太陽に向って走り出すのである。
|
148
|
+
全てこれらの狼狽は極めて直線的な突風を描いて交錯する為に、部屋の中には何本もの飛ぶ矢に似た真空が閃光を散らして騒いでいる習慣であった。
|
149
|
+
時には部屋の中央に一陣の竜巻が彼自身も亦周章てふためいて湧き起ることもあったのである。
|
150
|
+
その刹那偉大なる博士は屡々この竜巻に巻きこまれて、拳を振りながら忙しく宙返りを打つのであった。
|
151
|
+
さて、事件の起った日は、丁度偉大なる博士の結婚式に相当していた。
|
152
|
+
花嫁は当年十七歳の大変美しい少女であった。
|
153
|
+
偉大なる博士が彼の女に目をつけたのは流石に偉大なる見識といわねばならない。
|
154
|
+
何となればこの少女は、街頭に立って花を売りながら、三日というもの一本の花も売れなかったにかかわらず、主として雲を眺め、時たまネオンサインを眺めたにすぎぬほど悲劇に対して無邪気であった。
|
155
|
+
偉大なる博士ならびに偉大なる博士等の描く旋風に対照して、これ程ふさわしい少女は稀にしか見当らないのである。
|
156
|
+
僕はこの幸福な結婚式を祝福して牧師の役をつとめ、同時に食卓給仕人となる約束であった。
|
157
|
+
僕は僕の書斎に祭壇をつくり花嫁と向き合せに端坐して偉大なる博士の来場を待ち構えていたのである。
|
158
|
+
そのうちに夜が明け放れたのである。
|
159
|
+
流石に花嫁は驚くような軽率はしなかったけれど、僕は内心穏かではなかったのである。
|
160
|
+
もしも偉大なる博士は間違えて外の人に結婚を申し込んでいるのかも知れない。
|
161
|
+
そしてその時どんな恥をかいて、地球一面にあわただしい旋風を巻き起すかも知れないのである。
|
162
|
+
僕は花嫁に理由を述べ、自動車をいそがせて恩師の書斎へ駆けつけた。
|
163
|
+
そして僕は深く安心したのである。
|
164
|
+
その時偉大なる博士は西南端の長椅子に埋もれて飽くことなく一書を貪り読んでいた。
|
165
|
+
そして、今、東北端の肱掛椅子から移転したばかりに相違ない証拠には、一陣の突風が東北から西南にかけて目に沁み渡る多くの矢を描きながら走っていたのである。
|
166
|
+
「先生約束の時間がすぎました」
|
167
|
+
僕はなるべく偉大なる博士を脅かさないように、特に静粛なポオズをとって口上を述べたのであるが、結果に於てそれは偉大なる博士を脅かすに充分であった。
|
168
|
+
なぜなら偉大なる博士は色は褪せていたけれど燕尾服を身にまとい、そのうえ膝頭にはシルクハットを載せて、大変立派なチューリップを胸のボタンにはさんでいたからである。
|
169
|
+
つまり偉大なる博士は深く結婚式を期待し、同時に深く結婚式を失念したに相違ない色々の条件を明示していた。
|
170
|
+
「POPOPO!」
|
171
|
+
偉大なる博士はシルクハットを被り直したのである。
|
172
|
+
そして数秒の間疑わしげに僕の顔を凝視めていたが、やがて失念していたものをありありと思い出した深い感動が表れたのであった。
|
173
|
+
「TATATATATAH!」
|
174
|
+
已にその瞬間、僕は鋭い叫び声をきいたのみで、偉大なる博士の姿は蹴飛ばされた扉の向う側に見失っていた。
|
175
|
+
僕はびっくりして追跡したのである。
|
176
|
+
そして奇蹟の起ったのは即ち丁度この瞬間であった。
|
177
|
+
偉大なる博士の姿は突然消え失せたのである。
|
178
|
+
諸君、開いた形跡のない戸口から、人間は絶対に出入しがたいものである。
|
179
|
+
順って偉大なる博士は外へ出なかったに相違ないのである。
|
180
|
+
そして偉大なる博士は邸宅の内部にも居なかったのである。
|
181
|
+
僕は階段の途中に凝縮して、まだ響き残っているその慌しい跫音を耳にしながら、ただ一陣の突風が階段の下に舞い狂うのを見たのみであった。
|
182
|
+
諸君、偉大なる博士は風となったのである。
|
183
|
+
果して風となったか?
|
184
|
+
然り、風となったのである。
|
185
|
+
何となればその姿が消え失せたではないか。
|
186
|
+
姿見えざるは之即ち風である乎?
|
187
|
+
然り、之即ち風である。
|
188
|
+
何となれば姿が見えないではない乎。
|
189
|
+
これ風以外の何物でもあり得ない。
|
190
|
+
風である。
|
191
|
+
然り風である風である風である。
|
192
|
+
諸氏は尚、この明白なる事実を疑るのであろうか。
|
193
|
+
それは大変残念である。
|
194
|
+
それでは僕は、さらに動かすべからざる科学的根拠を附け加えよう。
|
195
|
+
この日、かの憎むべき蛸博士は、恰もこの同じ瞬間に於て、インフルエンザに犯されたのである。
|
196
|
+
CONTENTS
|
197
|
+
|
198
|
+
SENTENCES = Hash.new{ |h,k| h[k] = [] }
|
199
|
+
LINES.each do |line|
|
200
|
+
SENTENCES[line.size] << line
|
201
|
+
end
|
202
|
+
end
|
203
|
+
end
|
204
|
+
end
|
@@ -0,0 +1,55 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
require 'ya_lorem_ja'
|
3
|
+
require 'singleton'
|
4
|
+
|
5
|
+
# -*- coding: utf-8 -*-
|
6
|
+
# https://github.com/middleman/middleman/blob/v3-stable/middleman-core/lib/middleman-more/extensions/lorem.rb
|
7
|
+
# Extension namespace
|
8
|
+
module Middleman
|
9
|
+
module YaLoremJa
|
10
|
+
class Extension < ::Middleman::Extension
|
11
|
+
option :my_option, 'default', 'An example option'
|
12
|
+
|
13
|
+
def initialize(app, options_hash={}, &block)
|
14
|
+
# Call super to build options from the options_hash
|
15
|
+
super
|
16
|
+
|
17
|
+
# Require libraries only when activated
|
18
|
+
# require 'necessary/library'
|
19
|
+
|
20
|
+
# set up your extension
|
21
|
+
# puts options.my_option
|
22
|
+
end
|
23
|
+
|
24
|
+
def after_configuration
|
25
|
+
# Do something
|
26
|
+
end
|
27
|
+
|
28
|
+
# A Sitemap Manipulator
|
29
|
+
# def manipulate_resource_list(resources)
|
30
|
+
# end
|
31
|
+
|
32
|
+
# module do
|
33
|
+
# def a_helper
|
34
|
+
# end
|
35
|
+
# end
|
36
|
+
|
37
|
+
class YaLoremJaObj < ::YaLoremJa::Lorem
|
38
|
+
include Singleton
|
39
|
+
end
|
40
|
+
|
41
|
+
helpers do
|
42
|
+
def lorem_ja
|
43
|
+
return YaLoremJaObj.instance
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
# Register extensions which can be activated
|
50
|
+
# Make sure we have the version of Middleman we expect
|
51
|
+
# Name param may be omited, it will default to underscored
|
52
|
+
# version of class name
|
53
|
+
|
54
|
+
# MyExtension.register(:my_extension)
|
55
|
+
::Middleman::YaLoremJa::Extension.register(:ya_lorem_ja)
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require 'aruba/cucumber'
|
2
|
+
require 'aruba/jruby'
|
3
|
+
require 'middleman-core/step_definitions/middleman_steps'
|
4
|
+
require 'middleman-core/step_definitions/builder_steps'
|
5
|
+
require 'middleman-ya_lorem_ja/step_definitions/server_steps'
|
6
|
+
|
7
|
+
# Monkeypatch for windows support
|
8
|
+
module ArubaMonkeypatch
|
9
|
+
def detect_ruby(cmd)
|
10
|
+
if cmd.start_with?('middleman ') && Gem.win_platform?
|
11
|
+
"#{current_ruby} #{Dir.pwd}/bin/#{cmd}"
|
12
|
+
else
|
13
|
+
cmd.sub(/^ruby(?= )/, current_ruby)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
World(ArubaMonkeypatch)
|
18
|
+
|
19
|
+
Before do
|
20
|
+
@aruba_timeout_seconds = RUBY_PLATFORM == 'java' ? 120 : 60
|
21
|
+
end
|
@@ -0,0 +1,174 @@
|
|
1
|
+
require 'rspec/expectations'
|
2
|
+
require 'capybara/cucumber'
|
3
|
+
|
4
|
+
Given /^a clean server$/ do
|
5
|
+
@initialize_commands = []
|
6
|
+
end
|
7
|
+
|
8
|
+
Given /^"([^\"]*)" feature is "([^\"]*)"$/ do |feature, state|
|
9
|
+
@initialize_commands ||= []
|
10
|
+
|
11
|
+
if state == 'enabled'
|
12
|
+
@initialize_commands << lambda { activate(feature.to_sym) }
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
Given /^"([^\"]*)" feature is "enabled" with "([^\"]*)"$/ do |feature, options_str|
|
17
|
+
@initialize_commands ||= []
|
18
|
+
|
19
|
+
options = eval("{#{options_str}}")
|
20
|
+
|
21
|
+
@initialize_commands << lambda { activate(feature.to_sym, options) }
|
22
|
+
end
|
23
|
+
|
24
|
+
Given /^"([^\"]*)" is set to "([^\"]*)"$/ do |variable, value|
|
25
|
+
@initialize_commands ||= []
|
26
|
+
@initialize_commands << lambda { set(variable.to_sym, value) }
|
27
|
+
end
|
28
|
+
|
29
|
+
Given /^current environment is "([^\"]*)"$/ do |env|
|
30
|
+
@current_env = env.to_sym
|
31
|
+
end
|
32
|
+
|
33
|
+
Given /^the Server is running$/ do
|
34
|
+
root_dir = File.expand_path(current_dir)
|
35
|
+
|
36
|
+
|
37
|
+
if File.exists?(File.join(root_dir, 'source'))
|
38
|
+
ENV['MM_SOURCE'] = 'source'
|
39
|
+
else
|
40
|
+
ENV['MM_SOURCE'] = ''
|
41
|
+
end
|
42
|
+
|
43
|
+
ENV['MM_ROOT'] = root_dir
|
44
|
+
|
45
|
+
initialize_commands = @initialize_commands || []
|
46
|
+
initialize_commands.unshift lambda {
|
47
|
+
set :environment, @current_env || :development
|
48
|
+
set :show_exceptions, false
|
49
|
+
}
|
50
|
+
|
51
|
+
in_current_dir do
|
52
|
+
@server_inst = Middleman::Application.server.inst do
|
53
|
+
initialize_commands.each do |p|
|
54
|
+
instance_exec(&p)
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
Capybara.app = @server_inst.class.to_rack_app
|
60
|
+
end
|
61
|
+
|
62
|
+
Given /^the Server is running at "([^\"]*)"$/ do |app_path|
|
63
|
+
step %Q{a fixture app "#{app_path}"}
|
64
|
+
step %Q{the Server is running}
|
65
|
+
end
|
66
|
+
|
67
|
+
Given /^a template named "([^\"]*)" with:$/ do |name, string|
|
68
|
+
step %Q{a file named "source/#{name}" with:}, string
|
69
|
+
end
|
70
|
+
|
71
|
+
When /^I go to "([^\"]*)"$/ do |url|
|
72
|
+
in_current_dir do
|
73
|
+
visit(URI.encode(url).to_s)
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
Then /^going to "([^\"]*)" should not raise an exception$/ do |url|
|
78
|
+
in_current_dir do
|
79
|
+
|
80
|
+
expect{ visit(URI.encode(url).to_s) }.to_not raise_exception
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
Then /^the content type should be "([^\"]*)"$/ do |expected|
|
85
|
+
in_current_dir do
|
86
|
+
expect(page.response_headers['Content-Type']).to start_with expected
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
90
|
+
Then /^I should see "([^\"]*)"$/ do |expected|
|
91
|
+
in_current_dir do
|
92
|
+
expect(page.body).to include expected
|
93
|
+
end
|
94
|
+
end
|
95
|
+
|
96
|
+
Then /^I should see '([^\']*)'$/ do |expected|
|
97
|
+
in_current_dir do
|
98
|
+
expect(page.body).to include expected
|
99
|
+
end
|
100
|
+
end
|
101
|
+
|
102
|
+
Then /^I should see:$/ do |expected|
|
103
|
+
in_current_dir do
|
104
|
+
expect(page.body).to include expected
|
105
|
+
end
|
106
|
+
end
|
107
|
+
|
108
|
+
Then /^I should not see "([^\"]*)"$/ do |expected|
|
109
|
+
in_current_dir do
|
110
|
+
expect(page.body).not_to include expected
|
111
|
+
end
|
112
|
+
end
|
113
|
+
|
114
|
+
Then /^I should not see:$/ do |expected|
|
115
|
+
in_current_dir do
|
116
|
+
expect(page.body).not_to include expected
|
117
|
+
end
|
118
|
+
end
|
119
|
+
|
120
|
+
Then /^the status code should be "([^\"]*)"$/ do |expected|
|
121
|
+
in_current_dir do
|
122
|
+
expect(page.status_code).to eq expected.to_i
|
123
|
+
end
|
124
|
+
end
|
125
|
+
|
126
|
+
Then /^I should see "([^\"]*)" lines$/ do |lines|
|
127
|
+
in_current_dir do
|
128
|
+
expect(page.body.chomp.split($/).length).to eq lines.to_i
|
129
|
+
end
|
130
|
+
end
|
131
|
+
|
132
|
+
Then /^I should see over "([^\"]*)" chars$/ do |lines|
|
133
|
+
in_current_dir do
|
134
|
+
expect(page.body.chomp.length).to be >= lines.to_i
|
135
|
+
end
|
136
|
+
end
|
137
|
+
|
138
|
+
Then /^I should see "([^\"]*)" contents have over "([^\"]*)" chars$/ do |id, chars|
|
139
|
+
in_current_dir do
|
140
|
+
elm = page.find_by_id(id)
|
141
|
+
content = elm.text
|
142
|
+
puts "content: #{content} expect length: #{chars} exact length: #{content.length}"
|
143
|
+
expect(content.length).to be >= chars.to_i
|
144
|
+
end
|
145
|
+
end
|
146
|
+
|
147
|
+
Then /^I should see "([^\"]*)" contents have "([^\"]*)" sentences$/ do |id, lines|
|
148
|
+
in_current_dir do
|
149
|
+
elm = page.find_by_id(id)
|
150
|
+
content = elm.native.text
|
151
|
+
line_ary = content.chomp.split("\n")
|
152
|
+
puts "content: #{content} expect lines: #{lines} exact sentences: #{line_ary.length}"
|
153
|
+
expect(line_ary.size).to be >= lines.to_i
|
154
|
+
end
|
155
|
+
end
|
156
|
+
|
157
|
+
Then /^I should see "([^\"]*)" contents have "([^\"]*)" paragraphs$/ do |id, lines|
|
158
|
+
in_current_dir do
|
159
|
+
elm = page.find_by_id(id)
|
160
|
+
content = elm.native.text
|
161
|
+
line_ary = content.chomp.split("\n\n")
|
162
|
+
puts "content: #{content} expect lines: #{lines} exact paragraphs: #{line_ary.length}"
|
163
|
+
expect(line_ary.size).to be >= lines.to_i
|
164
|
+
end
|
165
|
+
end
|
166
|
+
|
167
|
+
Then /^I should see "([^\"]*)" contents match "(.*)"$/ do |id, regex|
|
168
|
+
in_current_dir do
|
169
|
+
elm = page.find_by_id(id)
|
170
|
+
content = elm.native.text
|
171
|
+
expect(content).to match(/#{ regex }/)
|
172
|
+
end
|
173
|
+
end
|
174
|
+
|
@@ -0,0 +1 @@
|
|
1
|
+
require 'middleman-ya_lorem_ja'
|
@@ -0,0 +1,24 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
3
|
+
require "middleman-ya_lorem_ja/version"
|
4
|
+
|
5
|
+
Gem::Specification.new do |s|
|
6
|
+
s.name = "middleman-ya_lorem_ja"
|
7
|
+
s.version = Middleman::YaLoremJa::VERSION
|
8
|
+
s.platform = Gem::Platform::RUBY
|
9
|
+
s.authors = ["kenji tanaka"]
|
10
|
+
s.homepage = "https://github.com/tanalab2/middleman-ya_lorem_ja"
|
11
|
+
s.summary = %q{Yet Another Japanese Lorem Ipsum generator For Middleman}
|
12
|
+
s.description = %q{Yet Another Japanese Lorem Ipsum generator For Middleman}
|
13
|
+
|
14
|
+
s.files = `git ls-files`.split("\n")
|
15
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
16
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
17
|
+
s.require_paths = ["lib"]
|
18
|
+
|
19
|
+
# The version of middleman-core your extension depends on
|
20
|
+
s.add_runtime_dependency("middleman-core", [">= 3.3.12"])
|
21
|
+
|
22
|
+
# Additional dependencies
|
23
|
+
s.add_runtime_dependency("ya_lorem_ja", ">= 0.0.2")
|
24
|
+
end
|
metadata
ADDED
@@ -0,0 +1,89 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: middleman-ya_lorem_ja
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.2
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- kenji tanaka
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2015-08-06 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: middleman-core
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 3.3.12
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 3.3.12
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: ya_lorem_ja
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 0.0.2
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 0.0.2
|
41
|
+
description: Yet Another Japanese Lorem Ipsum generator For Middleman
|
42
|
+
email:
|
43
|
+
executables: []
|
44
|
+
extensions: []
|
45
|
+
extra_rdoc_files: []
|
46
|
+
files:
|
47
|
+
- ".gitignore"
|
48
|
+
- Gemfile
|
49
|
+
- README.md
|
50
|
+
- Rakefile
|
51
|
+
- features/helpers_ya_lorem_ja.feature
|
52
|
+
- features/support/env.rb
|
53
|
+
- fixtures/test-app/config.rb
|
54
|
+
- fixtures/test-app/source/word.html.erb
|
55
|
+
- lib/middleman-ya_lorem_ja.rb
|
56
|
+
- lib/middleman-ya_lorem_ja/dictionary.rb
|
57
|
+
- lib/middleman-ya_lorem_ja/extension.rb
|
58
|
+
- lib/middleman-ya_lorem_ja/step_definitions.rb
|
59
|
+
- lib/middleman-ya_lorem_ja/step_definitions/server_steps.rb
|
60
|
+
- lib/middleman-ya_lorem_ja/version.rb
|
61
|
+
- lib/middleman_extension.rb
|
62
|
+
- middleman-ya_lorem_ja.gemspec
|
63
|
+
homepage: https://github.com/tanalab2/middleman-ya_lorem_ja
|
64
|
+
licenses: []
|
65
|
+
metadata: {}
|
66
|
+
post_install_message:
|
67
|
+
rdoc_options: []
|
68
|
+
require_paths:
|
69
|
+
- lib
|
70
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
71
|
+
requirements:
|
72
|
+
- - ">="
|
73
|
+
- !ruby/object:Gem::Version
|
74
|
+
version: '0'
|
75
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
76
|
+
requirements:
|
77
|
+
- - ">="
|
78
|
+
- !ruby/object:Gem::Version
|
79
|
+
version: '0'
|
80
|
+
requirements: []
|
81
|
+
rubyforge_project:
|
82
|
+
rubygems_version: 2.2.2
|
83
|
+
signing_key:
|
84
|
+
specification_version: 4
|
85
|
+
summary: Yet Another Japanese Lorem Ipsum generator For Middleman
|
86
|
+
test_files:
|
87
|
+
- features/helpers_ya_lorem_ja.feature
|
88
|
+
- features/support/env.rb
|
89
|
+
has_rdoc:
|