gast 0.0.5 → 0.0.7

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 91f1374024d46848fe452f840328d6e33b55baf6
4
- data.tar.gz: ecbb056ed54a9a71f9d70b1c58ce4f523f8d917f
3
+ metadata.gz: ec83adad16b7da1940d4ad7dcb4de850b804b7b1
4
+ data.tar.gz: 854a253b2bdc656cb92d63e8256cdee8246f09fd
5
5
  SHA512:
6
- metadata.gz: c1874b5081fafd14d9e82460b2defe9d4ab6558031fde3d21912c55da51bca072cc2e511b5665e8a6a10531a3a7b569c664eaeb023d7fa11ab4a07fa9b9f100c
7
- data.tar.gz: 4d79c0d38b33f15577a71d651feb45f41c93864ebe7ed65c72c13c8d1f7a96d642d5c14383d142001684f017cf041b4afcf2279097335aecde71c95351cf26ca
6
+ metadata.gz: 4443e060971ee973f8b4484fc55c91126e7914ee170b78a1aeddd027b91fa8a608bfb8ad8d9f3ad42a80b2927508edec82f1ee357c679cc8c14b3df520757826
7
+ data.tar.gz: 26f036921b25862629e282781319a34bf65420868ca66de0c0a30e4ae6cb0f64914a964ee372f4e5df9c0595631ee28a169c2f96bf89a7b403d0de8d5b1129fd
data/lib/gast/app.rb CHANGED
@@ -1,89 +1,31 @@
1
1
  require 'gast'
2
2
 
3
3
  module Gast
4
- class App < Sinatra::Base
5
- enable :method_override
6
- set :sprockets, Sprockets::Environment.new(root)
7
- set :assets_prefix, '/assets'
8
- set :digest_assets, false
9
- set :views, settings.root + '/templates'
10
-
11
- configure do
12
- sprockets.append_path File.join(root, 'assets', 'stylesheets')
13
- sprockets.append_path File.join(root, 'assets', 'javascripts')
14
- sprockets.append_path File.join(root, 'assets', 'images')
15
-
16
- Sprockets::Helpers.configure do |config|
17
- config.environment = sprockets
18
- config.prefix = assets_prefix
19
- config.digest = digest_assets
20
- config.public_path = '/public'
21
-
22
- config.debug = true
23
- end
24
-
25
- register Sinatra::Reloader
26
- end
27
-
28
- helpers do
29
- include Sprockets::Helpers
30
- end
31
-
32
- before do
33
- @languages = Gast::LANGUAGES
34
- end
35
-
36
- before %r{/posts/\w+/(\w+)} do |id|
37
- unless /[a-zA-Z0-9]{30}/ =~ id.to_s
38
- halt haml(:error, locals: { message: 'error is format of id' })
39
- end
40
- end
41
-
42
- not_found do
43
- haml :not_found
44
- end
45
-
46
- error do
47
- haml :error
48
- end
49
-
4
+ class App < Gast::Base
50
5
  get '/' do
51
6
  haml :index, locals: { new_post: true }
52
7
  end
53
8
 
54
- get '/posts/list' do
55
- @lists = Gast::Memo.lists
56
- haml :list
57
- end
9
+ namespace '/posts' do
10
+ get '/list' do
11
+ haml :list
12
+ end
58
13
 
59
- get '/posts/view/:content_id' do
60
- @item = Gast::Memo.item(params[:content_id].to_s)
61
- @language = Gast::Memo.language(params[:content_id].to_s)
62
- @content_hash = params[:content_id].to_s
63
- haml :view
64
- end
14
+ get '/view/:content_id' do
15
+ haml :view
16
+ end
65
17
 
66
- get '/posts/edit/:content_id' do
67
- @item = Gast::Memo.item(params[:content_id].to_s)
68
- @content_hash = params[:content_id].to_s
69
- haml :edit
70
- end
18
+ get '/edit/:content_id' do
19
+ haml :edit
20
+ end
71
21
 
