gast 0.0.5 → 0.0.7

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 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