gast 0.0.2 → 0.0.3
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.
- checksums.yaml +4 -4
- data/Guardfile +1 -3
- data/lib/gast/app.rb +7 -3
- data/lib/gast/memo.rb +18 -4
- data/lib/gast/repository.rb +16 -2
- data/lib/gast/templates/form_area.haml +7 -4
- data/lib/gast/templates/header.haml +4 -2
- data/lib/gast/templates/layout.haml +1 -0
- data/lib/gast/templates/view.haml +6 -2
- data/lib/gast/version.rb +1 -1
- data/spec/controller_spec.rb +27 -0
- data/spec/fixtures/sample_of_code.rb +13 -0
- data/spec/repository_spec.rb +6 -0
- data/spec/spec_helper.rb +4 -0
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ff0f8ec7fce32cf0d453a25839940dc20580b28e
|
4
|
+
data.tar.gz: 5444c833df7d594157daffaf413d6139a047975a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7e6464539b961580930079e0a4e9c11be05cbfb8e6256d995915b5f15f58a178ceed9ab96e567a00caea90d355c8d96f356993db13b69515cf0b712a132c1d20
|
7
|
+
data.tar.gz: b2479da1e1f4393620114c180534b24a3c684c76e65dc8d8186de4521dd571384f5e37e1983ecb50e931eda2764bb3330d2ddf1ad2fe953423aeea6f22cf99dd
|
data/Guardfile
CHANGED
@@ -3,9 +3,7 @@
|
|
3
3
|
|
4
4
|
guard :spork, :cucumber_env => { 'RAILS_ENV' => 'test' }, :rspec_env => { 'RAILS_ENV' => 'test' } do
|
5
5
|
watch('lib/gast.rb')
|
6
|
-
watch(
|
7
|
-
watch('lib/gast/memo.rb.rb')
|
8
|
-
watch('lib/gast/version.rb')
|
6
|
+
watch(%r{^lib/gast/(.+)\.rb$})
|
9
7
|
watch('Gemfile.lock')
|
10
8
|
watch('spec/spec_helper.rb') { :rspec }
|
11
9
|
watch('test/test_helper.rb') { :test_unit }
|
data/lib/gast/app.rb
CHANGED
@@ -55,6 +55,7 @@ module Gast
|
|
55
55
|
|
56
56
|
get '/posts/view/:id' do
|
57
57
|
@item = Gast::Memo.item(params[:id].to_s)
|
58
|
+
@language = Gast::Memo.language(params[:id].to_s)
|
58
59
|
@content_hash = params[:id].to_s
|
59
60
|
haml :view
|
60
61
|
end
|
@@ -68,14 +69,17 @@ module Gast
|
|
68
69
|
put '/posts/update/:id' do
|
69
70
|
@result = Gast::Memo.update(
|
70
71
|
id=params[:id].to_s,
|
71
|
-
content=params[:content].to_s
|
72
|
+
content=params[:content].to_s,
|
73
|
+
language=params[:language].to_s
|
72
74
|
)
|
73
75
|
redirect to("/posts/view/#{params[:id]}")
|
74
76
|
end
|
75
77
|
|
76
78
|
post '/posts/new' do
|
77
|
-
|
78
|
-
|
79
|
+
results = Gast::Memo.save(
|
80
|
+
params[:content].to_s, params[:language].to_s
|
81
|
+
)
|
82
|
+
redirect to("/posts/view/#{results[:id]}")
|
79
83
|
end
|
80
84
|
|
81
85
|
end
|
data/lib/gast/memo.rb
CHANGED
@@ -4,21 +4,29 @@ module Gast
|
|
4
4
|
|
5
5
|
class Memo
|
6
6
|
|
7
|
-
def self.save(content)
|
7
|
+
def self.save(content, language="no-highlight")
|
8
8
|
@repo = Gast::Repository.new
|
9
9
|
@repo.content = CGI.unescapeHTML(content.to_s)
|
10
|
+
@repo.language = CGI.unescapeHTML(language.to_s)
|
10
11
|
@repo.publish
|
11
12
|
@repo.commit!
|
12
|
-
|
13
|
+
{
|
14
|
+
id: @repo.dir_name,
|
15
|
+
language: language
|
16
|
+
}
|
13
17
|
end
|
14
18
|
|
15
|
-
def self.update(id, content)
|
19
|
+
def self.update(id, content, language="no-highlight")
|
16
20
|
return id if content.to_s.chomp == item(id).chomp
|
17
21
|
@repo = Gast::Repository.new(id)
|
18
22
|
@repo.content = CGI.unescapeHTML(content.to_s)
|
23
|
+
@repo.language = CGI.unescapeHTML(language.to_s)
|
19
24
|
@repo.publish
|
20
25
|
@repo.commit!
|
21
|
-
|
26
|
+
{
|
27
|
+
id: @repo.dir_name,
|
28
|
+
language: language
|
29
|
+
}
|
22
30
|
end
|
23
31
|
|
24
32
|
def self.number
|
@@ -37,6 +45,12 @@ module Gast
|
|
37
45
|
)
|
38
46
|
end
|
39
47
|
|
48
|
+
def self.language(id)
|
49
|
+
CGI.escapeHTML(
|
50
|
+
File.read(File.expand_path(Gast::PATH + "/#{id}/language"))
|
51
|
+
)
|
52
|
+
end
|
53
|
+
|
40
54
|
def initialize; end
|
41
55
|
|
42
56
|
end
|
data/lib/gast/repository.rb
CHANGED
@@ -23,9 +23,13 @@ module Gast
|
|
23
23
|
@content = content
|
24
24
|
end
|
25
25
|
|
26
|
+
def language=(language)
|
27
|
+
@language = language.to_s
|
28
|
+
end
|
29
|
+
|
26
30
|
def publish
|
27
|
-
|
28
|
-
|
31
|
+
save_content
|
32
|
+
save_language
|
29
33
|
end
|
30
34
|
|
31
35
|
def remove!
|
@@ -51,6 +55,16 @@ module Gast
|
|
51
55
|
end
|
52
56
|
end
|
53
57
|
|
58
|
+
def save_content
|
59
|
+
path = File.expand_path(@path + "/content")
|
60
|
+
open(path, 'w', 0644) { |io| io.write(@content) }
|
61
|
+
end
|
62
|
+
|
63
|
+
def save_language
|
64
|
+
path = File.expand_path(@path + '/language')
|
65
|
+
open(path, 'w', 0644) { |io| io.write(@language) }
|
66
|
+
end
|
67
|
+
|
54
68
|
end
|
55
69
|
|
56
70
|
end
|
@@ -1,8 +1,11 @@
|
|
1
1
|
.form-group
|
2
|
-
%select
|
3
|
-
%option
|
2
|
+
%select{ name: "language" }
|
3
|
+
%option{ value: "python" }
|
4
4
|
python
|
5
|
-
|
6
|
-
|
5
|
+
%option{ value: "ruby"}
|
6
|
+
ruby
|
7
|
+
= preserve do
|
8
|
+
%textarea{ class: "form-control", style: "margin-top: 10px; height: 30em;", name: "content", wrap: "hard" }
|
9
|
+
= @item
|
7
10
|
%button{ type: "submit", class: "btn btn-primary" }
|
8
11
|
Submit
|
@@ -4,5 +4,7 @@
|
|
4
4
|
%link{:href=>"//netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css", :rel=>"stylesheet"}
|
5
5
|
%script{:src=>"//code.jquery.com/jquery-2.1.0.min.js"}
|
6
6
|
%script{:src=>"//netdna.bootstrapcdn.com/bootstrap/3.1.1/js/bootstrap.min.js"}
|
7
|
-
%
|
8
|
-
|
7
|
+
%script{ src: 'http://yandex.st/highlightjs/8.0/highlight.min.js' }
|
8
|
+
%link{ rel: 'stylesheet', href: '//yandex.st/highlightjs/8.0/styles/default.min.css' }
|
9
|
+
:javascript
|
10
|
+
hljs.initHighlightingOnLoad();
|
@@ -3,5 +3,9 @@
|
|
3
3
|
%form{ role: "form", action: "/posts/edit/#{params[:id].to_s}", method: "GET" }
|
4
4
|
%button{ type: "submit", class: "btn btn-primary" }
|
5
5
|
Update
|
6
|
-
|
7
|
-
|
6
|
+
|
7
|
+
%div{ style: "margin-top: 20px;" }
|
8
|
+
= preserve do
|
9
|
+
%pre{ style: "white-space: pre-wrap;" }
|
10
|
+
%code{ class: "#{@language}" }
|
11
|
+
= @item
|
data/lib/gast/version.rb
CHANGED
data/spec/controller_spec.rb
CHANGED
@@ -15,6 +15,8 @@ describe Gast::App do
|
|
15
15
|
let(:hello_world) { "Hello World" }
|
16
16
|
let(:welcome_to_underground) { "Welcome to underground" }
|
17
17
|
let(:inline_html) { "<script>alert('Hello world!');</script>" }
|
18
|
+
let(:sample_of_code_ruby) { get_fixture('sample_of_code.rb') }
|
19
|
+
|
18
20
|
let(:view_path) { /.+\/posts\/view\/[a-z0-9]+/ }
|
19
21
|
|
20
22
|
it "should be get index" do
|
@@ -105,4 +107,29 @@ describe Gast::App do
|
|
105
107
|
|
106
108
|
end
|
107
109
|
|
110
|
+
it "should be post language type the code highlight" do
|
111
|
+
post '/posts/new', { content: sample_of_code_ruby, language: "ruby" }
|
112
|
+
repository = File.expand_path(Dir.glob(repo_dir + '/**').first)
|
113
|
+
|
114
|
+
expect(File.read(repository + '/content')).to eq sample_of_code_ruby
|
115
|
+
expect(File.read(repository + '/language')).to eq "ruby"
|
116
|
+
|
117
|
+
get "/posts/view/#{repository.split('/').last}"
|
118
|
+
|
119
|
+
expect(last_response).to be_ok
|
120
|
+
end
|
121
|
+
|
122
|
+
it "should be succeeded change of language type" do
|
123
|
+
post '/posts/new', { content: sample_of_code_ruby, language: "ruby" }
|
124
|
+
repository = File.expand_path(Dir.glob(repo_dir + '/**').first)
|
125
|
+
|
126
|
+
expect(File.read(repository + '/content')).to eq sample_of_code_ruby
|
127
|
+
expect(File.read(repository + '/language')).to eq "ruby"
|
128
|
+
|
129
|
+
put "/posts/update/#{repository.split('/').last}", { content: sample_of_code_ruby, language: "python" }
|
130
|
+
|
131
|
+
expect(File.read(repository + '/content')).to eq sample_of_code_ruby
|
132
|
+
expect(File.read(repository + '/language')).to eq "python"
|
133
|
+
end
|
134
|
+
|
108
135
|
end
|
data/spec/repository_spec.rb
CHANGED
@@ -11,9 +11,11 @@ describe Gast::Repository do
|
|
11
11
|
let(:repo_dir) { "/tmp/gast" }
|
12
12
|
|
13
13
|
let(:user_content) { "Hello World" }
|
14
|
+
let(:selected_language) { "ruby" }
|
14
15
|
|
15
16
|
before(:each) {
|
16
17
|
repo.content = user_content
|
18
|
+
repo.language = selected_language
|
17
19
|
repo.publish
|
18
20
|
repo.commit!
|
19
21
|
}
|
@@ -30,6 +32,10 @@ describe Gast::Repository do
|
|
30
32
|
expect(File.read(repo.path + '/content')).to eq user_content
|
31
33
|
end
|
32
34
|
|
35
|
+
it "should be language is a ruby" do
|
36
|
+
expect(File.read(repo.path + '/language')).to eq selected_language
|
37
|
+
end
|
38
|
+
|
33
39
|
it "should be save of commit message is correct" do
|
34
40
|
Timecop.freeze
|
35
41
|
expect(git.log.first.message).to eq "commit: #{DateTime.now.to_s}"
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gast
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- futoase
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-05-
|
11
|
+
date: 2014-05-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -271,6 +271,7 @@ files:
|
|
271
271
|
- lib/gast/templates/view.haml
|
272
272
|
- lib/gast/version.rb
|
273
273
|
- spec/controller_spec.rb
|
274
|
+
- spec/fixtures/sample_of_code.rb
|
274
275
|
- spec/memo_spec.rb
|
275
276
|
- spec/repository_spec.rb
|
276
277
|
- spec/spec_helper.rb
|
@@ -300,6 +301,7 @@ specification_version: 4
|
|
300
301
|
summary: memo application of using git
|
301
302
|
test_files:
|
302
303
|
- spec/controller_spec.rb
|
304
|
+
- spec/fixtures/sample_of_code.rb
|
303
305
|
- spec/memo_spec.rb
|
304
306
|
- spec/repository_spec.rb
|
305
307
|
- spec/spec_helper.rb
|