soxer 0.9.0 → 0.9.4
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.
- data/bin/soxer +124 -0
- data/lib/soxer/main.rb +0 -6
- data/lib/soxer/skel/empty/app.rb +40 -0
- data/lib/soxer/skel/empty/config.ru +22 -0
- data/lib/soxer/skel/empty/config.yml +14 -0
- data/lib/soxer/skel/empty/content/index.yaml +6 -0
- data/lib/soxer/skel/empty/views/css.sass +7 -0
- data/lib/soxer/skel/empty/views/layout.haml +8 -0
- data/soxer.gemspec +8 -11
- metadata +17 -11
- data/lib/soxer/views/recaptcha.haml +0 -19
data/bin/soxer
ADDED
@@ -0,0 +1,124 @@
|
|
1
|
+
#!/usr/bin/ruby
|
2
|
+
require 'fileutils'
|
3
|
+
|
4
|
+
def colorize(text, color_code); "\033#{color_code}#{text}\033[0m"; end
|
5
|
+
def b(text); colorize(text, "[1m"); end
|
6
|
+
|
7
|
+
def h
|
8
|
+
'-'*79+"\n#{b 'Soxer'}, the web publishing tool. | Copyright 2010, Toni Anzlovar.\n"+'-'*79
|
9
|
+
end
|
10
|
+
|
11
|
+
def err message
|
12
|
+
<<END
|
13
|
+
#{h}
|
14
|
+
#{b message}
|
15
|
+
Type #{b 'soxer help'} to get help.
|
16
|
+
|
17
|
+
Soxer usage:
|
18
|
+
#{b "soxer [action] [parameters]"}
|
19
|
+
|
20
|
+
END
|
21
|
+
end
|
22
|
+
|
23
|
+
def notice message
|
24
|
+
<<END
|
25
|
+
#{h}
|
26
|
+
#{b message}
|
27
|
+
|
28
|
+
END
|
29
|
+
end
|
30
|
+
|
31
|
+
@help = <<END
|
32
|
+
#{h}
|
33
|
+
|
34
|
+
Soxer usage:
|
35
|
+
#{b "soxer [action] [parameters]"}
|
36
|
+
|
37
|
+
Actions:
|
38
|
+
|
39
|
+
#{b 'create'}
|
40
|
+
Creates a new soxer project directory with default sinatra/soxer layout.
|
41
|
+
All aspects can be later customized to suite project's needs.
|
42
|
+
|
43
|
+
First parameter:
|
44
|
+
#{b 'empty'} - Creates an empty project
|
45
|
+
More project templates are in the making
|
46
|
+
|
47
|
+
Other parameters:
|
48
|
+
#{b '[name]'} - The name of the project directory
|
49
|
+
|
50
|
+
#{b 'test'}
|
51
|
+
Runs the developement server (in the foreground) on your computer.
|
52
|
+
Point your browser to #{b 'http://localhost:9394'} to view the result.
|
53
|
+
You can exit with standard [ctrl]+c.
|
54
|
+
|
55
|
+
Parameters:
|
56
|
+
#{b '[int]'} - Port number you wish to run developement on
|
57
|
+
|
58
|
+
#{b 'help'}
|
59
|
+
Displays this help.
|
60
|
+
|
61
|
+
Examples:
|
62
|
+
|
63
|
+
#{b '$ soxer create blog myblog'}
|
64
|
+
This command would create a new project directory 'myblog' with a mockup blog
|
65
|
+
soxer/sinatra application in it. You can tweak the design and parameters to
|
66
|
+
acheve the desired experience.
|
67
|
+
|
68
|
+
#{b '$ soxer test 8907'}
|
69
|
+
This command (when executed within the soxer project directory root) will
|
70
|
+
run the developement server on local machine on port 8907.
|
71
|
+
|
72
|
+
END
|
73
|
+
|
74
|
+
def create
|
75
|
+
template = $*[1]
|
76
|
+
# Define skeleton parent directory
|
77
|
+
skel = File.dirname(__FILE__)+"/../lib/soxer/skel"
|
78
|
+
# Define destination or default
|
79
|
+
dir = $*[2] ? $*[2] : 'soxer-app'
|
80
|
+
# Copy skeleton to destination or fail if nonexistent
|
81
|
+
if template!=nil and File.exist?(skel+'/'+template) and !File.exist?(dir)
|
82
|
+
src = skel+'/'+template
|
83
|
+
# Check for destination existance
|
84
|
+
if !File.exist?(dir)
|
85
|
+
FileUtils.mkdir(dir)
|
86
|
+
FileUtils.cp_r(src+"/.", dir)
|
87
|
+
return notice "Successfuly created '"+dir+"' Directory."
|
88
|
+
#return Dir.glob(src+"/**/*").to_s
|
89
|
+
else
|
90
|
+
return err 'The destination directory exists.'
|
91
|
+
end
|
92
|
+
else
|
93
|
+
return err 'The project skeleton directory does not exist.'
|
94
|
+
end
|
95
|
+
end
|
96
|
+
|
97
|
+
def test
|
98
|
+
port = $*[1]!=nil ? $*[1] : '9394'
|
99
|
+
server = false
|
100
|
+
servers = %w[webrick mongrel thin]
|
101
|
+
servers.each do |s|
|
102
|
+
ENV['PATH'].split(':').each {|folder| server = s if File.exists?(folder+'/'+s)}
|
103
|
+
end
|
104
|
+
if server!=false
|
105
|
+
system("rackup -s #{server} -p #{port}")
|
106
|
+
return notice "End of developement mode."
|
107
|
+
else
|
108
|
+
return err "Please install a sinatra compatible web server (thin, mongrel or webrick.)"
|
109
|
+
end
|
110
|
+
end
|
111
|
+
|
112
|
+
case $*[0]
|
113
|
+
when 'create' then printf create
|
114
|
+
when 'test' then printf test
|
115
|
+
when 'help' then printf @help
|
116
|
+
else printf err 'You did not specify an action!'
|
117
|
+
end
|
118
|
+
|
119
|
+
|
120
|
+
x = <<END
|
121
|
+
#{b 'corporate'} - Creates a corporate web page mockup
|
122
|
+
#{b 'blog'} - Creates a blog mockup
|
123
|
+
#{b 'gallery'} - Creates an image gallery mockup
|
124
|
+
END
|
data/lib/soxer/main.rb
CHANGED
@@ -165,7 +165,6 @@ module Sinatra
|
|
165
165
|
out << haml( template, :layout => false, :locals => { :page=>get_page, :feed=>output, :author=>author } )
|
166
166
|
end
|
167
167
|
|
168
|
-
|
169
168
|
def google_ads options={}
|
170
169
|
template = File.read File.join( File.dirname(__FILE__), 'views', 'google_ads.haml' )
|
171
170
|
pattern = File.join( settings.root, settings.origin, "**", "*.yaml" )
|
@@ -182,11 +181,6 @@ module Sinatra
|
|
182
181
|
haml( template, options.merge!( :layout => false ) )
|
183
182
|
end
|
184
183
|
|
185
|
-
def recaptcha options={}
|
186
|
-
template = File.read File.join( File.dirname(__FILE__), 'views', 'recaptcha.haml' )
|
187
|
-
haml( template, options.merge!( :layout => false ) )
|
188
|
-
end
|
189
|
-
|
190
184
|
#=== "partial" rails like partial generator
|
191
185
|
#
|
192
186
|
# This funnction accepts a string and matches it to a haml layout (with a
|
@@ -0,0 +1,40 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require "rubygems"
|
3
|
+
require "sinatra"
|
4
|
+
require "soxer"
|
5
|
+
|
6
|
+
not_found { 'The document does not exist' }
|
7
|
+
|
8
|
+
get("/sitemap.xml") { sitemap }
|
9
|
+
|
10
|
+
get "/css/:sheet.css" do
|
11
|
+
content_type "text/css", :charset => "utf-8"
|
12
|
+
sass params[:sheet].to_sym
|
13
|
+
end
|
14
|
+
|
15
|
+
get '*.*' do
|
16
|
+
file = File.join( settings.root, settings.origin, params[:splat].join('.') )
|
17
|
+
case params[:splat][1]
|
18
|
+
when /[jpg|png|pdf|doc|xls|pdf]/ then send_file(file, :disposition => nil)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
post '*/?' do
|
23
|
+
content_type "text/html", :charset => "utf-8"
|
24
|
+
page = get_page
|
25
|
+
page['layout'] ||= 'layout'
|
26
|
+
haml page['content'], :layout => page['layout'].to_sym, :locals => { :page => page }
|
27
|
+
end
|
28
|
+
|
29
|
+
get '*/?' do
|
30
|
+
content_type "text/html", :charset => "utf-8"
|
31
|
+
|
32
|
+
if params[:splat][0] =~ /-atom$/ then
|
33
|
+
set :haml, { :format => :xhtml }
|
34
|
+
content_type "application/atom+xml", :charset => "utf-8"
|
35
|
+
end
|
36
|
+
|
37
|
+
page = get_page
|
38
|
+
page['layout'] ||= 'layout'
|
39
|
+
haml page['content'], :layout => page['layout'].to_sym, :locals => { :page => page }
|
40
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
require "rubygems"
|
2
|
+
require "sinatra/base"
|
3
|
+
require "app"
|
4
|
+
|
5
|
+
disable :run
|
6
|
+
set :server, %w[thin mongrel webrick]
|
7
|
+
set :origin, "content"
|
8
|
+
set :haml, {:encoding => 'utf-8',
|
9
|
+
:format => :html5,
|
10
|
+
:attr_wrapper => '"' }
|
11
|
+
|
12
|
+
configure :development do
|
13
|
+
require 'sinatra/reloader'
|
14
|
+
set :port, 9394
|
15
|
+
end
|
16
|
+
|
17
|
+
configure :production do
|
18
|
+
set :port, 55500
|
19
|
+
end
|
20
|
+
|
21
|
+
set :environment, :production
|
22
|
+
run Sinatra::Application
|
@@ -0,0 +1,14 @@
|
|
1
|
+
---
|
2
|
+
environment: production
|
3
|
+
chdir: /path/to/your/application/home/dir
|
4
|
+
address: 0.0.0.0
|
5
|
+
user: toni
|
6
|
+
group: toni
|
7
|
+
port: 55500
|
8
|
+
pid: /path/to/your/application/home/dir/log/thin.pid
|
9
|
+
log: /path/to/your/application/home/dir/log/thin.log
|
10
|
+
rackup: /path/to/your/application/home/dir/config.ru
|
11
|
+
max_conns: 1024
|
12
|
+
timeout: 30
|
13
|
+
max_persistent_conns: 512
|
14
|
+
daemonize: true
|
data/soxer.gemspec
CHANGED
@@ -4,12 +4,12 @@ Gem::Specification.new do |s|
|
|
4
4
|
s.rubygems_version = '1.3.7'
|
5
5
|
|
6
6
|
s.name = 'soxer'
|
7
|
-
s.version = '0.9.
|
8
|
-
s.date = '2010-10-
|
7
|
+
s.version = '0.9.4'
|
8
|
+
s.date = '2010-10-27'
|
9
9
|
s.rubyforge_project = 'soxer'
|
10
10
|
|
11
|
-
s.summary = "Dynamic web site engine"
|
12
|
-
s.description = "Soxer is a file based dynamic web creation tool for Sinatra."
|
11
|
+
s.summary = "Dynamic web site generator engine"
|
12
|
+
s.description = "Soxer is a file based dynamic web site creation tool for Sinatra."
|
13
13
|
|
14
14
|
s.authors = ["Toni Anzlovar"]
|
15
15
|
s.email = 'toni@formalibre.si'
|
@@ -27,16 +27,13 @@ Gem::Specification.new do |s|
|
|
27
27
|
# = MANIFEST =
|
28
28
|
s.files = %w[
|
29
29
|
soxer.gemspec
|
30
|
+
bin/soxer
|
30
31
|
lib/soxer.rb
|
31
32
|
lib/soxer/main.rb
|
32
|
-
|
33
|
-
lib/soxer/views/recaptcha.haml
|
34
|
-
lib/soxer/views/google_analytics.haml
|
35
|
-
lib/soxer/views/google_ads.haml
|
36
|
-
lib/soxer/views/disqus.haml
|
37
|
-
lib/soxer/views/atom.haml
|
38
|
-
]
|
33
|
+
] + Dir.glob("{lib/soxer/views,lib/soxer/skel}/**/*")
|
39
34
|
# = MANIFEST =
|
35
|
+
|
36
|
+
s.executables = ['soxer']
|
40
37
|
|
41
38
|
s.test_files = s.files.select { |path| path =~ /^test\/test_.*\.rb/ }
|
42
39
|
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: soxer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 51
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 9
|
9
|
-
-
|
10
|
-
version: 0.9.
|
9
|
+
- 4
|
10
|
+
version: 0.9.4
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Toni Anzlovar
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2010-10-
|
18
|
+
date: 2010-10-27 00:00:00 +02:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
@@ -60,24 +60,30 @@ dependencies:
|
|
60
60
|
version: "2"
|
61
61
|
type: :runtime
|
62
62
|
version_requirements: *id003
|
63
|
-
description: Soxer is a file based dynamic web creation tool for Sinatra.
|
63
|
+
description: Soxer is a file based dynamic web site creation tool for Sinatra.
|
64
64
|
email: toni@formalibre.si
|
65
|
-
executables:
|
66
|
-
|
65
|
+
executables:
|
66
|
+
- soxer
|
67
67
|
extensions: []
|
68
68
|
|
69
69
|
extra_rdoc_files: []
|
70
70
|
|
71
71
|
files:
|
72
72
|
- soxer.gemspec
|
73
|
+
- bin/soxer
|
73
74
|
- lib/soxer.rb
|
74
75
|
- lib/soxer/main.rb
|
76
|
+
- lib/soxer/views/atom.haml
|
75
77
|
- lib/soxer/views/sitemap.haml
|
76
|
-
- lib/soxer/views/
|
78
|
+
- lib/soxer/views/disqus.haml
|
77
79
|
- lib/soxer/views/google_analytics.haml
|
78
80
|
- lib/soxer/views/google_ads.haml
|
79
|
-
- lib/soxer/
|
80
|
-
- lib/soxer/
|
81
|
+
- lib/soxer/skel/empty/content/index.yaml
|
82
|
+
- lib/soxer/skel/empty/config.yml
|
83
|
+
- lib/soxer/skel/empty/config.ru
|
84
|
+
- lib/soxer/skel/empty/views/layout.haml
|
85
|
+
- lib/soxer/skel/empty/views/css.sass
|
86
|
+
- lib/soxer/skel/empty/app.rb
|
81
87
|
has_rdoc: true
|
82
88
|
homepage: http://soxer.mutsu.org
|
83
89
|
licenses: []
|
@@ -111,6 +117,6 @@ rubyforge_project: soxer
|
|
111
117
|
rubygems_version: 1.3.7
|
112
118
|
signing_key:
|
113
119
|
specification_version: 2
|
114
|
-
summary: Dynamic web site engine
|
120
|
+
summary: Dynamic web site generator engine
|
115
121
|
test_files: []
|
116
122
|
|
@@ -1,19 +0,0 @@
|
|
1
|
-
:ruby
|
2
|
-
width ||= 500;
|
3
|
-
height ||= 300;
|
4
|
-
theme ||= 'white'
|
5
|
-
lang ||= 'en'
|
6
|
-
|
7
|
-
%script(type="text/javascript" src="http://www.google.com/recaptcha/api/js/recaptcha_ajax.js")
|
8
|
-
:javascript
|
9
|
-
Recaptcha.create("#{key}", "recaptcha", {
|
10
|
-
theme: "#{theme}",
|
11
|
-
callback: Recaptcha.focus_response_field }
|
12
|
-
);
|
13
|
-
%noscript
|
14
|
-
%iframe(src="http://www.google.com/recaptcha/api/noscript?k=#{key}" height="#{height}" width="#{width}" frameborder="0")
|
15
|
-
%br
|
16
|
-
%textarea(name="recaptcha_challenge_field" rows="3" cols="40")
|
17
|
-
%input(type="hidden" name="recaptcha_response_field" value="manual_challenge")
|
18
|
-
|
19
|
-
#recaptcha
|