razor 0.4.2 → 0.5
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/lib/razor.rb +4 -4
- data/lib/razor/rake/ftp.rb +60 -0
- data/lib/razor/rake/ftp_push.rb +65 -0
- data/lib/razor/renderer.rb +70 -21
- data/lib/razor/runner.rb +6 -9
- data/lib/razor/template.rb +8 -0
- data/lib/version.rb +1 -1
- metadata +19 -6
data/lib/razor.rb
CHANGED
@@ -1,12 +1,13 @@
|
|
1
1
|
require 'version'
|
2
|
-
require 'rubygems'
|
3
2
|
require 'fileutils'
|
4
3
|
|
5
4
|
require 'razor/generable'
|
6
|
-
|
5
|
+
|
7
6
|
|
8
7
|
module Razor
|
9
8
|
|
9
|
+
Renderer.try_load
|
10
|
+
|
10
11
|
class << self
|
11
12
|
attr :get
|
12
13
|
end
|
@@ -26,10 +27,9 @@ module Razor
|
|
26
27
|
|
27
28
|
def self.server(port, src)
|
28
29
|
require 'rack'
|
29
|
-
port = (port and port.to_i or
|
30
|
+
port = (port and port.to_i or 3300)
|
30
31
|
on_request = lambda do |env|
|
31
32
|
page = Razor.http_request src, env['PATH_INFO']
|
32
|
-
p page.dest_name rescue nil
|
33
33
|
if page
|
34
34
|
[
|
35
35
|
200,
|
@@ -0,0 +1,60 @@
|
|
1
|
+
require 'net/ftp'
|
2
|
+
|
3
|
+
class Net::FTP
|
4
|
+
|
5
|
+
def directory?(name)
|
6
|
+
regexp = /#{name}$/
|
7
|
+
line = ls.find { |line| line =~ regexp }
|
8
|
+
line or false and line[0] == ?d
|
9
|
+
end
|
10
|
+
|
11
|
+
def entries
|
12
|
+
nlst.reject { |e| e =~ /^(\.|\.\.)$/ }
|
13
|
+
end
|
14
|
+
|
15
|
+
alias _chdir chdir
|
16
|
+
def chdir(dir)
|
17
|
+
wd = (dir =~ /^\.?$/)
|
18
|
+
if block_given?
|
19
|
+
current = pwd
|
20
|
+
wd or _chdir dir
|
21
|
+
begin
|
22
|
+
yield
|
23
|
+
ensure
|
24
|
+
wd or _chdir current
|
25
|
+
end
|
26
|
+
else
|
27
|
+
wd or _chdir dir
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
def put_contents(dir)
|
32
|
+
Dir[dir+'/*'].each &method(:put_r)
|
33
|
+
end
|
34
|
+
|
35
|
+
def put_r(file)
|
36
|
+
filename = File.basename file
|
37
|
+
if File.directory? file
|
38
|
+
mkdir filename
|
39
|
+
chdir(filename) { put_contents file }
|
40
|
+
else
|
41
|
+
put file, filename
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
def rm_contents(dir)
|
46
|
+
chdir(dir) {
|
47
|
+
entries.each &method(:rm_r)
|
48
|
+
}
|
49
|
+
end
|
50
|
+
|
51
|
+
def rm_r(file)
|
52
|
+
if directory? file
|
53
|
+
rm_contents file
|
54
|
+
rmdir file
|
55
|
+
else
|
56
|
+
delete file
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
end
|
@@ -0,0 +1,65 @@
|
|
1
|
+
require 'rake'
|
2
|
+
require 'rake/tasklib'
|
3
|
+
require 'highline'
|
4
|
+
require 'tmpdir'
|
5
|
+
|
6
|
+
require 'razor'
|
7
|
+
require 'razor/rake/ftp'
|
8
|
+
|
9
|
+
module Razor
|
10
|
+
|
11
|
+
module Rake
|
12
|
+
|
13
|
+
module FTP
|
14
|
+
|
15
|
+
class Push < ::Rake::TaskLib
|
16
|
+
|
17
|
+
attr_accessor :port
|
18
|
+
attr_accessor :dir
|
19
|
+
attr_accessor :url_base
|
20
|
+
|
21
|
+
def initialize(hostname, name='ftp:push')
|
22
|
+
@name = name
|
23
|
+
@hostname = hostname
|
24
|
+
@dir = ''
|
25
|
+
@port = nil
|
26
|
+
@url_base = ''
|
27
|
+
yield self if block_given?
|
28
|
+
define_task
|
29
|
+
end
|
30
|
+
|
31
|
+
def define_task
|
32
|
+
task(@name) {
|
33
|
+
hl = HighLine.new
|
34
|
+
host = [@hostname]
|
35
|
+
host << @port if @port
|
36
|
+
ftp = Net::FTP.new(*host)
|
37
|
+
begin
|
38
|
+
username = hl.ask("FTP Username : ")
|
39
|
+
psswd = hl.ask("Password : ", String) { |q| q.echo = false }
|
40
|
+
ftp.login(username, psswd)
|
41
|
+
ftp.chdir @dir
|
42
|
+
ftp.rm_contents '.'
|
43
|
+
Dir.mktmpdir { |tmp|
|
44
|
+
Razor.generate(generate_options, '.', tmp)
|
45
|
+
ftp.put_contents tmp
|
46
|
+
}
|
47
|
+
ensure
|
48
|
+
ftp.close
|
49
|
+
end
|
50
|
+
}
|
51
|
+
end
|
52
|
+
|
53
|
+
def generate_options
|
54
|
+
{
|
55
|
+
:url_base => @url_base
|
56
|
+
}
|
57
|
+
end
|
58
|
+
|
59
|
+
end
|
60
|
+
|
61
|
+
end
|
62
|
+
|
63
|
+
end
|
64
|
+
|
65
|
+
end
|
data/lib/razor/renderer.rb
CHANGED
@@ -1,10 +1,7 @@
|
|
1
|
-
require 'bluecloth'
|
2
|
-
require 'sass'
|
3
|
-
|
4
1
|
module Razor
|
5
2
|
|
6
3
|
class Renderer
|
7
|
-
|
4
|
+
|
8
5
|
class Getter
|
9
6
|
|
10
7
|
class << self
|
@@ -46,7 +43,13 @@ module Razor
|
|
46
43
|
|
47
44
|
def from_file(filename)
|
48
45
|
filepath = File.join(@path, filename)
|
49
|
-
str = (File.read(filepath, :mode=>'rb') rescue nil)
|
46
|
+
#str = (File.read(filepath, :mode=>'rb') rescue nil)
|
47
|
+
begin
|
48
|
+
str = File.open(filepath, 'rb') { |f| f.read }
|
49
|
+
rescue
|
50
|
+
puts $!
|
51
|
+
str = nil
|
52
|
+
end
|
50
53
|
ext = File.extname filename
|
51
54
|
renderer = self.class.extensions[ext]
|
52
55
|
renderer ||= Renderer
|
@@ -61,6 +64,19 @@ module Razor
|
|
61
64
|
Getter.new(path, proc).renderer
|
62
65
|
end
|
63
66
|
|
67
|
+
def try_load
|
68
|
+
constants.each { |constname|
|
69
|
+
const = const_get constname
|
70
|
+
const.is_a? Class or next
|
71
|
+
const.ancestors.include? Renderer or next
|
72
|
+
const.respond_to? :load or next
|
73
|
+
begin
|
74
|
+
const.load
|
75
|
+
rescue LoadError
|
76
|
+
end
|
77
|
+
}
|
78
|
+
end
|
79
|
+
|
64
80
|
def name_ext(n)
|
65
81
|
name(n)
|
66
82
|
extension(n)
|
@@ -82,7 +98,7 @@ module Razor
|
|
82
98
|
end
|
83
99
|
|
84
100
|
def layout_render(context)
|
85
|
-
|
101
|
+
valid? or return context['yield']
|
86
102
|
render(context)
|
87
103
|
end
|
88
104
|
|
@@ -91,28 +107,61 @@ module Razor
|
|
91
107
|
end
|
92
108
|
|
93
109
|
def render(context)
|
94
|
-
|
110
|
+
valid? or return ''
|
95
111
|
Mustache.render(@string, context)
|
96
112
|
end
|
97
113
|
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
114
|
+
class BlueRenderer < Renderer
|
115
|
+
|
116
|
+
def self.load
|
117
|
+
require 'bluecloth'
|
118
|
+
name_ext 'markdown'
|
119
|
+
name_ext 'md'
|
120
|
+
end
|
121
|
+
|
122
|
+
def render(context)
|
123
|
+
BlueCloth.new(super(context)).to_html
|
124
|
+
end
|
125
|
+
|
106
126
|
end
|
107
127
|
|
108
|
-
|
109
|
-
|
110
|
-
|
128
|
+
class RedRenderer < Renderer
|
129
|
+
|
130
|
+
def self.load
|
131
|
+
require 'RedCloth'
|
132
|
+
name_ext 'textile'
|
133
|
+
end
|
134
|
+
|
135
|
+
def render(context)
|
136
|
+
RedCloth.new(super(context)).to_html
|
137
|
+
end
|
138
|
+
|
139
|
+
end
|
111
140
|
|
112
|
-
|
141
|
+
class SassRenderer < Renderer
|
142
|
+
|
143
|
+
def self.load
|
144
|
+
require 'sass'
|
145
|
+
name_ext 'sass'
|
146
|
+
end
|
147
|
+
|
148
|
+
def render(context)
|
149
|
+
Sass::Engine.new(super(context), :syntax=>:sass ).render
|
150
|
+
end
|
151
|
+
|
152
|
+
end
|
113
153
|
|
114
|
-
|
115
|
-
|
154
|
+
class ScssRenderer < Renderer
|
155
|
+
|
156
|
+
def self.load
|
157
|
+
require 'sass'
|
158
|
+
name_ext 'scss'
|
159
|
+
end
|
160
|
+
|
161
|
+
def render(context)
|
162
|
+
Sass::Engine.new(super(context), :syntax=>:scss ).render
|
163
|
+
end
|
164
|
+
|
116
165
|
end
|
117
166
|
|
118
167
|
end
|
data/lib/razor/runner.rb
CHANGED
@@ -1,12 +1,9 @@
|
|
1
1
|
require 'optparse'
|
2
|
-
require 'highline'
|
3
2
|
|
4
3
|
require 'razor'
|
5
4
|
|
6
5
|
module Razor
|
7
6
|
|
8
|
-
HL = HighLine.new
|
9
|
-
|
10
7
|
class Runner
|
11
8
|
|
12
9
|
def initialize
|
@@ -50,22 +47,22 @@ module Razor
|
|
50
47
|
if respond_to? args[0]
|
51
48
|
send *args
|
52
49
|
else
|
53
|
-
|
54
|
-
|
50
|
+
puts "Unknown Command #{args[0]}"
|
51
|
+
puts @options_parser
|
55
52
|
end
|
56
53
|
else
|
57
54
|
if @options[:version]
|
58
|
-
|
55
|
+
puts Razor::Version
|
59
56
|
else
|
60
|
-
|
57
|
+
puts @options_parser
|
61
58
|
end
|
62
59
|
end
|
63
60
|
end
|
64
61
|
|
65
62
|
def _check_arguments(bool)
|
66
63
|
return if bool
|
67
|
-
|
68
|
-
|
64
|
+
puts 'Arguments Error'
|
65
|
+
puts @options_parser
|
69
66
|
exit
|
70
67
|
end
|
71
68
|
|
data/lib/razor/template.rb
CHANGED
data/lib/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: razor
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: '0.5'
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,12 +9,12 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2011-03-
|
12
|
+
date: 2011-03-10 00:00:00.000000000 +01:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: mustache
|
17
|
-
requirement: &
|
17
|
+
requirement: &24114740 !ruby/object:Gem::Requirement
|
18
18
|
none: false
|
19
19
|
requirements:
|
20
20
|
- - ! '>='
|
@@ -22,10 +22,10 @@ dependencies:
|
|
22
22
|
version: '0'
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
|
-
version_requirements: *
|
25
|
+
version_requirements: *24114740
|
26
26
|
- !ruby/object:Gem::Dependency
|
27
27
|
name: rack
|
28
|
-
requirement: &
|
28
|
+
requirement: &24114220 !ruby/object:Gem::Requirement
|
29
29
|
none: false
|
30
30
|
requirements:
|
31
31
|
- - ! '>='
|
@@ -33,7 +33,18 @@ dependencies:
|
|
33
33
|
version: '0'
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
|
-
version_requirements: *
|
36
|
+
version_requirements: *24114220
|
37
|
+
- !ruby/object:Gem::Dependency
|
38
|
+
name: highline
|
39
|
+
requirement: &24113740 !ruby/object:Gem::Requirement
|
40
|
+
none: false
|
41
|
+
requirements:
|
42
|
+
- - ! '>='
|
43
|
+
- !ruby/object:Gem::Version
|
44
|
+
version: '0'
|
45
|
+
type: :runtime
|
46
|
+
prerelease: false
|
47
|
+
version_requirements: *24113740
|
37
48
|
description: ! '''Razor is a static website generator. Describe layouts and pages
|
38
49
|
in ruby. Write them with html and Mustache.
|
39
50
|
|
@@ -54,6 +65,8 @@ files:
|
|
54
65
|
- lib/razor/runner.rb
|
55
66
|
- lib/razor/renderer.rb
|
56
67
|
- lib/razor/template.rb
|
68
|
+
- lib/razor/rake/ftp.rb
|
69
|
+
- lib/razor/rake/ftp_push.rb
|
57
70
|
- lib/version.rb
|
58
71
|
- bin/razor
|
59
72
|
has_rdoc: true
|