72
- put '/posts/update/:content_id' do
73
- @result = Gast::Memo.update(
74
- params[:content_id].to_s,
75
- params[:content].to_s,
76
- params[:language].to_s
77
- )
78
- redirect to("/posts/view/#{params[:content_id]}")
79
- end
22
+ put '/update/:content_id' do
23
+ redirect to("/posts/view/#{@content_id}")
24
+ end
80
25
 
81
- post '/posts/new' do
82
- results = Gast::Memo.save(
83
- params[:content].to_s,
84
- params[:language].to_s
85
- )
86
- redirect to("/posts/view/#{results[:content_id]}")
26
+ post '/new' do
27
+ redirect to("/posts/view/#{@content_id}")
28
+ end
87
29
  end
88
30
  end
89
31
  end
data/lib/gast/base.rb ADDED
@@ -0,0 +1,95 @@
1
+ require 'gast'
2
+
3
+ module Gast
4
+ class Base < Sinatra::Base
5
+ register Sinatra::Namespace
6
+ enable :method_override
7
+ set :sprockets, Sprockets::Environment.new(root)
8
+ set :assets_prefix, '/assets'
9
+ set :digest_assets, false
10
+ set :views, settings.root + '/templates'
11
+
12
+ configure do
13
+ sprockets.append_path File.join(root, 'assets', 'stylesheets')
14
+ sprockets.append_path File.join(root, 'assets', 'javascripts')
15
+ sprockets.append_path File.join(root, 'assets', 'images')
16
+
17
+ Sprockets::Helpers.configure do |config|
18
+ config.environment = sprockets
19
+ config.prefix = assets_prefix
20
+ config.digest = digest_assets
21
+ config.public_path = '/public'
22
+
23
+ config.debug = true
24
+ end
25
+
26
+ register Sinatra::Reloader
27
+ end
28
+
29
+ helpers do
30
+ include Sprockets::Helpers
31
+ end
32
+
33
+ before do
34
+ @languages = Gast::LANGUAGES
35
+ @content_id = params[:content_id].to_s
36
+ end
37
+
38
+ not_found do
39
+ haml :not_found
40
+ end
41
+
42
+ error do
43
+ haml :error
44
+ end
45
+
46
+ namespace '/posts' do
47
+ before %r{/\w+/(\w+)} do |id|
48
+ unless /[a-zA-Z0-9]{30}/ =~ id.to_s
49
+ halt haml(:error, locals: {
50
+ message: 'error is format of id'
51
+ })
52
+ end
53
+ end
54
+
55
+ before '/new' do
56
+ @content = params[:content].to_s
57
+ @language = params[:language].to_s
58
+
59
+ if @content.length == 0
60
+ halt haml(:error, locals: {
61
+ message: 'require of content!'
62
+ })
63
+ end
64
+
65
+ result = Gast::Memo.save(@content, @language)
66
+ @content_id = result[:content_id]
67
+ end
68
+
69
+ before '/list' do
70
+ @lists = Gast::Memo.lists
71
+ end
72
+
73
+ before '/*/:content_id' do
74
+ if %w[view edit update].include? request.path_info.split('/')[2]
75
+ @content_id = params[:content_id].to_s
76
+ @content = params[:content].to_s
77
+ @language = params[:language].to_s
78
+ end
79
+ end
80
+
81
+ before '/view/:content_id' do
82
+ @item = Gast::Memo.item(@content_id)
83
+ @language = Gast::Memo.language(@content_id)
84
+ end
85
+
86
+ before '/edit/:content_id' do
87
+ @item = Gast::Memo.item(@content_id)
88
+ end
89
+
90
+ before '/update/:content_id' do
91
+ Gast::Memo.update(@content_id, @content, @language)
92
+ end
93
+ end
94
+ end
95
+ end
data/lib/gast/memo.rb CHANGED
@@ -4,6 +4,7 @@ module Gast
4
4
  class Memo
5
5
  def self.save(content, language = 'no-highlight')
6
6
  @repo = Gast::Repository.new
7
+ @repo.create
7
8
  @repo.content = CGI.unescapeHTML(content.to_s)
8
9
  @repo.language = CGI.unescapeHTML(language.to_s)
9
10
  @repo.publish
@@ -16,7 +17,9 @@ module Gast
16
17
 
17
18
  def self.update(content_id, content, language = 'no-highlight')
18
19
  return content_id if content.to_s.chomp == item(content_id).chomp
19
- @repo = Gast::Repository.new(content_id)
20
+ @repo = Gast::Repository.new
21
+ @repo.dir_name = content_id
22
+ @repo.create
20
23
  @repo.content = CGI.unescapeHTML(content.to_s)
21
24
  @repo.language = CGI.unescapeHTML(language.to_s)
22
25
  @repo.publish
@@ -2,20 +2,16 @@ require 'gast'
2
2
 
3
3
  module Gast
4
4
  class Repository
5
- attr_reader :path, :dir_name
5
+ attr_reader :path
6
6
  attr_writer :content, :language
7
+ attr_accessor :dir_name
7
8
 
8
- def initialize(dir_name = nil)
9
- if dir_name.nil?
10
- @dir_name = Digest::SHA512.new.update(rand.to_s).to_s[0..30]
11
- else
12
- @dir_name = dir_name.to_s
13
- end
14
-
15
- @path = File.expand_path(File.join(Gast::PATH, @dir_name))
9
+ def initialize; end
16
10
 
11
+ def create
12
+ @dir_name = new_name_of_repository if @dir_name.nil?
13
+ @path = path_of_repository
17
14
  create_dir
18
-
19
15
  @git = Git.init(@path)
20
16
  end
21
17
 
@@ -63,5 +59,13 @@ module Gast
63
59
  io.flock(File::LOCK_UN)
64
60
  end
65
61
  end
62
+
63
+ def new_name_of_repository
64
+ Digest::SHA512.new.update(rand.to_s).to_s[0..30]
65
+ end
66
+
67
+ def path_of_repository
68
+ File.expand_path(File.join(Gast::PATH, @dir_name))
69
+ end
66
70
  end
67
71
  end
@@ -1,5 +1,5 @@
1
1
  %h1
2
- = @content_hash
2
+ = @content_id
3
3
  %form{ role: "form", action: "/posts/update/#{params[:id].to_s}", method: "POST" }
4
4
  %input{ type: "hidden", name: "_method", value: "put" }
5
5
  = haml :form_area
@@ -1,5 +1,5 @@
1
1
  %h1
2
- = @content_hash
2
+ = @content_id
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
data/lib/gast/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Gast
2
- VERSION = "0.0.5"
2
+ VERSION = "0.0.7"
3
3
  end
data/lib/gast.rb CHANGED
@@ -1,11 +1,14 @@
1
1
  require 'digest/sha2'
2
2
  require 'sinatra/base'
3
3
  require 'sinatra/reloader'
4
+ require 'sinatra/contrib'
5
+ require 'sinatra/namespace'
4
6
  require 'sprockets'
5
7
  require 'sprockets-helpers'
6
8
  require 'gast/memo'
7
9
  require 'gast/app'
8
10
  require 'gast/repository'
11
+ require 'gast/base'
9
12
  require 'haml'
10
13
  require 'sass'
11
14
  require 'git'
@@ -12,6 +12,7 @@ describe Gast::Repository do
12
12
  before(:each) do
13
13
  repo.content = user_content
14
14
  repo.language = selected_language
15
+ repo.create
15
16
  repo.publish
16
17
  repo.commit!
17
18
  end
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.5
4
+ version: 0.0.7
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-26 00:00:00.000000000 Z
11
+ date: 2014-05-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -243,6 +243,7 @@ files:
243
243
  - gast.gemspec
244
244
  - lib/gast.rb
245
245
  - lib/gast/app.rb
246
+ - lib/gast/base.rb
246
247
  - lib/gast/memo.rb
247
248
  - lib/gast/repository.rb
248
249
  - lib/gast/templates/edit.haml